商汇粹外网资源平台

搜索
查看: 2686|回复: 4

有哪些python处理excel的教程?

[复制链接]

该用户从未签到

6

主题

26

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2022-9-22 17:25:01 | 显示全部楼层 |阅读模式
python 的神器 pandas 库就可以非常方便地处理 excel,csv,矩阵,表格 等数据。我录了一个简单的视频演示,使用了 jupyter 方便交互,随便使用个编辑器或者IDE 开发工具都可以的。



python excel 处理








pandas 官方文档有个自带的 10 分钟入门,建议你在 Ipython 或者 Jupyter 里亲自跟着教程尝试一下,基本就能入门 DataFrame 的处理了,读取 excel 内容到 DataFrame 以后基本就是对 DataFrame 的处理了。处理完之后调用 to_excel  方法就可以保存为新的 excel 了。
如果是想更加深入学习 python 的 pandas 处理数据(比如数据分析师),推荐这本《利用 Python 进行数据分析》,笔者当时就是看这本数据入门的。
利用Python进行数据分析(原书第2版)京东¥83.30去购买​
回复

使用道具 举报

该用户从未签到

4

主题

35

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2022-9-22 18:10:51 | 显示全部楼层
推荐用xlwings来处理excel,读写、增删改查、格式修改、vba,都支持
excel已经成为必不可少的数据处理软件,几乎天天在用。python有很多支持操作excel的第三方库,xlwings是其中一个。

关于xlwings

xlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。
xlwings还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pandas数据类型,将matplotlib可视化图表导入到excel中。
最重要的是xlwings可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
话不多说,我们开始练一练吧!
PS:对于小白来说学习python不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。
xlwings安装和导入

本文python版本为3.6,系统环境为windows,在jupyter notebook中进行实验。
xlwings库使用pip安装:
pip install xlwings
xlwings导入:
import xlwings as xw

xlwings实操


  • 建立excel表连接
wb = xw.Book("e:\example.xlsx")

  • 实例化工作表对象
sht = wb.sheets["sheet1"]

  • 返回工作表绝对路径
wb.fullname

  • 返回工作簿的名字
sht.name

  • 在单元格中写入数据
sht.range('A1').value = "xlwings"

  • 读取单元格内容
sht.range('A1').value

  • 清除单元格内容和格式
sht.range('A1').clear()

  • 获取单元格的列标
sht.range('A1').column

  • 获取单元格的行标
sht.range('A1').row

  • 获取单元格的行高
sht.range('A1').row_height

  • 获取单元格的列宽
sht.range('A1').column_width

  • 列宽自适应
sht.range('A1').columns.autofit()

  • 行高自适应
sht.range('A1').rows.autofit()

  • 给单元格上背景色,传入RGB值
sht.range('A1').color = (34,139,34)

  • 获取单元格颜色,RGB值
sht.range('A1').color

  • 清除单元格颜色
sht.range('A1').color = None

  • 输入公式,相应单元格会出现计算结果
sht.range('A1').formula='=SUM(B6:B7)'

  • 获取单元格公式
sht.range('A1').formula_array

  • 在单元格中写入批量数据,只需要指定其实单元格位置即可
sht.range('A2').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]

  • 读取表中批量数据,使用expand()方法
sht.range('A2').expand().value

  • 其实你也可以不指定工作表的地址,直接与电脑里的活动表格进行交互
# 写入xw.Range("E1").value = "xlwings"# 读取xw.Range("E1").value
xlwings与numpy、pandas、matplotlib互动


  • 支持写入numpy array数据类型
import numpy as npnp_data = np.array((1,2,3))sht.range('F1').value = np_data

  • 支持将pandas DataFrame数据类型写入excel
import pandas as pddf = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])sht.range('A5').value = df

  • 将数据读取,输出类型为DataFrame
sht.range('A5').options(pd.DataFrame,expand='table').value

  • 将matplotlib图表写入到excel表格里
import matplotlib.pyplot as plt%matplotlib inlinefig = plt.figure()plt.plot([1, 2, 3, 4, 5])sht.pictures.add(fig, name='MyPlot', update=True)
xlwings与VBA互相调用

xlwings与VBA的配合非常完美,你可以在python中调用VBA,也可以在VBA中使用python编程,这些通过xlwings都可以巧妙实现。这里不对该内容做详细讲解,感兴趣的童鞋可以去xlwings官网学习。
总结

xlwings操作excel语法简单,功能强大,又很好结合了pandas、numpy、matplotlib等分析库,非常适合奔波于python和excel之间的童鞋,让你更轻松地分析数据!
<hr>一直在创作python&数据内容,从未停止哈哈,觉得不错点个关注朱卫军~
还有之前梳理的python选书小诀窍,推荐大家也看看:


朱卫军
39 次咨询5.0

168777 次赞同

去咨询
回复

使用道具 举报

该用户从未签到

9

主题

47

帖子

152

积分

注册会员

Rank: 2

积分
152
发表于 2022-9-22 18:56:41 | 显示全部楼层
1. 基本操作
利用 pandas 处理 Excel 数据
Python 实现 Excel 基本操作
Python 办公自动化之 Excel 做表自动化大全
2. 实现排序
import pandas as pdlists = pd.read_excel("../007/List.xlsx")# 按指定的一列排序lists.sort_values(by="Price",inplace=True,ascending=False)# 指定多列排序(注意:对Worthy列升序,再对Price列降序),ascending不指定的话,默认是True升序lists.sort_values(by=["Worthy","Price"],inplace=True,ascending=[True,False])print(lists)

原文地址:https://www.cnblogs.com/wodexk/p/10803757.html
3. 批量合并 Excel
Python 批量合并 Excel
4. 实现数据透视表

客户这边,其中有一张如同上图所示的数据汇总表,然而需求是,需要将这张表数据做一个数据透视表,最后通过数据透视表中的数据,填写至系统数据库。拿到需求,首先就想到肯定不能直接用设计器去操作 Excel,通过操作 Excel 去做数据透视表,那样,就得通过代码去完成了。
代码分享如下:
import pandas as pdimport numpy as npdef prvot():    f = pd.read_excel(io='C:/file/test/test1/1904农行.xlsx', sheet_name=2)    res = pd.pivot_table(f,index=['商户编号'],aggfunc=[np.sum])    print(res)
其中,pd.pivot_table中的index为做数据透视表的索引列,aggfunc中方法有很多,详细可去看官方文档, 我这里用的是np.sum(求和)。这样得到的数据透视表就如下图所示:

速度是很快的,完成后,再通过一些方法写入 Excel,这样就解决了。
原文地址:https://support.i-search.com.cn/article/1557823880420
回复

使用道具 举报

该用户从未签到

10

主题

30

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2022-9-22 19:42:31 | 显示全部楼层
你是不是会经常简单且重复地操作excel表格?并且这些操作的技术含量低。
本文给你介绍如何使用python高效操作excel,按照本文的教程,你可以快速高效地完成各种excel的骚操作。
你需要做的只有逐个实操本文中的例子,并且消化吸收,直到掌握。
本文中使用的操作系统是Windows,开发环境是Python3.8,使用的openpyxl的版本是3.0.5。
文中的代码,全部都是我亲自测试过的,你可以直接使用,如果有什么问题,可以私信我。
本文将按照如下顺序进行展开:

  • excel表基础知识
  • openpyxl库的使用
1. excel表基础知识


上图是常见的excel表格,我们虽然每天都在使用excel表格,但是一些常见的基础知识也需要普及,因为在介绍这些知识的过程,其实是在为excel表格建模的过程。上图中紫色框选中的是工作簿,红色框选中的是该工作簿下的行,绿色框选中的是该工作簿下的列,黄色框选中的是该工作簿的单元。
通过上一段文字的介绍,我们可以发现,其实excel表格是一个三层结构,最高层是表格,第二层是工作簿,第三层是行、列和单元。

在后面章节中,我们会发现,为了操作一个excel表格,都是按照这样的流程,首先打开表格,指定工作簿,再操作指定的行,列和单元。
2. openpyxl库

openpyxl是一个Python库,用于读取/写入Excel 2010 xlsx / xlsm / xltx / xltm文件。首先通过一个例子来感受下openpyxl的威力。
from openpyxl import Workbookimport datetimewb = Workbook()ws = wb.activews['A1']=42ws.append([1,2,3])ws['A3'] = datetime.datetime.now()wb.save('sample.xlsx')
执行上面的代码,执行结束后,在当前文件夹中新增一个名字为“sample.xlsx"的excel表格,打开该excel表格,里面的内容如下图所示。



2.1 安装

在Windows系统中,点击Windows+R键,输入cmd命令,启动windows系统自带的命令窗口,在命令窗口中输入
pip install openpyxl
执行结果如下:
C:\Users\Administrator>pip install openpyxlCollecting openpyxl  Downloading openpyxl-3.0.5-py2.py3-none-any.whl (242 kB)     |████████████████████████████████| 242 kB 4.3 kB/sRequirement already satisfied: et-xmlfile in d:\anaconda3\lib\site-packages (from openpyxl) (1.0.1)Requirement already satisfied: jdcal in d:\anaconda3\lib\site-packages (from openpyxl) (1.4.1)Installing collected packages: openpyxlSuccessfully installed openpyxl-3.0.5
当提示”Successfully installed openpyxl-3.0.5“,说明安装成功。也可以通过如下的方式进行验证。
在命令窗中继续输入python,进入Python运行环境,输入
>>> import openpyxl
如果没有报错,则也可以说明安装成功了。
C:\Users\Administrator>pythonPython 3.8.3 (default, Jul  2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32Type "help", "copyright", "credits" or "license" for more information.Failed calling sys.__interactivehook__Traceback (most recent call last):  File "D:\anaconda3\lib\site.py", line 440, in register_readline    readline.read_history_file(history)  File "D:\anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file    self.mode._history.read_history_file(filename)  File "D:\anaconda3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file    for line in open(filename, 'r'):UnicodeDecodeError: 'gbk' codec can't decode byte 0x8c in position 636: illegal multibyte sequence>>> import openpyxl>>>
2.2 打开和保存表格

打开文件分为2种情况,第1种情况下是新建表格,第2种情况下是读取已有表格。
新建表格和保存表格
上面的例子就是使用新建表格的方式。代码如下所示。
from openpyxl import Workbook # 实例化wb = Workbook()# 激活 worksheetws = wb.active# 保存表格wb.save("test.xlsx")
读取已有表格
针对系统中已经存在的excel表格,可以使用读取文件的方式。
from openpyxl import load_workbookwb2 = load_workbook("C:\\Users\\Administrator\\Desktop\\新建 Microsoft Excel 工作表.xlsx")print(wb2.sheetnames)
执行结果:
['Sheet1']
2.3 创建工作簿

我们可以使用create_sheet()方法创建新的工作簿。
from openpyxl import Workbookwb = Workbook()ws = wb.active# 新建的工作簿插到末尾ws1 = wb.create_sheet("Myshee1") print(wb.sheetnames)# 新建的工作簿插到首部ws2 = wb.create_sheet("Mysheet2", 0) print(wb.sheetnames)# 新建的工作簿插到倒数第二个位置ws3 = wb.create_sheet("Mysheet3", -1) print(wb.sheetnames)
执行结果:
['Sheet', 'Myshee1']['Mysheet2', 'Sheet', 'Myshee1']['Mysheet2', 'Sheet', 'Mysheet3', 'Myshee1']
可以将现有的工作簿更改名字。系统默认的名称是“Sheet”。
from openpyxl import Workbookwb = Workbook()ws = wb.activeprint(wb.sheetnames)ws.title = "New Title"print(wb.sheetnames)
查看执行结果:
['Sheet']['New Title']
2.4 访问单元格

访问一个单元
可以使用两种方法来获取和修改一个单元格的值。
第一种是直接指定单元格,第二种是通过指定行和列的cell()方法。
from openpyxl import Workbookwb = Workbook()ws = wb.activews['A4'] = 10c=ws['A4'].valueprint(c)d=ws.cell(4,2,1000)print(d.value)
执行结果:
101000
访问多个单元
可以使用切片访问单元格范围,也可以使用行或列范围来访问多个单元,如示例所示。
from openpyxl import Workbookimport randomwb = Workbook()ws = wb.activefor i in range(1,40):    for j in range(1,60):        ws.cell(i,j,random.randint(0, 60))# 使用切片访问range = ws['A1':'D40']# 使用列访问colC=ws['C']col_range=ws['C:D']#使用行访问row10=ws[10]row_range=ws[5:10]wb.save("test.xlsx")
执行结束后,查看变量情况。

查看range是个双层列表,第一层列表拥有40个元素,这40个元素同时也是列表,这些列表中包含4个元素,也就是有40*4个元素。对应代码中取出的['A1':‘D40’]的切片范围。
2.5 插入行和列

我们可以使用相关的工作簿插入行或列。
# openpyxl.worksheet.worksheet模块insert_cols(idx,amount = 1 )在col == idx之前插入一列或多列insert_rows(idx,amount = 1 )在row == idx之前插入一行或多行
默认值为1行或1列。例如,在第7行(在现有第7行之前)插入1行:
>>> ws.insert_rows(7)
例如,在第H列(在现有第H列之前)插入3列。
>>> ws.insert_cols(8,3)
2.6 删除行和列

我们可以使用相关的工作簿删除行或列。
# openpyxl.worksheet.worksheet模块delete_cols(idx,amount = 1 从col == idx删除一列或多列delete_rows(idx,amount = 1 )从row == idx删除一行或多行
默认值为1行或1列。例如,删除列F:H
>>> ws.delete_cols(6, 3)
2.7 使用公式

我们可以使用excel中的所有数学公式,我们以SUM和AVERAGE为例进行说明。
from openpyxl import Workbookimport randomwb = Workbook()ws = wb.activefor i in range(1,40):    for j in range(1,60):        ws.cell(i,j,random.randint(0, 60))ws['F45']="=SUM(B1:F39)"ws['F46']="=AVERAGE(B2:D30)"wb.save("test.xlsx")
执行完毕后,打开“test.xlsx”,查看执行结果。

我们可以看到F45就是调用了excel中的sum公式,求值范围是B1:F39。
注意,由于本例子数字都是随机数,你的执行结果可能不一样。
<hr>学习python需要从基础知识开始,这里推荐几本书供大家学习。
Python编程 从入门到实践 第2版(图灵出品)¥74.50起​
Python数据处理+Python数据分析基础 2本套装京东¥180.00去购买​
再推荐本excel表的书籍。
Word Excel PPT office办公应用从入门到精通计算机办京东¥48.00去购买​


<hr>码字不易,如果真的解决了您的问题。
请您点赞支持。
您可以关注我,我会持续回答计算机相关问题。
我有2个Python专栏。1个专门针对Python初学者,手把手教你入门Python;1个专门介绍强大的第三方库。
回复

使用道具 举报

该用户从未签到

7

主题

49

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2022-9-22 20:28:21 | 显示全部楼层
欢迎关注 @pythonic生物人

,一起精进数据科学(涉及Python/R/统计等)
Python中有丰富的第三方excel处理package,可以大致分为两类:

  • 读或者写Excel文件;
  • Python和Excel交互。
下面简单罗列各种package的特点,详细使用见文中链接文档。
<hr>1、Python读或者写Excel文件

这些python包支持任何 Python platform, 甚至都不需要Windows系统、 Excel 工具。
openpyxl

可以读、写Excel 2010 格式为xlsx/xlsm/xltx/xltm 的文件。
缺点:不支持XLS、不能读取公式
Download | Documentation | Bitbucket
xlsxwriter

强大的excel写入工具,支持格式设置:字体、前景色背景色、freeze panes、公式、data validation、单元格注释等等。
Download | Documentation | GitHub
pyxlsb

支持Excel文件读取为xlsb 格式。
Download | GitHub
pylightxl

支持读取Excelxlsx和xlsm格式、支持写xlsx格式。
Download | Documentation | GitHub
xlrd

支持老版本excel XLS文件操作
Download | Documentation | GitHub
xlwt

支持老版本excel XLS文件操作
Download | Documentation | Examples | GitHub
xlutils

依赖 xlrd和 xlwt, 支持excel文件的copy和修改操作,功能已经被 openpyxl复制。
Download | Documentation | GitHub
<hr>2、Python和Excel交互

区别于上面读和写Excel格式文件工具,下面的工具必须安装excel。
可在excel中使用python代码,在python中拖拽excel数据。
PyXLL


  • 可在Excel中使用Python的NumPy/Pandas操作数据,替代VBA
  • 可在Jupyter notebook中轻松将Excel数据拽到Python中操作,同理可将Python中数据拽到Excel中操作;
  • 在Excel中使用Python的主流可视化工具,如Matplotlib/Plotly/Bokeh/Altair等。
Homepage | Features | Documentation | Download
详细使用:

xlwings


xlwings轻松实现Python和Excel的交互,可愉快滴通过VBA来调用Python脚本。
Homepage | Documentation | GitHub | Download
<hr>❤️更多好文,欢迎关注 @pythonic生物人


文章推荐
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表