📅  最后修改于: 2023-12-03 14:51:05.127000             🧑  作者: Mango
在数据分析中,有时我们需要对列中的数据进行汇总或者统计。在 Excel 中,我们通常会使用 SUMIF 函数来实现这样的功能。那么在 Python 中,我们该如何实现类似的功能呢?
这里介绍一个使用 Pandas 库实现的方法,可以在列上创建新列,并对数据进行汇总或统计。
首先需要准备数据。在这个示例中,我们使用一个包含学生信息的数据集。其中包括学生的姓名、科目和成绩。
| Name | Subject | Score |
|-------|----------|-------|
| Alice | Math | 85 |
| Bob | Science | 72 |
| Alice | English | 90 |
| Bob | Math | 80 |
| Alice | Science | 88 |
| Bob | English | 92 |
| Carol | Math | 78 |
| Carol | Science | 85 |
| Carol | English | 89 |
首先,我们可以使用 Pandas 的 groupby 和 transform 函数来对数据进行分组和计算。这里我们以姓名为分组依据,对每个人的成绩进行求和。生成一个新的列 "Total Score"。
import pandas as pd
# 读取数据
df = pd.read_csv("students.csv")
# 以姓名为分组依据,对每个人的成绩求和
df["Total Score"] = df.groupby("Name")["Score"].transform(sum)
# 输出结果
print(df)
输出结果如下:
Name Subject Score Total Score
0 Alice Math 85 263
1 Bob Science 72 244
2 Alice English 90 263
3 Bob Math 80 244
4 Alice Science 88 263
5 Bob English 92 244
6 Carol Math 78 252
7 Carol Science 85 252
8 Carol English 89 252
除了求和之外,我们还可以使用其他的函数进行统计,比如求平均值、中位数等等。在这里以求平均值为例。
# 以姓名为分组依据,对每个人的成绩求平均值
df["Average Score"] = df.groupby("Name")["Score"].transform("mean")
# 输出结果
print(df)
输出结果如下:
Name Subject Score Total Score Average Score
0 Alice Math 85 263 87.666667
1 Bob Science 72 244 81.333333
2 Alice English 90 263 87.666667
3 Bob Math 80 244 81.333333
4 Alice Science 88 263 87.666667
5 Bob English 92 244 81.333333
6 Carol Math 78 252 84.000000
7 Carol Science 85 252 84.000000
8 Carol English 89 252 84.000000
在 Python 中使用 Pandas 的 groupby 和 transform 函数可以方便地在列上创建新列,并对数据进行汇总或统计。在实际的数据分析中,这一方法具有很高的实用价值。