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 ...
随机推荐
- MongoDB_数据模型&数据类型(四)
数据模块 传统的关系型数据库需要对表结构进行预先定义和严格的要求,而这样的严格要求,导致了处理数据的过程更加烦琐,甚至降低了执行效率. 在数据量达到一定规模的情况下,传统关系型数据库反应迟钝,想解决这 ...
- vue 在实现关键字远程搜索时出现数据不准确的原因
实现通过输入关键字查询项目, 页面搜索规则框部分 js部分 之前通过在data中定义一个变量,然后在methods中filterFn方法获取当时输入的值去后台请求数据,然后把请求的数据存放在state ...
- Struts2的jsonp接口实例
和以往写struts2程序一样,action方法跳转到一个JSP中,为了配合jsonp的跨域,要在JSP中做一个输出 JSP: <%@ page language="java" ...
- centos7 单用户模式修改root密码
1. 在虚拟机重启客户机后.会出现下面进入界面.按e键 2.按了e键后,会出现下面的界面.此时按↓键.找到linux16 3.将光标移动到UTF-8后面,添加init=/bin/sh,并按 ctrl ...
- SSM实现支付宝支付
学习支付宝支付 一.支付宝测试环境代码测试 1.下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 2.下载解压导入eclipse ...
- c#多进程通讯,今天,它来了
引言 在c#中,可能大多数人针对于多线程之间的通讯,是熟能生巧,对于AsyncLocal 和ThreadLocal以及各个静态类中支持线程之间传递的GetData和SetData方法都是信手拈来,那多 ...
- JAVA自定义连接池原理设计(一)
一,概述 本人认为在开发过程中,需要挑战更高的阶段和更优的代码,虽然在真正开发工作中,代码质量和按时交付项目功能相比总是无足轻重.但是个人认为开发是一条任重而道远的路.现在本人在网上找到一个自定义连接 ...
- Bootstrap实战 - 注册和登录
一.介绍 注册和登录在社交和商业网站中是必不可少的一个部分. 二.知识点 2.1 标签页 2.1.1 基础标签页 标签页的使用与导航栏类似,同时都依赖于基础样式 nav,不同的是附加样式变成了 nav ...
- 使用 fail2ban 保护 frp 服务
背景 我们一般会使用 fail2ban 来保护暴露到公网的提供密码登录的 ssh 连接等. 但使用 frp 穿透后所有的从外网访问都会变成 127.0.0.1 进入的,原本能用 fail2ban 保护 ...
- MySQL之MVCC与幻读
转自 https://blog.csdn.net/qq_31930499/article/details/110393988 如果是快照度,直接采用MVCC,如果是当前读,才会走next-key lo ...