用ChatGPT自动生成代码,十倍提升工作效率
写好提示词,追求生成的代码不需要修改
纸质图书:《智能分析:ChatGPT+Excel+Python超强组合玩转数据分析》 京东当当
视频课程:点这里,超值套餐,系统学习Python办公自动化
================================================================
科学技术的发展,日新月异。一个或大或小的技术革新,在数据处理领域也会激起或大或小的波澜。本章介绍写作本书的知识背景,相关的各种工具、各种工具的对比和实验。本章内容非常重要,是开门见山的指引,也是长途跋涉以后的总结,值得你在学习后续内容的时候不断回过头来咀嚼。
目前进行数据处理,可以使用Excel提供的工具,也可以使用Python的相关模块。本节简单介绍各种处理方法。本书主要结合Python的几个包,即pandas+xlwings/OpenPyXL组合进行介绍,本节交代了为什么选用这几个包。
Excel数据处理目前主要经历两个阶段,第一个阶段是传统中小型数据的处理,第二个阶段是大型数据的处理。
传统中小型数据的处理,使用Excel、公式函数、VBA等工具来实现,处理的内容包括数据导入和导出、数据整理、数据预处理、数据统计分析等。数据整理指的是文件这个层面上的数据处理,包括数据列操作、行操作、值操作、数据查询、排序、排名、筛选、数据拆分和合并、文本数据整理、日期时间数据整理等内容。数据预处理指的是文件中存在有问题的数据,如果不处理,将会影响分析进程和分析结果,内容包括重复数据的处理、缺失值的处理、异常值的处理、数据转换等。数据准备好后就可以进行数据统计分析和可视化处理了。
大型数据处理的主要内容还是这些,只是数据量大了很多,传统方法力不从心了。此时使用Power Query等工具进行处理。当然,用Power Query处理中小型数据也是可以的,也有很多便利之处,缺失是Power Query不支持Excel对象模型,不能直接跟Excel工作表进行交互。
近些年,由于大数据时代的来临,Python在国内逐渐火起来。用Python处理数据也成了Excel数据分析的另外一个重要选择。Python使用与Excel有关的包进行数据分析,这些包如表1-1所示。
表1-1 Excel相关的Python包
Python包 说 明
xlrd 支持读取xls和xlsx文件
xlwt 支持写xls文件
OpenPyXl 支持xlsx/xlsm/xltx/xltm文件的读写,支持Excel对象模型,不依赖Excel
XlsxWriter 支持xlsx文件的写,支持VBA
win32com 封装了VBA使用的所有Excel对象
comtypes 封装了VBA使用的所有Excel对象
xlwings 重新封装了Win32COM,支持与VBA混合编程,与各种数据类型进行数据类型转换
pandas 支持.xls,.xlsx文件的读写,提供进行数据处理的各种函数,处理更简洁,速度更快
这些包都有各自的特点,有的小快灵,有的功能齐全可与VBA使用的模型相媲美;有的不依赖Excel,有的必须依赖Excel;有的工作效率一般,有的工作效率很高。
微软提供的Excel、VBA和Power BI系列工具和Python的相关模块实际上构成了实现数据分析的两条产品线。它们之间有清晰的对应关系,即Excel VBA对应win32com/xlwings,处理传统中小型数据;Power Query对应pandas,处理大型数据。
本书中使用Python处理数据,主推pandas+xlwings/OpenPyXL组合。用pandas分析数据,用xlwings和OpenPyXL与Excel工作表进行交互,做报表。
表1-1各Python包中,本书主要用其中3个有代表性的包进行编程,即pandas, xlwings和OpenPyXL。
pandas是在NumPy的基础上开发出来的,继承了NumPy计算速度快的优点。而且pandas中提供了很多进行数据处理的函数和方法,调用它们,可以快速可靠地实现表数据的处理,而且代码很简洁。
xlwings通过封装win32com,相当于二次封装了Excel, Word等软件的对象模型,所以,VBA能做的,使用它基本上也能做到。它对Excel对象模型,如工作簿、工作表、单元格、图形、图表、数据透视表等有全方位的支持。
OpenPyXl包也支持Excel对象模型,支持工作簿、工作表、单元格、图表等对象。
对比这3个包,它们有各自的优点和缺点,谁也不能完全代替谁。
pandas处理数据的速度很快,但是它不支持Excel对象模型,不能在pandas中直接读取Excel工作表指定单元格区域中的数据或者将数据写入指定单元格区域。
xlwings对Excel对象模型支持最彻底,VBA能做的它基本都能做,但是它依赖Excel,即使用xlwings时计算机上必须安装Excel软件。
OpenPyXL的最大的特点是可以不依赖于Excel软件操作Excel文件,也就是说计算机上不安装Excel软件也可以正常使用。它的缺点是对Excel对象模型的支持不彻底,很多对象和功能没有。
所以,综合以上叙述,实际工作中常常将这几个包结合起来用。用pandas做数据处理,用OpenPyXl或xlwings进行与Excel对象有关的操作,如数据的读写、Excel单元格格式设置等。
后面的实战中经常会提到两个名词,即Series和DataFrame。什么是DataFrame?什么是Series呢?
如图1-1所示,DataFrame可以理解为一张表,该表有行表头和列表头。Row0-Row4是行表头,称为行索引、行标签或行名,它们组成的列称为索引列;Column1-Column3是列表头,称为列索引、列标签或列名,它们组成的行称为索引行。
图1-1 Series和DataFrame
Series是DataFrame中带索引列的单列,或者带索引行的单行,如图1-1中所示。
DataFrame可以看作是带索引的二维数组。Series可以看作是带索引的一维数组,它们都是结构化数组。
实战中首先需要导入数据,使用pandas的read_excel或read_csv等函数导入Excel文件数据时,数据被导入到一个DataFrame中,默认时第一行数据作为索引行,即列表头。
用Python编程之前,需要先下载安装Python软件。在网络浏览器中访问Python官网https://www.python.org下载与你计算机操作系统相匹配的Python安装文件。如果操作系统是64位的,就下载64位的安装文件。下载完毕后双击可执行安装文件,然后在打开的界面中按照提示一步一步完成安装。
除了需要安装Python软件以外,本书还用到几个第三方Python包,包括xlrd, NumPy, OpenPyXL, xlwings, pandas和Matplotlib。使用它们之前需要先进行安装。下面在计算机连接互联网的情况下进行安装。
从屏幕左下角处的“开始”菜单打开Power Shell窗口,在提示符后键入下面的命令行,安装xlrd。
pip install xlrd
在提示符后键入下面的命令行,安装NumPy。
pip install numpy
在提示符后键入下面的命令行,安装OpenPyXL。
pip install openpyxl
在提示符后键入下面的命令行,安装pandas。
pip install pandas
在提示符后键入下面的命令行,安装xlwings。
pip install xlwings
在提示符后键入下面的命令行,安装Matplotlib。
pip install matplotlib
如果需要离线安装,请访问下面网站:
https://pypi.org
然后搜索包的名字,找到包对应的网页链接,找到左边的”Download files”菜单单击,然后在右边找到跟你安装的Python版本匹配,并且跟计算机操作系统匹配的whl文件下载安装。比如下面这个链接文本:
pandas-2.0.2-cp310-cp310-win_amd64.whl (10.7 MB view hashes)
其中,cp310表示Python的版本是3.10,win-amd64表示计算机操作系统是Windows 64位的。
以笔者安装的Python 3.10为例,Python软件安装好以后,从Windows左下角的“开始”菜单中单击“Python 3.10”目录下的“IDLE”选项,打开“IDLE Shell”窗口,如图1-2所示。
图1-2 IDLE Shell窗口
窗口中第1行显示软件和系统的信息,包括Python版本号、开始运行的时间、系统信息等。第2行提示在提示符(>>>)后面键入help等关键字可以获取帮助、版权等更多信息。
第3行显示提示符>>>。在后面键入Python语句,回车,又会显示一个提示符,可以继续键入语句。这种编程方式称为命令行模式的编程,它是逐行输入和执行的。在本书后面各章节中,凡是Python语句前面有>>>提示符的,就表示是以命令行模式编程,是在“IDLE Shell”窗口中进行的。
在“IDLE Shell”窗口中单击“File”菜单中的“New File”选项,打开如图1-3所示的窗口。在该窗口中连续输入语句或函数,保存为py文件,单击“Run”菜单中的“Run Module”选项,可以一次执行多行语句。这种方式称为脚本文件的编程方式。在本书后面各章节中,Python语句前面没有>>>提示符的,就表示是以脚本文件方式编程的。
图1-3 编写脚本文件
因为本书假设大部分读者是不懂Python编程或略懂Python编程的,下面结合一个实例来演示给定一段Python代码的情况下怎样在Python IDLE中运行它并得出处理结果。
【示例1-1】
本例给出实现0到整数c累加运算的Python函数式脚本,演示如何用Python IDLE运行该代码。
用记事本编写以下代码。不懂代码的同学不用管这个代码是什么意思。
def MySum(c):
s=0
for i in range(c+1):
s+=i
return s
print(MySum(4)) #重复调用MySum函数
print(MySum(10))
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出0到4的累加和和0到10的累加和。
>>> == RESTART: D:/Samples/1.py =
10
55