Python Pandas 数据分析工具透视表(pivot table)

数据透视表概念

数据透视表是Excel中常用的工具,本片文章的重点不是认识数据透视表,所以找了一片文章,供大家参考。
>>>Excel学习笔记-数据透视表

透视表操作总览

df.pivot_table(values, index, columns, aggfunc, margins)

values: 透视表中的元素值(根据聚合参数得出的)
index: 透视表的行索引
columns: 透视表的列索引
aggfunc: 聚合函数,可以指定多个函数
margins: 表示是否对所有数据进行统计

创建一个DataFrame,后面的代码在其基础上操作。

df = pd.DataFrame({
    'name': ['xiaoming', 'xiaohong', 'xiechen', 'xiaoming', 'xiaohong', 'xiechen',
            'xiaoming', 'xiaohong', 'xiechen', 'xiaoming', 'xiaohong', 'xiechen'],
    'course': ['Chinese', 'Chinese', 'Chinese', 'Chinese', 'Chinese', 'Chinese', 
              'math', 'math', 'math', 'math', 'math', 'math'],
    'semester': ['last', 'last', 'last', 'next', 'next', 'next', 'last', 'last', 'last', 'next', 'next', 'next'],
    'score': [78, 88, 98, 67, 92, 95, 82, 62, 87, 54, 65, 89]
})

在这里插入图片描述

pivot_table 主要参数使用(index | columns | valuse)

df.pivot_table(values='score', index='semester', columns='course')

在这里插入图片描述
index 作为横坐标,columns 作为纵坐标,value 作为值的内容,默认value求的是平均值,如果想以以其他方式聚合就需要使用 aggfunc 参数配置。

aggfunc

df.pivot_table(values='score', index='semester', columns='course', aggfunc='sum')

在这里插入图片描述
aggfunc 也可以传入列表,以多种方式分别透视。

df.pivot_table(values='score', index='semester', columns='course', aggfunc=['sum', 'mean', 'max', 'min'])

在这里插入图片描述
另外,数据透视有时候还会需要对行列进行统计,就需要使用到 margins

margins

df.pivot_table(values='score', index='semester', columns='course', margins=True, aggfunc=np.sum)

在这里插入图片描述

df.pivot_table(values='score', index='semester', columns='course', margins=True, aggfunc=np.min)

在这里插入图片描述

margins 参数默认是Flase,配置该参数为True后,透视表 行/列 的末尾会增加为All的 行/列 。
Alll这一列的规则和value是一致的,value求最大,all会展示这一列的最大,以此类推。