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

 

posted @ 2019-08-28 10:13  yg_staring  阅读(447)  评论(0编辑  收藏  举报