获取分类变量的类别列表(Python Pandas)

Posted

技术标签:

【中文标题】获取分类变量的类别列表(Python Pandas)【英文标题】:Get a list of categories of categorical variable (Python Pandas) 【发布时间】:2019-02-23 13:49:20 【问题描述】:

我有一个 pandas DataFrame,其中有一列代表一个分类变量。如何获取类别列表?我在列上尝试了 .values ,但没有返回唯一级别。

谢谢!

【问题讨论】:

pd.unique(col_name) 【参考方案1】:

我认为需要Series.cat.categoriesunique

np.random.seed(1245)

a = ['No', 'Yes', 'Maybe']
df = pd.DataFrame(np.random.choice(a, size=(10, 3)), columns=['Col1','Col2','Col3'])
df['Col1'] = pd.Categorical(df['Col1'])

print (df.dtypes)
Col1    category
Col2      object
Col3      object
dtype: object

print (df['Col1'].cat.categories)
Index(['Maybe', 'No', 'Yes'], dtype='object')

print (df['Col2'].unique())
['Yes' 'Maybe' 'No']

print (df['Col1'].unique())
[Maybe, No, Yes]
Categories (3, object): [Maybe, No, Yes]

【讨论】:

您可以拥有系列中不存在的类别,因此cat.categoriesunique 更安全。例如,pd.Series(pd.Categorical(['a','b'], categories=['a','b','c'])).cat.categories.tolist() 给你['a', 'b', 'c']【参考方案2】:

您也可以使用 value_counts(),但它仅在您将其与列名一起使用时才有效,您也可以使用该列名来获取每个类别的计数。 示例:

dataframe['Columnn name'].value_counts()

或者,如果您想要变量中的类别总数,您可以这样做,

dataframe['Columnn name'].value_counts().count()

【讨论】:

【参考方案3】:

尝试执行以下代码。

List_Of_Categories_In_Column=list(df['Categorical Column Name'].value_counts().index)

【讨论】:

【参考方案4】:

df.column name.value_counts() #查看列中每个类别的值总数

df.column name.value_counts().index # 只查看类别名称

df.column name .value_counts().count() #查看一列有多少个类别(只有数字)

【讨论】:

以上是关于获取分类变量的类别列表(Python Pandas)的主要内容,如果未能解决你的问题,请参考以下文章

Python pandas:如何在 2 个不同类别之间更改分类值

Python数据挖掘—回归—贝叶斯分类

php 从分类中获取类别列表

php 获取类别列表,排除未分类

Python:构建 Pandas 数据框的对象

Python Pandas:分类变量的Group BY函数