У меня есть DataFrame, структурированный так:
df = pd.DataFrame([['A', np.random.randint(100)], ['B', np.random.randint(100)], ['B', np.random.randint(100)], ['A', np.random.randint(100)], ['A', np.random.randint(100)], ['B', np.random.randint(100)], ['B', np.random.randint(100)], ['A', np.random.randint(100)], ['A', np.random.randint(100)]], columns = ['type', 'value'])
type value
0 A 14
1 B 7
2 B 84
3 A 53
4 A 83
5 B 90
6 B 78
7 A 60
8 A 23
Я хотел бы получить таблицу, в которой для каждого столбца типа у меня есть:
- Среднее значениезначения, превышающие заданный stats.zscore
- Среднее значение, меньшее заданного stats.zscore
Если бы был один тип, я сделал бы это следующим образом:
outliers_mean = df.loc[np.abs(stats.zscore(df.value))>z_level].value.mean()
not_outliers_mean = df.loc[np.abs(stats.zscore(df.value))<z_level].value.mean()
Однако, поскольку я рассматриваю несколько типов, я не могу этого сделать, потому что stats.zscore должен учитывать совокупность, принадлежащую одному типу.