【问题标题】:Python: Count occurrences of each number in a python data-framePython:计算python数据框中每个数字的出现次数
【发布时间】:2021-05-22 19:20:17
【问题描述】:

我有一个用于项集挖掘的数据集。我想找到每个唯一数字的出现次数,即候选 1 项集。

数据的形状是 3000x1。我无法弄清楚如何计算独特的出现次数。

存储数据的不同值列表。

使用ndarray distinct,如何找到数据集中每个项目的频率?

更新 在@jojo 的帮助下得到了解决方案。

df = pd.read_csv('sample.csv', sep=',')
all_values = dataset.values.ravel()
notNan = np.logical_not(np.isnan(all_values))
distinct, counts = np.unique(all_values[notNan], return_counts=True)

【问题讨论】:

    标签: python pandas dataframe data-mining


    【解决方案1】:

    首先请注意,如果您有一个普通的 csv(逗号分隔),您应该使用sep=','。这是因为'\t' 假定 TAB 作为分隔符。

    另外,请考虑在 read_csv 调用中添加 header=None,否则第一行将被视为数据框中的列名。

    最后,由于列的长度不同,所有列中的nan 值都比最长列短,要删除它们,您可以在获取唯一值时屏蔽所有nan 值。类似于values[np.logical_not(np.isnan(values))],但见下文。


    把东西放在一起:

    dataset = pd.read_csv('dataset.csv', sep=',', header=None)
    
    all_values = dataset.values.ravel()
    

    您可以直接使用unique from numpy 来获取每个唯一值的计数:

    import numpy as np
    notNan = np.logical_not(np.isnan(all_values))
    distinct, counts = np.unique(all_values[notNan], return_counts=True)
    

    如果您关心频率,只需将counts 除以all_values[notNan].size


    这里有一个简单的例子(来自上面链接的文档)来强调 np.unique 的工作原理:

    >>> import numpy as np
    >>> a = np.array([1, 2, 6, 4, 2, 3, 2])
    >>> values, counts = np.unique(a, return_counts=True)
    >>> values  # list of all unique values in a
    array([1, 2, 3, 4, 6])
    >>> counts  # count of the occurrences of each value in values
    array([1, 3, 1, 1, 1])
    

    【讨论】:

    • 谢谢,我根据您的建议更新了我的代码。请查看我对帖子所做的更新 1。你能解释一下输出吗?不同的数组正在计算一些数字,但这些数字肯定不是唯一值,因为它们正在重复。正确的?计数数组也是1。请详细说明。
    • 谢谢。但是正如您所看到的,事件 distint 正在返回具有多个 0 和 10 等的数组。所以这实际上并不是唯一的。这可能是什么原因?请注意,我的数据集是 3000x1。我还添加了一个 excel 屏幕截图以使可视化清晰。
    • 是的。我想分别处理它们。我更新了代码,但出现错误。请参考update-2。
    • 我想在整个 csv 中获取唯一值。例如,计算整个数据集中第 23 项的出现次数等等。
    • 最终我想返回一个包含两列的表。第一个是唯一的项目集值,下一列包含该项目集在整个 csv 中的总出现次数。选择 pandas 没有特别的理由,我也可以随意使用其他数据加载器。
    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 2015-09-06
    • 2015-09-09
    • 2021-02-25
    • 1970-01-01
    • 2013-09-08
    • 2019-10-12
    • 2018-08-25
    相关资源
    最近更新 更多