pandas.pivot_table() 官方使用说明
原文链接点击打开链接
pandas.pivot_table(
data,
values=None,
index=None,
columns=None,
aggfunc='mean',
fill_value=None,
margins=False,
dropna=True,
margins_name='All')
一、基本参数
data:指定要做透视表的DataFrame。
附:pandas.pivot_table(data, 其余参数部分) 等价于 data.pivot(其余参数部分)
values:等价于Excel透视表的"值"部分;
index:等价于Excel透视表的"行"部分;
columns:等价于Excel透视表的"列"部分;
aggfunc:设定数据区的数据显示方式,如aggfunc=np.sum;
附:最终table意义上,它等价于aggfunc=sum , aggfunc=np.mean 等价于 aggfunc=mean;
附:多函数形式,比如values=['income', 'click']之后,aggfunc={'income: np.sum, 'click':[np.mean, min, max]};
二、多功能参数
fill_value:设定替换缺失值的值,默认不替换缺失值;
dropna:设定是否使用有空值(即NaN)的columns,默认不使用即dropna=True,想使用有空值的columns设定dropna=False;
margins:设定是否对各行和各列进行汇总,默认不汇总即margins=False,想添加行&列汇总margins=True;
margins_name:当margins=True时,设定行&列的名称;
三、例子
数据表DataFrame:
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]})
print(df)
# 结果如下
A B C D
0 foo one small 1
1 foo one large 2
2 foo one large 2
3 foo two small 3
4 foo two small 3
5 bar one large 4
6 bar one small 5
7 bar two small 6
8 bar two large 7
透视函数:
table = pivot_table(df,
values=['D', 'E'],
index=['A', 'C'],
aggfunc={'D': np.mean,
'E': [min, max, np.mean]})
print(table)
透视表:
>>> table
D E
mean max median min
A C
bar large 5.500000 16 14.5 13
small 5.500000 15 14.5 14
foo large 2.000000 10 9.5 9
small 2.333333 12 11.0 8
附:输出为csv文件代码:
table.to_csv('path:filename.csv', encoding='gbk') # 注意, index不要设为False