当前位置: 首页 > news >正文

groupby 操作的不同参数

groupby 是数据分析中一个非常强大的操作,可以根据指定的规则将数据拆分成多个组,并对每个组进行聚合、转换或过滤等操作。我们逐个解释这些参数的作用,并通过数值举例进行说明。

参数解释

  1. by:分组依据

    • by 参数指定了分组的依据,可以是:
      • 函数:对于数据的每个索引(或列)应用该函数,生成一个新的值,根据这些值进行分组。
      • 字典Series:可以通过字典或 Series 来指定分组的规则。字典的键是原数据的索引,值是分组的标签。
      • ndarray:可以直接用数组来指定每一行或列所属的分组。
  2. axis:拆分的方向

    • axis 参数指定了操作的方向:
      • axis=0:按行分组(默认)。
      • axis=1:按列分组。
  3. level:多层索引的分组层级

    • level 参数适用于多层索引(MultiIndex)。可以指定按某个层级或多个层级进行分组。
  4. as_index:是否将分组键作为索引

    • 默认值是 True,即返回的结果会把分组的标签作为新的索引。
    • 如果设置为 False,则不会将分组标签作为索引,而是作为普通列显示。
  5. sort:是否对分组进行排序

    • 默认值是 True,表示对每个组的标签进行排序。
    • 如果设置为 False,则分组内的顺序与原数据中的顺序一致,通常会提高性能。
  6. group_keys:是否将组键添加到结果中

    • 默认值是 True,即返回的结果会包含分组键,标明每个组的来源。
    • 如果为 False,则不添加组键。
  7. observed:分类数据的显示方式

    • 当分组是分类数据时,observed=True 会只显示有实际数据的分类值,而不会显示所有的分类值(包括那些没有数据的分类)。
    • 如果设置为 False,则会显示所有可能的分类值。
  8. dropna:是否删除包含 NA 的组

    • 如果为 True,则包含 NA 值的组会被删除。
    • 如果为 False,NA 值会被当作一个组处理。

举例说明

假设我们有以下的 DataFrameSeries 数据:

import pandas as pd# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 2, 3, 4, 5],'B': ['X', 'Y', 'X', 'Y', 'X', 'Y'],'C': [10, 20, 30, 40, 50, 60]
})

输出:
在这里插入图片描述

1. by:按列分组

我们可以按照 B 列的值来对 df 进行分组:

grouped = df.groupby('B')
for name, group in grouped:print(f"Group: {name}")print(group)
print(grouped.sum())

输出:
在这里插入图片描述

2. axis:按列分组

如果你想按列分组而不是按行分组,可以设置 axis=1

grouped = df.groupby(axis=1, level=0)
for name, group in grouped:print(f"Group: {name}")print(group)

这个例子不太常见,通常 groupby 更常用于行分组,但这会按列的方式分组。输出中会提醒不建议这么做:
在这里插入图片描述

3. level:多层索引分组

假设你有一个多层索引的 DataFrame,你可以按指定的层级进行分组。

# 创建一个 MultiIndex DataFrame
index = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('b', 2)],names=['letter', 'number'])
df_multi = pd.DataFrame({'A': [1, 2, 3, 4],'B': [5, 6, 7, 8]
}, index=index)# 按 'letter' 层级进行分组
grouped = df_multi.groupby(level='letter')
for name, group in grouped:print(f"Group: {name}")print(group)

输出:

Group: aA  B
letter number      
a      1      1  52      2  6Group: bA  B
letter number      
b      1      3  72      4  8

更多例子

4. as_index:是否将分组键作为索引

我们可以设置 as_index=False,让分组键不成为新的索引。

grouped = df.groupby('B', as_index=False)
print(grouped.sum())

输出:
在这里插入图片描述

5. sort:是否排序分组

如果 sort=False,则按照原始数据的顺序进行分组,而不是按照分组键的顺序排序:

grouped = df.groupby('B', sort=False)
for name, group in grouped:print(f"Group: {name}")print(group)

输出:

Group: XA  B   C
0  1  X  10
2  2  X  30
4  4  X  50Group: YA  B   C
1  2  Y  20
3  3  Y  40
5  5  Y  60
6. dropna:是否删除包含NA值的组

如果你有一些 NA 值,并设置 dropna=True,它会删除包含 NA 的组:

df_with_na = pd.DataFrame({'A': [1, 2, 3, None, 5],'B': ['X', 'Y', 'X', 'Y', 'X'],'C': [10, 20, 30, 40, None]
})grouped = df_with_na.groupby('B', dropna=True)
print(grouped.sum())

输出:

总结

  • groupby 是根据某些规则将数据拆分为多个组,然后对每个组进行计算。可以根据 byaxislevel 等参数灵活控制分组的方式。
  • 常用的操作包括按列分组、按层级分组、控制排序和是否删除包含 NA 值的组。

相关文章:

groupby 操作的不同参数

groupby 是数据分析中一个非常强大的操作,可以根据指定的规则将数据拆分成多个组,并对每个组进行聚合、转换或过滤等操作。我们逐个解释这些参数的作用,并通过数值举例进行说明。 参数解释 by:分组依据 by 参数指定了分组的依据&…...

组合模式——C++实现

1. 模式简介 组合模式是一种结构型模式。 组合模式又叫做部分整体模式,组合模式用于把一组相似的对象当做一个单一的对象。特别擅长处理树形的数据,对于非树形的数据不好用它。 对于树形的数据,一个典型的例子就是文件系统。在文件系统里大致…...

【开源监控工具】Uptime Kuma:几分钟设置实时监控你的网站性能

文章目录 前言1.关于Uptime Kuma2.安装Docker3.本地部署Uptime Kuma4.使用Uptime Kuma5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 大家好!如果你是网站运维人员或者管理着多个站点,那么今天我要介绍的一款工具绝对…...

MATLAB画柱状图

一、代码 clear; clc; figure(position,[150,100,900,550])%确定图片的位置和大小,[x y width height] %准备数据 Y1[0.53,7.9,8.3;0.52,6.8,9.2;0.52,5.9,8.6;2.8,5.8,7.9;3.9,5.2,7.8;1.8,5.8,8.4]; % withoutNHC X11:6; %画出4组柱状图,宽度1 h1…...

stm32内部flash在线读写操作

stm32内部flash在线读写操作 📍相关开源库文章介绍《STM32 利用FlashDB库实现在线扇区数据管理不丢失》 ✨不同系列,内部flash编程有所区别。例如stm32f1是按照页擦除,半字(16bit)或全字(32bit)数据写入;st…...

SpringCloud源码分析-nacos与eureka

一、高版本为什么优先用nacos 如果用alibaba springcloud,那么就是阿里的技术体系。nacos属于阿里的原生技术栈,所以阿里更偏向于用nacos作为服务发现注册。 二、对比分析 Spring Cloud Alibaba 推荐使用 Nacos 作为服务发现和配置管理的首选组件&…...

DCGAN模型详解

模型背景 在深度学习领域迅速发展的背景下,生成对抗网络(GAN)作为一种革命性的生成模型应运而生。 Ian Goodfellow等人于2014年首次提出GAN概念 ,开创了生成模型的新纪元。这一创新源于对深度学习在图像生成方面潜力的探索,旨在解决非监督学习中的关键问题:如何让机器创造…...

单片机-蜂鸣器实验

#include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit BEEPP2^5; //将 P2.5 管脚定义为 BEEP P2.5默认高电平 void delay_10us(u16 ten_us){ while(ten_us--); } void main() { u16 i2000;//脉冲2000次 while(1) { …...

SQL 分析函数与聚合函数的组合应用

目标:掌握 SQL 中分析函数(窗口函数)与聚合函数的组合使用,通过实际案例实现复杂业务需求,如同比、环比和趋势分析。 1. 分析函数与聚合函数的区别 聚合函数(Aggregate Functions):…...

【项目】基于趋动云平台的Stable Diffusion开发

【项目】基于趋动云平台的Stable Diffusion开发 (一)登录趋动云(二)创建项目:(三)初始化开发环境:(四)运行代码(五)运行模型 &#xf…...

游戏如何检测iOS越狱

不同于安卓的开源生态,iOS一直秉承着安全性更高的闭源生态,系统中的硬件、软件和服务会经过严格审核和测试,来保障安全性与稳定性。 据FairGurd观察,虽然iOS系统具备一定的安全性,但并非没有漏洞,如市面上…...

【AIGC-ChatGPT进阶提示词指令】AI美食助手的设计与实现:Lisp风格系统提示词分析

引言 在人工智能助手的应用领域中,美食烹饪是一个既专业又贴近生活的方向。本文将详细分析一个基于Lisp风格编写的美食助手系统提示词,探讨其结构设计、功能实现以及实际应用效果。 提出你的菜系,为你分析,并生成图片卡片 提示词…...

库伦值自动化功耗测试工具

1. 功能介绍 PlatformPower工具可以自动化测试不同场景的功耗电流,并可导出为excel文件便于测试结果分析查看。测试同时便于后续根据需求拓展其他自动化测试用例。 主要原理:基于文件节点 coulomb_count 实现,计算公式:电流&…...

Javascript数据结构——图Graph

当然,让我们深入探讨一下JavaScript中的图数据结构,并列出一些常见的面试题及其代码示例。 图数据结构详解 图(Graph)是一种非线性的数据结构,由节点(也称为顶点)和连接这些节点的边组成。节点…...

搭建nginx文件服务器

方法一:通过docker方式搭建 1、创建一个nginx配置文件/etc/nginx/nginx.conf user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_typ…...

Ubuntu Server安装谷歌浏览器

背景 服务器上跑爬虫服务器需要安装谷歌浏览器 安装 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb### sudo apt install ./google-chrome-stable_current_amd64.deb...

Vue项目结构推荐(复杂国际化项目与一般项目结构)

Vue项目结构推荐 一、一般项目结构二、复杂国际化项目结构总结/建议 下面结构是基于Vue和TypeScript开发的项目结构下src包下的结构,若只用到vue与js。则去掉typescript部分的包即可。 一、一般项目结构 assets:存放静态资源,如图片、字体、样…...

hive-sql 连续登录五天的用户

with tmp as (select 梁牧泽 as uid, 2023-03-03 as dt union allselect 梁牧泽 as uid, 2023-03-04 as dt union allselect 梁牧泽 as uid, 2023-03-05 as dt union allselect 梁牧泽 as uid, 2023-03-07 as dt union allselect 梁牧泽 as uid, 2023-03-08 as dt union allsel…...

FPGA 4x4矩阵键盘 实现

1原理 FPGA(现场可编程门阵列)4x4矩阵键盘的实现原理主要基于行列扫描法,通过FPGA对键盘的扫描和识别,实现对键盘输入信号的采集和处理。以下是对FPGA 4x4矩阵键盘实现原理的详细解释: 一、矩阵键盘的基本原理 结构:4x4矩阵键盘由4行和4列组成,共16个按键。每个按键位…...

ruoyi开发学习

将若依框架中的若依元素删掉 1.删除主目录中的“若依官网”: 在后端项目中,idea里借助mysql管理工具,找到sys_menu数据表,双击打开,找到4 若依官网,选中点击减号,绿色上箭头刷新,删…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...