簡體   English   中英

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

[英]Using python to find the most common value(s) in the column of CSV file

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可能很長,這可能會導致內存問題。 使用時,生成器會“生成”該項目。

然后,它使用collections.Counter對象對列表中最常見的值進行計數,並獲取第一個元素的值。 您可以逐步嘗試代碼以查看每個步驟的輸出。

當您實際上需要分別對每個值進行計數時,只使用一個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個最常見的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM