目录
  • 模拟数据
  • groupby+单个字段+单个聚合
  • groupby+单个字段+多个聚合
    • 方法1:使用groupby+merge
    • 方法2:使用groupby+agg
  • groupby+多个字段+单个聚合
    • groupby+多个字段+多个聚合

      模拟数据

      import pandas as pd
      import numpy as np
      
      employees = ["小明","小周","小孙","小王","小张"]   # 5位员工
      time = ["上半年", "下半年"]
      
      
      df=pd.DataFrame({
          "employees":np.random.choice(employees,10),  # 在员工中重复选择10次
          # 另一种写法
          #"employees":[employees[x] for x in np.random.randint(0,len(employees),10)],  
          "time":np.random.choice(time,10),
          "salary":np.random.randint(800,1000,10),  # 800-1000之间的薪资选择10个数值
          "score":np.random.randint(6,12,10)  # 6-11的分数选择10个
      })
      
      df
      

      Python技巧分享之groupby基础用法详解

      groupby+单个字段+单个聚合

      求解每个人的总薪资金额:

      total_salary = df.groupby("employees")["salary"].sum().reset_index()
      total_salary
      

      Python技巧分享之groupby基础用法详解

      使用agg也能够实现上面的效果:

      df.groupby("employees").agg({"salary":"sum"}).reset_index()
      

      Python技巧分享之groupby基础用法详解

      df.groupby("employees").agg({"salary":np.sum}).reset_index()
      

      Python技巧分享之groupby基础用法详解

      groupby+单个字段+多个聚合

      求解每个人的总薪资金额和薪资的平均数

      方法1:使用groupby+merge

      mean_salary = df.groupby("employees")["salary"].mean().reset_index()
      mean_salary
      

      Python技巧分享之groupby基础用法详解

      然后将上面的两个结果进行组合;在合并之前为了字段的名字更加的直观,我们重命名下:

      total_salary.rename(columns={"employees":"total_salary"})
      mean_salary.columns = ["employees","mean_salary"]
      
      total_mean = total_salary.merge(mean_salary)
      total_mean
      

      Python技巧分享之groupby基础用法详解

      方法2:使用groupby+agg

      total_mean = df.groupby("employees")\
      
                  .agg(total_salary=("salary", "sum"), 
                       mean_salary=("salary", "mean"))\
      
                  .reset_index()
      total_mean
      

      Python技巧分享之groupby基础用法详解

      groupby+多个字段+单个聚合

      针对多个字段的同时聚合:

      df.groupby(["employees","time"])["salary"].sum().reset_index()
      

      Python技巧分享之groupby基础用法详解

      # 使用agg来实现
      
      df.groupby(["employees","time"]).agg({"salary":"sum"}).reset_index()
      

      Python技巧分享之groupby基础用法详解

      groupby+多个字段+多个聚合

      使用的方法是:

      agg(’新列名‘=(’原列名‘, ’统计函数/方法‘))

      df.groupby(["employees","time"])\
      
                  .agg(total_salary=("salary", "sum"), 
                      mean_salary=("salary", "mean"),
                      total_score=("score", "sum") 
                      )\
      
                  .reset_index()
      

      Python技巧分享之groupby基础用法详解

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。