У меня есть серия панд, подобная этой:
0 1787
1 4789
2 1350
3 1476
4 0
5 747
6 307
7 147
8 221
9 -88
10 9374
11 264
12 1109
13 502
14 360
15 194
16 4073
17 2317
18 -221
20 0
21 16
22 106
29 105
30 4189
31 171
32 42
Я хочу создать 4 переменные с горячим кодированием, которые указывают, какое значение в строке находится на каком квартиле, разделяя ряд на 4 квартиля.Это будет что-то вроде этого:
0 1787 Q1 Q2 Q3 Q4
1 4789 0 0 0 0
2 1350 0 0 0 1
3 1476 1 0 0 0
4 0 0 1 0 0
5 747 0 0 1 0
6 307 1 0 1 0
7 147 0 1 0 1
Я знаю, что числа не совсем совпадают, это просто для наглядного примера желаемого результата.
Я пробовал это:
series.quantile[0.25, 0.5, 0.75, 1]
Но это только выкрикивает эти четыре значения:
0.25 67
0.50 442.5
0.75 1477.75
1.00 71188
Я также пробовал это:
series.apply(lambda x : series.quantile(x, 'lower'))
Однако это приводит к следующей ошибке:
ValueError: percentiles should all be in the interval [0, 1]. Try 17.87 instead
.
Как лучше всего достичь моей цели ??
Заранее большое спасибо