pandas dataframe对象的分组机制groupby

groupby的操作可以被分为3部分:

第一步,存储于series或DataFrame中的数据,根据不同的keys会被split(分割)为多个组。(这个分组可以按照不同的轴进行划分,axis=0按照行;axis=1按照列)

第二步,我们可以把函数例如mean等,apply在每一个组上,产生一个新的值。

第三步,函数产生的结果被combine(结合)为一个结果对象(result object)。

使用例子来看一下,创建一个dataframe对象:

df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'],
                   'key2' : ['one', 'two', 'one', 'two', 'one'], 
                   'data1' : np.random.randn(5), 
                   'data2' : np.random.randn(5)})
df

看一下创建的df对象:

下面我们进行第一步,按照key1作为关键字进行分组。需要分组的数据是data1。即对data1这个series进行分组,分组的关键字是key1列。

grouped = df['data1'].groupby(df['key1'])

看一下grouped的属性:

<pandas.core.groupby.generic.SeriesGroupBy object at 0x0000000005476B48>

这个grouped变量是一个GroupBy object(分组对象)。实际上现在还没有进行任何计算。这个GroupBy object(分组对象)已经有了我们想要的信息,现在需要的是对于每一个group进行一些操作。例如,通过调用GroupBy的mean方法,我们可以计算每个组的平均值:

grouped.mean()

输出的结果如下:

总结一下:我们通过group key(分组键)对数据(a series)进行了聚合,这产生了一个新的Series,而且这个series的索引是key1列中不同的值,index(索引)的名字也是key1',因为我们使用了df['key1']。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值