2015-04-27 22 views
8

Pandas veri dosyasında bir sütunda metin incelemeleri var ve bunların frekans sayımlarıyla (tüm sütunda - tek hücreli DEĞİL) en sık kullanılan sözcükleri saymak istiyorum. Bir yaklaşım, her satırda yinelenen bir sayaç kullanarak kelimeleri saymaktır. Daha iyi bir alternatif var mı? Temsili veriler. sana istediğini verecekDataframe Pandas içinde en sık 100 kelime arasında sayım sayısı

0 a heartening tale of small victories and endu 
1 no sophomore slump for director sam mendes w 
2 if you are an actor who can relate to the sea 
3 it's this memory-as-identity obviation that g 
4 boyd's screenplay (co-written with guardian 
+2

Verileri genellikle tablo olarak değil, resim olarak göndermek yararlıdır. – Zero

+0

Öneri için teşekkürler John, bir tablo yapmak için html kullanmayı denedim, ancak bu dint çalışır, bu yüzden ben bir görüntü gönderdim :(. –

+1

Veri her zaman eksiksiz olması gerekmez. Çoğu durumda Temsilcisi verileri ne – Zero

cevap

15
Counter(" ".join(df["text"]).split()).most_common(100) 

im oldukça emin sen de olabilir @ Joran çözümüyle birlikte

+1

Bu, karakter sayımlarını değil, kelime sayımını verir mi? – Zero

+0

whoops sabit: P John Galt? –

+0

Eh, hala düşünmek kendim dışarıda;) orada zarafet için +1! – Zero

14

(eğer most_common çağırmadan önce sayaç sonucundan olmayan bazı kelimeler çıkarmanız gerekebilir) çok sayıda metin için series.value_counts kullanmak/satır

pd.Series(' '.join(df['text']).lower().split()).value_counts()[:100] 
Sen kriterler series.value_counts dan bulur

iki kez görünüyor (2X) daha hızlı Counter metodu

Film İncelemeleri için 3000 satırlık, 400K karakter ve 70k kelime toplamı.

In [448]: %timeit Counter(" ".join(df.text).lower().split()).most_common(100) 
10 loops, best of 3: 44.2 ms per loop 

In [449]: %timeit pd.Series(' '.join(df.text).lower().split()).value_counts()[:100] 
10 loops, best of 3: 27.1 ms per loop 
+0

Bu biraz şaşırtıcı, bir (I) yinelenen düşünürdüm ve Bir Sayacı güncellemek, bir dizinin oluşturulmasına izin vermeden, dize manipülasyonunu yapmaktan daha hızlı olacaktır. Ancak, bölme yerine güncellemenin yavaş kısım olduğu ortaya çıkıyor ... (ve pandalar düz bir dict yerine cython/klib kullanırlar). –

İlgili konular