Я работаю через Wes's Python для анализа данных, и у меня возникла странная проблема, которая не рассматривается в книге.Категориальные переменные в кадре данных Pandas?
В приведенном ниже коде на основе 199 его книги я создаю dataframe, а затем создаю pd.cut()
для создания cat_obj
. Согласно книге, cat_obj
является
«специальный Категорический объект Вы можете рассматривать его как массив строк с указанием имени бен;. Внутренне он содержит массив уровней с указанием различных названий категорий наряду с маркировкой для данных возрастов в атрибуте меток «
Удивительный! Однако, если я использую тот же самый код pd.cut()
(в [5] ниже), чтобы создать новый столбец кадра данных (называемый df['cat']
), эта колонка не рассматривается как специальная категориальная переменная , а просто как обычная серия панд.
Как же создать столбец в кадре данных, который рассматривается как категориальная переменная?
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
все столбцы DataFrame будут серии, какое поведение вы ищете, что это не достижение? –
Такие вещи, как уровни df ['cat'], не работают, но cat_obj.levels делает – Anton
возможный дубликат [Как создать столбец данных Pandas DataFrame из категориального столбца строки?] (Http://stackoverflow.com/questions/ 15356433/how-to-generate-pandas-dataframe-column-of-category-from-string-column) –