Эффективный способ разбить данные на блоки в Python

1

Предположим, у меня есть набор данных с плавающей точкой (x), который может принимать любые значения между 0.0 и 1.0. Я хочу классифицировать данные в пользовательские бункеры, например:

    cat= 0 # the output category
    if x > 0.8 and x<=0.9:
        cat = 1
    if x > 0.7 and x<=0.8:
        cat=2
    if x>0.6 and x<=0.7:
        cat = 3

и т.д. Является ли это наиболее эффективным (с точки зрения количества строк, которые я должен написать) для этого? Я думал, есть ли какой-то способ, когда я просто указываю нижний и верхний диапазоны категории и номера категории и не должен писать столько операторов if.

  • 0
    как насчет pandas.cut ? pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html
  • 0
    Все бункеры одинакового размера?
Показать ещё 1 комментарий
Теги:

2 ответа

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

Я предлагаю вам переместить данные в базу данных pandas

df['data'] = pd.DataFrame(x)
binInterval = [0, 0.6, 0.7, 0.8, 0.9]
binLabels   = [0, 4, 3, 2, 1]
df['binned'] = pd.cut(df['data'], bins = binInterval, labels=binLabels)

см. документацию здесь

0

просто:

categories = [0.6, 0.7, 0.8, 0.9]
cat = [categories[i]<x and categories[i+1]>=x for i in range(0, len(categories)-1)].index(True) + 1

Ещё вопросы

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