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 提供了丰富的函数和方法来实现数据的分组和聚合操作,能够极大地简化我们在数据分析中的工作。读者可以根据实际需求,灵活运用这些方法,提高数据处理的效率和准确性。