第1关:Pandas分组聚合

pandas分组与聚合groupby()函数详解 groupby分组与聚合、分层索引、设置是否包含NaN、排除组键,星巴克零售店铺数据下载,星巴克零售店铺directory.csv数据获取,groupby用法详解,pandas分组与聚合,groupby如何使用 阅读详情
AI摘要

本篇博客主要介绍了如何使用Pandas进行数据分组和聚合操作,以解决计算每个大洲红酒消耗量最大值与最小值之差及啤酒消耗量总和的任务。首先讲解了分组聚合的三步流程,然后详细阐述了Pandas的groupby()函数,包括单列、多列分组,Series分组以及数据类型的分组方式。此外,还提到了如何获取特定分组和对分组进行迭代。最后,介绍了聚合函数的应用,包括单个和多个聚合函数的使用,以及自定义函数在agg()方法中的应用,并给出了一个实际编程任务,要求根据continent分组计算酒类消耗统计。

任务描述

本关任务:使用Pandas加载drinks.csv文件中的数据,根据数据信息求每个大洲红酒消耗量的最大值与最小值的差以及啤酒消耗量的和。
相关知识
*分组聚合的流程主要有三步:

  1. 分割步骤将DataFrame按照指定的键分割成若干组;
  2. 应用步骤对每个组应用函数,通常是累计、转换或过滤函数;
  3. 组合步骤将每一组的结果合并成一个输出数组。*
    在这里插入图片描述

分组
通常我们将数据分成多个集合的操作称之为分组,Pandas中使用groupby()函数来实现分组操作。

单列和多列分组
对分组后的子集进行数值运算时,不是数值的列会自动过滤

import pandas as pd  
data = {'A': [1, 2, 2, 3, 2, 4],  
        'B': [2014, 2015, 2014, 2014, 2015, 2017],  
        'C': ["a", "b", "c", "d", "e", "f"],  
        'D': [0.5, 0.9, 2.1, 1.5, 0.5, 0.1]  
        }  
df = pd.DataFrame(data)  
df.groupby("B")   #单列分组  返回的是一个groupby对象  
df.groupby(["B","C"])    #多列分组  

Series系列分组
选取数据帧中的一列作为index进行分组:

df["A"].groupby(df["B"])   #df的 A 列根据 B 进行分组  

通过数据类型或者字典分组
数据类型分组:

df.groupby(df.dtypes,axis=1)   # axis=1表示按列分组,以数据类型为列名  

传入字典分组:

dic = {"A": "number", "B": "number", "C": "str", "D": "number"}  
df.groupby(dic, axis=1)   #按列分组,列名是字典的值  

获取单个分组
使用get_group()方法可以选择一个组。

df.groupby("A").get_group(2)  

输出:

   A     B  C    D  
1  2  2015  b  0.9  
2  2  2014  c  2.1  
4  2  2015  e  0.5  

对分组进行迭代
GroupBy对象支持迭代,可以产生一组二元元组(由分组名和数据块组成)。

for name,data in df.groupby("A"):  
        print(name)  
        print(data)  

输出:

1  
   A     B  C    D  
0  1  2014  a  0.5  
2  
   A     B  C    D  
1  2  2015  b  0.9  
2  2  2014  c  2.1  
4  2  2015  e  0.5  
3  
   A     B  C    D  
3  3  2014  d  1.5  
4  
   A     B  C    D  
5  4  2017  f  0.1  

聚合
聚合函数为每个组返回单个聚合值。当创建了groupby对象,就可以对分组数据执行多个聚合操作。比较常用的是通过聚合函数或等效的agg方法聚合。常用的聚合函数如下表:

函数名说明
count分组中非空值的数量
sum非空值的和
mean非空值的平均值
median非空值的中位数
std、var无偏标准差和方差
min、max非空值的最小和最大值
prod非空值的积
first、last第一个和最后一个非空值

应用单个聚合函数
对分组后的子集进行数值运算时,不是数值的列会自动过滤

import pandas as pd  
import numpy as np  
data = {'A': [1, 2, 2, 3, 2, 4],  
        'B': [2014, 2015, 2014, 2014, 2015, 2017],  
        'C': ["a", "b", "c", "d", "e", "f"],  
        'D': [0.5, 0.9, 2.1, 1.5, 0.5, 0.1]  
        }  
df = pd.DataFrame(data)  
df.groupby("B").sum()       #对分组进行求和  

应用多个聚合函数

df.groupby("B").agg([np.sum,np.mean,np.std])  

自定义函数传入agg()中

def result(df):  
    return df.max() - df.min()  
df.groupby("B").agg(result)  #求每一组最大值与最小值的差  

对不同的列使用不同的聚合函数

mapping = {"A":np.sum,"B":np.mean}  
df.groupby("C").agg(mapping)  

编程要求
使用Pandas中的read_csv()函数读取step1/drinks.csv中的数据,数据的列名如下表所示,请根据continent分组并求每个大洲红酒消耗量的最大值与最小值的差以及啤酒消耗量的和。在右侧编辑器begin-end处补充代码。

列名说明
country国家名
beer_servings啤酒消耗量
spirit_servings白酒消耗量
wine_servings红酒消耗量
total_litres_of_pure_alcohol纯酒精总量
continent大洲名
测试说明
平台会对你编写的代码进行测试:

测试输入:
预期输出:

               wine_servings  beer_servings  
continent  
Africa                   233           3258  
Asia                     123           1630  
Europe                   370           8720  
North America             99           3345  
Oceania                  212           1435  
South America            220           2101  
import pandas as pd
import numpy as np

#返回最大值与最小值的差
def sub(df):
    ######## Begin #######
    return df.max()-df.min()
    ######## End #######

def main():
    ######## Begin #######
    data = pd.read_csv("step1/drinks.csv",header = 0)#读取数据
    df = pd.DataFrame(data)#转换为Pandas DataFrame 数据
    mapping = {"wine_servings":sub,"beer_servings":np.sum}
    print(df.groupby("continent").agg(mapping))#根据continet分组,并使用不同的聚合函数

    ######## End #######

if __name__ == '__main__':
    main()
【数据分析学习笔记day17】Pandas分组与聚合分组 (groupby)+聚合 (aggregation)+数据的分组运算+groupby.apply(func)+1. 分组操作 2. 分组运算 文章目录Pandas分组与聚合分组 (groupby)一、GroupBy对象:DataFrameGroupBy,SeriesGroupBy1. 分组操作2. 分组运算3. 按自定义的key分组二、GroupBy对象支持迭代操作1. 单层分组2. 多层分组三、GroupBy对象可以转换成列表或字典1. 按列分组、按数据类型分组2. 其他分组方法3. 通过字典分组4. 通过函数分组,函数传入的参数为行... 阅读详情

相关推荐

Pandas - 数据的聚合与分组计算

1 数据分组 - groupby() 1.1 按照多列进行分组的两种方法 1.2 对分组进行迭代 1.3 将列数据按照数据类型进行分组 1.4 通过字典或者Series对DataFrame数据进行分组 2 数据聚合 2.1 分组结果的内置聚合函数 2.2 自定义聚合函数 2.3 apply函数 自定义函数利用apply应用到分组对象上 2.4 分组加权平均数和相关系数 ...

Plus Ultra !!! 1万+

Pandas分组聚合与透视表的创建

Pandas分组聚合与透视表的创建

qq_71139242的博客 2528

pandas中分组/聚合函数的用法

一。对Series进行的聚合 df = pd.DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'], 'key2': ['one', 'two', 'one', 'two', 'one'], 'data1': np.random.randint(1, 10, 5), ...

qq_35810838的博客 3820

【Pandas 分组与聚合详解】

分组是将数据按照某个或某些特征进行分类的过程。在 Pandas 中,我们可以使用groupby方法来实现数据的分组操作。例如,如果我们有一份包含学生信息的数据集,可以根据性别来进行分组,得到男生组和女生组,然后对每个组进行进一步的分析。

武帝为此的博客 1240

Pandas进阶

第1关:Pandas分组聚合 本关任务:使用Pandas加载drinks.csv文件中的数据,根据数据信息求每个大洲红酒消耗量的最大值与最小值的差以及啤酒消耗量的和。 import pandas as pd import numpy as np #返回最大值与最小值的差 def sub(df): ######## Begin ####### a=pd.read_csv('step1/drinks.csv') df1=pd.DataFrame(a) min=df1.group

Junds0的博客 2391

超声波清洗机拆解实录:从电路板到换能器,一文看懂内部构造(附高清图)

本文详细拆解了超声波清洗机的内部构造,从电路板设计到换能器工作原理,揭示了其核心技术。通过高清图片和详细分析,展示了功率放大电路、高频变压器及压电换能器等关键部件,为电子爱好者和维修技术人员提供了实用的故障诊断和元件二次利用指南。

grape的博客 1183

Pandas进阶(第一关,第二关)

简介 Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量快速便捷地处理数据的函数和方法。使Python成为强大而高效的数据分析环境的重要因素之一。 本实训的主要内容是:1.Pandas使用分组聚合进行组内计算,2.创建透视表和交叉表。本实训需要学员对Pandas的数据结构和统计函数有一定的了解。 第1关:Pandas分组聚合 任务描述 相关知识 分组 单列和多列分组 Seri

weixin_44196785的博客 1万+

mysql8.0安装及配置超详细教程_mysql-8.0.15-winx64

MySQL8.0配置教程, 全网最详,同时有本地mysql和小皮系统见另一篇

小诺言的博客 2万+

pandas分组聚合

分组 groupby方法是pandas中的分组方法,对数据框采用groupby方法后,返回的是DataFrameGroupBy对象,一般分组操作后会进行聚合操作。 import pandas as pd import numpy as np df = pd.DataFrame({'A': [1, 1, 2, 2],'B': [1, 2, 3, 4],'C':[6,8,1,9]}) 对数据框按A列进行分组,产生分组数据框。分组数据框是可迭代对象,可以进行循环遍历,可以看出在循环中,每个元素的类型是元

qq_61398866的博客 2988

实施文档

流程管理 2008-04-23 09:44:00 874 收藏 3 分类专栏: 企业管理杂谈 文章标签: 文档 文档管理 项目管理 工作 配置管理 工具 项目实施文档是用来记录、描述、展示实施过程中一系列信息的处理过程,通过书面或图示的形式对项目活动过程或结果进行描述、定义、规定及报告。例如分阶段实施计划文档,标准业务流程文档,标准编码及数据文档,标准参数设置文档,功能操作指南文档。这些文档将会伴随着ERP实施的各个阶段逐渐充实、完善,也同时记载了整个实施的过程和成果。 作为实施顾问人员,在实施过程

qq_52337172的博客 1062

一步一步教你写股票走势图——K线图一(概述)

股票分时图部分已经开发完毕,受到了广大开发者的好评!界面、功能都挺完美,解决了好一些MP开发者的问题,博主甚是欣悦,更有动力去开源K线图。这里说一下,如果有问题直接留言或者发邮件,github上个人信息有邮件,我看到基本都会回复,博主不加qq的,体谅O(∩_∩)O。分析好了,废话不多说,我们分析下K线图吧,首先我们看下自选股K线图的效果吧效果还是很赞的,经过分时图的研究后,博主越来越确信自选股用的应

体验Android编程之美 3万+

Pandas:分组聚合

除了内置的聚合函数,用户还可以定义自定义的聚合函数,并在分组时使用它们。# 自定义聚合函数# 应用自定义聚合函数分组和聚合是数据分析中非常强大的工具,可以帮助用户在分析大型数据集时提取重要信息。在 Pandas 中,使用 `groupby()` 方法可以轻松地将数据分组,随后可以对每个组进行多种聚合操作。

Wei_sx的博客 831

OCEAN 电路仿真

介绍利用 Cadence OCEAN 进行电路脚本仿真的方法

weixin_43249158的博客 4402

Python之Pandas超详细入门教程 -- 第七章 Pandas分组与聚合【进阶篇】

分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况 1 什么分组与聚合 2 分组API DataFrame.groupby(key, as_index=False) key:分组的列数据,可以多个 案例:不同颜色的不同笔的价格数据 col =pd.DataFrame({'color': ['white','red','green','red','green'], 'object': ['pen','pencil','pencil','ashtray','pen']

hhladminhhl的博客 1398

simulink构建一个基于 BP(反向传播)神经网络 的自适应 PID 控制系统

本文介绍了基于BP神经网络的自适应PID控制系统设计方法。系统通过神经网络实时调整PID参数,实现智能控制。主要内容包括:1)系统架构设计,采用误差反馈和在线学习机制;2)详细建模步骤,从被控对象定义到神经网络结构设计;3)S-Function实现核心算法,包含前向传播、PID计算和反向传播;4)仿真结果分析,显示神经网络PID在响应速度、超调控制和鲁棒性方面的优势;5)进阶建议和常见问题解决方案。该方法突破了传统PID的局限性,实现了具有自我学习能力的智能控制。

xiaoheshang_123的博客 52

【AI 赋能:Python 人工智能应用实战】16. BERT微调实战:中文新闻分类全流程(附模型蒸馏+ONNX部署完整代码)

中文新闻分类是NLP领域的经典实用任务,BERT模型凭借双向上下文建模能力,能有效解决中文歧义与长文本依赖问题,但存在推理速度慢、资源占用高的痛点。本文以THUCNews中文新闻数据集为核心,提供从数据预处理、BERT微调、模型蒸馏到生产部署的全流程实操指南。首先详解THUCNews的多编码读取与清洗(解决gbk/utf-8兼容问题);然后实现BERT微调,加入早停机制与混淆矩阵可视化,验证准确率达93.8%;接着用DistilBERT完成模型蒸馏,在仅损失0.6%准确率的前提下,将推理速度提升2.7倍。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1098

python的数据分析:pandas的分组聚合

本文是《数据蛙三个月强化课》的第一篇总结教程,如果想要了解数据蛙社群,可以阅读给DataFrog社群同学的学习建议。温馨提示:如果您已经熟悉pandas,大可不必再看这篇文章,或是之挑选部分文章 数据分析的过程分组统计是一个最常见的场景了,下面我们一起来看下啊。 一:创建数据集 index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy...

gg0124的博客 1079

【WorkBuddy专栏58】腾讯为什么要「自己打自己」——7款AI智能体产品全景对比与「赛马」逻辑深度拆解

【WorkBuddy专栏57】你的左侧空间不是「日任务清单」——工作空间才是 WB 变聪明的核心秘密

AI人人懂 679

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

《Python for Data Analysis》GroupBy分组运算:split-apply-combine(拆分-应用-合并)DataFrame可以在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用到各个分组并产生新值。最后,所有这些函数的执行结果会被合并到最终的结果对象中去。GroupBy的size方法可以返回一个含有分组大小的Series。对分组进行迭代?选取一...

weixin_29959549的博客 704

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python 数据处理 —— pandas 分组聚合

我们所说的group by拆分:根据指定的标准对数据进行切割,并分为不同的组别应用:分别在每个组中应用函数组合:将所有的结果组合为数据结构在这些步骤中,拆分是最直接的。而事实上,多数情况下,我们可能希望将数据集分成若干组,并对这些分组进行一些操作在应用函数的步骤中,我们可能希望进行以下操作聚合:为每个分组应用一个或多个汇总函数,例如:计算分组的和或均值计算分组的转换:为不同的分组执行不同的计算,并返回类似索引的对象,例如:在组内进行标准化(zscore填充每个分组中的NA值。

dxs18459111694的博客 551

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Pandas之分组与聚合

Pandas之分组与聚合1 什么分组与聚合2 分组API3 星巴克零售店铺数据3.1 数据获取3.2 进行分组聚合 分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况 想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!!看其中的效果: 1 什么分组与聚合 2 分组API DataFrame.groupby(key, as_index=False) key:分组的列数据,可以多个 案例:不同颜色的不同笔的价格数

汪云辉的博客 196

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

第三章10节-Pandas运用之分组聚合(上)

分组聚合——掌握以下知识点 描述性统计方法,例如min、max、median、mean和quantile等 分组运算groupby方法 聚合方法agg、apply和transfrom等 描述性统计方法(两种表达)

weixin_45441862的博客 175

pandas数据分析之分组聚合

在数据分析过程中,经常会需要根据某一列或多列把数据划分为不同的组别,然后再对其进行数据分析。本文将介绍pandas的数据分组及分组后的应用如对数据进行聚合、转换和过滤。

学而思(xiejava的blog) 7620

pandas分组与聚合

Python数据分析:pandas分组与聚合 分组(groupby): 对数据集进行分组,然后对每组进行统计分析 SQL能够对数据进行过滤,分组聚合 pandas能利用groupby进行更加复杂的分组运算 分组运算过程 split(拆分):进行分组的根据 apply(应用):每个分组运行的计算规则 combine(合并):把每个分组的计算结果合并起来 impo...

厚积薄发 3344
上一篇: 第3关:Numpy迭代数组
下一篇: 第2关:Pandas创建透视表和交叉表
-阿呆-
博客等级 码龄6年 712粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-阿呆-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值