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 ...
随机推荐
- python3实现阿里云发短信
一.准备工作 1.安装阿里云SDK pip install aliyun-python-sdk-core-v3 2.新建签名并等待审核通过 审核通过后,记下**[签名名称](参数1)**,程序中会用到 ...
- centOS8安装java14
一.去官网下载相应的linux版本 二.通过xftp把下载下的文件传输到linux下指定目录 三.使用命令 rpm -ivh 安装(tar.gz 使用 tar zxvf 命令) 四.配置环境变量 ...
- Go语言系列之标准库os
os包提供了操作系统的系列函数,这些接口不依赖平台.设计为Unix风格的,错误处理是go风格的:调用失败会返回错误值而非错误码.通常错误值里包含更多信息. os包的接口在所有操作系统中都是一致的.非公 ...
- vue3.0+vite+ts项目搭建-postcss-pxtorem 实现移动自适应(五)
这里不考虑大屏,所以不做amfe-flexible的配置 首先是安装依赖 yarn add postcss-loader postcss-pxtorem -D yarn add autoprefixe ...
- iview 按需引入解决加载慢的问题
如果出现加载2s以上的情况请先查看服务器是否对大文件进行过压缩优化处理. 按照官方文档把iview引入到vue的项目中,全部引入的时候没问题.当按官方文档显示的按需加载是借助插件babel-plugi ...
- 2022年form表单中input控件最详细总结
语法 <input type="" name="" id="" value="" placeholder=&quo ...
- 在字节,A/B 实验是这么做的!
主要为大家介绍了为什么要做 A/B 测试.火山引擎的 A/B 测试系统架构及字节跳动内部 A/B 测试的最佳实践. 为什么要做 A/B 测试 首先我们看一个案例. 字节跳动有一款中视频产品叫西瓜视频, ...
- 《剑指offer》面试题39. 数组中出现次数超过一半的数字
问题描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, ...
- 《剑指offer》面试题56 - I. 数组中数字出现的次数
问题描述 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 1: 输入:nums = [4,1 ...
- MRCTF2020 套娃
MRCTF2020套娃 打开网页查看源代码 关于$_SERVER['QUERY_STRING']取值,例如: http://localhost/aaa/?p=222 $_SERVER['QUERY_S ...