pandas取excel中的某⼀列_当Python遇到Excel……
全⽂共1370字,预计学习时长7分钟
图源:realpython
⼏乎⼈⼈都在⽤Excel,这种极易上⼿的数据分析⼯具⽆处不在,⼀旦你掌握了窍门,它就变得⾮常强⼤。⽽Python通常被认为更具有挑战
性,但能做的事也更多。
当Python遇到Excel会发⽣什么?本⽂将告诉你,这三项Excel⽇常任务,如何⽤Python轻松搞定。
⾸先导⼊Pandas并根据⼯作簿中可⽤的⼯作表加载两个dataframe,称它们为sales和states。
import pandas as pd    sales = pd.read_excel('github/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name ='sales')    states = pd.read_exc 调⽤dataframe的head()⽅法,如下所⽰:
print(sales.head())
与Excel进⾏对⽐:
图源:Nik Piepenbreier
可以看到Pandas和Excel显⽰的数据是⽐较相似的,但是有⼀些关键的区别:
· Excel从A开始⽤字母标记列,⽽Pandas⽤变量名称
· Excel起始⾏数为1,⽽Pandas起始⾏数(“索引”)为0
那么要如何使⽤Pandas来完成Excel任务呢?
Pandas的数据透视表
数据透视表是Excel最强⼤的功能之⼀,⽤户可以难以置信的速度从⼤型数据集中提取有意义的数据。来创建⼀个关于每个城市销售总额数据透视表:
⽤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等)
图源:unsplash
python怎么读取excel某一列Python中的if函数
Excel中使⽤IF函数⾮常⽅便,可以根据另⼀个单元格中的条件应⽤特定的标签。假设要创建⼀个新列来告知列B中单元格的值是否⼤于500。在Excel中,将列E标记为⼤于500,然后进⼊单元格E2并写⼊:
=IF([@Sales]>500,"Yes", "No")
图源: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表中返回相应的州。
图源:NikPiepenbreier
⽽在Python中,可以使⽤Pandas的merge函数来完成相同的事情。merge函数获取两个dataframe并将它们合并。代码如下:
sales = pd.merge(sales, states,how='left', on='City')
让我们逐步来看看它:
1.第⼀个参数是原始dataframe
2.第⼆个参数是查值所在的dataframe
3.how指定要创建的连接类型
<指定了想要合并的变量(如果在每个dataframe中变量名不同,还可以⽤left_on和right_on)
图源:unsplash
你可能会问,既然Excel中可以做到,为什么还要使⽤Pandas呢?Python能够⽣成可重⽤的、可跟踪的代码,我们能够轻松地复制分析设计。
对于较⼩的分析来说,Excel可能就⾜够了。但给何妨Pandas⼀个机会,或许你会打开⼀个新世界。
留⾔点赞关注
我们⼀起分享AI学习与发展的⼲货
如转载,请后台留⾔,遵守转载规范

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。