pandas之分组计算笔记
分组计算三部曲:拆分-->应用-->合并
分组:就是按照行或列把相同索引的部分分到一起
分组的关键词为groupby,分组后我们就可以对每组数据进行同一操作,返回的是每组数据分别计算后的结果
1 import pandas as pd 2 import numpy as np 3 4 # 先创建一个DataFrame 5 df = pd.DataFrame({ 6 'key1':['a','a','b','b','a'], 7 'key2':['one','two','one','two','one'], 8 'data1':np.random.randint(1,10,5), 9 'data2':np.random.randint(1,10,5) 10 }) 11 12 df['data1'].groupby(df['key1']).mean() 13 # 对data1列采用key1列分组并求平均值,所谓分组,就是把相同的行或列分到一起 14 # 然后就可以分别对这些分好的组进行一系列操作 15 16 key = [1,2,1,1,2] # 也可以给出任意索引键,自定义分组 17 df['data1'].groupby(key).mean() # 这时就会把相同索引的值分到一起 18 19 df['data1'].groupby([df['key1'],df['key2']]).size() 20 mean = df.groupby(['key1','key2']).sum()['data1'] 21 # 也可进行再分组,可以先把key1先分组,在此基础上再以key2索引进行分组 22 # 输出的mean 23 key1 key2 24 a one 11 25 two 4 26 b one 1 27 two 9 28 Name: data1, dtype: int32 29 30 mean.unstack() # 这个方式可以转换为DataFrame 31 32 33 # 通过分组key1,将其创键为字典,可以很清晰看出分组的实际意义 34 dict(list(df.groupby('key1'))) 35 # 输出 36 {'a': key1 key2 data1 data2 37 0 a one 5 7 38 1 a two 4 4 39 4 a one 6 2, 'b': key1 key2 data1 data2 40 2 b one 1 3 41 3 b two 9 8} 42 43 # 以上是进行行分组,也可以进行列分组 44 df.groupby(df.dtypes, axis=1).sum() # axis=1表示按列分组 45 46 df.dtypes # 区分的是每列的数据类型 47 # 它的输出结果 48 key1 object 49 key2 object 50 data1 int32 51 data2 int32 52 dtype: object