全文共1370字,预计学习时长7分钟
![f66aa02074b4fcea1cb57994bb49fe7f.png](https://i-blog.csdnimg.cn/blog_migrate/ddefa115fe7f296ad934681df74f0c13.jpeg)
图源:realpython
几乎人人都在用Excel,这种极易上手的数据分析工具无处不在,一旦你掌握了窍门,它就变得非常强大。而Python通常被认为更具有挑战性,但能做的事也更多。
当Python遇到Excel会发生什么?本文将告诉你,这三项Excel日常任务,如何用Python轻松搞定。
首先导入Pandas并根据工作簿中可用的工作表加载两个dataframe,称它们为sales和states。
import pandas as pd sales = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name ='sales') states = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name ='states')
调用dataframe的head()方法,如下所示:
print(sales.head())
与Excel进行对比:
![83f6bf9c8260903603e526f92ca70804.png](https://i-blog.csdnimg.cn/blog_migrate/fd83d55b085277299ed198a2a84fb7c6.jpeg)
图源:Nik Piepenbreier
可以看到Pandas和Excel显示的数据是比较相似的,但是有一些关键的区别:
· Excel从A开始用字母标记列,而Pandas用变量名称
· Excel起始行数为1,而Pandas起始行数(“索引”)为0
那么要如何使用Pandas来完成Excel任务呢?
Pandas的数据透视表
数据透视表是Excel最强大的功能之一,用户可以难以置信的速度从大型数据集中提取有意义的数据。来创建一个关于每个城市销售总额数据透视表:
![3ba49db5061ae50ab7790213b0a47834.png](https://i-blog.csdnimg.cn/blog_migrate/f660b5b3163206057fb009958779dd6e.jpeg)
用Excel创建数据透视表| Nik Piepenbreier
用户只需将City字段拖到Rows部分,将Sales字段拖到Values部分。Excel会自动汇总数据集中每个城市的销售额。
编写以下代码,Pandas可以实现相同的数据透视表:
sales.pivot_table(index = 'City',values = 'Sales', aggfunc = 'sum'))
它是怎样实现的呢:
1.sales.pivot_table告知Pandas基于sales的dataframe创建数据透视表index指定了要聚合的项目
2.values指定了要聚合的值
3.aggfunc指定了使用的函数(还要用到mean、max、min等)
![c9d13830b9362dfe84522622ba800116.png](https://i-blog.csdnimg.cn/blog_migrate/ee358c16b8e8040d95628dd2105bab67.jpeg)
图源:unsplash
Python中的if函数
Excel中使用IF函数非常方便,可以根据另一个单元格中的条件应用特定的标签。假设要创建一个新列来告知列B中单元格的值是否大于500。在Excel中,将列E标记为大于500,然后进入单元格E2并写入:
=IF([@Sales]>500,"Yes", "No")
![61e66fd52b6db25a73d0124be4377f27.png](https://i-blog.csdnimg.cn/blog_migrate/f4d8d94181944f252f57ab38af88a260.jpeg)
图源:Nik Piepenbreier
换成Python,可以使用列表生成式轻松地应用相同的if语句:
df['MoreThan500'] = ['Yes' if x> 500 else 'No' for x in df['Sales']
列表生成式非常适合这类工作,不用再编写复杂if/else语句,你可以更快写出更整洁的代码。
Pandas中的VLOOKUP
在数据集中,一个表上有城市,另一个表上有州/省。这并不理想,但是可以在Excel中使用VLOOKUP来链接数据。VLOOKUP的工作方式类似于左联接,即保留左数据集中的所有记录。让Excel上下垂直查找表中的特定值,然后返回一个值,该值位于它右边的某一列中。
增加一个名为“State”的列,使用VLOOKUP从states表中返回相应的州。
![70d89a8dbefbb4829f0f55277dd8a1ec.png](https://i-blog.csdnimg.cn/blog_migrate/14829ab96f976e42e8394df6cf355cd9.jpeg)
图源:NikPiepenbreier
而在Python中,可以使用Pandas的merge函数来完成相同的事情。merge函数获取两个dataframe并将它们合并。代码如下:
sales = pd.merge(sales, states,how='left', on='City')
让我们逐步来看看它:
1.第一个参数是原始dataframe
2.第二个参数是查找值所在的dataframe
3.how指定要创建的连接类型
4.on指定了想要合并的变量(如果在每个dataframe中变量名不同,还可以用left_on和right_on)
![309af388538b84488f43e2d608c9a6c2.png](https://i-blog.csdnimg.cn/blog_migrate/f03dea765236c25eb63c3c25e81caa43.jpeg)
图源:unsplash
你可能会问,既然Excel中可以做到,为什么还要使用Pandas呢?Python能够生成可重用的、可跟踪的代码,我们能够轻松地复制分析设计。
对于较小的分析来说,Excel可能就足够了。但给何妨Pandas一个机会,或许你会打开一个新世界。
![e338afc7fde8097164f55333c2c3bf73.png](https://i-blog.csdnimg.cn/blog_migrate/69588d891ce17f2d0ecc822adcc703df.jpeg)
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范