pandas 在分组内对指定列求和

pandas 在分组内对指定列求和

pandas 在分组内对指定列求和

在数据分析中,经常会遇到需要对数据进行分组,并对分组内的某些列进行求和的需求。pandas 是Python中一个非常优秀的数据处理库,提供了丰富的函数和方法来实现这一目的。在本文中,我们将详细介绍如何使用 pandas 在分组内对指定列求和。

创建数据集

首先,我们需要先创建一个包含需要进行分组求和的数据集。以下是一个示例数据集,包含了姓名、科目和成绩三列数据。

import pandas as pd

data = {
    '姓名': ['张三', '李四', '王五', '张三', '李四', '王五'],
    '科目': ['Math', 'Math', 'Math', 'English', 'English', 'English'],
    '成绩': [85, 90, 77, 92, 88, 80]
}

df = pd.DataFrame(data)
print(df)

运行结果:

   姓名      科目  成绩
0  张三    Math   85
1  李四    Math   90
2  王五    Math   77
3  张三  English  92
4  李四  English  88
5  王五  English  80

分组求和

接下来,我们可以使用 groupby 方法对数据进行分组,然后可以调用 sum 方法对指定列进行求和。以下是一个示例代码,对成绩进行分组求和。

grouped = df.groupby('姓名')['成绩'].sum()
print(grouped)

运行结果:

姓名
张三    177
李四    178
王五    157
Name: 成绩, dtype: int64

在上面的示例中,我们先对姓名进行分组,然后对成绩列进行求和,得到了每个人的总成绩。

多列分组求和

除了可以对单列进行分组求和,我们还可以对多列进行分组求和。以下是一个示例代码,对姓名和科目进行分组求和。

grouped = df.groupby(['姓名', '科目'])['成绩'].sum()
print(grouped)

运行结果:

姓名  科目    
张三  English     92
     Math        85
李四  English     88
     Math        90
王五  English     80
     Math        77
Name: 成绩, dtype: int64

在上面的示例中,我们对姓名和科目进行分组,然后对成绩进行求和,得到了每个人在每个科目下的总成绩。

对多列进行多个操作

在实际工作中,有时候我们不仅需要对某一列进行求和,还需要结合其他操作,比如求均值、计数等。pandas 提供了 agg 方法来实现对多列进行多个操作。以下是一个示例代码,对姓名进行分组,同时求和和均值。

grouped = df.groupby('姓名').agg({'成绩': ['sum', 'mean']})
print(grouped)

运行结果:

    成绩          
    sum      mean
姓名             
张三  177  88.500000
李四  178  89.000000
王五  157  78.500000

在上面的示例中,我们对姓名进行分组,同时求每个人的总成绩和平均成绩。

总结

通过本文的介绍,我希望读者能够了解如何使用 pandas 在分组内对指定列进行求和。pandas 提供了丰富的函数和方法来实现数据的分组和聚合操作,能够极大地简化我们在数据分析中的工作。读者可以根据实际需求,灵活运用这些方法,提高数据处理的效率和准确性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程