Python Pandas – 统计每个群组中的行数

Python Pandas – 统计每个群组中的行数

在数据处理过程中,我们常常需要对数据进行分组并计算每个群组中的行数。在Python中,我们可以使用Pandas库来轻松实现此操作。

创建示例数据集

在开始之前,我们需要创建一个示例数据集来演示分组计数的操作。

以下是一个包含姓名、性别和年龄的示例数据集:

import pandas as pd

data = {
    '姓名': ['张三', '李四', '王五', '赵六', '钱七', '刘八'],
    '性别': ['男', '女', '女', '男', '男', '男'],
    '年龄': [22, 25, 27, 22, 26, 28]
}

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

输出结果为:

   姓名 性别  年龄
0  张三  男  22
1  李四  女  25
2  王五  女  27
3  赵六  男  22
4  钱七  男  26
5  刘八  男  28

使用groupby方法进行分组计数

现在,我们可以使用groupby方法来对性别进行分组统计。代码如下:

grouped = df.groupby('性别')
result = grouped.size()

print(result)

这里的grouped是一个GroupBy对象,它可以同时处理和计算多个列,而不仅仅是一个列。size()方法用于计算每个群组的行数。输出结果如下:

性别
女    2
男    4
dtype: int64

上述结果说明,在我们的示例数据集中,有2位女性和4位男性。

我们还可以使用count()方法来计算每个群组中每个列的非空值的数量。代码如下:

grouped = df.groupby('性别')
result = grouped.count()

print(result)

输出结果为:

   姓名  年龄
性别        
女   2   2
男   4   4

使用agg方法计算多个统计量

在一些情况下,我们需要同时计算每个群组中多个统计量。很幸运,Pandas提供了agg方法来完成这个任务。

以下是使用agg方法计算各个群组的平均年龄和最大年龄的完整代码:

grouped = df.groupby('性别')
result = grouped.agg({'年龄': ['mean', 'max']})

print(result)

输出结果为:

          年龄    
        mean max
性别             
女  26.000000  27
男  24.500000  28

在上述代码中,agg方法的输入是一个字典,其中字典的键是要计算的列名,而字典的值是要计算的统计量列表。

使用apply方法作用于每个分组

我们可以通过使用apply方法在每个群组中执行自定义函数来计算统计量。

以下是一个示例函数,它可以计算每个群组的年龄平均值:

def average_age(group):
    return group['年龄'].mean()

grouped = df.groupby('性别')
result = grouped.apply(average_age)

print(result)

输出结果为:

性别
女    26.000000
男    24.500000
dtype: float64

很明显,这个结果和前面使用agg算法得到的结果是一致的。

结论

Pandas提供了很多用于数据分组统计的方法,它们是灵活、高效且易于实现的。我们可以使用groupby、agg和apply方法来完成各种统计计算。如果您需要在未来的数据分析中,进行数据分组统计的时候,可以考虑使用Pandas来完成这些操作。通过本文的介绍,相信您已经可以掌握Pandas中的基本数据分组统计方法。在实践中,您可以根据特定的需求,使用不同的方法来完成各种复杂的分组计算。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程