我有一个数据集

category
cat a
cat b
cat a

我希望能够返回(显示唯一值和频率)

category   freq 
cat a       2
cat b       1

当前回答

df.category.value_counts()

这一小行代码将提供您想要的输出。

如果列名中有空格,则可以使用

df['category'].value_counts()

其他回答

your data:

|category|
cat a
cat b
cat a

解决方案:

 df['freq'] = df.groupby('category')['category'].transform('count')
 df =  df.drop_duplicates()

我相信这应该工作的任何DataFrame列列表。

def column_list(x):
    column_list_df = []
    for col_name in x.columns:
        y = col_name, len(x[col_name].unique())
        column_list_df.append(y)
return pd.DataFrame(column_list_df)

column_list_df.rename(columns={0: "Feature", 1: "Value_count"})

函数“column_list”检查列名,然后检查每个列值的唯一性。

df.category.value_counts()

这一小行代码将提供您想要的输出。

如果列名中有空格,则可以使用

df['category'].value_counts()
df.apply(pd.value_counts).fillna(0)

value_counts -返回包含唯一值计数的对象

在每一列中应用计数频率。如果你设置axis=1,你会得到每一行的频率

Fillna(0) -使输出更花哨。更改NaN为0

n_values = data.income.value_counts()

第一个唯一值计数

n_at_most_50k = n_values[0]

第二个唯一值计数

n_greater_50k = n_values[1]

n_values

输出:

<=50K    34014
>50K     11208

Name: income, dtype: int64

输出:

n_greater_50k,n_at_most_50k:-
(11208, 34014)