zoukankan      html  css  js  c++  java
  • groupby+agg

    一.在处理pandas表格数据时,有时会遇到这样的问题:按照某一列聚合后,判断另一列是否出现唯一值,比如安泰杯--跨境电商比赛中,某个商人的ID如果出现在两个国家(xx和yy),则要剔除这样的数据,这就需要我们按照商人ID进行groupby,然后判断每个商人所属的国家是否值唯一,不唯一则剔除。

    def unique_num(x):

      return len(np.unique(x))  #自定义函数

    train.groupby(['buyer_admin_id']).agg({'buyer_country_id':unique_num})

    二.下面对groupby和agg使用方法进行总结:

    1. 分组后,返回一个含有分组大小的Series

    按key1分组:  df.groupby(['key1']).size()

    按[key1,key2]分组: df.groupby(['key1','key2']).size()

    2. 对data1按key1进行分组,并计算data1列的平均值

     df['data1'].groupby(df['key1']).mean()

    说明:groupby没有进行任何的计算。它只是进行了一个分组。数据(Series)根据分组键进行了聚合,产生了一个新的Series,其索引为key1列中的唯一值。

    3.对data1按[key1,key2]进行分组,并计算data1的平均值

    df.groupby(['key1','key2'])['data1'].mean()

    4.agg函数使用:

    1)df.groupby(['key1'])['data1'].min() == 

         df.groupby(['key1'])['data1'].agg({'min'}) ==

         (推荐使用)df.groupby(['key1']).agg({'data1':'min'})#对data1列,取各组的最小值,名字还是data1

    2)按key1分组后,aggregate各组data1的最小值和最大值:

    df.groupby(['key1'])['data1'].agg({'min','max'}) ==(推荐使用)df.groupby(['key1']).agg({'data1':['min','max']})

    3)可以对groupby的结果更正列名(不推荐用这个,哪怕在后面单独更改列名):

    df.groupby(['key1'])['data1'].agg({'a':'min','b':'max'})#这里的'min' 'max'为两个函数名

  • 相关阅读:
    SQL Server 损坏修复
    记录一些数据库函数或全局变量
    查询数据库空间使用情况
    SQL Server 2008文件与文件组的关系
    大型网站--负载均衡架构
    本地事务和分布式事务工作实践
    IIS防止同一IP大量非法访问
    使用EventLog类写Windows事件日志
    1878: [SDOI2009]HH的项链
    模板
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/11117300.html
Copyright © 2011-2022 走看看