Pandas GroupBy对象 索引与迭代方法
如下所示:
import pandas as pd df = pd.DataFrame({'性别' : ['男', '女', '男', '女', '男', '女', '男', '男'], '成绩' : ['优秀', '优秀', '及格', '差', '及格', '及格', '优秀', '差'], '年龄' : [15,14,15,12,13,14,15,16]}) GroupBy=df.groupby("性别")
GroupBy.iter()
GroupBy对象是一个迭代对象,每次迭代结果是一个元组,元组的第一个元素是该组的名称(就是groupby的列的元素名称),第二个元素是该组的具体信息,是一个数据框,索引是以前的数据框的总索引
for name,group in GroupBy: print(name) print(group) 女 年龄 性别 成绩 1 14 女 优秀 3 12 女 差 5 14 女 及格 男 年龄 性别 成绩 0 15 男 优秀 2 15 男 及格 4 13 男 及格 6 15 男 优秀 7 16 男 差
GroupBy.groups
显示分组的组名,以及所对应的索引
print(GroupBy.groups) {'女': Int64Index([1, 3, 5], dtype='int64'), '男': Int64Index([0, 2, 4, 6, 7], dtype='int64')}
GroupBy.indices
类似于GroupBy.groups
print(GroupBy.indices) {'女': array([1, 3, 5], dtype=int64), '男': array([0, 2, 4, 6, 7], dtype=int64)}
GroupBy.get_group(name[, obj])
获得某一个分组的具体信息
In [2]: GroupBy.get_group("男") Out[2]: 年龄 性别 成绩 0 15 男 优秀 2 15 男 及格 4 13 男 及格 6 15 男 优秀 7 16 男 差
Grouper([key, level, freq, axis, sort])
应用
可以先通过循环获得所有的组的名称
for name in GroupBy: print(name)# 获得所有分组的名称 GroupBy.get_group(name) #获得所有该名称的数据
以上这篇Pandas GroupBy对象 索引与迭代方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
pandas获取groupby分组里最大值所在的行方法
pandas获取groupby分组里最大值所在的行方法 如下面这个DataFrame,按照Mt分组,取出Count最大的那行 import pandas as pd df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]}) df Count Mt Sp Value 0 3 s1
-
浅谈pandas用groupby后对层级索引levels的处理方法
层及索引levels,刚开始学习pandas的时候没有太多的操作关于groupby,仅仅是简单的count.sum.size等等,没有更深入的利用groupby后的数据进行处理.近来数据处理的时候有遇到这类问题花了一点时间,所以这里记录以及复习一下:(以下皆是个人实践后的理解) 我使用一个实例来讲解下面的问题:一张数据表中有三列(动物物种.物种品种.品种价格),选出每个物种从大到小品种的前两种,最后只需要品种和价格这两列. 以上这张表是我们后面需要处理的数据表 (物种 品种 价格) levels
-
pandas groupby 分组取每组的前几行记录方法
直接上例子. import pandas as pd df = pd.DataFrame({'class':['a','a','b','b','a','a','b','c','c'],'score':[3,5,6,7,8,9,10,11,14]}) df: class score 0 a 3 1 a 5 2 b 6 3 b 7 4 a 8 5 a 9 6 b 10 7 c 11 8 c 14 df.sort_values(['class','score'],ascending=[1,0],inp
-
pandas数据预处理之dataframe的groupby操作方法
在数据预处理过程中可能会遇到这样的问题,如下图:数据中某一个key有多组数据,如何分别对每个key进行相同的运算? dataframe里面给出了一个group by的一个操作,对于"group by"操作,我们通常是指以下一个或多个操作步骤: l (Splitting)按照一些规则将数据分为不同的组: l (Applying)对于每组数据分别执行一个函数: l (Combining)将结果组合到一个数据结构中: 使用dataframe实现groupby的用法: # -*- coding
-
Pandas GroupBy对象 索引与迭代方法
如下所示: import pandas as pd df = pd.DataFrame({'性别' : ['男', '女', '男', '女', '男', '女', '男', '男'], '成绩' : ['优秀', '优秀', '及格', '差', '及格', '及格', '优秀', '差'], '年龄' : [15,14,15,12,13,14,15,16]}) GroupBy=df.groupby("性别") GroupBy.iter() GroupBy对象是一个迭代对象,每次迭代
-
详解Pandas中GroupBy对象的使用
目录 使用 Groupby 三个步骤 将原始对象拆分为组 按组应用函数 Aggregation Transformation Filtration 整合结果 总结 今天,我们将探讨如何在 Python 的 Pandas 库中创建 GroupBy 对象以及该对象的工作原理.我们将详细了解分组过程的每个步骤,可以将哪些方法应用于 GroupBy 对象上,以及我们可以从中提取哪些有用信息 不要再观望了,一起学起来吧 使用 Groupby 三个步骤 首先我们要知道,任何 groupby 过程都涉及以下
-
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
继承是OO语言中的一个最为人津津乐道的概念. 许多OO语言都支持两种继承方式:接口继承和实现继承. 接口继承只继承方法签名,而实现继承则继承实际的方法. 如其所述,由于函数没有签名,在ECMAScript中无法实现接口继承. ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的. 1.使用对象字面量定义对象 var person={}; 使用这种方式创建对象时,实际上不会调用Object构造函数. 开发人员更喜欢对象字面量的语法. 2.有时候需要传递大量可选参数的情形时,一
-
在Pandas中给多层索引降级的方法
# 背景介绍 通常我们不会在Pandas中主动设置多层索引,但是如果一个字段做多个不同的聚合运算, 比如sum, max这样形成的Column Level是有层次的,这样阅读非常方便,但是对编程定位比较麻烦. # 数据准备 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(0, 14).reshape(7,2),columns =['a','b'] ) df.a = df.a %3 df['who'] = 'Bo
-
在pandas多重索引multiIndex中选定指定索引的行方法
在multiIndex中选定指定索引的行 我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个index对应的行进行操作,就需要在dataframe中找到该index对应的行,在单层index中我们可以方便的使用df.loc[index]来选择,在多重Index中我们可以利用的类似的思路,然而其中也有一些小坑,记录如下. 1 index为有序的 1.1 创建测试数据 首先创建一个dataframe数据 df = pd.DataFrame({'class'
-
pandas创建DataFrame对象失败的解决方法
目录 报错代码 报错翻译 报错原因 解决方法 创建DataFrame对象的四种方法 1. list列表构建DataFrame 2. dict字典构建DataFrame 3. ndarray创建DataFrame 4. Series创建DataFrame 报错代码 粉丝群一个小伙伴想pandas创建DataFrame对象,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下: import pan
-
pandas重新生成索引的方法
在数据处理的过程中,出现了这样的问题,筛选某些数据,出现索引从600多开始,但是我希望这行数据下标从0开始. 这个时候,我想到的是: df.reindex(range(length)) 但是查看一下数据之后,发现0-624之间的值全为Nan,显然不是我需要的数据. 最后找到了说明: pandas调用reindex方法后净会根据新索引进行重排,如果某个索引值当前不存在,就会引入 缺失值:可以通过fill_value参数填充默认值,也可以通过method参数设置填充方法: 感谢身边同事的帮助,找到了
-
对pandas的层次索引与取值的新方法详解
1.层次索引 1.1 定义 在某一个方向拥有多个(两个及两个以上)索引级别,就叫做层次索引. 通过层次化索引,pandas能够以较低维度形式处理高纬度的数据 通过层次化索引,可以按照层次统计数据 层次索引包括Series层次索引和DataFrame层次索引 1.2 Series的层次索引 import numpy as np import pandas as pd s1 = pd.Series(data=[99, 80, 76, 80, 99], index=[['2017', '2017',
-
ng-repeat指令在迭代对象时的去重方法
刚刚遇到一个问题: 在使用AngularJS的ng-repeat指令时,遇到了数据重复出现的问题. 可能有的人会想到,ng-repeat迭代时,遇到重复的数据不是会报错么? 当然了,如果你迭代的是数组,而且数据类型时字符串或者数字时,ng-repeat指令就会自动报错.而且解决办法也很简单, 加个track by $index就能解决. 而我的问题是,在迭代对象时,因为对象中有重复的数据,而我需要的是重复的数据只显示一条,也就是去重.因为迭代的是对象,所以ng-repeat并不会给你报错,而是会
随机推荐
- iOS应用开发中实现页面跳转的简单方法笔记
- VBS教程:属性-ShortName 属性
- .net开发:为程式码加上行号的方法详解
- asp fckeditor自定义上传文件的文件名
- asp下实现格式化文件大小以MB显示的函数
- 面向对象编程:Java中的抽象数据类型
- js中parseFloat(参数1,参数2)定义和用法及注意事项
- php中获得视频时间总长度的另一种方法
- nodejs实现的一个简单聊天室功能分享
- Nodejs学习item【入门手上】
- jQuery实现拼图小游戏(实例讲解)
- PowerShell脚本trap语句捕获异常写法实例
- C#策略模式(Strategy Pattern)实例教程
- jquery 延迟执行实例介绍
- jQuery原理系列-css选择器的简单实现
- jquery 追加元素append、prepend、before、after用法与区别分析
- Java编程学习的几个典型实例详解
- 用PHP开发GUI
- 详解Vue2.0配置mint-ui踩过的那些坑
- 用Cython加速Python到“起飞”(推荐)