当前位置: 首页 > news >正文

5种常用格式的数据输出,手把手教你用Pandas实现

e432c047cb873849014343e28e5cf611.gif

导读:任何原始格式的数据载入DataFrame后,都可以使用类似DataFrame.to_csv()的方法输出到相应格式的文件或者目标系统里。本文将介绍一些常用的数据输出目标格式。

作者:李庆辉

来源:大数据DT(ID:hzdashuju)

ff1653743034bc7a0758869b01e1352d.png

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年出版。转载请与我们取得授权。

44cfe28c4d3fad9668d6f645446bd94b.png

延伸阅读《深入浅出Pandas》

转载请联系微信:DoctorData

推荐语:这是一本全面覆盖了Pandas使用者的普遍需求和痛点的著作,基于实用、易学的原则,从功能、使用、原理等多个维度对Pandas做了全方位的详细讲解,既是初学者系统学习Pandas难得的入门书,又是有经验的Python工程师案头必不可少的查询手册。《利用Python进行数据分析》学习伴侣,用好Python必备。

更多精彩回顾

书讯 | 5月书讯(上)|  元宇宙、因果推断、薛定谔方程...你关注的都在这

书讯 | 5月书讯(下)|设计致物系列+少儿编程好书推荐

资讯 |为企业数字人才建粮仓:专访极客邦科技双数研究院院长付晓岩

资讯 |2022美国科学院院士名单公布:图灵奖得主、龙书作者Alfred V. Aho当选!

干货 | 一本你能读懂的薛定谔方程!

收藏 | 终于有人把数据、信息、知识讲明白了

上新 |因果推断会是下一个AI热潮吗?朱迪亚•珀尔新作《因果论》重磅上市!

赠书 |【第103期】哪些打工人会被机器人替代?最新算法给你答案

干货 | 为什么每一名程序员都应该学习 C++?

干货 | 如果机器翻译始终存在缺陷和错误,那它还有什么用处?

93bd837de2428712eb6a8ca392d01c7c.gif

相关文章:

  • 漫画:什么是IaaS、PaaS、SaaS?
  • Java核心技术:日期和时间新旧API对比
  • JavaScript框架发展的四个时代,你经历过其中几个阶段?
  • C#代码整洁之道:代码重构与性能提升
  • 详解边缘计算系统逻辑架构:云、边、端协同
  • 人工智能技术的演进和发展
  • 终于有人把工业数据采集讲明白了
  • 揭秘华为数字化转型框架:1套方法、4类场景、3个平台能力
  • 【第104期】7本适合设计师提升交互设计能力的书
  • Go语言精进之路:绞尽脑汁,帮你理解方法本质并选择正确的receiver类型
  • 盘点知识图谱在 5 大智能领域的应用
  • AI 与合成生物学「联姻」的五大挑战:技术、数据、算法、评估与社会学
  • 产品和运营双视角,9个维度全面讲解用户运营
  • 详解元宇宙 6 大核心属性
  • 速戳,用户管理体系的搭建全攻略
  • php的引用
  • (三)从jvm层面了解线程的启动和停止
  • .pyc 想到的一些问题
  • 【React系列】如何构建React应用程序
  • crontab执行失败的多种原因
  • CSS 三角实现
  • es6要点
  • iOS编译提示和导航提示
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • java8 Stream Pipelines 浅析
  • LeetCode算法系列_0891_子序列宽度之和
  • Making An Indicator With Pure CSS
  • node入门
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SpiderData 2019年2月13日 DApp数据排行榜
  • TypeScript迭代器
  • ubuntu 下nginx安装 并支持https协议
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue.js-Day01
  • windows-nginx-https-本地配置
  • 京东美团研发面经
  • 区块链分支循环
  • 深度解析利用ES6进行Promise封装总结
  • 通过npm或yarn自动生成vue组件
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 走向全栈之MongoDB的使用
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​水经微图Web1.5.0版即将上线
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (利用IDEA+Maven)定制属于自己的jar包
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 发送邮件