Я пытаюсь преобразовать все значения в моем наборе данных в категориальные значения, я хочу, чтобы все числовые значения были классифицированы как низкие, средние или высокие в зависимости от их значений квантилей.
Таким образом, если значение меньше 25% серии, оно будет преобразовано в «Низкое»
Я пытался использовать assign, затем применил функцию, которую я предоставляю:
def turn_into_categorical(row):
quantile_level = [.25, .5, .75]
for r in row:
cut = refugees_T_F_V_P_full_data.r.quantile(quantile_level)
if r >= cut[.75]:
return "High"
elif r >= cut[.25] and r < cut[0.75]:
return "Average"
else:
return "Low"
refugees_T_F_V_P_full_data.apply(turn_into_categorical, axis = 1)
Однако код не работает хорошо. Я также попробовал через iterrows, но мне интересно, есть ли более быстрый способ сделать это?
Вот данные, которые я хотел преобразовать, все числа, кроме года и месяца, должны быть классифицированы как Низкие, Средние, Высокие, в зависимости от их квантильного значения.
Year Month Central Equatoria Eastern Equatoria Gogrial Jonglei
0 2014 10 6.0 1.0 0.0 3.0
1 2014 11 4.0 3.0 0.0 12.0
2 2014 12 3.0 5.0 0.0 11.0
3 2015 1 7.0 2.0 0.0 4.0
4 2015 2 5.0 5.0 0.0 10.0
5 2015 3 7.0 5.0 0.0 8.0
6 2015 4 4.0 1.0 0.0 6.0
7 2015 5 5.0 0.0 0.0 7.0
8 2015 6 4.0 1.0 0.0 6.0
9 2015 7 15.0 2.0 0.0 9.0
10 2015 8 10.0 7.0 0.0 9.0
11 2015 9 12.0 0.0 0.0 8.0
12 2015 10 12.0 0.0 0.0 5.0
13 2015 11 8.0 5.0 0.0 10.0
14 2015 12 5.0 7.0 0.0 3.0
Ожидаемый результат: (пример)
Year Month Central Equatoria Eastern Equatoria Gogrial Jonglei
0 2014 10 High Medium Low Medium
1 2014 11 Low Medium Low high