Python DataFrame.groupby()聚合函数,分组级运算

Python中的pandas库提供了DataFrame.groupby()函数,依照指定的分组条件,会把表格按照分组条件进行分组,并在每个分组上进行聚合操作。这个函数的用途非常广泛,一般用于数据的汇总、分析和统计。下面介绍几个使用DataFrame.groupby()的示例来详解这个函数。

1. 基本语法

DataFrame.groupby()函数的基本语法为:DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)

其中参数说明如下:

  • by: 表示分组的依据列或依据函数,默认为None,表示分组不依赖任何列,即不做分组。by可以是列名(字符串),或者用列表指定多个列名做分组,还可以是函数,函数返回值为分组的依据。例如:df.groupby('category')df.groupby(['category','year'])df.groupby(lambda x:x%2==0)

  • axis:表示按照行(axis=0)或列(axis=1)来分组,默认是0表示按照行分组。

  • level:表示在多层索引的情况下,使用该参数指定分组的索引等级。

  • as_index:表示是否将分组的列设置为新的索引,默认为True表示是,这意味着分组的列不会在结果中出现。

  • sort:表示是否对分组后的结构进行排序,默认是True。设置为False可以提升效率。

  • group_keys:表示是否对结果设置分组名,默认为True。

  • squeeze:表示是否取消单一分组的分组结果直接输出,默认为False,表示不取消。

  • observed:表示是否遵循类别未出现的保留策略,默认为False。

下面通过两个示例来详解DataFrame.groupby()的使用方法

2. 示例一:

假设我们有以下数据集,我们需要按照category列进行分组,并统计每个分组总金额和平均价格:

import pandas as pd

data = {'category': ['fruit', 'fruit', 'vegetable', 'vegetable', 'drink', 'drink'],
        'item': ['apple', 'banana', 'cabbage', 'apple', 'water', 'soda'],
        'price': [2.0, 3.0, 1.5, 2.5, 1.2, 3.2],
        'quantity': [2, 3, 5, 2, 4, 5]}

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

运行结果:

    category     item  price  quantity
0      fruit    apple    2.0         2
1      fruit   banana    3.0         3
2  vegetable  cabbage    1.5         5
3  vegetable    apple    2.5         2
4      drink    water    1.2         4
5      drink     soda    3.2         5

接下来,使用groupby()函数按照category分组,并处理总价格(price列求和)和平均价格(price列求平均数):

df_grouped = df.groupby(['category']).agg({'price': [sum, 'mean']})
print(df_grouped)

运行结果:

             price          
               sum      mean
category                    
drink          4.4  2.200000
fruit          5.0  2.500000
vegetable      4.0  2.000000

在这个示例中,我们首先创建了一个包含产品信息的DataFrame,然后用.groupby()函数按照category列进行分组,同时用agg()函数进行合并。由于我们想要计算总和和平均值,所以将这些操作作为agg()参数传递。最后,我们的程序输出每个类别的价格总和和平均价格。

3. 示例二:

接下来,让我们看一个更复杂的示例。我们将使用鸢尾花(iris)数据集,其中包含多个测量值,包括花瓣大小、花萼大小、花瓣宽度、花萼宽度等。在这个示例中,我们将使用.groupby()函数对鸢尾花数据进行汇总。

import seaborn as sns

iris = sns.load_dataset('iris')      # 使用seaborn中自带的鸢尾花数据集
print(iris.head())                   # 输出数据前5行

运行结果:

   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa

现在,我们使用.groupby()函数对数据进行,按照' species '列为键值进行分组,并使用.describe()函数传递给.agg()函数来获取分组结果的各种描述性统计:

iris_grouped = iris.groupby('species').agg(['mean', 'std'])
print(iris_grouped)

运行结果:

            sepal_length           sepal_width  ... petal_length petal_width          
                    mean       std        mean  ...          std        mean       std
species                                        ...                                    
setosa           5.0060  0.352490      3.4280  ...     0.173511      0.2460  0.105386
versicolor       5.9360  0.516171      2.7700  ...     0.469911      1.3260  0.197753
virginica        6.5875  0.635880      2.9740  ...     0.551895      2.0260  0.274650

在这个示例中,我们首先使用seaborn中自带的iris数据集,并使用.head()函数输出前五行数据。然后,我们按照species列进行分组,用.agg()函数传递.describe()函数来获取分组结果的各种描述性统计(均值、标准差等)。

4. 总结

在本文中,我们详解了Python DataFrame.groupby()函数的使用,包括基本的语法格式以及如何使用函数处理多个数据集。这个函数非常强大,能够处理各种不同的复杂数据集和分析工作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python DataFrame.groupby()聚合函数,分组级运算 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • openstack私有云布署实践【11.3 计算nova – compute节点-nova用户免密登录(用于云主机冷迁移+扩展云主机大小)】

    云主机迁移+扩展云主机大小 ,官方说它依赖nova用户之间的免密登录。确保每个resion区域的compute节点服务器他们可以相互SSH免密   compute1-7     他们相互SSH免密 kxcompute1-9  他们相互SSH免密   1、注意!是每台机器上的nova用户向另一台机器的nova用户的免密登录   每台compute节点修改ssh…

    云计算 2023年4月10日
    00
  • 一篇文章看懂大数据分析就业前景及职能定位、职能要求

    一篇文章看懂大数据分析就业前景及职能定位、职能要求 1. 大数据分析就业前景 随着互联网的快速发展,大数据分析成为IT行业中的热门岗位之一,其就业前景非常广阔。据国内招聘网站提供的数据,从2019年开始,大数据分析师的薪资不断攀升,其就业市场供需状况非常乐观。 2. 大数据分析职能定位 大数据分析师主要负责数据处理、分析和解释,把数据转化成具有商业或战略意义…

    云计算 2023年5月18日
    00
  • 阿里云杨敬宇:5G时代,边缘计算将发挥更大价值

    摘要:            “5G时代,边缘计算将发挥更大价值。”3月8日,阿里云边缘计算技术负责人杨敬宇向媒体表示,边缘计算作为5G时代的一项关键技术,未来将成为不可或缺的基础设施之一。 “5G时代,边缘计算将发挥更大价值。”3月8日,阿里云边缘计算技术负责人杨敬宇向媒体表示,边缘计算作为5G时代的一项关键技术,未来将成为不可或缺的基础设施之一。 5G时…

    云计算 2023年4月12日
    00
  • ASP.NET下上传图片到数据库,并且读出图片的代码(详细版)

    ASP.NET下上传图片到数据库,并且读出图片的代码(详细版) 在 ASP.NET 中,我们可以使用 C# 代码实现上传图片到数据库,并且读出图片的功能。本文将提供一个完整的攻略,包括如何创建 ASP.NET 项目、如何上传图片到数据库、如何读出图片、如何使用示例代码等内容。 创建 ASP.NET 项目 在开始实现上传图片到数据库,并且读出图片的功能之前,我…

    云计算 2023年5月16日
    00
  • 更改 ESX 或 ESXi 主机的主机名称

    更改 ESX 或 ESXi 主机的主机名称  注意: 如果 ESX/ESXi 主机的管理网络处于 vSphere Distributed Switch 上,请先将网络迁移到 vSphere Standard Switch 然后再继续。有关详细信息,请参见 Disabling vNetwork Distributed Switches (1010718)。 如…

    云计算 2023年4月18日
    00
  • 云计算:OpenStack、Docker、K8S(Kubernetes容器编排工具)的演进史 | 附推荐阅读

    目录 引子 OpenStack 的诞生 OpenStack 是什么 Docker 的出现 K8S(Kubernetes) – 为 Docker 而生 推荐阅读   引子 作为一名程序员,设计程序架构、优化算法已经是一件很头疼的事了,然而,还有更让人烦躁的,那就是环境配置,想必各位同学们都深有体会。每个人的电脑都不一样,不管是软件还是硬件,或者是要依赖的环境,…

    云计算 2023年4月13日
    00
  • 云计算服务模型,第 2 部分: 平台即服务(PaaS)

    平台即服务 (PaaS) 常常是最容易让人迷惑的云计算类别,因为很难识别它,常常把它误认为是基础设施即服务 (IaaS) 或软件即服务 (SaaS)。在这个分三部分的文章系列的第二部分中,了解 PaaS 的特点以及如何在企业中应用它。  英文原文:Cloud computing service models, Part 2: Platform as a Se…

    云计算 2023年4月12日
    00
  • SpringBoot集成ElasticSearch的示例代码

    SpringBoot集成ElasticSearch的完整攻略 ElasticSearch是一个基于Lucene的搜索引擎,可以快速地存储、搜索和分析大量数据。SpringBoot是一个快速开发框架,可以帮助开发者快速地构建Web应用。本文将介绍如何在SpringBoot中集成ElasticSearch,并提供两个示例说明。 步骤一:添加依赖 在pom.xml…

    云计算 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部