Pandas GroupBy一列并获取平均值、最小值和最大值

  • Post category:Python

Pandas GroupBy是Pandas库中一个常用的数据分组功能,可以将数据按照某一列值进行分组,并对每一组数据进行统计计算,如平均值、最小值、最大值等等。

以下是详细的步骤:

1. 导入 Pandas 库

首先,我们需要导入Pandas库,如果你没有安装这个库的话,可以使用以下代码:

!pip install pandas

如果已经安装,就直接导入:

import pandas as pd

2. 读取数据

接下来,我们需要读取数据,可以使用pd.read_csv()方法读取一个CSV文件,或者使用其他读取数据的方法,这里以读取CSV文件为例:

df = pd.read_csv('data.csv')

3. 使用 GroupBy

使用groupby()方法可以按照某一列的值进行分组:

grouped = df.groupby('列名')

其中列名是指你希望按照哪一列的值进行分组,该函数的返回值是一个DataFrameGroupBy对象,可以对它进行进一步的统计计算。

4. 统计计算

接下来,我们可以对每一组数据进行统计计算,例如:

result = grouped.agg({'列名1': ['mean', 'min', 'max'], '列名2':['mean','min','max']})

这里新建了一个名为result的对象,通过agg()方法计算每一组数据的平均值、最小值和最大值,'列名1''列名2'是指需要进行统计计算的列名,{'列名1': ['mean', 'min', 'max'], '列名2':['mean','min','max']}是一个字典,其中每个键代表需要进行计算的列,字典的值是一个列表,包含需要统计的方式(平均值、最小值、最大值等)。

举个例子,如果我们有一个数据文件(data.csv)如下:

Name,Gender,Age,Height,Weight
John,Male,25,178,70
Amy,Female,20,165,50
Tom,Male,21,175,75
Lucy,Female,23,168,55
Mike,Male,18,182,82
Lily,Female,28,170,60
Jack,Male,19,173,68

我们可以通过以下代码进行统计计算:

import pandas as pd

df = pd.read_csv('data.csv')
grouped = df.groupby('Gender')
result = grouped.agg({'Age': ['mean', 'min', 'max'], 'Height':['mean','min','max'],'Weight':['mean','min','max']})
print(result)

输出结果如下:

              Age           Height          Weight         
             mean min max    mean  min  max   mean min max
Gender                                                     
Female  23.666667  20  28  167.67  165  170   55.0  50  60
Male    21.500000  18  25  175.75  173  182   73.75  68  82

可以看到,我们成功地按照性别进行了分组,并得到了每个性别的平均年龄、身高以及体重的最大值和最小值。

总结一下,以上就是使用 Pandas GroupBy一列并获取平均值、最小值和最大值 的完整攻略,主要的步骤包括导入 Pandas 库、读取数据、使用 GroupBy 进行分组和统计计算。希望对你有所帮助!