pandas透视表(pivot_table)和交叉表(crosstab)使用介绍

透视表pivot_table参数列表:

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第1张图片

透视表pivot_table实例:

1.创建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],
    "E": [2, 4, 5, 5, 6, 6, 8, 9, 9]
})
df

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第2张图片

2、按照A B C属性列进行分组,并将分组后将A B放在行索引上,C放在列索引上,对分组后的D属性进行默认(mean)运算

# pivot_table默认对结果进行mean聚合操作,并丢弃非数值属性
"""
     = 4 / 1 = 4
     = 5 / 1 = 5
     = 7 / 1 = 7
     = 6 / 1 = 6
    
     = (2 + 2) / 2 = 2
     = 1 / 1 = 1
     = NaN / 0 = NaN
     = (3 + 3) / 2 = 3
"""
pd.pivot_table(df, values=["D"], index=["A", "B"], columns=["C"])

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第3张图片

3、按照A B C属性列进行分组,并将分组后将A B放在行索引上,C放在列索引上,对分组后的D属性进行sum运算

# 对分组后的区域执行sum求和运算
"""
     = 4 = 4
     = 5 = 5
     = 7 = 7
     = 6 = 6
    
     = 2 + 2 = 4
     = 1 = 1
     = NaN
     = 3 + 3 = 6
"""
pd.pivot_table(df, values=["D"], index=["A", "B"], columns=["C"], aggfunc=np.sum)

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第4张图片

4、对输出结果填充缺失值

# 填充缺失值
pd.pivot_table(df, values=["D"], index=["A", "B"], columns=["C"], aggfunc=np.sum, fill_value=0)

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第5张图片

5、同时对多个属性分别执行不同的aggfunc,aggfunc通过传入字典实现

# 同时对对个属性分别执行不同的aggfunc,aggfunc通过传入字典实现
pd.pivot_table(df, values=["D", "E"], index=["A", "B"], columns=["C"], aggfunc={"D": np.sum, "E": np.mean}, fill_value=0)

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第6张图片

6、同时对对个属性分别执行不同个数的aggfunc,aggfunc通过传入字典实现

# 同时对对个属性分别执行不同个数的aggfunc,aggfunc通过传入字典实现
pd.pivot_table(df, values=["D", "E"], index=["A", "B"], columns=["C"], aggfunc={"D": np.sum, "E": [np.min, np.max, np.mean]}, fill_value=0)

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第7张图片

7、margins

# margins
pd.pivot_table(df, values=["D", "E"], index=["A", "B"], columns=["C"], aggfunc={"D": np.sum, "E": np.mean}, fill_value=0, margins=True, margins_name="All")

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第8张图片

交叉表crosstab参数列表:

pandas透视表(pivot_table)和交叉表(crosstab)使用介绍_第9张图片

你可能感兴趣的:(机器学习,python编程,pandas,pivot_table,crosstab)