Pandas之groupby分组
释义
groupby
用来分组,调用groupby
之后返回pandas.core.groupby.generic.DataFrameGroupBy
,其实就是由一个个格式为(key, 分组后的dataframe)
的元组,组成的列表:
[(key1, dataframe1), (key2, dataframe2), ...]
案例
- 初始化数据,此时这个班级有2个同名的人都叫Jack
df = pd.DataFrame({'stu_name': ['Tom', 'Tony', 'Jack', 'Jack'], 'stu_age': [16, 16, 15, 21]})
print(df)
stu_name stu_age
0 Tom 16
1 Tony 16
2 Jack 15
3 Jack 21
- 根据
stu_name
进行分组,根据上面的释义,则可以遍历列表中的每个元组
groups = df.groupby(['stu_name'])
for v in groups:
print(v)
('Jack', stu_name stu_age
2 Jack 15
3 Jack 21)
('Tom', stu_name stu_age
0 Tom 16)
('Tony', stu_name stu_age
1 Tony 16)
显而易见,每个元素v中,v[0]是groupby的列名,v[1]就是该分组下的dataframe
groupby之后的聚合操作
groupby之后更常见的是使用各种聚合函数,如
- min:最小值
- max:最大值
- sum:总和
- mean:平均值
- median:中位数
- count:计数
- var:方差
- std:标准差
案例
- 初始化数据
df = pd.DataFrame({'stu_name': ['Tom', 'Tony', 'Jack', 'Jack'], 'stu_age': [16, 16, 15, 21], 'stu_score': [99, 1, 1, 0]})
stu_name stu_age stu_score
0 Tom 16 99
1 Tony 16 1
2 Jack 15 1
3 Jack 21 0
- 以名字分组,并对分组后的年龄、成绩求和(例子不具备显示意义,仅做演示)
sum_df = df.groupby(['stu_name']).sum()
print(sum_df)
stu_age stu_score
stu_name
Jack 36 1
Tom 16 99
Tony 16 1
groupby之后直接调用聚合函数,会对所有的列进行聚合操作,但有些时候需要在分组后对多个列进行不同的聚合操作,比如groupby之后,年龄求和,分数求平均值,这时候就需要使用agg函数
groupby之后使用agg函数
- 沿用上面的原始数据,以名字分组,分组后年龄求和,成绩求平均值
agg_df = df.groupby(['stu_name']).agg({'stu_age': 'sum', 'stu_score': 'mean'})
print(agg_df)
stu_age stu_score
stu_name
Jack 36 0.5
Tom 16 99.0
Tony 16 1.0
可以看出如果groupby后要对分组内所有的列都进行一样的操作,那直接调用相关的聚合函数即可,如果是分组后不同的列进行不同的聚合操作,则可以直接采用agg函数。
Pandas之groupby分组的更多相关文章
- pandas获取groupby分组里最大值所在的行,获取第一个等操作
pandas获取groupby分组里最大值所在的行 10/May 2016 python pandas pandas获取groupby分组里最大值所在的行 如下面这个DataFrame,按照Mt分组, ...
- pandas之groupby分组与pivot_table透视表
zhuanzi: https://blog.csdn.net/qq_33689414/article/details/78973267 pandas之groupby分组与pivot_table透视表 ...
- pandas之groupby分组与pivot_table透视
一.groupby 类似excel的数据透视表,一般是按照行进行分组,使用方法如下. df.groupby(by=None, axis=0, level=None, as_index=True, so ...
- pandas聚合和分组运算——GroupBy技术(1)
数据聚合与分组运算——GroupBy技术(1),有需要的朋友可以参考下. pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个 ...
- Pandas | GroupBy 分组
任何分组(groupby)操作都涉及原始对象的以下操作之一: 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下操作: 聚 ...
- pandas应用之分组因子暴露和分位数分析
pandas应用之分组因子暴露和分位数分析 首先感谢原书作者Mes McKinney和batteryhp网友的博文, 俺在此基础上继续探索python的神奇功能. 用A股的实际数据, 以书里的代码为蓝 ...
- pandas中的分组技术
目录 1 分组操作 1.1 按照列进行分组 1.2 按照字典进行分组 1.3 根据函数进行分组 1.4 按照list组合 1.5 按照索引级别进行分组 2 分组运算 2.1 agg 2 ...
- pandas学习(数据分组与分组运算、离散化处理、数据合并)
pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...
- Pandas时间序列和分组聚合
#时间序列import pandas as pd import numpy as np # 生成一段时间范围 ''' 该函数主要用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start.e ...
随机推荐
- css 文本基础 实战 小米官方卡片案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python使用String的Template进行参数动态替换
1.前言: 之前使用string的find(),从指定的param里面查找,是否包含了某个字符,有的话,使用replace进行替换,一个接口的param要替换的参数少的话,使用这种方式,的确可行,如果 ...
- frp + nginx 配置多人共用的http 内网穿透服务
来源:简书 https://www.jianshu.com/p/c9d7527d607b 一. 前言 frp 是一个用Go语言开发的,可用于内网穿透的高性能的反向代理应用,支持 tcp, udp ...
- Linux的六种查找命令
http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 1. find fi ...
- Go的WaitGroup源码分析
WaitGroup 是开发中经常用到的并发控制手段,其源代码在 src/sync/waitgroup.go 文件中,定义了 1 个结构体和 4 个方法: WaitGroup{}:结构体. state( ...
- XCTF(Web_php_unserialize)
拿到题目,是个这, 我们来一波代码审计 1 <?php 2 class Demo { 3 private $file = 'index.php'; 4 public function __con ...
- windos 安装 redis 启动闪退
本来想在linux上安装redis的,后来觉得也没必要,主要是了解使用方法,和原理,在什么平台上安装都是大同小异的 接下来简单描述下碰到的小问题:闪退和启动失败 究其原因就是端口被占用了,但是自己并没 ...
- 《剑指offer》面试题11. 旋转数组的最小数字
问题描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的 ...
- 龙芯 3A4000 安装 Debian stable
2022-01-17 版权声明:原创文章,未经博主允许不得转载 3A5000 开始,龙芯转向 loongarch ,新的架构虽然甩掉了历史包袱,但也需要一段时间来积累生态.在这半年多的时间里, loo ...
- 马哈鱼血缘分析工具部署介绍--win 10
马哈鱼血缘分析工具部署介绍--win 10 随着大数据技术的发展与普及,数据治理和数据质量变得越来越重要,数据血缘分析在业界悄然兴起并得到了广泛流行,马哈鱼是国内少有的一款专业且易用的血缘分析工具.本 ...