Excel是一个无处不在的数据处理、分析工具,大多数人或多或少都使用过Excel,而且一旦你掌握了它的使用技巧,你会打开另外一扇窗!此外,也有人认为,具有无限潜力的Python也非常有挑战性。在这篇文章中,我们将探讨在Excel中能够完成,但是在Python中能够更轻松实现的三件事!
从导入panda开始,并基于工作簿中需要用的工作表加载两个数据帧。两个列的定义为 sales 和 states 。
import pandas as pdsales = 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')
将我们的数据集导入Pandas数据帧。
让我们想象一下,我们对数据帧运行了.head()方法,如下所示:
print(sales.head())
我们可以将其与Excel中的数据进行比较:
比较数据在Excel和Pandas中的两种显示方式
我们可以看到显示的数据与Excel显示数据的方式相对类似,但有一些关键的区别:
- Excel从第1行开始,Pandas从第0行开始('index');
- Excel用以A开头的字母标记列,而Pandas用变量名标记列。
让我们开始深入探讨如何运用 Pandas 完成Excel任务。
Python中的IF函数
在Excel中使用IF函数非常方便,允许我们根据另一个单元格中的条件应用某个标签。假设我们想创建一个新列,让我们知道B列中单元格的值是否大于500。在Excel中,我们将列E标记为大于500,然后进入单元格E2并写入:
=IF([@Sales]>500, "Yes", "No")
在Excel中应用IF函数
如果我们想在Pandas中这样做,我们可以使用列表理解来轻松应用相同的 If 语句:
df['MoreThan500'] = ['Yes' if x > 500 else 'No' for x in df['Sales']
列表理解是这类工作的好工具,它减少了编写复杂 if/else 语句的需要。使用 if/else 语句也可以完成相同的任务,但这样可以节省时间并使代码更简洁。通过阅读本文,你可以详细了解列表理解。
列表理解的解释
Pandas中的VLOOKUP
在我们的数据集中,城市在一张纸上,州/省在另一张纸上。这并不理想,但我们可以使用Excel中的VLOOKUP链接数据。VLOOKUP的工作方式与左连接类似,左数据集中的每个记录都被保留。我们告诉Excel在查找表中垂直上下查找列中的特定值,然后返回一个值,该值位于列右侧的特定列数中。
让我们添加一个名为“State”的列,并使用VLOOKUP从 States 表返回相应的状态。
使用VLOOKUP添加州/省信息
在Python中,我们可以使用Pandas merge函数完成相同的任务。Merge获取两个数据帧并合并它们。为此,我们将编写以下代码:
sales = pd.merge(sales, states, how='left', on='City')
让我们把这个论点一个一个地分解开来:
- 第一个参数是原始数据帧;
- 第二个参数是我们在中查找值的数据帧;
- 如何指定要创建的联接类型;
- On指定要合并的变量(如果变量在每个数据帧中被称为不同的对象,则还有left_On和right_On)。
Pandas中的数据透视表
数据透视表是Excel最强大的功能之一,它允许我们以惊人的速度提取关于大型数据集的有意义的数据。让我们根据每个城市的销售额总和创建一个数据透视表。
在Excel中生成数据透视表
为此,我们只需将City字段拖到Rows部分,将Sales字段拖到Values部分。Excel自动汇总数据集中每个城市的销售额。
要在Pandas中生成相同的数据透视表,我们将编写以下代码:
sales.pivot_table(index = 'City', values = 'Sales', aggfunc = 'sum'))
我们再把这个分解一下:
- 我们使用sales.pivot_表让Pandas知道我们要基于sales dataframe创建一个pivot表
- 索引指定要聚合的值
- 值指定要聚合的值
- Aggfunc指定要使用的函数(也可以使用mean、max、min等)
最后
在本文中,我们学习了如何将Excel数据导入Pandas,如何完成IF和VLOOKUP函数,以及如何生成数据透视表。但你可能会问自己,如果你能在Excel中完成这里列出的所有工作,为什么要使用Pandas?这里没有一个明确的答案。Python允许我们生成可重用的、可跟踪的代码,使我们能够轻松地复制分析设计,Excel可能只够进行更小的分析。