首页 > 编程语言 > 详细

Python pandas库 ->groupby分组操作

时间:2019-05-11 13:19:50      阅读:151      评论:0      收藏:0      [点我收藏+]

首先 在SQL中 分组操作group by是对行记录的拆分

在pandas中 分组操作groupby可以选择对行或者列进行拆分

pandas分组之后可以根据每组的组名value(非列名)访问部分数据

类似于SQL中 group by之后的having 分组列名=value

最后都是用聚合方法 合并计算数据

 1 import numpy as np
 2 import pandas as pd
 3 from pandas import DataFrame,Series
 4 df1=DataFrame({symbol:[001,001,002,002,003],
 5 tdate:[201901,201902,201901,201902,201901],
 6 open:np.random.randint(0,50,5),
 7 close:np.random.randint(50,100,5)})
 8 
 9 print(df1)
10 
11 grp1=df1.groupby(symbol)
12 grp2=df1.groupby([symbol,tdate])
13 
14 print(#可用循环语句访问组名和每组的内容)
15 for name,group in grp1:
16     print(name)
17     print(group)
18 
19 print(#通过组名访问数据)
20 print(grp1.get_group(001))
21 print(grp2.get_group((001,201901)))
22     
23 print(#计算指定列的均值 三种等价写法)
24 print(grp1.open.mean())
25 print(grp1.open.agg(mean)) #这里函数mean要加引号 如果是自定义函数不需要
26 print(grp1.agg({open:mean})) #这里指定了列名 返回DataFrame而非Series
27 
28 print(#计算指定列的指定聚合方法)
29 def my_func(x):
30     return max(x)-min(x)
31 print(grp1.open.agg(my_func))
32 print(grp1.open.agg(lambda x:max(x)-min(x))) #用匿名函数
33 
34 print(#对指定列进行计算处理)
35 print(grp1.open.apply(lambda x:x+100))

结果如下图

技术分享图片

 

同时 pandas可以直接对列进行拆分 设置groupby 参数axis=1即可

这个在SQL中是难以做到的

 1 import numpy as np
 2 import pandas as pd
 3 from pandas import DataFrame,Series
 4 df1=DataFrame({symbol:[001,001,002,002,003],
 5 tdate:[201901,201902,201901,201902,201901],
 6 open:np.random.randint(0,50,5),
 7 close:np.random.randint(50,100,5)})
 8 
 9 print(df1)
10 
11 print(#*20)
12 
13 grp3=df1.groupby(df1.dtypes,axis=1)
14 grp4=df1.groupby({symbol:a,tdate:a,open:b,close:b},axis=1)
15 
16 for name,group in grp3:
17     print(name)
18     print(group)
19     
20 print(#*20)
21 
22 for name,group in grp4:
23     print(name)
24     print(group)
25     if name==b:
26         print(#根据组名访问)
27         print(grp4.get_group(name))
28         print(#聚合操作)
29         print(grp4.get_group(name).mean()) 

结果如下图

技术分享图片

 谢谢!

Python pandas库 ->groupby分组操作

原文:https://www.cnblogs.com/chendongblog/p/10848270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!