前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas透视表分析

pandas透视表分析

作者头像
陆勤_数据人网
发布2019-05-28 20:08:55
2.1K0
发布2019-05-28 20:08:55
举报

请思考:

1 透视表是什么?会用Excel做透视表吗?

2 pandas如何做透视表分析?使用什么函数?函数的参数如何选择和设置?

1 透视表介绍

数据透视表是一个用来总结和展示数据的强大工具。pandas提供了pivot_table()函数以快捷地把DataFrame转换为透视表。

2 导入数据

代码

代码语言:javascript
复制
# 导入Python库
import numpy as np
import pandas as pd

# 读取Excel文件,并且查看前5行数据集
df = pd.read_excel('sales-funnel.xlsx')
df.head()

结果

变量集数据类型以及类型转换

代码

代码语言:javascript
复制
# 查看变量集数据类型
df.dtypes
# 变量Status类型转换和设置要检视的顺序
df['Status'] = df['Status'].astype('category')
df['Status'].cat.set_categories(["won","pending","presented","declined"],inplace=True)

结果

3 数据透视表分析

简单的透视表,指定DataFrame里面需要透视的一个index,以Name为index做透视表。

代码

代码语言:javascript
复制
# 指定一个DataFrame和它的一个的index做简单的透视表
pd.pivot_table(df, index=['Name'])

结果

请思考:透视表默认的计算逻辑和展示方式是什么?

在数据框中选择多个index做透视表。

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Name', 'Rep', 'Manager'])

结果

通过参数values指定我们所关心的列。

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'])

结果

计算逻辑默认是对数值型变量做平均,通过参数aggfunc设置所要聚合计算的逻辑,比方说求和,最小值,最大值等。

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=np.sum)

结果

参数aggfunc可以接受一个聚合计算的列表,例如:求和与计数

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=[np.sum, len])

结果

参数columns实现对透视表做进一步细分或者下钻。

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], columns=['Product'], aggfunc=[np.sum])

结果

参数fill_value对透视表里面缺失值做处理

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], columns=['Product'], aggfunc=[np.sum], fill_value=0)

结果

参数margins对透视表做总数描述

代码

代码语言:javascript
复制
pd.pivot_table(df, index=['Manager', 'Rep', 'Product'], values=['Price', 'Quantity'], aggfunc=[np.sum, np.mean], fill_value=0, margins=True)

结果

通过对参数aggfunc传递字典来实现对参数values里面指定的列执行所需的聚合计算操作。

代码

代码语言:javascript
复制
table = pd.pivot_table(df, index=['Manager', 'Status'], columns=['Product'], values=['Quantity', 'Price'], aggfunc={'Quantity':len, 'Price':[np.sum, np.mean]}, fill_value=0)
table

结果

4 使用query()函数对透视表做过滤操作

实例1

代码

代码语言:javascript
复制
table.query('Manager == ["Debra Henley"]')

结果

实例2

代码

代码语言:javascript
复制
table.query('Status == ["pending","won"]')

结果

5 总结

pandas通过pivot_table()函数可以实现透视表,通过设置函数里面的不同参数以达成不同的目标。常用的参数包括index, values, aggfunc, columns, fill_value, margins等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档