如何计算熊猫的分类特征数量?

时间:2019-07-26 05:42:41

标签: pandas categorical-data dtype

我有一个pd.DataFrame,其中包含不同的dtypes列。我想要每种类型的列数。我使用的是熊猫0.24.2。

我尝试过:

    dataframe.dtypes.value_counts()

它在其他dtypes (float64, object, int64)上也可以正常工作,但是出于一个奇怪的原因,它没有汇总“类别”功能,因此我为每个类别获得了不同的计数(好像它们将被计为dtypes)。

我也尝试过:

    dataframe.dtypes.groupby(by=dataframe.dtypes).agg(['count'])

但这会引起

  

TypeError:数据类型无法理解。

可复制示例:

import pandas as pd

df = pd.DataFrame([['A','a',1,10], ['B','b',2,20], ['C','c',3,30]], columns = ['col_1','col_2','col_3','col_4'])

df['col_1'] = df['col_1'].astype('category')
df['col_2'] = df['col_2'].astype('category')

print(df.dtypes.value_counts())

预期结果:

    int64       2
    category    2
    dtype: int64

实际结果:

    int64       2
    category    1
    category    1
    dtype: int64

2 个答案:

答案 0 :(得分:4)

使用DataFrame.get_dtype_counts

print (df.get_dtype_counts())
category    2
int64       2
dtype: int64

但是如果使用最新版本的熊猫,则建议您采用以下解决方案:

  

从0.25.0版开始不推荐使用。

     

改为使用.dtypes.value_counts()。

答案 1 :(得分:3)

@jezrael提到它已在0.25.0中弃用,dtypes.value_counts(0)会给两个category实体,所以要解决这个问题:

print(df.dtypes.astype(str).value_counts())

输出:

int64       2
category    2
dtype: int64