六、分组
对于“group by”操作,我们通常是指以下一个或多个操作步骤:
(Splitting)按照一些规则将数据分为不同的组
(Applying)对于每组数据分别执行一个函数
(Combining)将结果组合刀一个数据结构中
将要处理的数组是:
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)
})
df
A B C D
0 foo one 0.961295 -0.281012
1 bar one 0.901454 0.621284
2 foo two -0.584834 0.919414
3 bar three 1.259104 -1.012103
4 foo two 0.153107 1.108028
5 bar two 0.115963 1.333981
6 foo one 1.421895 -1.456916
7 foo three -2.103125 -1.757291
1、分组并对每个分组执行sum函数:
df.groupby('A').sum()
C D
A
bar 2.276522 0.943161
foo -0.151661 -1.467777
2、通过多个列进行分组形成一个层次索引,然后执行函数:
df.groupby(['A', 'B']).sum()
C D
A B
bar one 0.901454 0.621284
three 1.259104 -1.012103
two 0.115963 1.333981
foo one 2.383191 -1.737928
three -2.103125 -1.757291
two -0.431727 2.027441
七、Reshaping
Stack
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two',
'one', 'two', 'one', 'two']]))
tuples
[('bar', 'one'),
('bar', 'two'),
(