Предположим, у меня есть набор данных с плавающей точкой (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.
Я предлагаю вам переместить данные в базу данных 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)
см. документацию здесь
просто:
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
pandas.cut
? pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html