一文搞懂Python中pandas透视表pivot_table功能
介绍
Pandas是一个强大的数据分析工具,它提供了多种数据操作功能,包括数据过滤、变换、聚合和透视表等功能。其中,透视表(pivot table)功能在数据分析中非常常用,它能够快速方便地将原始数据转换为指定格式。
本文将使用Python中的pandas包,结合实际数据,详细介绍如何使用pivot_table功能。
pivot_table概述
pivot_table是pandas中实现透视表功能的函数,它可以轻松地根据数据的标签进行数据透视。默认情况下,pivot_table可以根据指定的列进行数据聚合计算,比如求和、均值、计数等操作。同时,pivot_table还支持自定义聚合函数,可以方便地应对更加复杂的需求。
示例
假设我们有一个销售订单数据,包括订单号、产品类型、销售日期和销售金额等信息,如下所示:
订单号 | 产品类型 | 销售日期 | 销售金额 |
---|---|---|---|
001 | A | 2021/1/1 | 100 |
002 | A | 2021/1/2 | 150 |
003 | B | 2021/1/2 | 200 |
004 | C | 2021/1/3 | 120 |
005 | A | 2021/1/3 | 180 |
现在我们需要根据产品类型和销售日期对数据进行透视分析,得到每种产品在每个日期的销售金额总和。
示例1:默认情况
默认情况下,pivot_table函数将根据指定的行和列进行数据聚合计算,并返回一个新的透视表。
import pandas as pd
# 读取数据
df = pd.read_excel('sales.xlsx')
# 生成透视表
pv = pd.pivot_table(df, values='销售金额', index=['产品类型'], columns=['销售日期'], aggfunc=sum)
# 输出结果
print(pv)
输出结果如下:
销售日期 2021/1/1 2021/1/2 2021/1/3
产品类型
A 100.0 150.0 180.0
B NaN 200.0 NaN
C NaN NaN 120.0
可以看到,透视表按照产品类型和销售日期分组,计算每个组的销售金额总和,并生成了新的透视表。这时候,NaN表示对应的组没有销售,因此销售金额为0。
示例2:自定义聚合函数
默认情况下,pivot_table函数对数据聚合时,采用的是sum函数。如果需要使用其他聚合函数,可以通过aggfunc参数指定自定义聚合函数。
import pandas as pd
# 读取数据
df = pd.read_excel('sales.xlsx')
# 自定义聚合函数:计算销售金额的平均值
def mean_sales(x):
return x.mean()
# 生成透视表
pv = pd.pivot_table(df, values='销售金额', index=['产品类型'], columns=['销售日期'], aggfunc=mean_sales)
# 输出结果
print(pv)
输出结果如下:
销售日期 2021/1/1 2021/1/2 2021/1/3
产品类型
A 100.0 150.0 180.0
B NaN 200.0 NaN
C NaN NaN 120.0
可以看到,自定义聚合函数mean_sales计算了每个组销售金额的平均值,并生成了新的透视表。这时候,NaN仍然表示对应的组没有销售,因此平均销售金额为0。
总结
pivot_table是pandas中实现透视表功能的函数,可以轻松地根据数据的标签进行数据透视。默认情况下,pivot_table可以根据指定的列进行数据聚合计算,并返回一个新的透视表。同时,pivot_table还支持自定义聚合函数,可以方便地应对更加复杂的需求。在数据分析中,pivot_table是一个非常强大的工具,熟练掌握它的使用方法,可以大大提高数据分析的效率。