pandas分组与聚合groupby()函数详解

这篇具有很好参考价值的文章主要介绍了pandas分组与聚合groupby()函数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、groupby分组与聚合

分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况

  • DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=_NoDefault.no_default, squeeze=_NoDefault.no_default, observed=False, dropna=True):使用映射器或按一Series列对 DataFrame 进行分组。 groupby 操作涉及拆分对象、应用函数和组合结果的某种组合。可用于对大量数据进行分组并对这些组进行计算操作
    • by:映射、函数、标签或标签列表,用于确定分组依据的组。如果 by 是一个函数,则对对象索引的每个值调用它。如果传递了字典或序列,则序列或字典值将用于确定组(序列的值首先对齐。如果传递了长度等于所选轴的列表或 ndarray,则按原样使用这些值来确定组。标签或标签列表可以按列自身传递到组。请注意,元组被解释为(单个)键
    • axis:{0 or ‘index’, 1 or ‘columns’}, 默认0 沿行(0)或列(1)分割。对于系列,此参数未使用,默认为 0
    • level:int,级别名称,或此类的序列,默认 None 如果轴是 MultiIndex(分层),则按特定级别或级别分组。不要同时指定 by 和 level
    • as_index:bool,默认值为 True,是否进行索引,对于聚合输出,返回以组标签作为索引的对象。仅与 DataFrame 输入相关。as_index=False 实际上是“SQL 样式”分组输出
    • sort:bool,默认True 排序组键。通过关闭它获得更好的性能。请注意,这不会影响每个组内的观察顺序。 Groupby 保留每个组中行的顺序
    • group_keys:bool,可选,当调用 apply 并且 by 参数生成类似索引(即转换)结果时,将组键添加到索引以标识片段。默认情况下,当结果的索引(和列)标签与输入匹配时,不包括组键,否则将包含组键。如果生成的结果相对于输入没有相似索引,则此参数无效
    • squeeze:bool,默认值 False,如果可能,请减小返回类型的维数,否则返回一致的类型
    • observed:bool,默认为 False,这仅适用于任何 groupers 是 Categoricals 的情况。若为True:仅显示categorical groupers的观察值。若为False:显示categorical groupers的所有值
    • dropna:bool,默认为True,若为True,且组键包含 NA 值,则将删除 NA 值以及行/列。若为 False,则 NA 值也将被视为组中的键
    • 返回:DataFrameGroupBy,返回包含有关组信息的 groupby 对象

代码示例如下 

import pandas as pd
import numpy as np
df = pd.DataFrame({'颜色': ['蓝色', '灰色', '蓝色', '灰色', '黑色'], '商品': ['钢笔', '钢笔', '铅笔', '铅笔', '文具盒'],'售价':[2.5, 2.3, 1.5, 1.3, 5.2],'会员价':[2.2, 2, 1.3, 1.2, 5.0]})
df

df.groupby([ '商品']).mean(numeric_only=True)

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

二、分层索引

可以使用 level 参数按分层索引的不同级别进行分组

arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],
          ['Captive', 'Wild', 'Captive', 'Wild']]
index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))  # from_arrays用于将数组arrays转为多索引multiIndex,多维数组作为参数,高维指定高层索引,低维指定低层索引
index
--------------------------------------------------------------
df = pd.DataFrame({'Max Speed': [390., 350., 30., 20.]}, index=index)   # index为行标签索引
df

df.groupby(level=1).mean()   # 层次索引:可以使用级别参数按层次索引的不同级别分组

df.groupby(level='Type').mean()   # 层次索引:可以使用级别参数按层次索引的不同级别分组

df.groupby(level=0).mean()

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

三、设置是否包含NaN

可以通过设置 dropna 参数来选择是否在组键中包含 NA,默认设置为 True,即不包含NaN值

l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
df = pd.DataFrame(l, columns=["a", "b", "c"])
df

df.groupby(by=["b"]).sum()   # 还可以通过设置 dropna 参数来选择是否在组键中包含 NA,默认设置为 True

df.groupby(by=["b"], dropna=False).sum()  # dropna=False,即包含NaN

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

l = [["a", 12, 12], [None, 12.3, 33.], ["b", 12.3, 123], ["a", 1, 1]]
l

df = pd.DataFrame(l, columns=["a", "b", "c"])   # columns为列标签索引
df

df.groupby(by="a").sum()  # 按a列分组,对其他列进行求和,默认dropna=True,即不包含NaN值

df.groupby(by="a", dropna=False).sum()  # 为False时包含NaN值

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

四、排除组键

df = pd.DataFrame({'Animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'], 'Max Speed': [380., 370., 24., 26.]})
df

df.groupby("Animal", group_keys=True).apply(lambda x: x)  # 使用 group_keys 包含或排除组键,默认为 True(包含)

df.groupby("Animal", group_keys=False).apply(lambda x: x)   # group_keys=False,即排除组键

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

五、星巴克零售店铺数据

星巴克directory.csv数据获取下载:https://pan.baidu.com/s/1LG7YlezfSvPC6I7IvfUk4Q?pwd=fsp8

# 读取星巴克店的数据
starbucks = pd.read_csv("../data/directory.csv")
starbucks.head()   # head()表示取前五
---------------------------------------------------
# 按照国家分组,求出星巴克零售店数量前10个国家
count = starbucks.groupby(['Country'])["Store Number"].count().sort_values(ascending=False)   # count()即为聚合,sort_values表示进行排序,ascending=False即降序排序
count.head(10)
---------------------------------------------------
# 按照国家分组,求出星巴克零售店数量前10个国家,并作柱状图
count = starbucks.groupby(['Country'])["Store Number"].count().sort_values(ascending=False)
count.head(10).plot(kind='bar')
plt.show()
---------------------------------------------------
# 设置多个索引,将国家省市作为分组
starbucks.groupby(['Country', 'State/Province']).count().head()

 操作如下df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析

以下结构与MultiIndex结构 类似

df.groupby,pandas,数据挖掘,python,人工智能,pandas,数据分析 学习导航:http://xqnav.top/文章来源地址https://www.toymoban.com/news/detail-621314.html

到了这里,关于pandas分组与聚合groupby()函数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Pandas怎样实现groupby分组统计

    Pandas怎样实现groupby分组统计

    一、如何实现分组统计 导入数据 二、分组使用聚合函数做数据统计 1、单个列groupby,查询所有数据列的统计 我们看到: 2、多个列groupby,查询所有数据列的统计 我们看到:(‘A’,‘B’)成对变成了二级索引 3、同时查看多种数据统计 4、查看单列的结果数据统计 5、不同列使

    2024年02月09日
    浏览(11)
  • python DataFrame数据分组统计groupby()函数

    python DataFrame数据分组统计groupby()函数

    df = pd.DataFrame(data=data, index=index, columns=columns) print(df) print(“=================================================”) df1 = df.groupby([‘class_1’, ‘class_2’]).sum() # 分组统计求和 print(df1) 1.3 对DataFrameGroupBy对象列名索引(对指定列统计计算) 其中,df.groupby(‘class_1’)得到一个DataFrameGroupBy对象,

    2024年04月25日
    浏览(13)
  • 数据分析 — Pandas 分组聚合

    pandas.apply() 是 Pandas 库中的一个函数,用于在 DataFrame 或 Series 上应用自定义函数。这个函数可以 沿着指定的轴(行或列)逐行或逐列地应用函数 ,从而实现对数据的定制化操作。 参数: func(必需):这是要应用的函数,可以是一个 Python 函数、lambda 函数或可调用对象。这

    2024年02月19日
    浏览(8)
  • 【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析

    目录 1 描述性统计(Descriptive Statistics) 2 数据分组和聚合 3 数据透视表 4 相关性分析

    2024年02月07日
    浏览(23)
  • Pandas数据选取中df[]、df.loc[]、df.iloc[]、df.at[]、df.iat[]的区别及用法

    Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用。本文主要介绍Pandas的几种数据选取的方法。 Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据选取的方式基本一致,本文主要以Dataframe为例进行介绍。 在Dataframe中选取数

    2023年04月22日
    浏览(8)
  • 【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

    【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

    在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计) 使用DML语句来完成数据库中数据的增、删、改操作(数据库操作) 我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。 查询操作我们分为两部分学习: DQL语句-单表操作

    2024年02月02日
    浏览(22)
  • 【MySQL】聚合函数与分组查询

    【MySQL】聚合函数与分组查询

    MySQL中的聚合函数用于对数据进行计算和统计,常见的聚合函数包括下面列举出来的聚合函数: 查看班级有多少同学 统计数学成绩有多少个 统计英语不及格的人数 查看数学成绩的总和 统计英语不及格的分数总和 统计不及格的英语的平均分不需要上面那么麻烦自己手动除:

    2024年02月14日
    浏览(8)
  • Python中groupby函数详解(非常容易懂)

    Python中groupby函数详解(非常容易懂)

    groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: 举例如下: 上面语句的功能是输出表格所有数据中不同地区不同类型的评分数据平均值。 结果为: 首先,我们有一个变量data,数据

    2024年01月16日
    浏览(15)
  • 【Python】数据分析+数据挖掘——探索Pandas中的数据筛选

    【Python】数据分析+数据挖掘——探索Pandas中的数据筛选

    当涉及数据处理和分析时,Pandas是Python编程语言中最强大、灵活且广泛使用的工具之一。Pandas提供了丰富的功能和方法,使得数据的选择、筛选和处理变得简单而高效。在本博客中,我们将重点介绍Pandas中数据筛选的关键知识点,包括条件索引、逻辑操作符、 query() 方法以及

    2024年02月15日
    浏览(15)
  • 【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

    【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

    在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们能够更好地理解和操作数据。 本博客将探讨Pandas中与索

    2024年02月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包