Étant donné une liste d'éléments, rappelez-vous que le mode de la liste est l'élément qui apparaît le plus souvent.
Je voudrais savoir comment créer une fonction qui peut trouver le mode d'une liste mais qui affiche un message si la liste n'a pas de mode (par exemple, tous les éléments de la liste n'apparaissent qu'une seule fois). Je veux faire cette fonction sans importer aucune fonction. J'essaie de créer ma propre fonction à partir de zéro.
assert(mode[1, 1, 1]) == None
etassert(mode[1, 2, 3, 4]) == None
. Pour qu'un nombre soit amode
, il doit apparaître plus de fois qu'au moins un autre nombre de la liste, et ce ne doit pas être le seul nombre de la liste.Réponses:
Vous pouvez utiliser la
max
fonction et une touche. Jetez un œil à la fonction python max en utilisant l'expression 'key' et lambda .la source
O(n**2)
. Le fait-il?max(lst, key=lst.count)
. (Et je n'appellerais vraiment pas une listelist
.)a = [22, 33, 11, 22, 11]; print(max(set(a), key=a.count))
retourne11
. Retournera-t-il toujours le mode minimum? Et si oui, pourquoi?Vous pouvez utiliser le
Counter
fourni dans lecollections
package qui a unemode
fonction -esqueRemarque: Counter est nouveau dans python 2.7 et n'est pas disponible dans les versions antérieures.
la source
Counter(your_list_in_here).most_common(1)[0][0]
. S'il y a plus d'un mode, cela renvoie un mode arbitraire.n
plus courantsmodes
. Si Counter (your_list_in_here) .most_common (1) [0] [0] vous donne le premier mode, comment en obtiendriez-vous un autre plus courantmode
? Remplacez simplement le dernier0
par1
? On peut créer une fonction pour personnaliser lemode
à leur goût.Python 3.4 inclut la méthode
statistics.mode
, donc c'est simple:Vous pouvez avoir n'importe quel type d'éléments dans la liste, pas seulement numériques:
la source
multimode
, qui retourne plusieurs modes lorsqu'il y en a plus d'un.Prenant une feuille de certains logiciels de statistiques, à savoir SciPy et MATLAB , ceux-ci ne renvoient que la plus petite valeur la plus courante, donc si deux valeurs se produisent également souvent, la plus petite d'entre elles est renvoyée. Espérons qu'un exemple aidera:
Y a-t-il une raison pour laquelle vous ne pouvez pas suivre cette convention?
la source
Il existe de nombreuses façons simples de trouver le mode d'une liste en Python, telles que:
Ou, vous pouvez trouver le maximum par son nombre
Le problème avec ces deux méthodes est qu'elles ne fonctionnent pas avec plusieurs modes. Le premier renvoie une erreur, tandis que le second renvoie le premier mode.
Afin de trouver les modes d'un ensemble, vous pouvez utiliser cette fonction:
la source
Étendre la réponse communautaire qui ne fonctionnera pas lorsque la liste est vide, voici le code de travail pour le mode:
la source
Si vous êtes intéressé par le plus petit, le plus grand ou tous les modes:
la source
J'ai écrit cette fonction pratique pour trouver le mode.
la source
Bref, mais quelque peu laid:
Utilisation d'un dictionnaire, un peu moins moche:
la source
Un peu plus long, mais peut avoir plusieurs modes et peut obtenir une chaîne avec la plupart des nombres ou un mélange de types de données.
la source
Pour qu'un nombre soit a
mode
, il doit se produire plus de fois qu'au moins un autre nombre de la liste et il ne doit pas être le seul nombre de la liste. Donc, j'ai refactoré la réponse de @ mathwizurd (pour utiliser ladifference
méthode) comme suit:Ces tests réussissent:
la source
Pourquoi pas juste
Cela n'a pas quelques contrôles d'erreur qu'il devrait avoir, mais il trouvera le mode sans importer de fonctions et imprimera un message si toutes les valeurs n'apparaissent qu'une seule fois. Il détectera également plusieurs éléments partageant le même nombre maximum, bien que vous ne sachiez pas si vous le vouliez.
la source
Cette fonction renvoie le ou les modes d'une fonction, quel qu'en soit le nombre, ainsi que la fréquence du ou des modes dans l'ensemble de données. S'il n'y a pas de mode (c'est-à-dire que tous les éléments n'apparaissent qu'une seule fois), la fonction renvoie une chaîne d'erreur. Ceci est similaire à la fonction A_nagpal ci-dessus mais est, à mon humble avis, plus complet, et je pense qu'il est plus facile à comprendre pour tous les novices de Python (comme le vôtre) qui lisent cette question pour comprendre.
la source
return 'There is no mode for this data set. All values occur only once.'
peut être transformée en un message d'erreur avectraceback
comme `si condition: ligne suivante avec retrait augmenter ValueError ('Il n'y a pas de mode pour cet ensemble de données. Toutes les valeurs n'apparaissent qu'une seule fois.') Voici une liste de différents types de erreurs que vous pouvez soulever.Cela retournera tous les modes:
la source
Code simple qui trouve le mode de la liste sans aucune importation:
En cas de modes multiples, il doit renvoyer le nœud minimum.
la source
la source
la source
Voici une fonction simple qui obtient le premier mode qui se produit dans une liste. Il crée un dictionnaire avec les éléments de la liste sous forme de clés et le nombre d'occurrences, puis lit les valeurs dict pour obtenir le mode.
la source
Si vous voulez une approche claire, utile pour la classe et n'utilisant que des listes et des dictionnaires par compréhension, vous pouvez faire:
la source
la source
Voici comment trouver la moyenne, la médiane et le mode d'une liste:
la source
la source
Pour ceux qui recherchent le mode minimum, par exemple: cas de la distribution bi-modale, utilisant numpy.
la source
Le mode d'un ensemble de données est / sont le (s) membre (s) qui apparaissent le (s) le (s) le (s) le (s) le (s) le (s) le (s) le plus. S'il y a deux membres qui apparaissent le plus souvent avec le même nombre de fois, alors les données ont deux modes. Ceci est appelé bimodal .
S'il y a plus de 2 modes, alors les données seront appelées multimodales . Si tous les membres de l'ensemble de données apparaissent le même nombre de fois, alors l'ensemble de données n'a aucun mode .La fonction suivante
modes()
peut fonctionner pour trouver le (s) mode (s) dans une liste donnée de données:Production:
Si nous ne voulons pas importer
numpy
oupandas
appeler une fonction à partir de ces packages, alors pour obtenir cette même sortie, lamodes()
fonction peut être écrite comme suit:la source