Pandas分组与排序

2023-11-05

Grouping and Sorting


经常需要将数据根据某个字段划分为不同的组(group)进行分析,然后对组里的数据进行特定的操作。pandas的**groupby()**操作便是实现这一功能。
groupby的过程就是将原有的DataFrame按照groupby的字段,划分为若干个分组DataFrame,被分为多少个组就有多少个分组DataFrame。所以说,在groupby之后的一系列操作(如agg、apply等),均是基于子DataFrame的操作。

分组

import pandas as pd
import math
data = pd.DataFrame({"country":["Russian","China","America","Brazil","China","Japan","America"],"plane":[1170, 960, 980,800,math.nan,300,3244],"Population":[1,13,math.nan,2,14,3,5]})
data
"""
country	plane	Population
0	Russian	1170.0	1.0
1	China	960.0	13.0
2	America	980.0	NaN
3	Brazil	800.0	2.0
4	China	NaN	14.0
5	Japan	300.0	3.0
6	America	3244.0	5.0
"""

group = data.groupby("country")
list(group)
"""
[('America',
     country   plane  Population
  2  America   980.0         NaN
  6  America  3244.0         5.0),
 ('Brazil',
    country  plane  Population
  3  Brazil  800.0         2.0),
 ('China',
    country  plane  Population
  1   China  960.0        13.0
  4   China    NaN        14.0),
 ('Japan',
    country  plane  Population
  5   Japan  300.0         3.0),
 ('Russian',
     country   plane  Population
  0  Russian  1170.0         1.0)]
"""
## 使用groupby后可以在子dataframe上应用 count,mean,unique等统计方法
data.groupby("country").plane.count()
# 以 country进行分组,然后计算每个country的plane
# output
"""
country
America    2
Brazil     1
China      1
Japan      1
Russian    1
Name: plane, dtype: int64
"""

agg()

agg是groupby()用得最多的一种方法。agg()可以同时在一个dataframe上应用多个不同的函数。

# 计算plane的最大值和最小值
data.groupby("country").plane.agg([min,max])

# output
"""
min	max
country		
America	980.0	3244.0
Brazil	800.0	800.0
China	960.0	960.0
Japan	300.0	300.0
Russian	1170.0	1170.0
"""

排序

groupby()的方法的返回结果,其行的排列顺序是以index value来进行排序的。我们可以使用sort_values"方法对其顺序进行自定义
sort_index方法 以 index value大小进行排列

country_min = data.groupby("country").plane.agg([min])
print(country_min)
#output
"""
            min
country        
America   980.0
Brazil    800.0
China     960.0
Japan     300.0
Russian  1170.0
"""

country_min.sort_values(by="min",ascending=False)
"""
min
country	
Russian	1170.0
America	980.0
China	960.0
Brazil	800.0
Japan	300.0
"""
country_min.sort_index(ascending=False)
# output
"""
	min
country	
Russian	1170.0
Japan	300.0
China	960.0
Brazil	800.0
America	980.0
"""

参考:
(1)https://www.kaggle.com/learn/pandas
(2)https://zhuanlan.zhihu.com/p/101284491

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas分组与排序 的相关文章

  • Unity中如何让物体和相机一起动

    Unity中开发VR或者AR应用中我们想要物体和相机跟随着进行移动 我们需要先获得相机的参数 其次我们需要修改物体的参数使得其跟随移动 public class TestCubeStability MonoBehaviour public
  • javascript 优雅实现时间格式化

    有的时候 我们需要一定格式的 时间 比如 2017 05 12 08 48 这样的格式 上代码先 时间格式化 第一种 function formatDate time var date new Date time var year date

随机推荐

  • 在 Silverlight 中管理动态内容交付,第 1 部分

    本文示例源代码或素材下载 目录 Silverlight 应用程序的大小 动态生成的 XAML 动态生成的 XAP 请求内容 缓存下载的内容 下载工具 下载仅含 XAML 的数据 使用 XAP 程序包 处理 XAP 内容 总结 任何使用富 I
  • 双向可控硅控制220v通断电路_什么是双向可控硅,它在交流调压电路中有哪些应用...

    一 导读 目前交流调压多采用双向可控硅 它具有体积小 重量轻 效率高和使用方便等优点 对提高生产效率和降低成本等都有显著效果 但它也具有过载和抗干扰能力差 且在控制大电感负载时会干扰电网和自干扰等缺点 下面来谈谈可控硅在其使用中如何避免上述
  • mysql join底层实现

    两个表join底层实现 5 5 版本之前 MySQL本身只支持一种表间关联方式 就是嵌套循环 Nested Loop Join 如果关联表的数据量很大 则join关联的执行时间会非常长 在5 5以后的版本中 MySQL通过引入BNLJ算法来
  • centos7自定义ssh端口号

    文章目录 一 背景介绍 二 步骤 1 查看本机系统属性 2 查看是否已安装ssh服务 3 修改默认端口 4 重启sshd服务 5 关于防火墙 6 验证登录流程 一 背景介绍 SSH 为 Secure Shell 由 IETF 的网络工作小组
  • 自动表单数据封装到javaBean中

    页面表单数据的自动封装到javaBean中 先定义一个Bean类 package com test public class Bean private String name private Integer sex public Strin
  • 第一章 微服务必备核⼼-快速⼊⻔SpringBoot2.X

    1 SpringBoot2 X和SpringCloud微服务的关系 SpringBoot 是一个快速开发框架 通过用MAVEN依赖的继承方式 帮助我们快速整合第三方常用框架 完全采用注解化 使用注解方式启动SpringMVC 简化XML配置
  • vue3 setup + ts + vite 项目问题解决:Cannot find module ... or its corresponding type declarations.(ts2307)

    昨日我尝试使用vue3 setup ts vite进行vue3项目的实现 遇到此问题 Cannot find module or its corresponding type declarations ts2307 文件报错类型以及ts官方
  • 转载:CCNP学习考试心得

    CCNP学习考试心得 当计算机屏幕上显示 Congralation时 我不禁长出一口气 心中想 终于考完了 我所说的终于考完是指 我终于完成了CCNP考试 四个月的学习 对于某些人来说可能太长了 但是要真正掌握ccnp的内容我感觉四个月还只
  • 手把手教你使用python发送邮件

    前言 发送电子邮件是个很常见的开发需求 平时如果有什么重要的信息怕错过 就可以发个邮件到邮箱来提醒自己 使用 Python 脚本发送邮件并不复杂 不过由于各家邮件的发送机制和安全策略不同 常常会因为一些配置问题造成发送失败 今天我们来举例讲
  • 混合模型简介与高斯混合模型

    高斯混合模型 混合模型概述 In statistics a mixture model is a probabilistic model for representing the presence of subpopulations wit
  • C++primer 阅读随记

    目 录 一 C 基础 1 变量和基本类型 2 字符串 向量和数组 3 表达式 4 语句 5 函数 6 类 二 C 标准库 1 IO库 2 顺序容器 3 泛型算法 4 关联容器 5 动态内存 三 类设计者的工具 1 拷贝控制 2 重载运算与类
  • 实施Microsoft Dynamics 365 CE-5. 配置Dynamics 365 CE组织,包括配置不同的Dynamics 365 CE设置。

    本章将帮助您了解Dynamics 365 CE中为个人和管理员提供的Dynamics 365配置选项 您将了解哪些选项可以为单个用户配置 哪些是管理员用户可以完成的配置 您将了解业务管理和服务管理设置下提供的不同配置选项 您还将了解Dyna
  • RobotFramework之高级API

    一 窗口跳转 跳转页面的时候需要获取句柄 Get Window Handles 获取窗口的句柄 Select Window By Handle 切换到新窗口 但是在seleniumLibrary中只有Select window 所以我们进入
  • Top K问题的两种解决思路

    Top K问题在数据分析中非常普遍的一个问题 在面试中也经常被问到 比如 从20亿个数字的文本中 找出最大的前100个 解决Top K问题有两种思路 最直观 小顶堆 大顶堆 gt 最小100个数 较高效 Quick Select算法 Lee
  • 自适应表格中input框输入文字布局被打乱

    我今天在写一个新增用户表单的时候 发现我只要输入文字 input框的高度就会改变 导致布局被打乱 这是正常排列好的样式 这是我输入中文后的样子 后来我发现输入中文后 input的高度被撑开了 我一开始没有给盒子设置固定的高度以及行高 设置完
  • C 语言基础-什么是常量、变量?

    C 语言基础 常量和变量 常量 只读 常量是只读的固定值 在程序运行期间不会改变 不能被程序修改的量 可以是任意类型 定义常量的方式有两种 使用 define 宏定义 使用 const 关键字 常量大体分为 直接常量 字面常量 符号常量 d
  • python练习61:打印出杨辉三角形,包含二维列表的应用

    打印出杨辉三角形 要求打印出10行如下图 yanghui for i in range 10 yanghui append 构造二维列表 for j in range i 1 if j 0 or j i yanghui i append 1
  • CCF-CSP真题-2022-06-1归一化处理讲解

    题目传送门 这是CCF CSP2022 06的第一题 相比较还是比较简单 较难理解的是方差 每个样本值与全体样本值的平均数之差的平方值的平均数方差 数学计算公式是这样的 然而 用代码来写要简洁得多 这里采用暴力的复杂度算法 for int
  • MySQL utf8mb4 字符集,用于存储emoji表情

    最近在做微信相关的项目 其中MySQL 要存储emoji表情 因此发现我们常用的utf8 字符集根本无法存储表情 网上有不少替代方案 本人还是采用了修改MySQL字符集的方案简单快捷 首先将我们数据库默认字符集由utf8 更改为utf8mb
  • Pandas分组与排序

    Grouping and Sorting 分组 agg 排序 经常需要将数据根据某个字段划分为不同的组 group 进行分析 然后对组里的数据进行特定的操作 pandas的 groupby 操作便是实现这一功能 groupby的过程就是将原