使用 python 在 CSV 文件的列中查找最常见的值


for each in column_names:
    print each + ':'
    for L in range(1,len(row_list)):
        each_column = columns[each][L]
        for i in each_column:
            if i == i.index(i)+1:
                count+=1
                mode=i

上面的代码是我尝试在 csv 文件列中找到最常见的值。代码不完整,我已经卡了几个小时才能做到这一点。

我对 python 很陌生,甚至语法对我来说都不熟悉。所有的帮助将不胜感激。

这段代码可以解决问题

  import csv
  from collections import Counter
  filename='test.csv'
  with open(filename, 'r') as f:
      column = (row[0] for row in csv.reader(f))
      print("Most frequent value: {0}".format(Counter(column).most_common()[0][0]))

首先,它会打开您的文件,然后创建一个生成器表达式来检索 csv 中的第一列。

不将其作为列表的原因是csv可能很长,这可能会导致内存问题。生成器会在您使用项目时"生成"该项目。

然后它使用集合。计数器对象,用于计算列表中最常见的值并获取第一个元素的值。您可以逐步尝试代码以查看每个步骤的输出。

当您实际需要单独计算每个值时,您只使用一个count变量。因此,虽然您的整体方法非常好,但遍历您似乎已从 CSV 文件填充的字典,但您需要设置另一个字典来保存每个值的计数。由于您不能使用collections.Countercollections.defaultdict中的任何好方法,因此您可以执行以下操作

counts = {}
for each in column_names:
    count = {}
    print each + ':'
    for row in columns[each]:
        count[row] = count.get(row,0) + 1
    counts[each] = count

之后,您将拥有一个字典counts,每个column_name一个条目,包含该列中的所有值作为键,并将其计数为值。现在,您只需要按值对其进行排序并输出n个最常见的值。

相关内容

  • 没有找到相关文章

最新更新