数据透视表(pivot table)
数据透视表与GroupBy抽象类,操作方法类似,常见于 Excel 表格应用中。数据透视表,将每一列数据作为输入,将数据不断细分成,多个维度累计信息的二维数据表。两者之间的区别:是数据透视表更像是一种多维的 GroupBy累计操作。也就是说,分割与组合不是发生在一维索引上,而是在二维网格上(行列同时分组)。
**进群:700341555获取Python入门学习资料!**
一、DataFrame 的 pivot_table 方法:
DataFrame.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
二、导入数据:
import numpy as np import pandas as pd import seaborn as sns titanic= sns.load_dataset('titanic') titanic.head()
代码结果:
三、数据透视表语法:
titanic.pivot_table('survived', index='sex', columns='class')
代码结果:
1.多级数据透视表:
与GroupBy类似,数据透视表中的分组,也可以通过各种参数,指定多个等级。
列如把年龄('age')也加进去作为第三个维度,这就可以通过 pd.cut 函数将年龄进行分段。
age= pd.cut(titanic['age'], [0, 18, 80]) titanic.pivot_table('survived', ['sex', age], 'class')
代码结果:
对列也可以使用同样的操作,用pd.qcut将船票价格按照计数项等分为两份。
fare= pd.qcut(titanic['fare'], 2) titanic.pivot_table('survived', ['sex', age], [fare, 'class'])
代码结果:
2.其他数据透视表选项:
1.aggfunc 参数
用于设置累计函数类型,默认值是均值(mean)。常见的字符串'sum'、'mean'、'count'、'min'、'max' 等,也可以用标准的累计函数np.sum()、min()、sum() 等。
titanic.pivot_table('survived',index='sex', columns='class', aggfunc='count')
代码结果:
2.字典
用字典为不同的列,指定不同的累计函数。
titanic.pivot_table(index='sex', columns='class', aggfunc={'survived':sum, 'fare':'mean'})
代码结果:
3.margins参数
计算每一组的总数时,可以通过margins参数来设置。
titanic.pivot_table('survived', index='sex', columns='class', margins=True)
代码结果: