楼主: 时光人
1928 4

Python处理的Excel, 使你不再苦苦加班 [推广有奖]

  • 3关注
  • 34粉丝

院士

23%

还不是VIP/贵宾

-

威望
1
论坛币
26907 个
通用积分
428.9260
学术水平
95 点
热心指数
109 点
信用等级
91 点
经验
39960 点
帖子
1629
精华
3
在线时间
579 小时
注册时间
2019-2-25
最后登录
2023-4-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

CDA网校:数据科学、人工智能从业者的在线大学。

数据科学(Python/R/Julia)数据分析、机器学习、深度学习


成堆的数据如何导入Excel进行分析?

大量的表格等待统计?

作为人生苦短的Python程序员,改如何优雅地操作Excel?

得益于各位开源大佬的贡献,Python处理Excel拥有众多的库,使用它们我们就直接能批量处理Excel标的。使用的比较多的有:

文档操作:

虽然大家都是操作 Excel,但即使最基本的新建文件、修改文件、保存文件等功能,在不同的库中也存在差异。比如 xlsxwriter 并不支持打开或修改现有文件,xlwings 不支持对新建文件的命名,DataNitro 作为 Excel 插件需依托于软件本身,pandas 新建文档需要依赖其他库等等。

上图是各个库包支持的功能,在编码之前记得看一下你需要的功能是否支持。

openpyxl:

简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。

xlsxwriter:

拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

xlwings:

可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。

xlutils:

基于 xlrd/xlwt,老牌 python 包,算是该领域的先驱,功能特点中规中矩,比较大的缺点是仅支持 xls 文件。

pandas:

数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。

性能

我们对几个库做了最基本的写入和读取测试,分别使用不同库进行添加及读取 1000行 * 700列 数据操作,得到所用时间,重复操作取平均值。另外在不同的电脑配置,不同的环境下结果肯定会有出入,数据仅供参考。

注:xlutils 最多只能写入 256 列,即 1000*256

小结

通过以上的分析,相信大家对几个库都有了简单的了解。在编写文章的过程中,笔者也在思考各个库最适合的应用场景。

不想使用 GUI 而又希望赋予 Excel 更多的功能,openpyxl 与 xlsxwriter,你可二者选其一;

需要进行科学计算,处理大量数据,建议 pandas+xlsxwriter 或者 pandas+openpyxl

想要写 Excel 脚本,会 Python 但不会 VBA 的同学,可考虑 xlwings 或 DataNitro;

你可根据自己的需求和生产环境,选择合适的 Python-Excel 模块。

代码示例:

xlwings基本代码

import xlwings as xw# 连接excel文件workbooks = xw.Book(r'path/book.xlsx')# 指定指定位置的单元格data_range = workbooks.sheets("sheet1").range('a1')# 写入数据data_range.value = [1,2,3]workbooks.save # 保存

xlsxwriter基本代码

import xlsxwriter as xw# 新建book.xlsx文件workbooks = xw.Workbook(r'path/book.xlsx')# 新建工作簿worksheets = workbooks.add_worksheet("Snowday")# 指定位置写入数据aworksheets.write('a1',"Snowday")workbooks.close # 保存

xlutils基本代码

import xlrd #读取数据import xlwt #写入数据import xlutils #操作excel#----xlrd库#打开excel文件workbook = xlrd.open_workbook('myexcel.xls')#获取表单worksheet = workbook.sheet_by_index(0)#读取数据data = worksheet.cell_value(0,0)#----xlwt库#新建excelwb = xlwt.Workbook#添加工作薄sh = wb.add_sheet(sheetname='Sheet1')#写入数据sh.write(0,0,'data')#保存文件wb.save('myexcel.xls')#----xlutils库#打开excel文件book = xlrd.open_workbook('myexcel.xls')#复制一份new_book = xlutils.copy(book)#拿到工作薄worksheet = new_book.getsheet(0)#写入数据worksheet.write(0,0,'new data')#保存new_book.save

win32com基本代码

import win32com.client as wc #启动Excel应用 excel_app = wc.Dispatch('Excel.Application') #连接excel workbook = excel_app.Workbooks.Open(r'e:/myexcel.xlsx' ) #写入数据 workbook.Worksheets('Sheet1').Cells(1,1).Value = 'data' #关闭并保存 workbook.SaveAs('newexcel.xlsx') excel_app.Application.Quit

openpyxl基本代码

import openpyxl # 新建文件 workbook = openpyxl.Workbook # 写入文件 sheet = workbook.activesheet['A1']='data' # 保存文件 workbook.save('test.xlsx')


关注“AIU人工智能”公众号,回复“白皮书”获取数据分析、大数据、人工智能行业白皮书及更多精选学习资料!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 4 人评分经验 学术水平 热心指数 信用等级 收起 理由
lausuai + 1 + 1 + 1 精彩帖子
np84 + 100 精彩帖子
yunnandlg + 100 观点有启发
cheetahfly + 100 精彩帖子

总评分: 经验 + 300  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

沙发
lonestone 在职认证  发表于 2019-10-31 07:53:03 来自手机 |只看作者 |坛友微信交流群
时光人 发表于 2019-10-30 09:46
CDA网校:数据科学、人工智能从业者的在线大学。[/backcolor ...
谢谢楼主的分享

使用道具

藤椅
wxz0716 发表于 2019-10-31 07:59:01 |只看作者 |坛友微信交流群
这个在实际应用中很有用,特别是经常与数据打交道还在用excel的人员!

使用道具

板凳
三重虫 发表于 2019-11-1 16:21:20 |只看作者 |坛友微信交流群

使用道具

报纸
tianwk 发表于 2020-1-17 00:05:42 |只看作者 |坛友微信交流群
thanks folr sharing

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 12:42