1

各行にユーザーIDがある巨大なCSVがあります。セット全体で最も頻繁に表示されるUserIDを見つけたいと思います。

後で個々のレコードを操作するのに最も役立つと思うのでDictReader、モジュールからcsvを読み取るために使用しました。csv

作成した辞書でキー「UserID」のさまざまな値を検索して、最も頻繁な値を見つける方法が見つかりません。

どんな助けでも大歓迎です!

これまでの私のコードは次のとおりです。

import csv
from time import time
start = time()
myData=open("myCSV.csv", "rb" )
csvReader= csv.DictReader(myData)

# declare counters
volume = 0

#sum all data usage
for data in csvReader:
    volume += float(data["volume_total"])
print "Total : %f" %volume

#calculate processing time
elapsed = time() - start
print "Processing time: %f seconds" %elapsed
4

2 に答える 2

0

または、numpy loadtxt を使用することもできます

  from numpy import loadtxt
  a,b = loadtxt("filename.csv", usecols=(0,1), unpack=True)

次に、リスト内包表記を使用してdictを作成できます(高速です!)

  a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
  d = {x:a.count(x) for x in a}

この質問を参照してください。

最も頻繁に使用されるユーザー ID を見つけるには:

  user_id_list = d.keys()
  frequency = d.values()
  index = frequency.index(max(frequency))
  famous_user = user_id_list[index]
于 2012-11-24T19:00:37.573 に答える
0

UserId となるキーと遭遇数となる値を使用して、ディクショナリ「usersOccurences」を作成します。csv ファイルのすべてのレコードに対して DictReader を反復処理します。

見つかった UserId ごとに、usersOccurences ディクショナリで対応するオカレンス番号を見つけてインクリメントします。現在の UserId がこのディクショナリに存在しない場合は、開始番号 1 から追加します。

繰り返しの後、usersOccurences ディクショナリを調べて、最大数を持つ UserId を見つけることができます。

于 2012-11-24T17:49:42.017 に答える