上QQ阅读APP看书,第一时间看更新
3.4 数据输出
任何原始格式的数据载入DataFrame后,都可以使用类似DataFrame.to_csv()的方法输出到相应格式的文件或者目标系统里。本节将介绍一些常用的数据输出目标格式。
3.4.1 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)
3.4.2 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')
3.4.3 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']))
3.4.4 数据库(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)
3.4.5 Markdown
Markdown是一种常用的技术文档编写语言,Pandas支持输出Markdown格式的字符串,如下:
print(cdf.to_markdown()) ''' | | x | y | z | |:---|----:|----:|----:| | a | 1 | 2 | 3 | | b | 4 | 5 | 6 | | c | 7 | 8 | 9 | '''
3.4.6 小结
本节介绍了如何将DataFrame对象数据进行输出,数据经输出、持久化后会成为固定的数据资产,供我们进行归档和分析。