Я работаю через Wes Python для анализа данных, и у меня возникла странная проблема, которая не рассматривается в книге.
В приведенном ниже коде, основываясь на стр. 199 его книги, я создаю dataframe, а затем pd.cut()
создаю cat_obj
. Согласно книге, cat_obj
есть
"специальный категориальный объект. Вы можете рассматривать его как массив строки, указывающие имя бина; внутри он содержит массив уровней указывая названия отдельных категорий вместе с маркировкой для возрастает в атрибуте меток"
Awesome! Однако, если я использую тот же самый код pd.cut()
(в [5] ниже), чтобы создать новый столбец фрейма данных (называемый df['cat']
), этот столбец не рассматривается как специальная категориальная переменная, а просто как обычный pandas.
Как же создать столбец в фрейме данных, который рассматривается как категориальная переменная?
In [4]:
import pandas as pd
raw_data = {'name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze', 'Jacon', 'Ryaner', 'Sone', 'Sloan', 'Piger', 'Riani', 'Ali'],
'score': [25, 94, 57, 62, 70, 25, 94, 57, 62, 70, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['name', 'score'])
bins = [0, 25, 50, 75, 100]
group_names = ['Low', 'Okay', 'Good', 'Great']
In [5]:
cat_obj = pd.cut(df['score'], bins, labels=group_names)
df['cat'] = pd.cut(df['score'], bins, labels=group_names)
In [7]:
type(cat_obj)
Out[7]:
pandas.core.categorical.Categorical
In [8]:
type(df['cat'])
Out[8]:
pandas.core.series.Series