pandas基础(分组和聚合运算)

分组计算

分组计算三步曲:拆分 -> 应用 -> 合并

  • 拆分:根据什么进行分组?
  • 应用:每个分组进行什么样的计算?
  • 合并:把每个分组的计算结果合并起来。
    在这里插入图片描述
    以一个DataFrame类型的df为例:
df = pd.DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'],
                  'key2': ['one', 'two', 'one', 'two', 'one'],
                  'data1': np.random.randint(1, 10, 5),
                  'data2': np.random.randint(1, 10, 5)})
df

在这里插入图片描述

对Series进行分组

通过索引对齐关联起来

# 根据一层索引来分组
grouped = df['data1'].groupby(df['key1'])
grouped.mean()

运行结果为:
key1
a    3.0
b    3.5
# 根据两层索引来分组
df['data1'].groupby([df['key1'], df['key2']]).mean()

运行结果为:
key1  key2
a     one     2
      two     5
b     one     4
      two     3

对DataFrame分组

# 根据一层索引来分组
df.groupby('key1').mean()

在这里插入图片描述

# 根据两层索引来分组
# 只获取其中一列数据的分组运算
means = df.groupby(['key1', 'key2']).mean()['data1']
means

运行结果为:
key1  key2
a     one     2
      two     5
b     one     4
      two     3
# 运算函数 和 需要分组的数据 顺序可以调换
df.groupby(['key1', 'key2'])['data1'].mean()

运行结果为:
key1  key2
a     one     2
      two     5
b     one     4
      two     3
# unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引.
means.unstack()

在这里插入图片描述

求每个分组的元素个数 size()

df.groupby(['key1', 'key2']).size()

运行结果为:
key1  key2
a     one     2
      two     1
b     one     1
      two     1

对分组进行迭代

输出分组后的所有组别

for name, group in df.groupby('key1'):
    print name
    print group
    
运行结果为:
a
   data1  data2 key1 key2
0      1      6    a  one
1      5      9    a  two
4      3      5    a  one
b
   data1  data2 key1 key2
2      4      7    b  one
3      3      7    b  two
for name, group in df.groupby(['key1', 'key2']):
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值