而不是逐列检查唯一的分类列信息,有一个快速的方法吗?
df.columnA.unique()
df.columnB.unique()
如果我想检查超过100的列,我上面输入的代码不经济。
通过pd.DataFrame.select_dtypes
选择分类列。然后使用pd.Series.cat.categories
:
cat_cols = df.select_dtypes(include='category').columns
res = {col: df[col].cat.categories for col in cat_cols}
这假设所有类别都用于任何给定的系列。如果不是这种情况,您可以使用pd.Series.unique
:
res = {col: df[col].unique() for col in cat_cols}
行为的差异是documented:
注意:
unique()
的结果并不总是与Series.cat.categories
相同,因为Series.unique()
有几个保证,即它按照外观的顺序返回类别,并且它只包含实际存在的值。
for col in df.columns:
if df[col].dtype == 'object':
print('\nColumn Name:', col,)
print(df[col].value_counts())
我自己找到了解决方案......