Python原来也有数据透视功能,pandas.pivot_table()(创建透视表)函数

王江
创建于2023-06-19
阅读 3502
收藏TA

需扫码在手机上打开
文章后点击更新提醒

作用


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。最终结果表明,在每个目的地下,不同时间段的平均花费和最高花费分别是多少。


阅读 3502
文章由 美篇工作版 编辑制作
投诉