Pandas分组统计

Pandas是一个强大的数据分析工具,可以用来处理大量的数据,包括分组,汇总和统计等。当面对大量的数据时,经常需要按照特定的标准对数据进行分组,然后对每个组进行统计分析,这时候就需要用到Pandas的分组统计功能。下面将会从多个方面对Pandas分组统计进行详细阐述。

一、分组

在对数据进行统计时,经常需要将数据进行分组,以便于进行更加精细的统计。在Pandas中,可以使用groupby()函数进行分组,它的基本语法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

其中,参数by表示按照哪列或者哪些列进行分组,也可以是一个函数;axis表示运算轴向,默认为0表示行方向,1表示列方向;level表示按照哪个级别进行分组,多重索引时使用;as_index表示是否以分组列为索引;sort表示分组后是否对结果进行排序;group_keys表示是否总是返回分组键作为一级索引;squeeze表示是否对单层索引进行降维操作。

下面是一个通过年龄对数据进行分组的代码示例:

import pandas as pd

data = {
    'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'],
    'Age': [28, 34, 29, 42, 23],
    'Country': ['US', 'UK', 'UK', 'US', 'US']}
df = pd.DataFrame(data)
print(df.groupby('Age').groups)

上述代码中,通过groupby()函数按照年龄对数据进行分组,结果打印出各个分组中的索引。

二、汇总

分组完成后,接下来就是汇总统计了。Pandas提供了多种汇总统计方法,包括计数、求和、均值、方差、标准差、最小值和最大值等。

下面是一些常见的汇总统计方法:

  • count(): 统计每个分组中非空值的数量
  • sum(): 统计每个分组中数值的总和
  • mean(): 统计每个分组中数值的平均值
  • median(): 统计每个分组中数值的中位数
  • std(): 统计每个分组中数值的标准差
  • var(): 统计每个分组中数值的方差
  • min(): 统计每个分组中数值的最小值
  • max(): 统计每个分组中数值的最大值

下面是一个对数据进行汇总统计的代码示例:

import pandas as pd

data = {
    'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'],
    'Age': [28, 34, 29, 42, 23],
    'Country': ['US', 'UK', 'UK', 'US', 'US']}
df = pd.DataFrame(data)
print(df.groupby('Country')['Age'].agg(['count', 'sum', 'mean', 'std', 'min', 'max']))

上述代码中,按照国家进行分组,并统计各个分组中年龄的count、sum、mean、std、min和max等汇总统计信息。

三、过滤

在进行数据分析时,我们常常需要筛选出满足某些特定条件的数据,这时候就需要用到过滤功能。在Pandas中,可以使用filter()函数进行过滤,其基本语法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs).filter(func, dropna=True)

其中,参数func表示用来进行筛选的函数,其返回值必须是True或False值;dropna表示是否删除含有缺失值的行,默认为True。

下面是一个对数据进行过滤的代码示例:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'], 'Age': [28, 34, 29, 42, 23],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Beijing']}
df = pd.DataFrame(data)
df_filtered = df.groupby('City').filter(lambda x: len(x) >= 2)
print(df_filtered)

上述代码中,按照城市进行分组,然后使用filter()函数对分组后的数据进行过滤,选取城市出现次数大于等于2次的数据,最后打印输出筛选后的数据。

四、转换

数据转换是指在不改变数据结构的前提下,修改数据的值。在Pandas中,可以使用transform()函数进行转换,其基本语法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs).transform(func, axis=0)

其中,参数func表示用来进行转换的函数;axis表示运算轴向,默认为0表示列方向,1表示行方向。

下面是一个对数据进行转换的代码示例:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'], 'Age': [28, 34, 29, 42, 23],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Beijing']}
df = pd.DataFrame(data)
df['Age'] = df.groupby('City')['Age'].transform(lambda x: x.mean())
print(df)

上述代码中,按照城市进行分组,然后使用transform()函数对分组后的数据进行转换,将年龄列的值改为每个城市年龄的均值,最后打印输出转换后的数据。

五、应用

应用是指对分组后的数据进行操作,如删除某些行、替换某些值等。在Pandas中,可以使用apply()函数进行操作,其基本语法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs).apply(func, *args, **kwargs)

其中,参数func表示进行操作的函数;*args和**kwargs分别表示传递给函数的位置参数和关键字参数。

下面是一个对数据进行应用的代码示例:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'], 'Age': [28, 34, 29, 42, 23],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Beijing']}
df = pd.DataFrame(data)
df.groupby('City').apply(lambda x: x.sort_values(by='Age', ascending=False)[:2]).reset_index(drop=True)
print(df)

上述代码中,按照城市进行分组,然后使用apply()函数对分组后的数据进行操作,选出每个城市中年龄最大的两个人,并将结果进行合并。最后打印输出应用后的数据。

六、总结

本文对Pandas分组统计进行了详细的阐述,主要涉及到分组、汇总、过滤、转换和应用等不同方面。在实际应用中,可以根据具体需求采取不同的方法进行数据分析和处理。希望本文可以为读者提供一些参考和帮助。

原创文章,作者:XDGXH,如若转载,请注明出处:https://www.506064.com/n/372053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XDGXHXDGXH
上一篇 2025-04-23 18:08
下一篇 2025-04-23 18:08

相关推荐

  • Pandas下载whl指南

    本篇文章将从几个方面为大家详细解答如何下载Pandas的whl文件。 一、Pandas简介 Pandas是一个基于Python的软件库,主要用于数据分析、清洗和处理。在数据处理方面…

    编程 2025-04-28
  • 如何在Python中安装和使用Pandas

    本文将介绍如何安装和使用Python的Pandas库 一、Pandas库的介绍 Pandas是Python的一个数据分析库,提供了许多实用的数据结构和数据分析工具,可以帮助用户轻松…

    编程 2025-04-27
  • 深入解析pandas的drop_duplicates()函数

    在数据处理和清洗过程中,一个经常出现的问题是如何移除重复的数据项。pandas提供了一种方便易用的方式来完成这项任务——drop_duplicates()函数。本文将从多个方面深入…

    编程 2025-04-24
  • 详解pandas fillna 指定列

    一、fillna的基础用法 fillna是pandas中一个常用的函数,它用于填充数据框或序列中的空值。我们先来看一个简单的案例: import pandas as pd impo…

    编程 2025-04-24
  • Pandas apply函数详解

    Pandas是Python的一个开源数据分析库,专门用于数据操作和分析。其中apply()函数是Pandas中常用的数据操作函数之一,本文将从多个方面对这个函数进行详细的阐述。 一…

    编程 2025-04-24
  • Pandas读取txt文件详解

    一、pandas读取txt文件存入excel表 在数据处理中,我们通常将原始数据存储为txt文件,而pandas提供了很多方法来读取txt文件。下面我们演示如何将txt文件读取并存…

    编程 2025-04-22
  • 深入探究pandas遍历每一行

    pandas是一个强大的Python数据分析库,它提供了丰富的数据结构和函数,用于数据清洗、数据处理和数据分析。其中,最重要的数据结构之一是DataFrame,它类似于SQL中的表…

    编程 2025-04-13
  • pandas unstack详解

    一、概述 pandas是一个流行的数据处理库,而unstack是pandas中一个很常见的操作,它可以将pivot后的表再次变换成我们需要的格式,比如将二维的DataFrame转变…

    编程 2025-04-12
  • 从多个方面详解pandas查询

    一、基础查询 pandas作为Python数据分析的重要库,提供了丰富的数据操作和查询功能,但需要一定的基础和经验。pandas最基础的查询功能是根据索引号或者列名进行查询。 im…

    编程 2025-04-02
  • 如何使用Pandas修改列名

    Pandas是一个用于数据操作和分析的Python库,它提供了丰富的数据处理工具,包括DataFrame,它是一种二维表格数据结构。在使用DataFrame时,经常需要对列名进行修…

    编程 2025-02-27

发表回复

登录后才能评论