網站首頁 編程語言 正文
文件操作:
Pandas中提供了許多的操作文件的函數,包括讀取和寫入。我們做數據分析用得最多的,就是CSV
、Excel
、SQL
、JSON
文件。下面來針對這幾種文件的操作做一個詳細的講解。
CSV文件操作:
讀寫CSV
文件分別用的是pd.read_csv
和pd.to_csv
方法。普通用法非常簡單,但是通過一些參數,可以實現許多高級操作。
1. 讀取csv:
讀取csv
用的是pd.read_csv
,主要有以下參數:
-
filepath_or_buffer
:文件路徑,或者是有read
方法的流對象。 -
sep
:分隔符,默認是,
。 -
header
:指定哪行作為列的名稱,如果沒有行作為列名,那么應該設置header=None,并且設置names參數。 -
names
:在csv文件中沒有一行來存儲列名,可以使用names自己指定,并且設置header=None。 -
index_col
:使用哪一列作為行索引,可以是列的位置,也可以是列的名稱。如果沒有指定,那么默認會自動生成一個順序索引。 -
usecols
:加載哪幾列。比如有時候只想要csv文件中的某幾列,那么就可以使用usecols
。也可以是個函數,這個函數返回True的列會被保留,否則會丟棄。 -
engine
:csv解析引擎,有C和Python,C速度更快,但是Python功能更完善。 -
dtype
:指定某些列的類型。 -
converters
:轉換器列表,可以指定每一列在加載的時候就轉換為指定的類型。 -
encoding
:使用指定的編碼方式打開文件。 -
chunksize
:使用迭代器的方式讀取,一次返回多少行的數據。
更多參數請查看Pandas官網read_csv
:https://pandas.pydata.org/docs/user_guide/io.html#io-read-csv-table
2. 寫入csv:
寫入csv
用的是pd.to_csv
,Series
和DataFrame
都可以使用這個方法。主要有以下參數:
-
path_or_buf
:寫入的文件路徑、緩存或者是文件對象,如果是文件對象,那么這個文件對象在打開的時候必須指定newline=''
。 -
sep
:存儲成csv文件格式化的分隔符。 -
na_rep
:NAN
值的替代字符串,默認是空的。 -
float_format
:格式化浮點類型字符串。 -
columns
:哪些列需要寫入到csv文件中。 -
header
:是否把列的名稱也寫入進去,默認為True。 -
index
:是否把行索引名稱也寫入進去,默認為True。 -
encoding
:存儲的csv文件編碼方式。 -
chunksize
:一次性寫入多少行。
更多的參數請查看Pandas官網to_csv
:https://pandas.pydata.org/docs/user_guide/io.html#io-store-in-csv
Excel文件操作:
1. 讀取Excel:
讀取Excel
文件用的是pd.read_excel
方法。因為Excel文件有兩種類型,分別是2007年后的.xlsx
和2003年的.xls
。其中.xlsx
需要借助openpyxl
庫,.xls
需要借助xlrd
庫。如果這兩個庫沒有安裝,在運行的時候可能會報錯,因此可以提前通過以下命令安裝:
$ pip install openpyxl
$ pip install xlrd
下面來講解一下pd.read_excel
的基本用法。先看一個最簡單的示例代碼:
pd.read_excel("path_to_file.xls", sheet_name="Sheet1")
首先指定Excel文件路徑,然后通過sheet_name
參數指定讀取Excel文件的哪個Sheet。如果Excel的Sheet比較多,那么我們可以先使用ExcelFile
類把所有Sheet都讀取出來,再使用pd.read_excel
分別讀取。這種方式比直接直接多次使用pd.read_excel
效率更高。示例代碼如下:
xlsx = pd.ExcelFile("path_to_file.xls")
df = pd.read_excel(xlsx, "Sheet1")
或者是:
with pd.ExcelFile("path_to_file.xls") as xls:
df1 = pd.read_excel(xls, "Sheet1")
df2 = pd.read_excel(xls, "Sheet2")
pd.read_excel
的其他參數,除了沒有chunksize
外,與pd.read_csv
相同。
更多pd.read_excel
的用法,請參考Pandas官方文檔:https://pandas.pydata.org/docs/user_guide/io.html#io-excel-reader
2. 寫入Excel:
寫入Excel
用的是pd.to_excel
方法,使用方法與pd.to_csv
非常的類似,但是可以指定sheet_name
參數。并且官方強烈建議使用openpyxl
庫作為引擎,將數據保存保存為xlsx
文件,如果使用xlwt
庫將數據保存為xls
文件,出現問題官方是不會負責修復的,因為已經不支持了(具體可以看:https://pandas.pydata.org/docs/user_guide/io.html#excel-files)。
基本用法如下:
df.to_excel("path_to_file.xlsx", sheet_name="Sheet1")
也可以使用ExcelWriter
類,寫入多個DataFrame
到多個Sheet
中。示例代碼如下:
with pd.ExcelWriter("path_to_file.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet2")
更多pd.to_excel
的用法,請參考Pandas官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_excel.html#pandas.DataFrame.to_excel
SQL操作:
操作SQL
主要有以下幾個函數:
-
read_sql_table(table_name, conn, ...)
:用于讀取一張表中的數據。 -
read_sql_query(sql, con, ...)
:執行SQL語句,讀取到DataFrame中。 -
read_sql(sql_or_tablename, con, ...)
:read_sql_table
和read_sql_query
兩者結合,會自動判斷第一個參數是否為表名還是sql語句。 -
DataFrame.to_sql(name, con, ...)
:將DataFrame
數據寫入到數據庫中。name
指定一個表名。
操作SQL
需要借助SQLAlchemy
,如果沒有安裝,則需要通過pip install sqlalchemy
安裝一下。使用SQLAlchemy
連接數據庫,會根據不同的數據庫,使用不同的連接方式。
-
SQLite
:"sqlite:///[database name].db"
-
MySQL
:"mysql+pymysql://[username]:[password]@[host]:[port]/[database name]?charset=utf8"
-
PostgreSQL
:"postgresql://[username]:[password]@[host]:[port]/[database name]"
-
Oracle
:"oracle://scott:tiger@127.0.0.1:1521/sidname"
這里我們以sqlite
為例來講解上述方法的使用。
1. 寫入SQL:
為了方便演示SQL操作,我們先使用to_sql
,將一個DataFrame
數據寫入到數據庫中。示例代碼如下:
# 讀取excel中的數據
df = pd.read_excel("data/salesfunnel.xlsx")
# 創建數據庫連接
from sqlalchemy import create_engine
engine = create_engine("sqlite:///salessfunnel.db")
# 將df數據,寫入到sqlite數據庫中,并且表名為funnel
df.to_sql("funnel", engine, index=False)
2. read_sql_table讀取表數據:
使用read_sql_table
可以將指定表中所有的數據都讀取出來(當然也可以使用chunksize來分段讀取)。示例代碼如下:
funnel = pd.read_sql_table("funnel", engine)
如果使用chunksize
參數,那么將返回一個生成器??梢匝h獲取里面的數據,示例代碼如下:
funnel = pd.read_sql_table("funnel", engine, chunksize=3)
for chunk in funnel:
print(chunk)
在循環funnel
的時候,每個chunk
都是含有三條數據的DataFrame
對象。
3. read_sql_query執行SQL查詢語句:
在獲取數據的時候,如果需要過濾數據,或者是多表查詢,那么可以使用read_sql_query
來執行sql
語句。示例代碼如下:
df2 = pd.read_sql_query("select Account, Name from funnel where Product='CPU'", engine)
print(df2)
輸出結果如下:
Account Name
0 714466 Trantow-Barrows
1 737550 Fritsch, Russel and Anderson
2 146832 Kiehn-Spinka
3 218895 Kulas Inc
4 740150 Barton LLC
5 141962 Herman LLC
6 163416 Purdy-Kunde
7 688981 Keeling LLC
8 729833 Koepp Ltd
4. read_sql讀取數據:
read_sql
是結合了read_sql_table
和read_sql_query
兩者的功能。既可以從表中讀取數據,也可以執行查詢SQL語句。示例代碼如下:
# 讀取表數據
funnel = pd.read_sql("funnel", engine)
# 執行查詢SQL語句
funnel = pd.read_sql("select Account, Name from funnel where Product='CPU'", engine)
更多:
更多其他文件操作,請參考Pandas官網:https://pandas.pydata.org/docs/user_guide/io.html
原文鏈接:https://blog.csdn.net/qq_41404557/article/details/125898468
- 上一篇:SpringCache 面向注解開發
- 下一篇:Pandas常用數據結構
相關推薦
- 2022-12-10 深入了解C++11中promise和future的使用_C 語言
- 2022-06-01 Python處理日期和時間的方法總結_python
- 2022-09-24 ASP.NET?MVC把表格導出到Excel_實用技巧
- 2022-03-04 運行 npm 會彈出詢問 “你要如何打開這個文件?“
- 2024-03-28 mac vscode 命令行啟動命令安裝 別名設置方法
- 2022-08-30 Mac上出現多個版本選擇打開edge瀏覽器
- 2023-03-27 詳解C++11中的類型推斷_C 語言
- 2023-05-17 一文速學Python+Pyecharts繪制樹形圖_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支