pandas中 groupby分组详解 1

引言

  • 在一个使用 pandas 做数据分析的项目过程中,再次深刻理解了一下 pandas 中使用 groupby 进行分组的一些细节问题,以及对想要做的操作如何实现,在此记录;
    • 问题 1:groupby 分组查看分组结果,以及重设分组列列名
    • 问题 2:如何获取分组后的值和分组条件的值(比如有一周内用户访问页面的记录,我们需要拿到用户周几最活跃呢?最活跃的时间段是什么时候?判断最活跃的 count 次数如何获取呢?)
    • 注:中间包含一些中间函数的用法,仅供参考;

问题 1:

延伸 1:关于count 和 size 的区别

  • 一般来说分组后结果都会接一个聚合函数,如 count,sum,agg 等,但是意外发现了还有 size,特此记录 size 和 count 的区别
  • 总结:size计数时包含NaN值,而count不包含NaN值
    image.png
    image.png
延伸 1.1 reset_index()函数和 as_index 参数的作用
  • 个人理解groupby 内参数 as_index 1可以直接把结果转换成 DF,2就是分组后的重命名(使用参数重命名可以看测试结果,个人感觉不如 reset_index 看着直接)
    • 对一个字段分组,剩余俩字段 count 结果也不同(这个是个人的一个认知错误一直以为结果是不参与分组的字段分组后的值是相同的,这只是工作时候使用数据的问题)
      image.png
      image.png

延伸 2:如何查看 groupby 分组结果

  • pandas 中 groupby 后结果不是 df 无法直接查看,可以通过循环遍历打印,groups,get_group来查看,如下所示:
    • 可以看出返回的内容是由若干个二元组构成的,元组第一位是分组名,第二位是组内成员构成的DF。而元组之间并不是由python通常的元组、列表或字典连接的,这也是groupby的返回类型难以直接查看的原因
      image.png
      image.png
    • 其实想看到分组结果直接接一个 size 或者 count 函数即可

1 重设分组列名

  • reset_index()函数的用法:重设分组后列名
    • 比如上面分组,三个字段使用前两个字段分组,最后分组结果使用的是第三个字段的名称,如何修改呢?
      image.png
    • 加入分组后不选择一列会怎样呢?(当然是报错,因为函数不知道你要对分组后的哪个字段重命名)
      image.png
df = pd.DataFrame({"Name":["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"],"City":["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"],"Val":[4,3,3,np.nan,np.nan,4]})

问题 2

  • 如何获取到周几最活跃?(此处还有个知识点就是如何把日期转换为周几,下篇文章写时间相关的转化的时候再介绍)
    image.png
    • 但是如何根据 count 值拿到最活跃的是周几呢?此处需要换个思维想一想 first函数
      image.png
  • 同理,获取最活跃的时间段可以取 top 值然后转换成列表(可以结合 1 再进行 2,也可以去一下重)
    image.png
  • 以上数据均为个人阐述用法编造,理解意思即可
df = pd.DataFrame({"Name":["Alice", "Alice", "Mallory", "Mallory", "Alice" , "Mallory","Alice", "Mallory"],"weekend":["Mon", "Mon", "Sat", "Sat", "Mon", "Mon","Sat","Sat"],"hour":[9,9,7,7,9,7,6,6]})

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

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

相关文章

【C++】Google Test(gtest)单元测试

文章目录 Google Test(gtest)单元测试使用示例更多用法测试夹具 Google Test(gtest)单元测试 单元测试是一种软件测试方法,它旨在将应用程序的各个部分(通常是方法或函数)分离出来并独立测试&a…

Firewall防火墙

Linux包过滤防火墙 netfilter 称为Linux防火墙的“内核态”位于Linux内核 中的包过滤功能体系iptables “用户态”位于/sbin/iptables,包过滤的工作层次 主要是网络层,针对IP数据包体现在对包内的IP地址、端口等信息的处理上 iptables的表、链结构 规…

NodeJs的安装与环境变量配置

Node.js的环境变量配置主要涉及设置Node.js的安装路径、npm(Node Package Manager)的全局模块安装路径和缓存路径,以及可能需要的国内镜像源配置。以下是详细的配置步骤: 一、安装Node.js 下载Node.js安装包: 访问Nod…

Android(2) : 创建手机模拟器

1.进入device manager, 选择添加 2.配置选择 名称: Pixel8 Pro 大小: 6.7英寸 分辨率: 1344x2992px Density: xxhdpi 3.下载镜像 4.编辑虚拟机内存 文件如下 C:\Users\admin\AppData\Roaming\Google\AndroidStudio2024.1\studio64.exe.vmoptions 我的电脑是32G内存, …

直播预告|飞思实验室暑期公益培训7月10日正式开启,报名从速!

01 培训背景 很荣幸地向大家宣布:卓翼飞思实验室将于7月10日正式开启为期两个月的暑期公益培训!本次培训为线上直播,由中南大学计算机学院特聘副教授,RflySim平台总研发负责人戴训华副教授主讲。 培训将基于“RflySim—智能无人…

编程上下文Context及其实现原理

编程上下文Context及其实现原理 author:shengfq date:2024-07-06 title:编程上下文Context及其实现原理 category:编程思想1.编程中的上下文Context是指什么? 在编程和软件工程领域,“上下文”(Context)是一个多义词,其含义可以…

1.Python学习笔记

一、环境配置 1.Python解释器 把程序员用编程语言编写的程序,翻译成计算机可以执行的机器语言 安装: 双击Python3.7.0-选择自定义安装【Customize installation】-勾选配置环境变量 如果没有勾选配置环境变量,输入python就会提示找不到命令…

Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable

文章目录 一,创建Module报错二,原因分析三,解决方案1,点击上图的加号,把JDK8添加进来即可2,点击左侧[Project],直接设置SDK为JDK8 四,配置检查与验证 一,创建Module报错 …

创维汽车开展年中总结会:创新创造·勇开拓 智慧经营·攀高峰

2024年7月3日,回顾上半年的工作成果,总结经验教训,明确下半年的发展方向和重点任务,创维汽车于山西省晋中市榆次区山西联合创维体验中心开展年中总结会。 创维集团、创维汽车创始人黄宏生;开沃集团联合创始人、首席执…

分析一下多方联合计算中的数据泄露场景

假设某一天,某地社保局接到了教育局的求助, 希望提供社保表,和教育局自身的毕业生信息表 进行联合分析, 以得到2024年各学校的毕业生实力。 这时候社保局犯了难,两会会议里刚提过隐私保护相关的议题: 隐私…

2024.7.6 刷题总结

2024.7.6 **每日一题** 3101.交替子数组计数,这道题刚开始看到时想用双循环遍历数组以及位运算来判断是否为交替子数组,但是数据范围不允许,所以只能考虑一个循环,先考虑数学推导看看规律。经过数学分析发现,只需要枚…

【C++干货基地】C++模板深度解析:进阶技巧与高级特性掌握(按需实例化、全特化与偏特化)文末送书

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…

动态路由--RIP配置(思科cisco)

一、简介 RIP协议(Routing Information Protocol,路由信息协议)是一种基于距离矢量的动态路由选择协议。 在RIP协议中,如果路由器A和网络B直接相连,那么路由器A到网络B的距离被定义为1跳。若从路由器A出发到达网络B需要…

Vben:表格的表头和表格的内容对不齐,以及解决方法

文章目录 一、问题描述二、解决方法 一、问题描述 基于Vue-Vbne-admin框架进行前端开发的时候,调用表格useTable函数实现表格之后,发现表格的表头和表格的内容对不齐。如下图所示。针对这种情况,本文记录了解决方法。 调用的模块如下&#x…

带你一步步搭建Web自动化测试框架

测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程。另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人。本章和下一张…

优化LabVIEW代码以提高软件性能

优化LabVIEW代码对于提高软件性能、减少执行时间和资源消耗至关重要。以下是一些具体的策略和方法,可以帮助LabVIEW程序员优化代码: 1. 代码结构和模块化 使用子VI:将重复使用的代码段封装成子VI,提高代码的可读性和可维护性。 避…

使用Vue CLI方式创建Vue3.0应用程序

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。新版本的 Vue CLI 的包名由原来的 vue-cli 改成了 vue/cli。 在开发大型项目时,需要考虑项目的组织结构、项目构建和部署等问题。如果手动完成这些配置工作,工作效率会非常低。为此,Vue.…

第8篇 智能合约的商业应用场景解析

一、引言 在区块链技术的众多应用中,智能合约无疑是其中的一颗璀璨明珠。它通过自动化、去中心化和不可篡改的特性,为商业世界带来了革命性的变革。今天,我们将一同探索智能合约在十个不同行业中的实际应用,感受其独特的魅力。 二、智能合约的商业应用案例 供应链管理:…

刷题之买股票的最佳时机(leetcode)

买股票的最佳时机 动态规划入门题。 最简单的模拟式解法&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {//也可以换一种思路&#xff0c;因为只交易一次&#xff0c;那么找出股票最便宜的时候买入&#xff0c;最贵的时候卖出&#xff…

c与c++的内存管理

给出内存四个分区名字&#xff1a;栈区、堆区、全局区&#xff08;俗话也叫静态变量区&#xff09;、代码区&#xff08;也叫代码段&#xff09;&#xff08;代码段又分很多种&#xff0c;比如常量区&#xff09; 当然也会看到别的定义如&#xff1a; 两者都正确&#xff0c;记…