我刚刚开始学习熊猫,并想知道它们pandas groupby
和pandas pivot_table
功能之间是否有任何区别.任何人都可以帮我理解它们之间的区别.帮助将不胜感激.
双方pivot_table
并groupby
用于收集您的数据帧.差异仅在于结果的形状.
使用pd.pivot_table(df, index=["a"], columns=["b"], values=["c"], aggfunc=np.sum)
表创建a
在行轴上,b
在列轴上,并且值是总和c
.
例:
df = pd.DataFrame({"a": [1,2,3,1,2,3], "b":[1,1,1,2,2,2], "c":np.random.rand(6)}) pd.pivot_table(df, index=["a"], columns=["b"], values=["c"], aggfunc=np.sum) b 1 2 a 1 0.528470 0.484766 2 0.187277 0.144326 3 0.866832 0.650100
使用时groupby
,给定的尺寸放在列中,并为这些尺寸的每个组合创建行.
在这个例子中,我们创建了一系列的值的总和c
,由所有唯一组合进行分组a
和b
.
df.groupby(['a','b'])['c'].sum() a b 1 1 0.528470 2 0.484766 2 1 0.187277 2 0.144326 3 1 0.866832 2 0.650100 Name: c, dtype: float64
类似的用法groupby
是,如果我们省略['c']
.在这种情况下,它会创建一个数据帧(而不是一系列),其中所有剩余列的总和按唯一值和a
和分组b
.
print df.groupby(["a","b"]).sum() c a b 1 1 0.528470 2 0.484766 2 1 0.187277 2 0.144326 3 1 0.866832 2 0.650100