pandas实现按照Series分组示例

  • Post category:Python

下面是详细讲解“pandas实现按照Series分组示例”的完整实例教程。

1. 按照Series分组的基础概念

在pandas中,我们可以通过将数据按照某个Series分组,然后对每组数据进行操作,例如计算统计量、应用自定义函数等。这个过程通常包含以下几个步骤:

  1. 按照Series进行分组
  2. 对每个组运用所需操作
  3. 将结果合并

例如,我们有如下的一组数据:

import pandas as pd

data = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob'], 
    'score': [85, 92, 78, 90, 86],
    'gender': ['F', 'M', 'M', 'F', 'M']
})
print(data)

输出:

       name  score gender
0     Alice     85      F
1       Bob     92      M
2   Charlie     78      M
3     Alice     90      F
4       Bob     86      M

我们想按照 name 列进行分组,然后计算每个人的平均分,最后得到如下结果:

        score
name         
Alice    87.5
Bob      89.0
Charlie  78.0

2. 示例1:基本分组操作

我们可以使用 groupby 方法按照 name 列进行分组,并计算每个人的平均分。代码如下:

grouped = data.groupby('name')
average_scores = grouped['score'].mean()
print(average_scores)

输出:

name
Alice      87.5
Bob        89.0
Charlie    78.0
Name: score, dtype: float64

我们可以看到,使用 groupby 方法分组后,对每组的 score 列进行平均值的计算,并得到了每个人的平均分。

3. 示例2:多列分组

有时候,我们需要按照多个 Series 进行分组,例如,我们想要按照 namegender 进行分组,并获取每个人的平均分和标准差。代码如下:

grouped = data.groupby(['name', 'gender'])
result = grouped['score'].agg(['mean', 'std'])
print(result)

输出:

                mean       std
name    gender                
Alice   F       87.5  3.535534
Bob     M       89.0  4.242641
Charlie M       78.0       NaN

我们可以看到,使用 groupby 方法分组后,对于每组的 score 列分别计算了平均值和标准差,并将结果合并成DataFrame返回。注意,在这个例子中,由于 Charliegender 列为 M,所以他被分到了一个单独的组中,这个组中没有其它人。

以上就是“pandas实现按照Series分组示例”的完整实例教程。