2017-12-09 16 views
-3

私は20の最も一般的な名前とその頻度を国で見つけたいと思っています。Python:最も一般的な文字列を見つける最も効率的な方法

私は、100都市にすべての住民の名前のリストを持っていると言います。各リストには多くの名前が含まれている場合があります。約100個のリストを話し、それぞれのリストは1000個の文字列で表現します。

全国で最も一般的な20の名前とその頻度を取得するには、効率的なの方法は何ですか?このためpandascollectionモジュール

  1. 用途:

    これは私が同じディレクトリにあるテキストファイル内の各都市を得たと仮定すると、始まった方向です。

  2. 各city.txtを繰り返して文字列にします。次に、Counterモジュールを使用してコレクションに変換し、次にto_dictを使用してDataFrameに変換します。
  3. 各データフレームと前のデータフレームとを結合します。
  4. 次に、DataFrameをグループ化してカウント(*)します。

しかし、DataFrameが大きくなりすぎる可能性があるので、この方法が機能しない可能性があります。

これについてのアドバイスをお聞きしたいと思います。ありがとうございました。ここで

+1

あなたはパンダは '()'このためvalue_countsを持ってcollections' – PythEch

+0

'から' Counter'クラスを使用することができます。 –

+0

ここでどのくらいのデータを話していますか? –

答えて

1

はサンプルコードです:

import os 
from collections import Counter 

cities = [i for i in os.listdir(".") if i.endswith(".txt")] 

d = Counter()  

for file in cities: 
    with open(file) as f: 
     # Adjust the code below to put the strings in a list 
     data = f.read().split(",") 
     d.update(Counter(data)) 

out = d.most_common(10) 
print(out) 
+0

これが最速の方法ですか?より速いものはありますか? – Smithnson

+0

@Smithnsonはいこれはおそらく、Pythonを使用する場合の最も速い方法です。 –

0

あなたはまた、私は同様の目的のために以下のコードを使用していた、NLTKライブラリを使用することができます。

from nltk import FreqDist 
fd = FreqDist(text)  
top_20 = fd.most_commmon(20)  # it's done, you got top 20 tokens :) 
関連する問題