Python:计算python数据帧中每个数字的出现次数

时间:2021-02-19 19:12:47

标签: python pandas dataframe data-mining

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

数据的形状是 3000x1。我不知道如何计算唯一出现的次数。

存储数据的区域值列表。

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

更新 在@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)

1 个答案:

答案 0 :(得分:1)

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

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

最后,由于列似乎具有不同的长度,您将在所有列中都有 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])