当前位置: 首页 > article >正文

df.groupby(‘team‘).agg({...}) 是 Pandas 中一个非常常用的聚合操作

df.groupby('team').agg({...}) 是 Pandas 中一个非常常用的聚合操作,它允许你对不同组进行不同的聚合计算。比如在groupby('team') 这个例子中,groupby('team') 按照 team 列对数据进行分组,然后使用 agg 来对每个分组执行多个聚合操作。

解释:

  1. df.groupby('team'):首先,groupby('team') 会根据 team 列的不同值将数据分成多个组。例如,假设数据中有三个团队('A', 'B', 'C'),那么数据就会按这些团队分组。

  2. agg({...})agg 是聚合函数,接受一个字典作为参数,字典中的键是列名,值是要对该列进行的操作。你可以为每一列指定不同的聚合方法。这里的操作有:

    • sum: 对 Q1 列求总和。
    • count: 对 Q2 列求非空值的数量。
    • mean: 对 Q3 列求平均值。
    • max: 对 Q4 列求最大值。

示例:

假设我们有一个类似如下的 DataFrame

import pandas as pd

# 创建一个示例 DataFrame
data = {
    'team': ['A', 'A', 'B', 'B', 'C', 'C', 'A', 'B', 'C'],
    'Q1': [100, 150, 200, 250, 300, 350, 120, 180, 400],
    'Q2': [10, 15, 20, 25, 30, 35, 40, 45, 50],
    'Q3': [1.2, 3.4, 2.5, 4.1, 6.3, 5.8, 3.3, 4.0, 6.1],
    'Q4': [5, 10, 15, 20, 25, 30, 35, 40, 45]
}

df = pd.DataFrame(data)

# 打印原始数据
print(df)

输出:

  team  Q1  Q2  Q3  Q4
0    A  100  10  1.2   5
1    A  150  15  3.4  10
2    B  200  20  2.5  15
3    B  250  25  4.1  20
4    C  300  30  6.3  25
5    C  350  35  5.8  30
6    A  120  40  3.3  35
7    B  180  45  4.0  40
8    C  400  50  6.1  45

使用 groupbyagg 聚合:

result = df.groupby('team').agg({
    'Q1': sum,    # 对 'Q1' 列求和
    'Q2': 'count', # 对 'Q2' 列求计数(非空值的数量)
    'Q3': 'mean',  # 对 'Q3' 列求平均值
    'Q4': max      # 对 'Q4' 列求最大值
})

print(result)

输出:

       Q1  Q2   Q3  Q4
team                   
A     370  3  2.3   35
B     630  3  3.5   40
C     1050  3  6.1   45

解释:

  • Q1:每个团队的总和:

    • 团队 A 的总和是 100 + 150 + 120 = 370
    • 团队 B 的总和是 200 + 250 + 180 = 630
    • 团队 C 的总和是 300 + 350 + 400 = 1050
  • Q2:每个团队的非空值数量(count),由于每个团队都有 3 行数据,所以每个团队的 Q2 列值都是 3。

  • Q3:每个团队的平均值:

    • 团队 A 的平均值是 (1.2 + 3.4 + 3.3) / 3 = 2.3
    • 团队 B 的平均值是 (2.5 + 4.1 + 4.0) / 3 = 3.5
    • 团队 C 的平均值是 (6.3 + 5.8 + 6.1) / 3 = 6.1
  • Q4:每个团队的最大值:

    • 团队 A 的最大值是 35
    • 团队 B 的最大值是 40
    • 团队 C 的最大值是 45

小结:

  • groupby 将数据按 team 列分组。
  • agg 允许对每个组执行不同的聚合操作,比如求和、计数、平均值或最大值等。
  • 每个操作都可以独立应用到指定的列(Q1Q2Q3Q4)。

http://www.kler.cn/a/464275.html

相关文章:

  • 前端CSS3学习
  • [创业之路-232]:《华为闭环战略管理》-5-组织架构、业务架构、产品架构、技术架构、项目架构各自设计的原则是什么?
  • SpringCloud源码分析-Lettue Redis
  • NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)
  • 前端如何用 canvas 做电影院选票功能
  • 【人工智能数据科学与数据处理】——深入详解数据科学与数据处理之数据获取与清洗
  • Visual Studio 2022安装教程
  • Effective C++读书笔记——item2(const,enum,inlines取代#define)
  • Java实现下载excel模板,并实现自定义下拉框
  • 应用架构模式
  • Python 列表的高级索引技巧
  • axios 实现进度监控
  • 第3章 总线
  • 搭建开源版Ceph分布式存储
  • 跨域问题解决
  • Java网络套接字
  • 云原生架构:构建高效、可扩展的微服务系统
  • 【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数
  • 获取淘宝分类详情:深入解析taobao.cat_get API接口
  • leetcode热题100(739. 每日温度)单调栈c++