2016-04-28 3 views
0

Ich habe eine sehr große Textdateien. Ich möchte es analysieren und diese Analysen aufzeichnen. Eine Analyse, die ich gemacht habe, ist, die 5 häufigsten Wörter zu finden. dieseFrequenzen in einer Textdatei und die Schaffung eines Kreisdiagramm

 f = open('story.txt','r') 
     words = [x for y in [l.split() for l in f.readlines()] for x in y] 
     data = sorted([(w, words.count(w)) for w in set(words)], key = lambda x:x[1], reverse=True)[:5] 

    print data 

    most_words = [x[0] for x in data] 
    times_used = [int(x[1]) for x in data] 
    print most_words 
    print times_used 

Displays:

[('the', 4826), ('of', 2276), ('and', 1825), ('a', 1761), ('to', 1693)] 
['the', 'of', 'and', 'a', 'to'] 
[4826, 2276, 1825, 1761, 1693] 

Da es sich um eine so große Datei, dauert es eine Weile, um zu analysieren. Zuerst wollte ich wissen, ob es einen Weg gibt, dies viel schneller zu machen? Zweitens wollte ich ein Tortendiagramm mit diesen Daten erstellen. Ich habe es geschafft, herauszufinden, wie man aus diesen Daten ein Balkendiagramm macht, aber ein Tortendiagramm scheint mir zu entgehen. Jede Hilfe wäre großartig!

Noch einmal, wenn es eine Möglichkeit, durch eine große Textdatei zu beschleunigen ist die Suche und nicht so viel RAM in der proccess verwenden, kann ich meinen Computer hart laufen zu hören WHE ich diese laufen. Vielen Dank!

.. Oder wenn es irgendwelche Beiträge ist es, Ihnen helfen kann glauben, lass es mich wissen, ich habe mehr als eine Stunde für Lösungen auf meine Fragen gesucht und beschlossen, meine eigene Frage um Hilfe zu bitten!

Antwort

0

Für das Grundstück Teil Sie es mit dem folgenden Rezept tun können:

import matplotlib.pyplot as plt 

words = [('the', 4826), ('of', 2276), ('and', 1825), ('a', 1761), ('to', 1693)] 
sizes, labels = [i[1] for i in words],[i[0] for i in words] 
plt.pie(sizes, labels=labels,autopct='%1.1i%%') 
plt.show() 

, die dazu führt:

Pie chart in matplotlib for word frequency

Sie andere Argumente geben kann für Farbe, Explosionen und bald. Überprüfen Sie this matplotlib Demo.

Für die Durchführung Teil rate ich Ihnen, einen Blick in diesen Posten zu übernehmen:

Python program that finds most frequent word in a .txt file, Must print word and its count

@ninjagecko Lösung, die man mir scheint, die schneller sein könnte, aber Sie werden es testen und sehen.

+0

Sie sind genial! Der andere Frequenzzähler funktioniert viel besser und das Tortendiagramm ist großartig! Ich sehe, wo ich meinen Fehler gemacht habe, vielen Dank! – LizardWizard

Verwandte Themen