So erzeugen Sie eine wortfrequenz-Histogramm, wo die bars sind, geordnet nach Ihrer Höhe
Ich habe eine lange Liste von Wörtern, und ich will erzeugen Sie ein Histogramm für die Häufigkeit der jedes Wort in meiner Liste. Ich war in der Lage zu tun, die in den folgenden code:
import csv
from collections import Counter
import numpy as np
word_list = ['A','A','B','B','A','C','C','C','C']
counts = Counter(merged)
labels, values = zip(*counts.items())
indexes = np.arange(len(labels))
plt.bar(indexes, values)
plt.show()
Es jedoch nicht, die Anzeige der Lagerplätze durch Rang (d.h. von der Frequenz, also höchste Frequenz ist erste bin, der auf der linken Seite und so weiter), obwohl, wenn ich drucken counts
er bestellt Sie für mich Counter({'C': 4, 'A': 3, 'B': 2})
. Wie könnte ich das erreichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erreichen Sie die gewünschte Leistung, indem Sie die Sortierung zuerst Ihre Daten und übergeben Sie dann die bestellte arrays zu
bar
; unten verwende ichnumpy.argsort
für, die. Der plot sieht dann wie folgt aus (ich habe auch die Etiketten an der bar):Hier ist der code, der erzeugt den plot mit ein paar inline-Kommentare:
In Fall, dass Sie in den plot nur die ersten
n
Einträge, ersetzen Sie die Zeiledurch
Im obigen Fall
counts
wäre dannfür
n = 2
.Wenn Sie wollen, entfernen Sie den Rahmen von der plot und beschriften Sie die Balken können Sie direkt überprüfen,dieser Beitrag.
counts.most_common(20)
d.h.counts = Counter(word_list).most_common(20)
.most_common
gibt eine Liste, nicht ein Wörterbuch, ich aktualisiert die post. Alsodict(Counter(word_list).most_common(20))
sollte die Arbeit jetzt für Sie.