Pandas 如何对DataFrame进行分组并得到求和与计数

您所在的位置:网站首页 对列表中多个项目求和 Pandas 如何对DataFrame进行分组并得到求和与计数

Pandas 如何对DataFrame进行分组并得到求和与计数

2024-07-15 01:02| 来源: 网络整理| 查看: 265

Pandas 如何对DataFrame进行分组并得到求和与计数

在本文中,我们将介绍如何通过Pandas对DataFrame数据进行分组并得到求和与计数。这是我们在数据分析和数据处理中经常使用的一种操作。

阅读更多:Pandas 教程

1. 分组与聚合

在进行数据分析时,我们经常需要根据某些特征将数据进行分组,然后对每个组的数据进行聚合计算。在 Pandas 中,我们可以使用 groupby() 方法来实现这个功能。

下面是一个示例数据集:

Name Age Gender Score Tom 25 M 70 Dan 30 M 80 Jerry 27 F 90 Tim 22 F 85 Lucy 29 F 75

如果我们想要按照 Gender 进行分组并得到每个组的平均分数和总分数,可以使用以下代码:

import pandas as pd # 读取示例数据 df = pd.read_csv('example.csv') # 按照 Gender 进行分组,并计算每个组的平均分数和总分数 result = df.groupby('Gender')['Score'].agg(['mean', 'sum']) print(result)

输出结果如下:

mean sum Gender F 83.333333 250 M 75.000000 150 2. 对多个列进行分组与聚合

除了按照单个列进行分组之外,还可以按照多个列进行分组。例如,我们想要按照 Gender 和 Age 两个列进行分组并得到每个组的平均分数,可以使用以下代码:

import pandas as pd # 读取示例数据 df = pd.read_csv('example.csv') # 按照 Gender 和 Age 两个列进行分组,并计算每个组的平均分数 result = df.groupby(['Gender', 'Age'])['Score'].mean() print(result)

输出结果如下:

Gender Age F 22 85.0 27 90.0 29 75.0 M 25 70.0 30 80.0 Name: Score, dtype: float64 3. 分组计数

除了对分组数据进行求和和平均值计算之外,我们也可以对分组后的数据进行计数。例如,我们想要按照 Gender 和 Age 两个列进行分组并得到每个组的计数,可以使用以下代码:

import pandas as pd # 读取示例数据 df = pd.read_csv('example.csv') # 按照 Gender 和 Age 两个列进行分组,并计算每个组的计数 result = df.groupby(['Gender', 'Age'])['Name'].count() print(result)

输出结果如下:

Gender Age F 22 1 27 1 29 1 M 25 1 30 1 Name: Name, dtype: int64 4. 分组与排序

在某些情况下,我们需要对分组后的数据进行排序。例如,我们想要按照每个组的平均分数进行降序排序,可以使用以下代码:

import pandas as pd # 读取示例数据 df = pd.read_csv('example.csv') # 按照 Gender 进行分组,并计算每个组的平均分数和总分数 result = df.groupby('Gender')['Score'].agg(['mean', 'sum']).sort_values('mean', ascending=False) print(result)

输出结果如下:

mean sum Gender F 83.333333 250 M 75.000000150 5. 分组后作为新的DataFrame

如果我们想要将分组后的结果作为新的 DataFrame 进行处理,可以使用 reset_index() 方法将分组后的结果重新变成 DataFrame。例如,我们想要按照每个 Gender 和 Age 的组合计算每个组的平均分数和计数,并将结果作为新的 DataFrame 进行处理,可以使用以下代码:

import pandas as pd # 读取示例数据 df = pd.read_csv('example.csv') # 按照 Gender 和 Age 两个列进行分组,并计算每个组的平均分数和计数 result = df.groupby(['Gender', 'Age']).agg({'Score': ['mean'], 'Name': ['count']}).reset_index() # 将分组后的列名进行更改 result.columns = ['Gender', 'Age', 'Mean Score', 'Count'] print(result)

输出结果如下:

Gender Age Mean Score Count 0 F 22 85.0 1 1 F 27 90.0 1 2 F 29 75.0 1 3 M 25 70.0 1 4 M 30 80.0 1 总结

在本文中,我们介绍了 Pandas 中对 DataFrame 进行分组与聚合计算的方法。除了对单个列进行分组之外,我们还可以对多个列进行分组,并对分组后的数据进行排序和计数操作。此外,我们还介绍了如何将分组后的结果作为新的 DataFrame 进行处理。这些方法在数据分析和数据处理中应用广泛,希望本文对您有所帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3