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

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)
Python

输出结果如下:

            mean  sum
Gender              
F       83.333333  250
M       75.000000  150
Python

2. 对多个列进行分组与聚合

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

import pandas as pd

# 读取示例数据
df = pd.read_csv('example.csv')

# 按照 Gender 和 Age 两个列进行分组,并计算每个组的平均分数
result = df.groupby(['Gender', 'Age'])['Score'].mean()

print(result)
Python

输出结果如下:

Gender  Age
F       22     85.0
        27     90.0
        29     75.0
M       25     70.0
        30     80.0
Name: Score, dtype: float64
Python

3. 分组计数

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

import pandas as pd

# 读取示例数据
df = pd.read_csv('example.csv')

# 按照 Gender 和 Age 两个列进行分组,并计算每个组的计数
result = df.groupby(['Gender', 'Age'])['Name'].count()

print(result)
Python

输出结果如下:

Gender  Age
F       22     1
        27     1
        29     1
M       25     1
        30     1
Name: Name, dtype: int64
Python

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)
Python

输出结果如下:

            mean  sum
Gender              
F       83.333333  250
M       75.000000150
Python

5. 分组后作为新的DataFrame

如果我们想要将分组后的结果作为新的 DataFrame 进行处理,可以使用 reset_index() 方法将分组后的结果重新变成 DataFrame。例如,我们想要按照每个 GenderAge 的组合计算每个组的平均分数和计数,并将结果作为新的 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)
Python

输出结果如下:

  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
Python

总结

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册