当前位置: 首页 > 知识库问答 >
问题:

如何计算数据帧中每列的唯一性?

昌和悦
2023-03-14

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

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)

如何为唯一值实现相同的功能?

共有3个答案

赵炯
2023-03-14

这并不完全是您要求的,但可能有助于您的分析。

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()

__

>>> diversity_percentage(df, selected_columns)
operationdate                0.002803
payment                      1.076414
description                 16.933901
customer_id                 17.536581
customer_name               48.895554
customer_email              62.129282
token                       68.290632
id                         100.000000
transactionid              100.000000
dtype: float64

但是,您始终可以直接返回diversity_系列,并仅获得计数。

缪征
2023-03-14

您可以使用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\u counts执行类似的操作:

>>> pd.DataFrame({col: pd.value_counts(df[col]) for col in df}).fillna(0)
     0  1    2
0  0.0  1  0.0
1  3.0  1  1.0
2  1.0  2  3.0
全流觞
2023-03-14

可以使用名为“nunique()”的函数获取所有列的唯一计数

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

count=df.nunique()
print(count)
0    2
1    3
2    2
dtype: int64
 类似资料:
  • 我知道这不是一个人应该在这里做的事情,尽管我不知道否则我怎么能问这个问题。 我的目标是统计有多少行具有相同的第一预测值(购买、维护等),但评级不同。 我的尝试是通过第一列来计算,然后计算我得到的不同评分,这将是非常棒的。 一个重要的假设是,如果两行相同,则它们已被预先擦除。因此,可以找到不同等级的行,但没有相同的行。 在我的示例中,第1行和第3行是相同的,因此其中一行被擦除,没有问题。然而,对于其

  • 假设我有以下数据帧: 我想计算每个的不同值的数量。它应产生以下结果: 我该怎么做?

  • 我想在数据的每一列中找到的数量,这样,如果某一列的少于某个阈值,我就可以删除该列。我看了一下,但没有找到任何功能。对我来说太慢了,因为大多数值都是不同的,而且我只对计数感兴趣。

  • 我有一个85列的大数据框。丢失的数据已编码为。我的目标是获得每列中缺少的数据量。所以我写了一个for循环来创建一个列表来获取金额。但它不起作用。 以下是我的代码: 我尝试使用循环中的代码,通过将更改为某一列的名称,来生成该列缺少的值的数量,然后代码运行并给出该列缺少的数据的数量。 因此,我不知道如何更正for循环代码。有人能帮我吗?我非常感谢你的帮助。

  • 本文向大家介绍如何在R数据帧的列中查找唯一值?,包括了如何在R数据帧的列中查找唯一值?的使用技巧和注意事项,需要的朋友参考一下 分类变量具有多个类别,但是如果数据集很大且类别也很大,那么识别它们就会有些困难。因此,我们可以为分类变量提取唯一值,这将有助于我们轻松识别分类变量的类别。我们可以通过对R数据帧的每一列使用唯一的方法来做到这一点。 示例 请看以下数据帧- 在列x1中找到唯一值- 在列x2中

  • 情况: 两个数据帧(df1和df2)具有相同的三个索引,例如“A”、“B”、“C”。df1和df2的列数不同。df1和df2中的所有单元格都填充了float类型的数据。 DF1: DF2: 目标: 从df2中选择的列(例如“BBB”)与df1的每列相加后,结果应存储在新的数据帧(df_new)中。df_new的格式应为df1(列数和行数),并具有与df1相同的列名和索引。 new_df: 我的做法