政安晨:快速学会~机器学习的Pandas数据技能(五)(分组和排序)

news2024/11/14 15:25:25

提升您的洞察力水平,数据集越复杂,这一点就越重要。


概述

映射允许我们逐个值地转换DataFrame或Series中的数据,针对整个列进行操作。然而,通常我们希望对数据进行分组,然后对所在组进行特定操作。

正如你将学到的,我们可以通过groupby()操作来实现这一点。我们还将涵盖一些额外的主题,例如更复杂的索引DataFrame的方式,以及如何对数据进行排序。

群组分析

咱们接着前几篇的文章继续处理数据,数据文件从我这篇文章中下载:

政安晨:快速学会~机器学习的Pandas数据技能(三)(重命名与合并)icon-default.png?t=N7T8https://blog.csdn.net/snowdenkeke/article/details/136081348到目前为止,我们一直在大量使用的一个函数是value_counts()函数。我们可以通过以下方式复制value_counts()函数的功能:

import pandas as pd
reviews = pd.read_csv("./winemag-data-130k-v2.csv", index_col=0)
pd.set_option("display.max_rows", 5)

#查看表格
reviews

reviews.groupby('points').points.count()

groupby()创建了一个评论的分组,为给定的葡萄酒分配了相同的点数值。然后,对于这些分组中的每一个,我们提取了points()列,并计算它出现的次数。value_counts()只是这个groupby()操作的一个快捷方式。

我们可以使用之前使用过的任何摘要函数来处理这些数据。例如,要获取每个点数值类别中最便宜的葡萄酒,我们可以执行以下操作:

reviews.groupby('points').price.min()

您可以将我们生成的每个组视为DataFrame的一个切片,其中仅包含与条件匹配的数据。我们可以直接使用apply()方法访问这个DataFrame,并可以以任何我们认为合适的方式操纵数据。例如,以下是选择数据集中每个酒庄的第一个被评价葡萄酒的名称的一种方法:

reviews.groupby('winery').apply(lambda df: df.title.iloc[0])

更加细致的控制,你还可以按多列进行分组。举个例子,这里是我们如何按国家和省份挑选出最好的葡萄酒:

reviews.groupby(['country', 'province']).apply(lambda df: df.loc[df.points.idxmax()])

另外一个值得一提的groupby()方法是agg(),它允许你同时对DataFrame运行多个不同的函数。例如,我们可以这样生成数据集的简单统计摘要:

reviews.groupby(['country']).price.agg([len, min, max])

使用groupby()方法的有效用法将使您能够在数据集中做许多非常强大的事情。

多级索引

迄今为止,在我们看到的所有示例中,我们一直在使用具有单标签索引的DataFrame或Series对象。但是,groupby()稍有不同,它根据我们运行的操作不同,有时会生成所谓的多级索引。

多级索引与常规索引不同,它具有多个级别。例如:

countries_reviewed = reviews.groupby(['country', 'province']).description.agg([len])
countries_reviewed

mi = countries_reviewed.index
type(mi)

多层索引具有几种处理层次结构的方法,这些方法在单级索引中是不存在的。它们还需要两个级别的标签来检索值。处理多层索引输出是对Pandas新用户常见的"陷阱"。

在Pandas文档的MultiIndex / Advanced Selection部分详细介绍了多层索引的使用案例以及使用它们的说明。

然而,通常你会经常使用的多层索引方法是将其转换回常规索引的reset_index()方法:

countries_reviewed.reset_index()

分类排序

再次查看countries_reviewed,我们可以看到分组返回的数据是按照索引顺序而非值顺序排序的。也就是说,当输出groupby的结果时,行的顺序取决于索引中的值,而不是数据中的值。

为了按照我们期望的顺序获取数据,我们可以自己进行排序。sort_values()方法非常方便用于此操作。

countries_reviewed = countries_reviewed.reset_index()
countries_reviewed.sort_values(by='len')

sort_values()默认按升序排序,其中较小的值先出现。然而,大多数情况下,我们希望进行降序排序,即较高的数字先出现。这样可以这样做:

countries_reviewed.sort_values(by='len', ascending=False)

要按索引值排序,请使用sort_index()方法。该方法具有相同的参数和默认排序顺序:

countries_reviewed.sort_index()

为了按索引值排序,可以使用sort_index()方法。这个方法具有相同的参数和默认排序顺序:

countries_reviewed.sort_index()

最后,要知道你可以同时按多列进行排序:

countries_reviewed.sort_values(by=['country', 'len'])

小伙伴们有空可以尝试一下,其实把数据降维思考,您会有不一样的认识。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1441240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java stream 流的基本使用

Java stream 的基本使用 package com.zhong.streamdemo.usestreamdemo;import jdk.jfr.DataAmount; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.ArrayList; import java.util.Comparator; import java.util.Li…

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理(尚未Checkpoint) 如下图,Topic 有两个分区,并行度也为 2,根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据,该Topic 有 2 个 Pa…

js手写Promise(下)

目录 resolve与reject的调用时机封装优化 回调返回PromiseisPromise手动调用then 微队列catchresolverejectall传入的序列为空传入的值非Promise race完整的Promise代码 如果没有看过上半部分的铁铁可以看看这篇文章 js手写Promise(上) resolve与reject…

FastAdmin西陆招聘SAAS

应用介绍 基于ThinkPHP和微信小程序开发的招聘平台系统,包含微信小程序求职者端、微信小程序企业招聘端、PC企业招聘端、PC管理平台端 招聘系统是一种利用计算机和网络技术建立起来的具有完整的信息管理、分析和查询功能的人才招聘平台。它主要用于企业、单位、机构…

Python爬虫http基本原理#2

Python爬虫逆向系列(更新中):http://t.csdnimg.cn/5gvI3 HTTP 基本原理 在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一…

pytorch入门第一天

今天作为入门pytorch的第一天。打算记录每天学习pytorch的一些理解和笔记,以用来后面回顾。当然如果能帮到和我一样的初学者,那也是不胜荣幸。作为一名初学者,难免有些地方会现错误,欢迎各位大佬指出 预备知识 这里主要介绍pyto…

从0开始学Docker ---Docker安装教程

Docker安装教程 本安装教程参考Docker官方文档,地址如下: https://docs.docker.com/engine/install/centos/ 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest…

MySQL篇之索引

一、定义 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B树),这些数据结构以某种方式引用(指向)数据&#xff0…

Python爬虫requests库详解#3

使用 requests 上一节中,我们了解了 urllib 的基本用法,但是其中确实有不方便的地方,比如处理网页验证和 Cookies 时,需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作,就有了更为强大的库 requests&…

Cisco firepower2100系列使用FDM管理FTD

Cisco firepower2100系列使用FDM管理FTD 啥是FDM Firepower Device Manager 当思科Firepower系列运行的FTD镜像时,可以通过2种方式进行管理 第1种方式: FMC (Firepower management Center) 可以进行统一管理,一台FMC可以管理多个FTD&…

深度学习入门笔记(八)可以不断思考的模型:RNN与LSTM

8.1 循环神经网络RNN 之前学到的 CNN 和全连接,模型的输入数据之间是没有关联的,比如图像分类,每次输入的图片与图片之间就没有任何关系,上一张图片的内容不会影响到下一张图片的结果。但在自然语言处理领域,这就成了…

【vue3学习笔记】shallowReactive与shallowRef;readOnly与shallowReadOnly;toRaw与markRaw

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 课程 P158节 《shallowReactive与shallowRef》笔记: reactive()与shallowReactive():reactive()处理后的数据是响应式的,对象内嵌套的深层结构全部是响应式的。shallowReactive()处理后的数据…

蓝桥杯---分小组

9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 我们标记运动员为 A,B,C .... I 下面的程序列出了所有的分组方法。 该程序的正常输出为:

Guava RateLimiter单机实战指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Guava RateLimiter单机实战指南 前言maven坐标引入业务实现重要参数和方法关于warmupPeriod实战 前言 想象一下你是一位大厨,正在烹饪美味佳肴。突然之间,前来就餐的人潮如潮水…

C语言辨析——声明int a[3][6], a[0][9]越界吗?

本文来源&#xff1a;声明int a[3][6], a[0][9]越界吗&#xff1f; 1. 问题 看下面的程序&#xff1a; #include <stdio.h> int main(void) {int a[3][6];for(int i0; i<3; i) {for(int j0; j<6; j){a[i][j] i * 6 j;}}printf("%d\n",a[0][9]);retu…

Uniapp(uni-app)学习与快速上手教程

Uniapp&#xff08;uni-app&#xff09;学习与快速上手教程 1. 简介 Uniapp是一个跨平台的前端框架&#xff0c;允许您使用Vue.js语法开发小程序、H5、安卓和iOS应用。下面是快速上手的步骤。 2. 创建项目 2.1 可视化界面创建 1、打开 HBuilderX&#xff0c;这是一款专为uni…

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…

计算机网络基本知识(二)

文章目录 概要分层为什么分层怎么分层&#xff1f;1.实体2.协议3.服务 分层基本原则正式认识分层详细例子解释 总结 概要 分层知识&#xff1a;概念理解 分层 为什么分层 大致以上五点 为了解决上面的问题&#xff08;复杂&#xff09; 大问题划分为小问题 怎么分层&#…

Lua 教程

Lua 教程 (今天又又又开新坑啦) Lua 教程 手册简介 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放。 手册说明 Lua是什么? Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of Rio de …

RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析

一、案例介绍&#xff1a; A公司共有13个开在不同银行的帐户&#xff0c;分别用于不同的业务分部或地区分部收付款。公司总部为了核算每月的收支情况&#xff0c;查看银行在哪个月交易量频繁&#xff0c;需要每月汇总各个银行的帐户借方和贷方金额&#xff0c;并将其净收支&am…