详解Pandas groupby分组操作

groupby 是 pandas 中非常重要的操作之一,它是指将数据按照一定的条件分为若干组,对每组数据执行特定的操作,然后将结果汇总为新的 DataFrame 的过程。通常,groupby 操作包括以下三个步骤:

  1. 分割:按照一定的规则将数据分为若干组;
  2. 应用:对每组数据执行特定的操作,例如聚合、转换、过滤等;
  3. 合并:将执行操作后得到的结果合并为一个新的数据结构。

下面我们通过一些示例来详细介绍 groupby 的用法。

首先,我们创建一个包含人员信息的数据集:

import pandas as pd
import numpy as np

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Frank', 'Grace', 'Henry', 'Ivan', 'Jack'],
        'Gender': ['F', 'M', 'M', 'M', 'F', 'M', 'F', 'M', 'M', 'M'],
        'Age': [25, 30, 35, 40, 45, 50, 55, 60, 65, 70],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Beijing', 'Shanghai', 'Beijing', 'Shenzhen', 'Guangzhou', 'Shanghai'],
        'Salary': [5000, 8000, 6000, 7000, 9000, 5500, 7500, 6500, 7000, 10000]}
df = pd.DataFrame(data)
print(df)

输出结果如下:

      Name Gender  Age       City  Salary
0    Alice      F   25    Beijing    5000
1      Bob      M   30   Shanghai    8000
2  Charlie      M   35  Guangzhou    6000
3    David      M   40   Shenzhen    7000
4    Emily      F   45    Beijing    9000
5    Frank      M   50   Shanghai    5500
6    Grace      F   55    Beijing    7500
7    Henry      M   60   Shenzhen    6500
8     Ivan      M   65  Guangzhou    7000
9     Jack      M   70   Shanghai   10000

我们以此为例,对这组数据集进行groupby操作:

分组

对于 DataFrame,我们可以根据某一列或多列进行分组,例如按照城市进行分组:

grouped = df.groupby('City')
for name, group in grouped:
    print(name)
    print(group)

输出结果如下:

Beijing
    Name Gender  Age     City  Salary
0  Alice      F   25  Beijing    5000
4  Emily      F   45  Beijing    9000
6  Grace      F   55  Beijing    7500
Guangzhou
      Name Gender  Age       City  Salary
2  Charlie      M   35  Guangzhou    6000
8     Ivan      M   65  Guangzhou    700

应用

在对分组后的数据进行操作之前,我们可以先对分组对象进行查看,例如查看每个组的大小:

grouped = df.groupby('City')
print(grouped.size())

输出结果如下:

City
Beijing      3
Guangzhou    2
Shanghai     3
Shenzhen     2
dtype: int64

我们可以使用聚合函数对每个组进行计算,例如计算每个城市的平均工资:

python
Copy code
grouped = df.groupby('City')
print(grouped['Salary'].mean())
输出结果如下:

City
Beijing      7166.666667
Guangzhou    6500.000000
Shanghai     7833.333333
Shenzhen     6750.000000
Name: Salary, dtype: float64

如果我们需要对每个组都执行多个聚合操作,可以使用 agg 方法:

grouped = df.groupby('City')
print(grouped['Salary'].agg([np.mean, np.median, np.std]))

输出结果如下:


                   mean  median          std
City                                        
Beijing     7166.666667    7500  2218.089987
Guangzhou   6500.000000    6500   707.106781
Shanghai    7833.333333    8000  2182.303656
Shenzhen    6750.000000    6750   353.553391

除了常用的聚合函数外,pandas 还提供了一些方便的函数,例如 size、first、last、nth 等。例如,我们可以使用 size 函数计算每个城市的人数:

grouped = df.groupby('City')
print(grouped.size())

输出结果如下:

City
Beijing      3
Guangzhou    2
Shanghai     3
Shenzhen     2
dtype: int64

合并

在对每个组进行操作后,我们可以使用 concat 或 merge 方法将结果合并为一个新的数据结构。例如,我们可以先计算每个城市的平均工资和人数,然后将它们合并为一个新的数据结构:

grouped = df.groupby('City')
result = pd.concat([grouped['Salary'].mean(), grouped.size()], axis=1)
result.columns = ['mean_salary', 'count']
print(result)

输出结果如下:


           mean_salary  count
City                         
Beijing    7166.666667      3
Guangzhou  6500.000000      2
Shanghai   7833.333333      3
Shenzhen   6750.000000      2

groupby 是 pandas 中非常重要的操作之一,它可以实现分组、聚合和合并等功能。熟练掌握 groupby 操作可以大大提高数据分析的效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Pandas groupby分组操作 - Python技术站

(2)
上一篇 2023年3月5日
下一篇 2023年3月5日

相关文章

  • Python datacompy 找出两个DataFrames不同的地方

    首先,Python datacompy是一个Python库,可以用于比较两个Pandas数据框架(DataFrames)。该应用程序比较不同数据框架中列的值和缺少的行。 下面是使用Python datacompy库执行数据框架比较的详细步骤。 安装Python datacompy 在开始之前,我们需要先安装Python datacompy库。可以使用以下命令…

    python 2023年5月14日
    00
  • NodeJS 中Stream 的基本使用

    NodeJS中Stream是一种非常重要的数据处理工具,它可以帮助我们高效地处理大量数据,在文件读写、网络传输等多个场景下都有广泛应用。下面我们来详细讲解NodeJS中Stream的基本使用。 什么是Stream 流(Stream)是Node.js中处理流式数据的一个抽象接口。Stream有四种类型:Readable、Writable、Duplex、Tran…

    python 2023年5月14日
    00
  • Python运用于数据分析的简单教程

    Python运用于数据分析的简单教程 数据分析是如今越来越重要的一个领域,同时Python也成为数据分析的热门工具之一。在本教程中,我们将向您介绍如何使用Python进行数据分析的基础知识和操作过程。 安装Python和必要的包 首先,您需要安装Python以及与数据分析相关的各种包。以下是基本的安装步骤: 下载并安装 Python 安装 NumPy pip…

    python 2023年5月14日
    00
  • Pandas GroupBy一列并获取平均值、最小值和最大值

    当我们使用Pandas进行数据分析时,经常需要对数据进行分组操作并计算统计量。GroupBy是一种十分强大的Pandas工具,可以帮助我们轻松地实现按照某列(列名)分组,然后对分组内的数据进行计算统计量,如求平均值(mean)、最小值(min)、最大值(max)等。 下面,我们通过一些实例来演示Pandas GroupBy的用法,具体步骤如下: 安装 Pan…

    python-answer 2023年3月27日
    00
  • 获取Pandas数据框架的最后N条记录

    获取Pandas数据框架的最后N条记录可以使用Pandas的tail方法。该方法默认显示后5条记录,但是可以通过传递参数来获取指定数量的记录。 具体的操作步骤如下: 导入Pandas库,读取数据到数据框架中: python import pandas as pd df = pd.read_csv(‘data.csv’) 这里的 data.csv 文件是需要读…

    python-answer 2023年3月27日
    00
  • Jupyter Notebook读取csv文件出现的问题及解决

    下面是关于“Jupyter Notebook读取csv文件出现的问题及解决”的完整攻略: 问题描述 在使用Jupyter Notebook读取csv文件时,可能会出现以下问题: 出现编码问题,导致无法正确读取文件内容。 文件路径不正确或不存在,导致无法读取文件。 解决方法 以下为针对以上问题的解决方法,供参考: 解决编码问题 如果出现编码问题导致无法正确读取…

    python 2023年5月14日
    00
  • python对列进行平移变换的方法(shift)

    Python中的numpy库提供了一种对数组进行平移变换的方法,是通过np.roll()函数来实现。np.roll()函数可以对数组中的元素进行循环移位,并可以指定移位的数量和方向。 下面是该方法的详细攻略: 语法 numpy.roll(arr, shift, axis=None) arr :要进行平移的数组 shift :表示平移的数量,可以是正数(向右移…

    python 2023年5月14日
    00
  • Pandas数据处理库画图与文件读取使用示例

    下面我来给你详细讲解一下“Pandas数据处理库画图与文件读取使用示例”的完整攻略。 Pandas简介 Pandas是一个流行的Python数据处理库。它提供了数据结构(如DataFrame和Series)和操作这些结构的方法。Pandas的核心是对表格数据的操作。Pandas可以方便地读取、写入、筛选、排序和分析数据。Pandas适用于各种数据类型,包括数…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部