pandas使用教程:pandas数据排序sort_values和分组groupby-灵析社区

清晨我上码

pandas数据排序

导入数据

df = pd.read_excel('team.xlsx')
df

df.sort_values(by='Q1') # 按Q1列数据升序排列
df.sort_values(by='Q1', ascending=False) # 降序

	team	Q1	Q2	Q3	Q4
name					
Lincoln4	C	98	93	1	20
Max	E	97	75	41	3
Elijah	B	97	89	15	46
Aaron	A	96	75	55	8
Eorge	C	93	96	71	78
...	...	...	...	...	...
Lewis	B	4	34	77	28
Finn	E	4	1	55	32
Liam	B	2	80	24	25
Harley	B	2	99	12	13
Sebastian	C	1	14	68	48
df.sort_values(['team', 'Q1'], ascending=[True, False]) # team升序,Q1降序

	team	Q1	Q2	Q3	Q4
name					
Aaron	A	96	75	55	8
Henry	A	91	15	75	17
Nathan	A	87	77	62	13
Dylan	A	86	87	65	20
Blake	A	78	23	93	9
...	...	...	...	...	...
Eli	E	11	74	58	91
Jude	E	8	45	13	65
Rory9	E	8	12	58	27
Jackson5	E	6	10	15	33
Finn	E	4	1	55	32

数据分组聚合

pandas可以实现类似SQL的groupby的功能:

df.groupby('team').sum() # 按团队分组对应列相加
df.groupby('team').mean() # 按团队分组对应列求平均

		Q1	Q2	Q3	Q4
team				
A	62.705882	37.588235	51.470588	46.058824
B	44.318182	55.363636	54.636364	51.636364
C	48.000000	54.272727	48.545455	51.227273
D	45.263158	62.684211	65.315789	63.105263
E	48.150000	50.650000	44.050000	51.650000

使用agg聚合功能,对不同列可以使用不同的聚合函数

df.groupby('team').agg({'Q1': sum,  # 总和
                        'Q2': 'count', # 总数
                        'Q3':'mean', # 平均
                        'Q4': max}) # 最大值

Q1	Q2	Q3	Q4
team				
A	1066	17	51.470588	97
B	975	22	54.636364	99
C	1056	22	48.545455	98
D	860	19	65.315789	99
E	963	20	44.050000	98

数据转换

对数据表进行转置,对数据以A-Q1、E-Q4两点连成的折线为轴对数据进行翻转。可以发现team索引变成了列索引。

df.groupby('team').sum().T

team	A	B	C	D	E
Q1	1066	975	1056	860	963
Q2	639	1218	1194	1191	1013
Q3	875	1202	1068	1241	881
Q4	783	1136	1127	1199	1033


阅读量:1761

点赞量:0

收藏量:0