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日

相关文章

  • 《金融行业云计算技术调查报告(2018)》、《中小银行上云白皮书》发布

    2018年3月21-22日,由中国信息通信研究院主办、中国通信标准化协会支持的”OSCAR云计算开源产业大会”在国家会议中心举行。 随着云计算技术的日益发展,并开始进入“深水区”,开源技术与云计算融合的程度进一步加深,并开始成为产业发展的重要支撑。”OSCAR云计算开源产业大会”将邀请行业内多位大咖与权重人物共同探讨、交流云计算开源技术、研发、治理、产业化方…

    云计算 2023年4月12日
    00
  • 【云计算】OpenStack Horizon DashBoard定制化,完整实现前后台交互

    项目代码见GitHub:https://github.com/junneyang/openstack-customization-example 参考资料: Install and configure Horizon:http://docs.openstack.org/mitaka/install-guide-rdo/horizon-install.html…

    云计算 2023年4月11日
    00
  • swagger上传文件并支持jwt认证的实现方法

    下面是关于“Swagger上传文件并支持JWT认证的实现方法”的完整攻略,包含两个示例说明。 简介 Swagger是一种流行的API文档工具,它可以帮助我们更好地管理和测试API接口。在ASP.NET Core应用程序中,我们可以使用Swagger来上传文件并支持JWT认证。在本攻略中,我们将介绍如何在ASP.NET Core应用程序中实现Swagger上传…

    云计算 2023年5月16日
    00
  • ASP.NET MVC4之js css文件合并功能(3)

    下面是对ASP.NET MVC4之js css文件合并功能(3)的完整攻略: 什么是js css文件合并功能 js css文件合并功能是指将多个js或css文件合并为一个文件,从而减少页面请求的次数和请求文件的大小,以提高页面加载速度。 实现步骤 第一步:配置BundleTable 在全局文件 Global.asax 中,使用 BundleTable 类中的…

    云计算 2023年5月17日
    00
  • ANKR币值得投资吗?ANKR币可以买吗?

    ANKR币值得投资吗? ANKR币(ANKR)是基于区块链技术的加密货币,它旨在为企业和开发人员提供分散式计算和存储方案。自 ANKR 公司在 2018 年推出以来,ANKR 一直在为分散式计算和存储的发展提供支持。现在,ANKR 作为一种加密货币,已成为投资者们关注的对象。我们来看一下 ANKR 币值得投资吗? ANKR 币的概况 ANKR 币的总供应量为…

    云计算 2023年5月17日
    00
  • IDC将因“云”而亡?2017传统IDC商何去何从?

    IDC将因“云”而亡?2017传统IDC商何去何从? 随着云计算技术的发展,越来越多的企业开始将其IT基础设施迁移到云端,这给传统的IDC商带来了巨大的挑战。本文将探讨IDC商在云计算时代的发展趋势和应对策略。 IDC商的困境 传统的IDC商主要提供数据中心托管、网络接入和IT设备租赁等服务,这些服务在云计算时代已经逐渐被云服务所替代。云服务提供商可以提供更…

    云计算 2023年5月16日
    00
  • 阿里云OSS实践文件直传基于服务端

    阿里云OSS实践文件直传基于服务端 本文将介绍如何使用阿里云OSS实现文件直传基于服务端。 1. 准备作 在开始之前,需要完成以下准备工作: 注册阿里云账号并创建OSS Bucket 在服务端搭建Web服务器 在Web服务器中安装阿里OSS SDK 2. 文件直传基于服务端 阿里云OSS文件直传基于服务端,可以通过以下步骤实现: 2.1 初始化OSSClie…

    云计算 2023年5月16日
    00
  • 深入浅析Python数据分析的过程记录

    深入浅析Python数据分析的过程记录 1. 搜集数据 数据分析的第一步是搜集数据,数据可以来自各种来源,比如公共数据集、爬虫抓取、用户上传等。在搜集之前需要明确自己的目标,需要分析什么样的数据,才能有的放矢地进行搜集,避免浪费时间和精力。 示例1:使用爬虫抓取数据如果我们想要分析某个电商网站的商品信息和评论,可以使用Python的爬虫技术进行数据抓取。可以…

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