作用
pandas.pivot_table()是pandas库中的一个函数,它可以根据指定的行和列,对数据进行透视,计算出指定字段的聚合值,并返回一个新的表格。pivot_table()可以帮助我们进行数据的汇总和分析,方便我们发现数据中的规律和趋势。
使用方法
pivot_table()函数的语法格式如下:
pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
参数说明:
data:要进行透视的数据集,可以是Series、DataFrame或者其他类似的对象。
values:要聚合的字段名称,可以是字符串或者字符串列表。
index:行索引,即按照行进行透视的字段名称,可以是字符串或者字符串列表。
columns:列索引,即按照列进行透视的字段名称,可以是字符串或者字符串列表。
aggfunc:聚合函数,可以是mean、sum、count、max、min等函数,默认为mean函数。
fill_value:缺失值的填充值。
margins:是否添加总计行和总计列,可以是True或者False,默认为False。
dropna:是否过滤缺失值,可以是True或者False,默认为True。
margins_name:总计行和总计列的名称。
下面我们来看两个例子。
例1:对电商销售数据进行透视分析
我们有一份电商销售数据,包含了用户ID、商品类别和销售额字段。我们需要按照不同的商品类别和用户ID进行透视,计算出每种商品类别下每个用户的平均销售额。
import pandas as pd
# 创建DataFrame
sales_data = pd.Data({
'UserID': [1, 1, 2, 2, 3, 3, 4, 4],
'Category': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
'Sales': [100, 200, 150, 300, 180, 220, 120, 250]
})
# 对数据进行透视
result = pd.pivot_table(
data=sales_data,
values='Sales',
index='UserID',
columns='Category',
aggfunc='mean'
)
print(result)
输出结果:
Category A B
UserID
1 100 200
2 150 300
3 180 220
4 120 250
代码说明:
我们通过pivot_table()函数对销售数据进行了透视分析,按照行进行分组的字段为UserID,按照列进行分组的字段为Category,计算的聚合函数为mean(均值),聚合的字段为Sales。最终结果表明,在每个商品类别下,每个用户的平均销售额是多少。
例2:对旅游数据进行透视分析
我们有一份旅游数据,包含了旅游目的地、时间和花费字段。我们需要按照不同的目的地和时间进行透视,计算出每个目的地在不同时间段的平均花费和最高花费。
import pandas as pd
# 创建DataFrame
travel_data = pd.Data({
'Destination': ['Beijing', 'Shanghai', 'Beijing', 'Shanghai', 'Beijing', 'Shanghai'],
'Time': ['2019-01', '2019-01', '2019-02', '2019-02', '2019-03', '2019-03'],
'Cost': [1000, 1200, 800, 900, 1300, 1400]
})
# 对数据进行透视
result = pd.pivot_table(
data=travel_data,
values='Cost',
index='Destination',
columns='Time',
aggfunc=['mean', 'max']
)
print(result)
输出结果:
mean max
Time 2019-01 2019-02 2019-03 2019-01 2019-02 2019-03
Destination
Beijing 1000.0 800.0 1300.0 1000 800 1300
Shanghai 1200.0 900.0 1400.0 1200 900 1400
代码说明:
我们通过pivot_table()函数对旅游数据进行了透视分析,按照行进行分组的字段为Destination,按照列进行分组的字段为Time,计算的聚合函数为mean和max,聚合的字段为Cost。最终结果表明,在每个目的地下,不同时间段的平均花费和最高花费分别是多少。