Pandas分组聚合_Python数据分析与可视化
Pandas分组聚合
- 分组
- 单列和多列分组
- Series 系列分组
- 通过数据类型或者字典分组
- 获取单个分组
- 对分组进行迭代
- 聚合
- 应用单个聚合函数
- 应用多个聚合函数
- 自定义函数传入 agg() 中
- 对不同的列使用不同的聚合函数
分组聚合的流程主要有三步:
- 分割步骤将 DataFrame 按照指定的键分割成若干组;
- 应用步骤对每个组应用函数,通常是累计、转换或过滤函数;
- 组合步骤将每一组的结果合并成一个输出数组。
分组
通常我们将数据分成多个集合的操作称之为分组,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)
Output: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)
Output:
1A B C D
0 1 2014 a 0.5
2A B C D
1 2 2015 b 0.9
2 2 2014 c 2.1
4 2 2015 e 0.5
3A B C D
3 3 2014 d 1.5
4A B C D
5 4 2017 f 0.1
聚合
聚合函数为每个组返回单个聚合值。当创建了 groupby 对象,就可以对分组数据执行多个聚合操作。比较常用的是通过聚合函数或等效的 agg 方法聚合。
常用的聚合函数:
应用单个聚合函数
对分组后的子集进行数值运算时,不是数值的列会自动过滤
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分组聚合_Python数据分析与可视化
Pandas分组聚合 分组单列和多列分组Series 系列分组通过数据类型或者字典分组获取单个分组对分组进行迭代 聚合应用单个聚合函数应用多个聚合函数自定义函数传入 agg() 中对不同的列使用不同的聚合函数 分组聚合的流程主要有三步: 分割步骤将 DataFrame 按照指定的…...

VMware17虚拟机Linux安装教程(详解附图,带VMware Workstation 17 Pro安装)
一、安装 VMware 附官方下载链接(VM 17 pro):https://download3.vmware.com/software/WKST-1701-WIN/VMware-workstation-full-17.0.1-21139696.exe 打开下载好的VMware Workstation 17 Pro安装包; 点击下一步; 勾选我…...

基于SDN技术构建多平面业务承载网络
随着企业数字化的浪潮席卷各个行业,传统网络架构面临着更为复杂和多样化的挑战。企业正在寻找一种全面适应数字化需求的网络解决方案。随着软件定义网络(SDN)的发展,“多业务SDN一张网”解决方案为企业提供了一种全新的网络架构&a…...

关于卓越服务的调研报告
NetSuite知识会发起的本次调研从2023年11月2日开始,到11月12日结束。16日已向参与调研的朋友邮件回复,感谢您的付出!今朝分享此报告,各位同学参考。 调研问题与反馈总结 问题1:您能想到哪些服务组织能够提供高满意度&…...
ubuntu22.04换源
1、系统信息 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy2、进入 /etc/apt/ 目录: cd /etc/apt/ 3、备份默认源文件 sudo cp sources.list sources.list_bak 4、编…...

03. Python中的语句
1、前言 在《Python基础数据类型》一文中,我们了解了Python中的基础数据类型,今天我们继续了解下Python中的语句和函数。 2、语句 在Python中常用的语句可以大致分为两类:条件语句、循环语句。 2.1、条件语句 条件语句就是我们编码时常见…...

Linux CentOS7 添加网卡
一台主机中安装多块网卡,有许多优势。可以实现多项功能。 为了学习网卡参数的设置,可以为主机添加多块网卡。与添加磁盘一样,要在VMware中设置。利用图形化方式或命令行查看或设置网卡。本文仅初步讨论添加、查看与删除网卡,有关…...
2311rust,到54版本更新
1.50.0稳定版 常量泛型数组索引 继续向稳定的常量泛型迈进,此版本为[T;N]数组,添加了ops::Index和IndexMut的实现. fn second<C>(container: &C) -> &C::Output whereC: std::ops::Index<usize> ?Sized, {&container[1] } fn main() {let arra…...

【linux】补充:高效处理文本的命令学习(tr、uniq、sort、cut)
目录 一、tr——转换、压缩、删除 1、tr -s “分隔符” (指定压缩连续的内容) 2、tr -d 想要删除的东西 编辑 3、tr -t 内容1 内容2 将内容1全部转换为内容2(字符数需要一一对应) 二、cut——快速剪裁命令 三、uniq——去…...

Redis篇---第七篇
系列文章目录 文章目录 系列文章目录前言一、是否使用过 Redis Cluster 集群,集群的原理是什么?二、 Redis Cluster 集群方案什么情况下会导致整个集群不可用?三、Redis 集群架构模式有哪几种?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…...

Shell脚本:Linux Shell脚本学习指南(第一部分Shell基础)一
你好,欢迎来到「Linux Shell脚本」学习专题,你将享受到免费的 Shell 编程资料,以及很棒的浏览体验。 这套 Shell 脚本学习指南针对初学者编写,它通俗易懂,深入浅出,不仅讲解了基本知识,还深入底…...

长短期记忆(LSTM)与RNN的比较:突破性的序列训练技术
长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。 Why LSTM提出的动机是为了解…...

Swift 如何打造兼容新老系统的字符串分割(split)方法
0. 概览 在 Swift 的开发中,我们经常要与字符串打交道。其中一个常见的操作就是用特定的“分隔符”来分割字符串,这里分隔符可能不仅仅是字符,而是多字符组成的字符串。 从 iOS 16 开始, 新增了对应的方法来专注此事。不过&am…...

JVM面试必备
目录 JVM三大问题 一、JVM内存区域划分 编辑 二、JVM类加载机制 双亲委派模型(常考) 类加载的格式,类卸载 三、垃圾回收(GC) 具体垃圾回收GC步骤 1.判定对象是否为垃圾 方案1:引用计数 方案2:可达性分析 2.释放对象的…...

战神传奇【我本沉默精修版】win服务端+双端+充值后台+架设教程
搭建资源下载:战神传奇【我本沉默精修版】win服务端双端充值后台架设教程-海盗空间...

安卓手机投屏到电视,跨品牌、跨地域同样可以实现!
在手机网页上看到的视频,也可以投屏到电视上看! 长时间使用手机,难免脖子会酸。这时候,如果你将手机屏幕投屏到大电视屏幕,可以减缓脖子的压力,而且大屏的视觉体验更爽。 假设你有一台安卓手机,…...
python变量名解析总结
1 python变量名解析总结 点号和无点号变量名,用不同的处理方式。 (1) 无点号的变量名,比如X,使用的是作用域。 (2) 有点号的变量名,比如obj.X,使用对象的命名空间。 …...

端口号大揭秘:网络世界的“门牌号”有多牛?
大家好,今天我们来聊一聊网络中的端口号。如果你以为端口号只是冷冰冰的数字,那你就大错特错了。端口号,这些看似枯燥的数字背后,隐藏着一个个生动的故事。 目录 大家好,今天我们来聊一聊网络中的端口号。如果你以为端…...

vue解除数据双向绑定
let obj JSON.parse(JSON.stringify(data));例如,table列表中,点击编辑时,可对val进行如上操作来解除双向绑定...

组件插槽,生命周期,轮播图组件的封装,自定义指令的封装等详解以及axios的卖座案例
3.组件插槽 3-1组件插槽 注意 插槽内容可以访问到父组件的数据作用域,因为插槽内容本身就是在父组件模版中定义的 插槽内容无法访问子组件的数据.vue模版中的表达式只能访问其定义时所处的作用域,这和JavaScript的词法作用域是一致的,换言之: 父组件模版的表达式只能访问父组…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...