使用python查找CSV fi列中最常见的值

2024-05-17 06:33:31 发布

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

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

The above code is my attempt to find the most common values in the column of a csv file. The code is incomplete and I've been stuck for hours to get this right.

我对python非常陌生,甚至连语法都不熟悉。我们将非常感谢所有的帮助。在


Tags: thetoinforlennamesiscode
2条回答

当实际需要分别计算每个值时,只使用一个count变量。因此,虽然您的总体方法非常好,迭代您似乎从CSV文件填充的字典,但您需要设置另一个字典来保存每个值的计数。因为您不能使用^{}或{a2}中的任何好方法,所以可以执行如下操作

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有一个条目,包含该列中的所有值作为键,它们的计数作为值。现在您只需要按值对这些值进行排序,然后输出最常见的值。在

这段代码就能做到

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

首先,它打开文件,然后创建一个generator expression来检索csv中的第一列。在

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

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

相关问题 更多 >