pandas数据分组和聚合操作方法

yizhihongxing

下面是关于“pandas数据分组和聚合操作方法”的完整攻略。

1. 前置基础知识

在进行数据分组和聚合操作前,我们需要掌握以下基础知识:

  1. pandas的数据结构Series和DataFrame;
  2. pandas中的GroupBy对象,用于进行数据分组操作;
  3. 聚合操作中的常用函数,包括sum、mean、count等;
  4. apply方法的使用,可以对数据进行自定义操作。

2. 数据分组

pandas中的数据分组可以使用GroupBy对象,GroupBy对象的创建可以通过对DataFrame进行groupby方法调用实现。groupby方法的参数包括要分组的列或多列的名称。

import pandas as pd

data = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                     'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                     'C': [1, 2, 3, 4, 5, 6, 7, 8],
                     'D': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]})

grouped = data.groupby('A')  # 按照A列进行分组

for key, value in grouped:
    print(key)
    print(value)

以上代码中,创建了一个DataFrame和一个GroupBy对象,按照A列进行分组,将DataFrame按照A列中不同的值划分为foo和bar两个组,for循环遍历每个组的名称和对应的数据。

3. 聚合操作

分组完成后,可以进行聚合操作,pandas支持的聚合操作包括sum、mean、count等,对应着分别对数据求和、求均值和计数等操作。

import pandas as pd

data = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                     'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                     'C': [1, 2, 3, 4, 5, 6, 7, 8],
                     'D': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]})

grouped = data.groupby('A')  # 按照A列进行分组

result = grouped.sum()  # 对每组的数值列求和

print(result)

以上代码中,通过groupby方法对DataFrame进行分组(按照A列),然后使用sum方法对每组的数值列求和,获得了每个分组的总和。

4. 自定义聚合操作

pandas还支持自定义聚合函数,可以使用apply方法对每个分组进行自定义操作。apply方法接受一个函数作为参数,该函数的输入是每个分组的数据,输出是聚合后的结果。

import pandas as pd

def my_func(data):
    return data['C'].sum() / data['D'].mean()

data = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                     'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                     'C': [1, 2, 3, 4, 5, 6, 7, 8],
                     'D': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]})

grouped = data.groupby('A')  # 按照A列进行分组

result = grouped.apply(my_func)  # 对每组数据执行自定义操作

print(result)

以上代码中,定义了一个自定义函数my_func,对每个组的数据进行自定义操作。apply方法将这个函数作为参数输入,对每组数据执行自定义操作,并返回操作后的结果。

5. 示例说明

为了更好地理解分组和聚合操作的实现和意义,下面给出两个示例说明。

示例1

我们有一份销售数据的DataFrame,包括日期、销售量、类别等信息。我们希望按照不同类别的销售量总和进行排序。

import pandas as pd

data = pd.DataFrame({'date': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05'],
                     'category': ['fruit', 'vege', 'meat', 'fruit', 'vege', 'meat', 'fruit', 'vege', 'meat', 'fruit'],
                     'sales': [100, 150, 200, 120, 180, 230, 110, 170, 190, 130]})

grouped = data.groupby('category')

result = grouped.sum().sort_values('sales', ascending=False)

print(result)

以上代码中,使用groupby方法将DataFrame按照类别列进行分组,然后对每组数据的销售量列进行求和操作,最后按照销售量降序排列输出结果。

示例2

我们有一组学生成绩数据,包括每个学生的姓名、科目和成绩等信息。我们希望纵向统计每个学生的成绩平均值,并按照平均值进行降序排列。

import pandas as pd

data = pd.DataFrame({'name': ['Tom', 'Jack', 'Tom', 'Tom', 'Jack', 'Lucy', 'Lucy', 'Lucy'],
                     'subject': ['math', 'math', 'math', 'English', 'English', 'math', 'English', 'math'],
                     'score': [80, 90, 70, 85, 92, 88, 82, 91]})

grouped = data.groupby('name')

result = grouped.mean().sort_values('score', ascending=False)

print(result)

以上代码中,使用groupby方法将DataFrame按照姓名列进行分组,然后对每个分组中的成绩列进行平均值操作,最后按照平均值降序排列输出结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas数据分组和聚合操作方法 - Python技术站

(1)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 如何在Pandas中计算滚动中位数

    计算滚动中位数(rolling median)可以通过Pandas的rolling函数结合median函数轻松实现。具体步骤如下: 确定需要计算滚动中位数的数据。 使用Pandas的rolling函数指定窗口大小,得到数据的滚动窗口。 对滚动窗口进行操作,并使用median函数计算中位数。 获得所有中位数并返回。 下面通过一个实例来说明如何在Pandas中计…

    python-answer 2023年3月27日
    00
  • 在Python中向现有的Pandas DataFrame添加字典和系列的列表

    在Python中,可以使用Pandas来创建和操作数据帧(DataFrame),在实际的数据处理过程中,需要向现有的DataFrame添加字典和系列的列表,在此,提供以下完整攻略及实例说明。 向Pandas DataFrame添加字典 在Pandas中,可以使用append()方法向Dataframe中添加字典,示例如下: import pandas as …

    python-answer 2023年3月27日
    00
  • python3的数据类型及数据类型转换实例详解

    Python3 数据类型及数据类型转换实例详解 在Python3中,有下列主要的数据类型: 数字(Number) 字符串(String) 列表(List) 元组(Tuple) 集合(Set) 字典(Dictionary) 数字(Number) 数字数据类型包括 int、float、bool、complex(复数)。 其中,int(整型)代表整数,float(…

    python 2023年5月14日
    00
  • Python pandas 的索引方式 data.loc[],data[][]示例详解

    Python pandas 的索引方式 data.loc[],data[][]示例详解 背景 在使用Python pandas的过程中,我们常常需要对数据进行索引、筛选、修改等操作。其中,使用data.loc[]和data[][]进行索引操作是比较常见和灵活的方式。接下来,我们将详细讲解这两种索引方式的使用方法和示例。 data.loc[]的使用 data.…

    python 2023年5月14日
    00
  • pandas添加自增列的2种实现方案

    针对这个话题,我来详细讲解“pandas添加自增列的2种实现方案”的完整攻略。下面将分为两个方案来进行介绍。 方案一:使用pandas的cumcount()方法 pandas提供了cumcount()方法,可以针对某一列的每一个元素来进行计数,并添加到DataFrame中。下面分步骤来看这个方法的实现: 1. 假设我们有如下的数据集: import pand…

    python 2023年5月14日
    00
  • 春节到了 教你使用python来抢票回家

    以下是”春节到了教你使用python来抢票回家“的完整攻略: 1. 前置条件 在使用 Python 进行自动购票之前,你需要满足以下条件: 一台能够访问网络的计算机。 已经安装 Python,并了解 Python 的基础语法和操作。 了解如何解析 HTML 和发送网络请求。 已经获取了想要购买的车票的 url、出发站和目的站代码,以及出发时间、车次等信息。 …

    python 2023年5月14日
    00
  • 串联Pandas数据框架的两列数据

    串联Pandas数据框架的两列数据,需要使用Pandas的concat函数(即concatenate的缩写,意为连接)。具体步骤如下: 选取要串联的两列数据(或者多列)。 假设我们有以下两个数据框架df1和df2: import pandas as pd import numpy as np df1 = pd.DataFrame({‘A’: [‘A0’, ‘…

    python-answer 2023年3月27日
    00
  • 用Pairplot Seaborn和Pandas进行数据可视化

    当我们想要深入了解数据集的结构和关系时,可以使用数据可视化的方法。在这里,我们将介绍如何使用Seaborn和Pandas来创建pairplot以显示不同变量之间的关系。 Pairplot是Seaborn包中的一个函数,它可以绘制数据集中每个数值变量之间的散点图和直方图。它还可以用不同的颜色和标记显示分类变量(Nominal和Ordinal类型)。对于大型数据…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部