Панды: после использования qcut (data, 3), как найти диапазон квантиля

1

Мои данные выглядят так:

    spread                              CPB%    Bin  
0  0.00000787  0.001270648030495552731893265565   B  
1  0.00000785  0.003821656050955414012738853503   A  
2  0.00000749  0.005821656050955414012738853503   C  
3  0.00000788  0.004821656050955414012738853503   B

Таким образом, я в основном назначил букву A, B или C в соответствии со значением их спреда. Я сделал это с помощью этого кода:

s = (df['spread'] * 10**15).astype(np.int64)
df['Bin'] = pd.qcut(s, 3, labels=list('ABC'))

Что мне нужно сделать сейчас, так это то, что у меня есть 100 спредов (от 0,000001 до 0,0001), и мне нужно знать, попадают ли они в корзину A, B или C. Есть ли способ найти, скажем, "диапазон"? указанного квантиля?

Точнее у меня есть следующие спреды:

      spread
0   0.000100
1   0.000109
2   0.000118
3   0.000127
4   0.000136
5   0.000145

Как я могу узнать, попадают ли они в тот же контейнер, что и ABC, описанный выше? Спасибо

Теги:
pandas

2 ответа

1
Лучший ответ

Я считаю, что вам нужно добавить параметр retbins=True для qcut для интервалов возврата, так что возможно повторно использовать его в cut:

print (df1)
     spread      CPB% Bin
0  0.000008  0.001271   B
1  0.000008  0.003822   A
2  0.000007  0.005822   C
3  0.000008  0.004822   B

print (df2)
     spread
0  0.000008 <-change data sample for match
1  0.000109
2  0.000118
3  0.000127
4  0.000136
5  0.000145

s = (df1['spread'] * 10**15).astype(np.int64)
v,b = pd.qcut(s, 3, labels=list('ABC'),retbins=True)
print (v)
0    B
1    A
2    A
3    C
Name: spread, dtype: category
Categories (3, object): [A < B < C]

print (b)
[7490000000 7849999999 7869999999 7880000000]


s1 = (df2['spread'] * 10**15).astype(np.int64)
df2['new'] = pd.cut(s1, bins=b, labels=v.cat.categories)
print (df2)
     spread  new
0  0.000008    A
1  0.000109  NaN
2  0.000118  NaN
3  0.000127  NaN
4  0.000136  NaN
5  0.000145  NaN
  • 0
    Еще раз спасибо за вашу помощь @jezrael, мне все еще может понадобиться ваша помощь в ближайшие часы: p
  • 0
    @ Viktor.w - хм, я иду домой через час, поэтому думаю, что по прошествии этого времени получу помощь от других пользователей в stackOveflow;)
0

Если вы используете:

pd.qcut(s, 3)

Выходные данные сообщат вам интервалы между корзинами.

Использование ярлыков маскирует это.

  • 0
    Спасибо! И знаете ли вы, как вырезать мой новый столбец, используя те же значения бинов?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню