如何计算pandas数据帧中每列的uniques数?

2024-05-23 22:58:46 发布

您现在位置:Python中文网/ 问答频道 /正文

下面有一个代码,它在数据框的每一列中创建一个缺失值的汇总表。我希望我可以构建一个类似的表来计算唯一值,但是DataFrame没有unique()方法,只有每列独立。在

def missing_values_table(df): 
    mis_val = df.isnull().sum()
    mis_val_percent = 100 * df.isnull().sum()/len(df)
    mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
    mis_val_table_ren_columns = mis_val_table.rename(
    columns = {0 : 'Missing Values', 1 : '% of Total Values'})
    return mis_val_table_ren_columns

(来源:https://stackoverflow.com/a/39734251/7044473

对于唯一值,如何实现相同的目标?在


Tags: columns数据代码dataframedftablevalunique
2条回答

您可以使用pd.unique函数创建一系列唯一的值计数。例如:

>>> df = pd.DataFrame(np.random.randint(0, 3, (4, 3)))
>>> print(df)
   0  1  2
0  2  0  2
1  1  2  1
2  1  2  2
3  1  1  2

>>> pd.Series({col: len(pd.unique(df[col])) for col in df})
0    2
1    3
2    2
dtype: int64

如果您确实希望每个值在每列中出现的次数,可以使用pd.value_counts执行类似的操作:

^{pr2}$

这并不是您所要求的,但可能对您的分析有用。在

def diversity_percentage(df, columns):
    """
    This function returns the number of different elements in each column as a percentage of the total elements in the group.
    A low value indicates there are many repeated elements.
    Example 1: a value of 0 indicates all values are the same.
    Example 2: a value of 100 indicates all values are different.
    """
    diversity = dict()

    for col in columns:
        diversity[col] = len(df[col].unique())

    diversity_series = pd.Series(diversity)
    return (100*diversity_series/len(df)).sort_values()

^{pr2}$

但是,您总是可以直接返回分集系列,并且只会获得计数。在

相关问题 更多 >