我正在研究 Wes 的 Python For Data Analysis,我遇到了一个书中没有解决的奇怪问题。
在下面的代码中,基于他的书的第 199 页,我创建了一个数据框,然后使用它pd.cut()
来创建cat_obj
. 根据书,cat_obj
是
“一个特殊的 Categorical 对象。您可以将其视为指示 bin 名称的字符串数组;在内部它包含指示不同类别名称的级别数组以及标签属性中年龄数据的标签”
惊人的!但是,如果我使用完全相同的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