首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pandas之分组groupby()的使用整理与总结

大家好,又见面了,我是你们的朋友全栈君。...文章目录 前言 准备 基本操作 可视化操作 REF 前言 在使用pandas的时候,有些场景需要对数据内部进行分组处理,如一组全校学生成绩的数据,我们想通过班级进行分组,或者再对班级分组后的性别进行分组来进行分析...对象,所以,它们中的一些方法或者函数是无法直接调用的,需要按照GroupBy对象中具有的函数和方法进行调用。...'> 分组时,不仅仅可以指定一个列名,也可以指定多个列名: grouped = df.groupby('Gender') grouped_muti = df.groupby(['Gender', 'Age...按照上面的思路理解后,再调用get_group()函数后得到的DataFrame对象按照列名进行索引实际上就是得到了Series的对象,下面的操作就可以按照Series对象中的函数行了。

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python-for-data-groupby使用和透视表

    第十章主要讲解的数据聚合与分组操作。对数据集进行分类,并在每一个组上应用一个聚合函数或者转换函数,是常见的数据分析的工作。 本文结合pandas的官方文档整理而来。 ?...分组键 分组键可以是多种形式,并且键不一定是完全相同的类型: 与需要分组的轴向长度一致的值列表或者值数组 DataFrame列名的值 可以在轴索引或索引中的单个标签上调用的函数 可以将分组轴向上的值和分组名称相匹配的字典或者...Series 特点 分组键可以是正确长度的任何数组 通用的groupby方法是size,返回的是一个包含组大小信息的Series 分组中的任何缺失值将会被排除在外 默认情况下,groupby是在axis...=0情况下进行的 语法糖现象: df.groupby('key1')['data1'] df['data1'].groupby(df['key1']) 如果传递的是列表或者数组,返回的是分组的DataFrame...如果传递的是(name,function)形式,则每个元组的name将会被作为DF数据的列名: ? 不同的函数应用到一个或者多个列上 ?

    2K30

    (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg

    ,用于对单列、多列数据进行批量运算或分组聚合运算,熟悉这些方法后可极大地提升数据分析的效率,也会使得你的代码更加地优雅简洁,本文就将针对pandas中的map()、apply()、applymap()、...groupby()、agg()等方法展开详细介绍,并结合实际例子帮助大家更好地理解它们的使用技巧(本文使用到的所有代码及数据均保存在我的github仓库:https://github.com/CNFeffery...中tqdm模块的用法中,我对基于tqdm为程序添加进度条做了介绍,而tqdm对pandas也是有着很好的支持,我们可以使用progress_apply()代替apply(),并在运行progress_apply...()之前添加tqdm.tqdm.pandas(desc='')来启动对apply过程的监视,其中desc参数传入对进度进行说明的字符串,下面我们在上一小部分示例的基础上进行改造来添加进度条功能: from...,键为变量名,值为对应的聚合函数字符串,譬如{'v1':['sum','mean'], 'v2':['median','max','min]}就代表对数据框中的v1列进行求和、均值操作,对v2列进行中位数

    5.1K60

    R语言数据分析利器data.table包 —— 数据框结构处理精讲

    ,可以是整型,可以是字符,可以是表达式,j 是对数据框进行求值,决定显示的列,by对数据进行指定分组,除了by ,也可以添加其它的一系列参数: keyby,with,nomatch,mult,rollollends...(sum(y)), by=x] # 对x列进行分组后对各分组y列求总和 DT[, sum(y), keyby=x] #对x列进行分组后对各分组y列求和,并且结果按照x排序 DT[, sum(y)..., by=x][order(x)] #和上面一样,采取data.table的链接符合表达式 DT[v>1, sum(y), by=v] #对v列进行分组后,取各组中v>1的行出来,各组分别对定义的行中的...函数画图,对于每个x的分组画一张图 DT[, m:=mean(v), by=x] #对DT按x列分组,直接在DT上再添加一列m,m的内容是mean(v),直接修改并且不输出到屏幕上 DT[, m:=mean...(y=max(y)), lapply(.SD, min)), by=x, .SDcols=y:v] #对DT取y:v之间的列,按x分组,输出max(y),对y到v之间的列每列求最小值输出。

    5.9K20

    pandas基础:使用Python pandas Groupby函数汇总数据,获得对数据更好地理解

    datetime_is_numeric参数还可以帮助pandas理解我们使用的是datetime类型的数据。 图2 添加更多信息到我们的数据中 继续为我们的交易增加两列:天数和月份。...在下面的示例中,我们首先按星期几对数据进行分组,然后指定要查看的列——“Debit(借方)”,最后对分组数据的“Debit”列执行操作:计数或求和。...要更改agg()方法中的列名,我们需要执行以下操作: 关键字是新的列名 这些值是命名元组 pd.namedagh,第一个参数用于列,第二个参数用于指定操作 图6 pd.NamedAgg是一个名称元组...,也允许使用正则元组,因此我们可以进一步简化上述内容: 图7 按多列分组 记住,我们的目标是希望从我们的支出数据中获得一些见解,并尝试改善个人财务状况。...在元组中,第一个元素是类别名称,第二个元素是属于特定类别的子集数据。因此,这是拆分步骤。 我们也可以使用内置属性或方法访问拆分的数据集,而不是对其进行迭代。

    4.7K50

    Pandas

    ,‘column1_name’]的方式对 DataFrame 进行切片,对行的指定要使用索引或者条件,对列的索引必须使用列名称,如果有多列,则还需要借助[]将列名称括起来。...python 中可以作为分组键的类型: 列名 和分组数据等长的数组或者列表 一个指明分组名称和分组值关系的字典或者 series A function to be invoked on the axis...利用函数进行分类需要注意的是传入参数是df的行索引,目前我觉得使用这个自定义函数分类的方法主要是使用loc(x,)方法获得所需的列来进行运算 分组的操作轴默认为 axis=0,也可以进行调整 对于多级标签的对象...以加法为例,它会匹配索引相同(行和列)的进行算术运算,再将索引不匹配的数据视作缺失值,但是也会添加到最后的运算结果中,从而组成加法运算的结果。...在正常使用过程中,agg 函数和 aggregate 函数对 DataFrame 对象操作时功能几乎完全相同,因此只需要掌握其中一个函数即可。它们的参数说明如下表。

    9.2K30

    python数据分析——数据分类汇总与统计

    它实际上还没有进行任何计算,只是含有一些有关分组键df[‘key1’]的中间数据而已。换句话说,该对象已经有了接下来对各分组执行运算所需的一切信息。...关键技术:对于由DataFrame产生的GroupBy对象,如果用一个(单个字符串)或一组(字符串数组)列名对其进行索引,就能实现选取部分列进行聚合的目的。...拿上面例子中的df来说,我们可以根据dtype对列进行分组: print(df.dtypes) grouped = df.groupby(df.dtypes,axis = 1) 可以如下打印分组: for...使用read_csv导入数据之后,我们添加了一个小费百分比的列tip_pct: 如果希望对不同的列使用不同的聚合函数,或一次应用多个函数,将通过下面的例来进行展示。...关键技术:在pandas中透视表操作由pivot_table()函数实现,其中在所有参数中,values、index、 columns最为关键,它们分别对应Excel透视表中的值、行、列。

    82410

    Python常用小技巧总结

    c'] # 重命名列名(需要将所有列名列出,否则会报错) pd.isnull() # 检查DataFrame对象中的空值,并返回⼀个Boolean数组 pd.notnull() # 检查DataFrame...创建⼀个按列col1进⾏分组,计算col2的最⼤值和col3的最⼤值、最⼩值的数据透视表 df.groupby(col1).agg(np.mean) # 返回按列col1分组的所有列的均值,⽀持...数据合并 df1.append(df2) # 将df2中的⾏添加到df1的尾部 df.concat([df1,df2],axis=1,join='inner') # 将df2中的列添加到df1的尾部...,欢迎点赞关注评论,你的点赞对我很重要 Python小技巧 简单的表达式 列表推导式 例如,假设我们想创建一个正方形列表,例如 squares = [] for x in range(10):...,欢迎点赞关注,你的点赞对我很重要。

    9.4K20

    不再纠结,一文详解pandas中的map、apply、applymap、groupby、agg...

    文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一、简介 pandas提供了很多方便简洁的方法,用于对单列...譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据...我们可以使用progress_apply()代替apply(),并在运行progress_apply()之前添加tqdm.tqdm.pandas(desc='')来启动对apply过程的监视。...中可以利用agg()对Series、DataFrame以及groupby()后的结果进行聚合。...,对v2列进行中位数、最大值、最小值操作。

    5.9K31

    不再纠结,一文详解pandas中的map、apply、applymap、groupby、agg...

    譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据...我们可以使用progress_apply()代替apply(),并在运行progress_apply()之前添加tqdm.tqdm.pandas(desc='')来启动对apply过程的监视。...其中desc参数传入对进度进行说明的字符串,下面我们在上一小部分示例的基础上进行改造来添加进度条功能: from tqdm import tqdm def generate_descriptive_statement...3.1 利用groupby()进行分组 要进行分组运算第一步当然就是分组,在pandas中对数据框进行分组使用到groupby()方法。...,对v2列进行中位数、最大值、最小值操作。

    5K10

    Pandas常用的数据处理方法

    如果希望对不同的值进行不同的替换,传入一个由替换关系组成的列表或者字典即可: data = pd.Series([1,-999,2,-999,-1000,3]) data.replace(-999,np.nan...4、数据聚合 4.1 数据分组 pandas中的数据分组使用groupby方法,返回的是一个GroupBy对象,对分组之后的数据,我们可以使用一些聚合函数进行聚合,比如求平均值mean: df = pd.DataFrame...分组键可以是任何适当长度的数组,数组中每一个元素的值代表相应下标的记录的分组键: states = np.array(['Ohio','Nevada','Nevada','Ohio','Ohio'])...可以看到,在上面的例子中,分组产生了一个标量,即分组的平均值,然后transform将这个值映射到对应的位置上,现在DataFrame中每个位置上的数据都是对应组别的平均值。...考虑我们的小费数据集,我们想聚合tip_pct和size,想根据day进行分组,将smoker放到列上,将day放到行上: tips.pivot_table(['tip_pct','size'],index

    8.4K90

    《利用Python进行数据分析·第2版》第10章 数据聚合与分组运算10.1 GroupBy机制10.2 数据聚合10.3 apply:一般性的“拆分-应用-合并”10.4 透视表和交叉表10.5 总

    对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节。在将数据集加载、融合、准备好之后,通常就是计算分组统计或生成透视表。...它实际上还没有进行任何计算,只是含有一些有关分组键df['key1']的中间数据而已。换句话说,该对象已经有了接下来对各分组执行运算所需的一切信息。...这里最重要的是,数据(Series)根据分组键进行了聚合,产生了一个新的Series,其索引为key1列中的唯一值。...拿上面例子中的df来说,我们可以根据dtype对列进行分组: In [28]: df.dtypes Out[28]: data1 float64 data2 float64 key1...首先,我根据天和smoker对tips进行分组: In [60]: grouped = tips.groupby(['day', 'smoker']) 注意,对于表10-1中的那些描述统计,可以将函数名以字符串的形式传入

    5K90

    Pandas数据分析

    () # 通过分组将每年的数据放一块,再把相同年份的imdb_score聚合max 通过排序筛选评分最高的: movie2:DataFrame = movie[['movie_title','title_year...','imdb_score']] movie2.sort_values('title_year',ascending=False) # 针对某一列/几列值对整个df进行排序 movie3 = movie2...',join = 'outer') pd.concat([df1,df2,df3],ignore_index=True) 也可以使用concat函数添加列,与添加行的方法类似,需要多传一个axis参数...axis的默认值是index 按行添加 向DataFrame添加一列,不需要调用函数,通过dataframe['列名'] = ['值'] 即可 通过dataframe['列名'] = Series对象...,也可以通过pd.merge命令组合数据,merge更灵活,如果想依据行索引来合并DataFrame可以考虑使用join函数 how = ’left‘ 对应SQL中的 left outer 保留左侧表中的所有

    11910

    总结了67个pandas函数,完美解决数据处理,拿来即用!

    导⼊数据 导出数据 查看数据 数据选取 数据处理 数据分组和排序 数据合并 # 在使用之前,需要导入pandas库 import pandas as pd 导⼊数据 这里我为大家总结7个常见用法。...df.columns= ['a','b','c'] # 重命名列名(需要将所有列名列出,否则会报错) pd.isnull() # 检查DataFrame对象中的空值,并返回⼀个Boolean数组 pd.notnull...() # 检查DataFrame对象中的⾮空值,并返回⼀个Boolean数组 df.dropna() # 删除所有包含空值的⾏ df.dropna(axis=1) # 删除所有包含空值的列 df.dropna...']) data.apply(np.mean) # 对DataFrame中的每⼀列应⽤函数np.mean data.apply(np.max,axis=1) # 对DataFrame中的每⼀⾏应⽤函数...df1.append(df2) # 将df2中的⾏添加到df1的尾部 df.concat([df1,df2],axis=1,join='inner') # 将df2中的列添加到df1的尾部,值为空的对应

    3.5K30

    Pandas速查手册中文版

    ():检查DataFrame对象中的空值,并返回一个Boolean数组 pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组 df.dropna():删除所有包含空值的行...,后按col2降序排列数据 df.groupby(col):返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象 df.groupby...col1进行分组,并计算col2和col3的最大值的数据透视表 df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值 data.apply(np.mean):对...DataFrame中的每一列应用函数np.mean data.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.max 数据合并 df1.append(df2):将df2...中的行添加到df1的尾部 df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部 df1.join(df2,on=col1,how='inner'):对df1的列和df2

    12.2K92

    Python求取Excel指定区域内的数据最大值

    已知我们现有一个.csv格式的Excel表格文件,其中有一列数据,我们希望对其加以区间最大值的计算——即从这一列的数据部分(也就是不包括列名的部分)开始,第1行到第4行之间的最大值、第5行到第8行的最大值...、第9行到第12行的最大值等等,加以分别计算每4行中的最大值;此外,如果这一列数据的个数不能被4整除,那么到最后还剩余几个,那就对这几个加以最大值的求取即可。   ...在函数中,我们首先读取文件,将数据保存到df中;接下来,我们从中获取指定列column_name的数据,并创建一个空列表max_values,用于保存每个分组的最大值。...在每个分组内,我们从column_data中取出这对应的4行数据,并计算该分组内的最大值,将最大值添加到max_values列表中。最后,函数返回保存了每个分组最大值的列表max_values。   ...如下图所示,为了方便对比,我们这里就将结果文件复制到原来的文件中进行查看。可以看到,结果列中第1个数字,就是原始列中前4行的最大值;结果列中第3个数字,则就是原始列中第9行到12行的最大值,以此类推。

    21120

    使用Pandas melt()重塑DataFrame

    最简单的melt 最简单的melt()不需要任何参数,它将所有列变成行(显示为列变量)并在新列值中列出所有关联值。...df_wide.melt( id_vars='Country', ) 现在行数为 15,因为 Country 列中的每个值都有 5 个值(3 X 5 = 15)。...显示自定义名称 “变量”和“值”是列名。...有两个问题: 确认、死亡和恢复保存在不同的 CSV 文件中。将它们绘制在一张图中并不简单。 日期显示为列名,它们很难执行逐日计算,例如计算每日新病例、新死亡人数和新康复人数。...换句话说,我们将所有日期列转换为值。使用“省/州”、“国家/地区”、“纬度”、“经度”作为标识符变量。我们稍后将它们进行合并。

    3K11

    数据科学 IPython 笔记本 7.11 聚合和分组

    分发方法 通过一些 Python 类魔术,任何未由GroupBy对象显式实现的方法都将被传递给分组,并在它上面调用,无论它们是DataFrame还是Series对象。...例如,你可以使用DataFrame的describe()方法,来执行一组聚合,它们描述数据中的每个分组: planets.groupby('method')['year'].describe().unstack...这只是分发方法的一个例子。请注意,它们被应用于每个单独的分组,然后在```GroupBy中组合并返回结果。...指定分割键 在之前介绍的简单示例中,我们将DataFrame拆分为单个列名。这只是定义分组的众多选项之一,我们将在此处介绍分组规则的其他选项。...在这里,我建议深入研究这几行代码,并评估各个步骤,来确保你准确了解它们对结果的作用。 这当然是一个有点复杂的例子,但理解这些部分将为你提供,探索自己的数据的类似方法。

    3.7K20
    领券