Denken Sie bei einer Liste von Elementen daran, dass der Modus der Liste das Element ist, das am häufigsten auftritt.
Ich möchte wissen, wie man eine Funktion erstellt, die den Modus einer Liste findet, aber eine Meldung anzeigt, wenn die Liste keinen Modus hat (z. B. werden alle Elemente in der Liste nur einmal angezeigt). Ich möchte diese Funktion erstellen, ohne Funktionen zu importieren. Ich versuche, meine eigene Funktion von Grund auf neu zu erstellen.
assert(mode[1, 1, 1]) == None
undassert(mode[1, 2, 3, 4]) == None
. Damit eine Zahl eine istmode
, muss sie öfter vorkommen als mindestens eine andere Zahl in der Liste, und sie darf nicht die einzige Zahl in der Liste sein.Antworten:
Sie können die
max
Funktion und eine Taste verwenden. Schauen Sie sich die Python Max-Funktion mit 'key' und Lambda-Ausdruck an .quelle
O(n**2)
. Macht es?max(lst, key=lst.count)
. (Und ich würde wirklich keine Liste nennenlist
.)a = [22, 33, 11, 22, 11]; print(max(set(a), key=a.count))
kehrt zurück11
. Wird immer der Minimalmodus zurückgegeben? Und wenn ja, warum?Sie können das
Counter
imcollections
Paket enthaltene verwenden, das einemode
-esque-Funktion hatHinweis: Counter ist neu in Python 2.7 und in früheren Versionen nicht verfügbar.
quelle
Counter(your_list_in_here).most_common(1)[0][0]
. Wenn es mehr als einen Modus gibt, wird ein beliebiger zurückgegeben.n
am häufigstenmodes
. Wenn Counter (your_list_in_here) .most_common (1) [0] [0] Ihnen den ersten Modus bietet, wie würden Sie einen anderen am häufigsten verwendeten erhaltenmode
? Ersetzen Sie einfach den letzten0
durch1
? Man kann eine Funktion machen, um diemode
nach ihren Wünschen anzupassen ..Python 3.4 enthält die Methode
statistics.mode
, daher ist es einfach:Sie können jede Art von Elementen in der Liste haben, nicht nur numerische:
quelle
multimode
, das mehrere Modi zurückgibt, wenn es mehr als einen gibt.Ein Blatt von einer Statistiksoftware nehmen, nämlich SciPy und MATLAB , geben diese nur den kleinsten häufigsten Wert zurück. Wenn also zwei Werte gleich häufig auftreten, werden die kleinsten davon zurückgegeben. Hoffentlich hilft ein Beispiel:
Gibt es einen Grund, warum Sie dieser Konvention nicht folgen können?
quelle
Es gibt viele einfache Möglichkeiten, den Modus einer Liste in Python zu finden, z.
Oder Sie können das Maximum anhand seiner Anzahl ermitteln
Das Problem bei diesen beiden Methoden ist, dass sie nicht mit mehreren Modi funktionieren. Der erste gibt einen Fehler zurück, während der zweite den ersten Modus zurückgibt.
Um die Modi eines Sets zu finden, können Sie folgende Funktion verwenden:
quelle
Wenn Sie die Community-Antwort erweitern, die nicht funktioniert, wenn die Liste leer ist, finden Sie hier den Arbeitscode für den Modus:
quelle
Falls Sie an den kleinsten, größten oder allen Modi interessiert sind:
quelle
Ich habe diese praktische Funktion geschrieben, um den Modus zu finden.
quelle
Kurz, aber irgendwie hässlich:
Mit einem Wörterbuch etwas weniger hässlich:
quelle
Etwas länger, kann jedoch mehrere Modi haben und Zeichenfolgen mit den meisten Zählungen oder einer Mischung von Datentypen erhalten.
quelle
Damit eine Zahl eine ist
mode
, muss sie öfter vorkommen als mindestens eine andere Zahl in der Liste, und sie darf nicht die einzige Zahl in der Liste sein. Also habe ich die Antwort von @ mathwizurd (um diedifference
Methode zu verwenden) wie folgt überarbeitet :Diese Tests bestehen erfolgreich:
quelle
Warum nicht einfach
Dies hat nicht einige Fehlerprüfungen, die es haben sollte, aber es findet den Modus ohne Importieren von Funktionen und druckt eine Nachricht, wenn alle Werte nur einmal angezeigt werden. Es werden auch mehrere Elemente erkannt, die dieselbe maximale Anzahl haben, obwohl nicht klar war, ob Sie dies wollten.
quelle
Diese Funktion gibt den Modus oder die Modi einer Funktion zurück, egal wie viele, sowie die Häufigkeit des Modus oder der Modi im Datensatz. Wenn es keinen Modus gibt (dh alle Elemente treten nur einmal auf), gibt die Funktion eine Fehlerzeichenfolge zurück. Dies ähnelt der obigen Funktion von A_nagpal, ist jedoch meiner bescheidenen Meinung nach vollständiger, und ich denke, es ist für alle Python-Neulinge (wie Ihre wirklich), die diese Frage lesen, einfacher zu verstehen.
quelle
return 'There is no mode for this data set. All values occur only once.'
kann in eine Fehlermeldung umgewandelt werden , die lautettraceback
: "if-Bedingung: Nächste Zeile mit Einzug erhöht ValueError (" Für diesen Datensatz gibt es keinen Modus. Alle Werte treten nur einmal auf. ") Hier ist eine Liste verschiedener Arten von Fehler, die Sie auslösen können.Dies gibt alle Modi zurück:
quelle
Einfacher Code, der den Modus der Liste ohne Importe findet:
Bei mehreren Modi sollte der minimale Knoten zurückgegeben werden.
quelle
quelle
quelle
Hier ist eine einfache Funktion, die den ersten Modus abruft, der in einer Liste auftritt. Es erstellt ein Wörterbuch mit den Listenelementen als Schlüssel und Anzahl der Vorkommen und liest dann die Diktatwerte, um den Modus zu erhalten.
quelle
Wenn Sie einen klaren Ansatz wünschen, der für den Unterricht nützlich ist und nur Listen und Wörterbücher nach Verständnis verwendet, können Sie Folgendes tun:
quelle
quelle
So finden Sie Mittelwert, Median und Modus einer Liste:
quelle
quelle
Für diejenigen, die nach dem Minimalmodus suchen, z. B.: Fall einer bimodalen Verteilung mit numpy.
quelle
Der Modus eines Datensatzes ist / sind die Mitglieder , die am häufigsten im Satz vorkommen. Wenn zwei Mitglieder am häufigsten mit der gleichen Häufigkeit angezeigt werden, haben die Daten zwei Modi. Das nennt man bimodal .
Wenn es mehr als zwei Modi gibt, werden die Daten als multimodal bezeichnet . Wenn alle Mitglieder im Datensatz gleich oft angezeigt werden, hat der Datensatz überhaupt keinen Modus .Die folgende Funktion
modes()
kann verwendet werden, um Modi in einer bestimmten Datenliste zu finden :Ausgabe:
Wenn wir keine Funktion aus diesen Paketen importieren
numpy
oderpandas
aufrufen möchten, kann die Funktion wie folgt geschrieben werden, um dieselbe Ausgabe zu erhaltenmodes()
:quelle