五種常用格式的數據輸出,手把手教你用Pandas實現
01 CSV
DataFrame.to_csv方法可以將DataFrame導出為CSV格式的文件,需要傳入一個CSV文件名。
df.to_csv('done.csv')
df.to_csv('data/done.csv') # 可以指定文件目錄路徑
df.to_csv('done.csv', index=False) # 不要索引
另外還可以使用sep參數指定分隔符,columns傳入一個序列指定列名,編碼用encoding傳入。如果不需要表頭,可以將header設為False。如果文件較大,可以使用compression進行壓縮:
# 創建一個包含out.csv的壓縮文件out.zip
compression_opts = dict(method='zip',
archive_name='out.csv')
df.to_csv('out.zip', index=False,
compression=compression_opts)
02 Excel
將DataFrame導出為Excel格式也很方便,使用DataFrame.to_excel方法即可。要想把DataFrame對象導出,首先要指定一個文件名,這個文件名必須以.xlsx或.xls為擴展名,生成的文件標簽名也可以用sheet_name指定。
如果要導出多個DataFrame到一個Excel,可以借助ExcelWriter對象來實現。
# 導出,可以指定文件路徑
df.to_excel('path_to_file.xlsx')
# 指定sheet名,不要索引
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1', index=False)
# 指定索引名,不合并單元格
df.to_excel('path_to_file.xlsx', index_label='label', merge_cells=False)
多個數據的導出如下:
# 將多個df分不同sheet導入一個Excel文件中
with pd.ExcelWriter('path_to_file.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
使用指定的Excel導出引擎如下:
# 指定操作引擎
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1', engine='xlsxwriter')
# 在'engine'參數中設置ExcelWriter使用的引擎
writer = pd.ExcelWriter('path_to_file.xlsx', engine='xlsxwriter')
df.to_excel(writer)
writer.save()
# 設置系統引擎
from pandas import options # noqa: E402
options.io.excel.xlsx.writer = 'xlsxwriter'
df.to_excel('path_to_file.xlsx', sheet_name='Sheet1')
03 HTML
DataFrame.to_html會將DataFrame中的數據組裝在HTML代碼的table標簽中,輸入一個字符串,這部分HTML代碼可以放在網頁中進行展示,也可以作為郵件正文。
print(df.to_html())
print(df.to_html(columns=[0])) # 輸出指定列
print(df.to_html(bold_rows=False)) # 表頭不加粗
# 表格指定樣式,支持多個
print(df.to_html(classes=['class1', 'class2']))
04 數據庫(SQL)
將DataFrame中的數據保存到數據庫的對應表中:
# 需要安裝SQLAlchemy庫
from sqlalchemy import create_engine
# 創建數據庫對象,SQLite內存模式
engine = create_engine('sqlite:///:memory:')
# 取出表名為data的表數據
with engine.connect() as conn, conn.begin():
data = pd.read_sql_table('data', conn)
# data
# 將數據寫入
data.to_sql('data', engine)
# 大量寫入
data.to_sql('data_chunked', engine, chunksize=1000)
# 使用SQL查詢
pd.read_sql_query('SELECT * FROM data', engine)
05 Markdown
Markdown是一種常用的技術文檔編寫語言,Pandas支持輸出Markdown格式的字符串,如下:
print(cdf.to_markdown())
'''
| | x | y | z |
|:---|----:|----:|----:|
| a | 1 | 2 | 3 |
| b | 4 | 5 | 6 |
| c | 7 | 8 | 9 |
'''
小結
本文介紹了如何將DataFrame對象數據進行輸出,數據經輸出、持久化后會成為固定的數據資產,供我們進行歸檔和分析。
關于作者:李慶輝,數據產品專家,某電商公司數據產品團隊負責人,擅長通過數據治理、數據分析、數據化運營提升公司的數據應用水平。精通Python數據科學及Python Web開發,曾獨立開發公司的自動化數據分析平臺,參與教育部“1+X”數據分析(Python)職業技能等級標準評審。中國人工智能學會會員,企業數字化、數據產品和數據分析講師,在個人網站“蓋若”上編寫的技術和產品教程廣受歡迎。
本書摘編自《深入淺出Pandas:利用Python進行數據處理與分析》,機械工業出版社華章公司2021年出版。轉載請與我們取得授權。