pandas中groupby()函数的用法
2019-02-14 19:50
405 查看
pandas中的groupby()函数是非常常见的一个函数,顾明思议,这个函数的意思就是根据参数来把DataFrame进行分组。
这个函数有大概两种使用方法:
根据表本身的某一列或多列内容进行分组聚合
通过字典或者Series进行分组
根据表本身的某一列或多列内容进行分组聚合:
这个是groupby的最常见操作,根据某一列的内容分为不同的维度进行拆解,将同一维度的再进行聚合
按一列进行聚合:
import pandas as pd import numpy as np df = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'], 'data1': np.random.randn(5), 'data2': np.random.randn(5)})
for i in df.groupby('key1'): print(i) # 输出: ('a', data1 data2 key1 key2 0 -0.293828 0.571930 a one 1 1.872765 1.085445 a two 4 -1.943001 0.106842 a one) ('b', data1 data2 key1 key2 2 -0.466504 1.262140 b one 3 -1.125619 -0.836119 b two)
按多列进行聚合,则看的是多列之间维度的笛卡尔积:
比如按照key1列,可以分为a和b两个维度,按照key2列可以分为one和two两个维度,最后groupby这两列之后的结果就是四个group。
for i in df.groupby(['key1','key2']): print(i) # 输出: (('a', 'one'), data1 data2 key1 key2 0 -0.293828 0.571930 a one 4 -1.943001 0.106842 a one) (('a', 'two'), data1 data2 key1 key2 1 1.872765 1.085445 a two) (('b', 'one'), data1 data2 key1 key2 2 -0.466504 1.26214 b one) (('b', 'two'), data1 data2 key1 key2 3 -1.125619 -0.836119 b two)
通过字典或者Series进行分组
问题情境:一共有5个同学分别对5样东西做了一个评价,0-5表示对该物品的喜爱程度,随着数值的升高,程度也在不断加深。
import pandas as pd import numpy as np import random people=pd.DataFrame( np.random.randint(low=0,high=6,size=(5,5)), columns=['香蕉','苹果','橘子','眼影','眼线'], index=['Joe','Steve','Wes','Jim','Travis'] )
但是可以明显发现这五样物品可以分为两类:“水果”和“化妆品”。
问题:我想知道这五名同学对水果和化妆品的平均喜爱程度是什么样的?
solution1:通过字典分组
mapping = {'香蕉':'水果','苹果':'水果','橘子':'水果','眼影':'化妆品','眼线':'化妆品'} data = people.groupby(mapping,axis=1).mean()
solution2:通过Series分组
mapping2 = pd.Series(mapping) # mapping2 橘子 水果 眼影 化妆品 眼线 化妆品 苹果 水果 香蕉 水果 dtype: object data2 = people.groupby(mapping2,axis=1).mean()
相关文章推荐
- python的pandas库的sort_values、set_index、reset_index、cumsum、groupby函数的用法
- Pandas.merge()函数用法及源码
- 简要说明python pandas中groupby,agg等的用法
- Pandas.cut函数用法及源码
- 用pandas里的groupby函数实现把一个大文件按某一列的类型分成多个文件
- python3中的groupby函数用法
- pandas-如何保存groupby函数的结果?
- pandas中的groupby函数的分组结果怎么保存成DataFrame
- 关于pandas库中groupby函数按函数分组或函数传入参数作为索引分组的例子的猜想
- pandas中的groupby函数的分组结果怎么保存成DataFrame
- python:pandas(6),用法及函数总结
- Python语言——Pandas包中的get_dummy()函数用法
- Pandas.concat()函数用法及源码
- pandas的groupby以及pivot_table用法——以计算恩格尔系数为例
- python pandas中的random模块一些函数的用法
- 关于pandas.DataFrame的groupby的用法
- scala中函数组合器的用法(map,filter,zip,foreach,groupBy,flatten,drop等)
- pandas库中shift()、diff()等函数的用法
- Pandas.split()函数用法及源码
- pandas的read_csv()函数读取的文件路径问题