Python数据处理:比Excel更方便的,pandas数据透视表!

数据透视表(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()

​​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!

三、数据透视表语法:

titanic.pivot_table('survived', index='sex', columns='class')

​​代码结果:​

Python数据处理:比Excel更方便的,pandas数据透视表!

1.多级数据透视表:

与GroupBy类似,数据透视表中的分组,也可以通过各种参数,指定多个等级。

列如把年龄('age')也加进去作为第三个维度,这就可以通过 pd.cut 函数将年龄进行分段。

age= pd.cut(titanic['age'], [0, 18, 80])
titanic.pivot_table('survived', ['sex', age], 'class')

​​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!

对列也可以使用同样的操作,用pd.qcut将船票价格按照计数项等分为两份。

fare= pd.qcut(titanic['fare'], 2)
titanic.pivot_table('survived', ['sex', age], [fare, 'class'])

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!

2.其他数据透视表选项:

1.aggfunc 参数

用于设置累计函数类型,默认值是均值(mean)。常见的字符串'sum'、'mean'、'count'、'min'、'max' 等,也可以用标准的累计函数np.sum()、min()、sum() 等。

titanic.pivot_table('survived',index='sex', columns='class',
 aggfunc='count')

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!

2.字典

用字典为不同的列,指定不同的累计函数。

titanic.pivot_table(index='sex', columns='class',
 aggfunc={'survived':sum, 'fare':'mean'})

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!

3.margins参数

计算每一组的总数时,可以通过margins参数来设置。

titanic.pivot_table('survived', index='sex', columns='class', margins=True)

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!

猜你喜欢

转载自blog.csdn.net/weixin_44138053/article/details/86596097