本文主要介绍熊猫分组排序的实现。通过示例代码进行了非常详细的介绍,对于大家的学习或者工作都有一定的参考价值。有需要的朋友下面和边肖一起学习。
一、pandas分组
1、分组运算过程:split-apply-combine
拆分:分组的基础。
应用:每个组运行的计算规则。
合并:合并每个分组的计算结果。
2、分组函数
DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False,**kwargs
依据:根据对哪些列进行分组,值可以是:映射、函数、标签或标签列表。
3、聚合函数
4.分组聚合示例
单列分组
进口熊猫作为pd
df=pd。DataFrame({'A': ['a ',' B ',' A ',' c ',' A ',' c ',' B '],' B': [2,8,1,4,
3,2,5,9],' C': [102,98,107,104,115,87,92,123],' D': [2,98,17,14,15,7,92,
13]})
df
A B C D
0 a 2 102 2
1 b 8 98 98
2 a 1 107 17
3 c 4 104 14
4 a 3 115 15
5 c 2 87 7
6 b 5 92 92
7 c 9 123 13
df.groupby(by='A ')。总和()
B C D
A
a 6 324 34
b 13 190 190
c 15 314 34
多列分组
Df。groupby (by=['a ',' b'])。sum () # # # a,b被索引
C D
一个B
a 1 107 17
2 102 2
3 115 15
b 5 92 92
8 98 98
c 2 87 7
4 104 14
9 123 13
多列聚合
Df.groupby (by=['a ',' b']) ['c']。sum () # # 1列
一个B
a 1 107
2 102
3 115
b 5 92
8 98
c 2 87
4 104
9 123
Df.groupby (by=['a ',' b']) ['c ',' d']。sum () # # 2列
C D
一个B
a 1 107 17
2 102 2
3 115 15
b 5 92 92
8 98 98
c 2 87 7
4 104 14
9 123 13
许多不同的聚合方法。
将numpy作为np导入
df.groupby(by=['A'])。agg({'C':[np.mean,' sum'],' D':['count ',np.std]})
C D
平均总和计数标准
A
108.000000 324 3 8.144528
b 95.000000 190 2 4.242641
c 104.666667 314 3.785939
Ps:使用不同的函数聚合不同的列C: mean,sum;d:计数,标准
返回值类型差异
方法1:聚集
df.groupby(by=['A'])。agg({'C':[np.mean]})
C
意思是
A
一点零八万英镑
b 95.000000
c 104.666667
type(df.groupby(by=['A'])。agg({'C':[np.mean]}))
类' pandas.core.frame.DataFrame '
方法2:索引
df.groupby(by=['A'])['C']。平均值()
A
一点零八万英镑
b 95.000000
c 104.666667
名称:C,型号:float64
type(df.groupby(by=['A'])['C']。均值())
类' pandas.core.series.Series '
总结:两种方法的结果是一样的,只是一种是DataFrame,一种是Series;有时候会派上用场。
二、pandas排序
按索引降序排序
df
A B C D
0 a 2 102 2
1 b 8 98 98
2 a 1 107 17
3 c 4 104 14
4 a 3 115 15
5 c 2 87 7
6 b 5 92 92
7 c 9 123 13
Df.sort _ index(升序=false) # # # index
A B C D
7 c 9 123 13
6 b 5 92 92
5 c 2 87 7
4 a 3 115 15
3 c 4 104 14
2 a 1 107 17
1 b 8 98 98
0 a 2 102 2
按值降序排序。
Df.sort _ values (by=' a ',ascending=false) #按列
A B C D
3 c 4 104 14
5 c 2 87 7
7 c 9 123 13
1 b 8 98 98
6 b 5 92 92
0 a 2 102 2
2 a 1 107 17
4 a 3 115 15
Df.sort _ values (by=['b ',' a'],ascending=false) # by 2列
A B C D
7 c 9 123 13
1 b 8 98 98
6 b 5 92 92
3 c 4 104 14
4 a 3 115 15
5 c 2 87 7
0 a 2 102 2
2 a 1 107 17
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。