我想知道如何通过 Python 计算每个类别的每一行是高于还是低于平均水平?我有一个名为 test.csv
的 csv 文件。比如类别2,我有两个值。首先,我需要计算该类别的平均值,然后计算每个值是高于还是低于平均百分比。我不知道如何做后者。
import pandas as pd
import numpy as np
#loading the data into data frame
X = pd.read_csv('test.csv')
感兴趣的两列是 Category
和 Totals
列:
Category Totals estimates
2 2777 043
4 1003 06
4 3473 065
4 2638 017
1 2855 04
0 2196 03
0 2630 91
2 2714 39
3 2472 0.51
0 1090 0.12
最佳答案
使用groupby.transform
计算分组均值:
means = df.groupby('Category')['Totals'].transform('mean')
然后使用np.select
检查它们是否高于/低于/等于分组均值:
conditions = {
'above': df['Totals'] > means,
'below': df['Totals'] < means,
}
df['vs_mean'] = np.select(conditions.values(), conditions.keys(), default='equal')
# Category Totals estimates vs_mean
# 0 2 2777 43.00 above
# 1 4 1003 6.00 below
# 2 4 3473 65.00 above
# 3 4 2638 17.00 above
# 4 1 2855 4.00 equal
# 5 0 2196 3.00 above
# 6 0 2630 91.00 above
# 7 2 2714 39.00 below
# 8 3 2472 0.51 equal
# 9 0 1090 0.12 below
关于python - 对于特定类别,计算每行高于或低于平均值的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69147780/