Pandas详解十六之groupby分组后分开运算

您所在的位置:网站首页 两列数据如何相减 Pandas详解十六之groupby分组后分开运算

Pandas详解十六之groupby分组后分开运算

2024-07-16 04:32:51| 来源: 网络整理| 查看: 265

约定

import pandas as pd import numpy as np groupby分组后分开运算

Groupby对象支持迭代,当我们分组后想保存分组结果而不想运算,或者分别对每组进行不同的运算,这时是十分有用的。

1 创建

df1=pd.DataFrame({'Data1':np.random.randint(0,10,5),'Data2':np.random.randint(10,20,5),'key1':list('aabba'),'key2':list('xyyxy')}) print(df1) Data1 Data2 key1 key2 0 0 18 a x 1 9 11 a y 2 0 13 b y 3 9 19 b x 4 5 13 a y

2 分析分组的结果

下例用列:key1来对df1进行分组,由上面key1只有:a、b,故分为两组。下面解包时是以tuple(key1,分组结果)返回的。

a,b= df1.groupby('key1') print(a) print('a的类型:',type(a)) print('\n',a[0]) print('a[0]的类型:',type(a[0])) print('\n',a[1]) print('a[1]的类型:',type(a[1])) ('a', Data1 Data2 key1 key2 0 0 18 a x 1 9 11 a y 4 5 13 a y) a的类型: a a[0]的类型: Data1 Data2 key1 key2 0 0 18 a x 1 9 11 a y 4 5 13 a y a[1]的类型:

3 对groupby结果进行迭代

for name,group in df1.groupby('key1'): print('*'*13+name+'*'*13+'\n',group) print() *************a************* Data1 Data2 key1 key2 0 0 18 a x 1 9 11 a y 4 5 13 a y *************b************* Data1 Data2 key1 key2 2 0 13 b y 3 9 19 b x

4 分析用多个列进行分组的结果

下例用列:key1、key2来对df1进行分组,故分组结果为4个。下面解包时是以tuple((key1,key2),分组结果)返回的。

gr1=df1.groupby(['key1','key2']) print('长度:',len(gr1),'\n') ax,ay,bx,by=gr1 print('ax :\n',ax) 长度: 4 ax : (('a', 'x'), Data1 Data2 key1 key2 0 0 18 a x)

5 迭代

for (key1,key2),group in df1.groupby(['key1','key2']): print('*'*13+key1+key2+'*'*13+'\n',group) print() *************ax************* Data1 Data2 key1 key2 0 0 18 a x *************ay************* Data1 Data2 key1 key2 1 9 11 a y 4 5 13 a y *************bx************* Data1 Data2 key1 key2 3 9 19 b x *************by************* Data1 Data2 key1 key2 2 0 13 b y

6 将分组结果变成字典

dict1=dict(list(df1.groupby('key1'))) print(dict1['b']) Data1 Data2 key1 key2 2 0 13 b y 3 9 19 b x dict2=dict(list(df1.groupby(['key1','key2']))) print(dict2[('a','y')]) Data1 Data2 key1 key2 1 9 11 a y 4 5 13 a y

7 根据列的数据类型dtype对列进行分组

print('df1 各列的数据类型\n',df1.dtypes,'\n') for key,group in dict(list(df1.groupby(df1.dtypes,axis=1))).items(): print("*"*5,key,"*"*5) print(group,'\n') df1 各列的数据类型 Data1 int32 Data2 int32 key1 object key2 object dtype: object ***** int32 ***** Data1 Data2 0 0 18 1 9 11 2 0 13 3 9 19 4 5 13 ***** object ***** key1 key2 0 a x 1 a y 2 b y 3 b x 4 a y

谢谢大家的浏览, 希望我的努力能帮助到您, 共勉!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭