import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
path = r'D:\lerning_py\kpi.xlsx'
wo = pd.read_excel(path,sheet_name='Sheet1',index_col='id')
print(wo)
df = (wo[wo['name'] == 'AC'] #name列筛选出部分行,条件是AC字符 ---第一
.sort_values('type') #然后将行的类型进行转换 ----第二
.groupby(['type','name'])['kpi'].agg(['sum', 'mean', 'std']) #按照type列进行分组,计算和、中位数、标准差 -----第三
)
print(df)
type name kpi
id
1 sporting AB 31.00
2 working AC 11.50
3 peending AD 23.00
4 sporting AE 32.41
5 working AB 31.00
6 peending AC 24.00
7 sporting AD 23.60
8 working AE 26.30
9 peending AB 27.50
10 peending AD 28.60
11 sporting AB 11.00
12 working AC 14.00
13 peending AD 15.00
14 sporting AE 17.33
15 working AB 19.33
16 peending AC 21.33
17 sporting AD 23.33
18 working AE 25.33
19 peending AB 27.33
20 sporting AC 29.33
21 working AD 31.33
22 peending AE 33.33
运行wo[wo['name'] == 'AC']第一个结果:
type name kpi
id
2 working AC 11.50
6 peending AC 24.00
12 working AC 14.00
16 peending AC 21.33
20 sporting AC 29.33
Process finished with exit code 0
.
运行sort_values('type')第二个结果:
type name kpi
id
6 peending AC 24.00
16 peending AC 21.33
20 sporting AC 29.33
2 working AC 11.50
12 working AC 14.00
Process finished with exit code 0
运行.groupby(['type','name'])['kpi'].agg(['sum', 'mean', 'std']) 第三个结果:
sum mean std
type name
peending AC 45.33 22.665 1.887975
sporting AC 29.33 29.330 NaN
working AC 25.50 12.750 1.767767
Process finished with exit code 0