pandas pivote_table透视表

用法

pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False, sort=True)

参数介绍

参数介绍
data传入的数据,以dataframe形式
values需要聚合的列名,单个列名或者列表形式
index索引,一个或多个索引
columns列名称
aggfunc聚合函数,默认为numpy.mean,如果传入的是字典类似agg{‘key’: ‘value’},键为要聚合的列,值为聚合的函数
fill_value需要填充的值
dropna删空值
margin边(这个会在下面使用图来表示)
margins_name聚合边的名字

案例

import numpy as np
import pandas as pd
df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
                         "bar", "bar", "bar", "bar"],
                   "B": ["one", "one", "one", "two", "two",
                         "one", "one", "two", "two"],
                   "C": ["small", "large", "large", "small",
                         "small", "large", "small", "small",
                         "large"],
                   "D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
                   "E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
df

数据

# 聚合D列,以A,B作为index,以C列的值进行分组,聚合函数为sum
table = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum)
table

聚合D列,以A,B作为index,以C列的值进行分组,聚合函数为sum
可以看到聚合后会有NaN的值,可以使用fillna进行填充

table = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum, fill_value=0)
table

在这里插入图片描述
对不同的列进行不同的聚合

# 对D列聚合相加,E列平均数
table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],aggfunc={'D': np.sum,
																		'E': np.mean})
table

在这里插入图片描述
也可以对某一列,进行多个函数处置

# 对D列取平均数,E列取最小值,最大值,平均数
table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],aggfunc={'D': np.mean,
																		'E': [min, max, np.mean]})
table

在这里插入图片描述
接下来讲下margins这个参数
聚合之后,如上图,也可以进行求总数

table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],aggfunc=sum,margins=True)
table

在这里插入图片描述
可以对margins更换名字
使用参数margins_name=

table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],aggfunc=sum,margins=True,margins='Total')
table

在这里插入图片描述
关系图

columns

df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
                         "bar", "bar", "bar", "bar"],
                   "B": ["one", "one", "one", "two", "two",
                         "one", "one", "two", "two"],
                   "C": ["small", "large", "large", "small",
                         "small", "large", "small", "small",
                         "large"],
                   "D": [1, 2, 2, 3, 3, 4, 5, 6, 7]})
table = pd.pivot_table(df, columns='C',index=['A', 'B'],aggfunc={'D': np.sum},margins=True,margins_name='Total')
table

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vergil_Zsh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值