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

Python数据处理:比Excel更方便的,pandas数据透视表!_第1张图片

数据透视表(pivot table)

数据透视表与GroupBy抽象类,操作方法类似,常见于 Excel 表格应用中。数据透视表,将每一列数据作为输入,将数据不断细分成,多个维度累计信息的二维数据表。两者之间的区别:是数据透视表更像是一种多维的 GroupBy累计操作。也就是说,分割与组合不是发生在一维索引上,而是在二维网格上(行列同时分组)。

一、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数据透视表!_第2张图片

三、数据透视表语法:

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

​​代码结果:​

Python数据处理:比Excel更方便的,pandas数据透视表!_第3张图片

1.多级数据透视表:

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

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

age= pd.cut(titanic['age'], [0, 18, 80])

titanic.pivot_table('survived', ['sex', age], 'class')

​​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!_第4张图片

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

fare= pd.qcut(titanic['fare'], 2)

titanic.pivot_table('survived', ['sex', age], [fare, 'class'])

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!_第5张图片

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数据透视表!_第6张图片

2.字典

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

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

aggfunc={'survived':sum, 'fare':'mean'})

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!_第7张图片

3.margins参数

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

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

​代码结果:

Python数据处理:比Excel更方便的,pandas数据透视表!_第8张图片

好啦,本文就分享到这里,跟多python学习可以关注我们哦

注:想学习Python的小伙伴们

可以

进群:984632579

领取从0到1完整学习资料 视频 源码 精品书籍 一个月经典笔记和99道练习题及答案

你可能感兴趣的:(Python数据处理:比Excel更方便的,pandas数据透视表!)