数据透视表
import pandas as pd
example = pd.DataFrame({'Amount': [74., 235., 175., 100., 115., 245., 180., 90., 88., 129., 273., 300.],'Category': ['Transportation', 'Grocery', 'Household', 'Entertainment', 'Transportation', 'Grocery', 'Household', 'Entertainment', 'Transportation', 'Grocery', 'Household', 'Entertainment'],'Month': ['January', 'January', 'January', 'January', 'February', 'February', 'February', 'February', 'Marth', 'Marth', 'Marth', 'Marth']})example
上面这个数据表感觉非常的杂乱,数据透视的意思就是按照我们的意思重新组织这张数据表
new_example = example.pivot(index='Category', columns='Month', values='Amount')
index 表示以原先数据的哪个属性的值为行坐标进行分类 columns 表示以原先数据的哪个属性的值为新的属性
values 表示以原先数据的哪个属性的值填充前面两个 index 和 columns 定义出的新表格
new_example
new_example.sum(axis=1)
CategoryEntertainment490.0Grocery 609.0Household 628.0Transportation 277.0dtype: float64
new_example.sum(axis=0)
MonthFebruary 630.0January584.0Marth 790.0dtype: float64
经过重新组织后,数据表的呈现方式更有意义
df = pd.read_csv('../../datasets/titanic/test.csv')df.head(5)
需求: 统计男女在不同船舱等级的票价
df.pivot_table(index='Sex', columns='Pclass', values='Fare') # 默认就是求平均值
df.pivot_table(index='Sex', columns='Pclass', values='Fare', aggfunc='min') # 求最小值
需求: 统计不同船舱等级里男女的平均年龄
df.pivot_table(index='Pclass', columns='Sex', values='Age')