• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • La moyenne, la médiane et le mode sont des sujets fondamentaux des statistiques. Vous pouvez facilement les calculer en Python, avec et sans l'utilisation de bibliothèques externes.

    Ces trois sont les principales mesures de tendance centrale. La tendance centrale nous permet de connaître les valeurs « normales » ou « moyennes » d'un jeu de données. Si vous débutez avec science des données, c'est le bon tutoriel pour vous.

    Moyenne, médiane, mode les trois mesures de tendance centrale

    À la fin de ce didacticiel, vous :

    • Comprendre le concept de moyenne, médiane et mode
    • Être capable de créer vos propres fonctions de moyenne, de médiane et de mode en Python
    • Utilisez Python statistiques module pour démarrer rapidement l'utilisation de ces mesures

    Si vous souhaitez une version téléchargeable des exercices suivants, n'hésitez pas à consulter le Référentiel GitHub.

    Examinons les différentes façons de calculer la moyenne, la médiane et le mode.

    Calculating the  Mean in Python

    Le signifier ou la moyenne arithmétique est la mesure la plus utilisée de la tendance centrale.

    N'oubliez pas que la tendance centrale est une valeur typique d'un ensemble de données.

    Un ensemble de données est une collection de données, par conséquent, un ensemble de données en Python peut être l'une des structures de données intégrées suivantes :

    • Listes, tuples et ensembles : une collection d'objets
    • Cordes: une collection de personnages
    • Dictionnaire: une collection de paires clé-valeur

    A Noter: Bien qu'il existe d'autres structures de données en Python comme files d'attente or piles, nous n'utiliserons que ceux intégrés.

    Nous pouvons calculer la moyenne en additionnant toutes les valeurs d'un ensemble de données et en divisant le résultat par le nombre de valeurs. Par exemple, si nous avons la liste de nombres suivante :

    [1, 2, 3, 4, 5, 6]

    La moyenne ou la moyenne serait  3.5 car la somme de la liste est 21 et sa longueur est 6. Vingt et un divisé par six est 3.5. Vous pouvez effectuer ce calcul avec le calcul ci-dessous :

    (1 + 2 + 3 + 4 + 5 + 6) / 6 = 21

    Dans ce didacticiel, nous utiliserons les joueurs d'une équipe de basket-ball comme exemple de données.

    Création d'une fonction de moyenne personnalisée

    Commençons par calculer l'âge moyen (moyen) des joueurs d'une équipe de basket-ball. Le nom de l'équipe sera "Pythonic Machines".

    pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]
    
    def mean(dataset):
        return sum(dataset) / len(dataset)
    
    print(mean(pythonic_machine_ages))

    Décomposer ce code :

    • Le "pythonic_machine_ages" est une liste avec les âges des joueurs de basket-ball
    • Nous définissons un signifier() fonction qui renvoie la somme de l'ensemble de données donné divisée par sa longueur
      • Le sum () La fonction renvoie la somme totale (ironiquement) des valeurs d'un itérable, dans ce cas, une liste. Essayez de passer l'ensemble de données en argument, il retournera 211
      • Le len () La fonction renvoie la longueur d'un itérable, si vous lui transmettez l'ensemble de données, vous obtiendrez 8
    • Nous passons l'âge de l'équipe de basket-ball aux signifier() fonction et imprimer le résultat.

    Si vous vérifiez la sortie, vous obtiendrez :

    26.375
    # Because 211 / 8 = 26.375

    Cette sortie représente l'âge moyen des joueurs de l'équipe de basket-ball. Notez que le nombre n'apparaît pas dans l'ensemble de données mais décrit précisément l'âge de la plupart des joueurs.

    Utilisation de Mean() du Python Statistic Module

    Le calcul des mesures de tendance centrale est une opération courante pour la plupart des développeurs. C'est parce que Les statistiques de Python Le module fournit diverses fonctions pour les calculer, ainsi que d'autres sujets statistiques de base.

    Comme cela fait partie du Bibliothèque standard Python vous n'aurez pas besoin d'installer de package externe avec PIP.

    Voici comment vous utilisez ce module :

    from statistics import mean
    
    pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]
    
    print(mean(pythonic_machine_ages))

    Dans le code ci-dessus, il vous suffit d'importer le signifier() fonction du statistiques module et lui transmettre l'ensemble de données en tant qu'argument. Cela renverra le même résultat que la fonction personnalisée que nous avons définie dans la section précédente :

    26.375

    Maintenant, vous avez limpide le concept de signifier continuons avec le médiane la mesure.

    Finding the Median in Python

    Le médiane est valeur moyenne d'un jeu de données trié. Il est utilisé — encore une fois — pour fournir une valeur « typique » d'un population.

    En programmation, nous pouvons définir la médiane comme la valeur qui sépare une séquence en deux parties — La moitié inférieure et la moitié supérieure —.

    Pour calculer la médiane, nous devons d'abord trier l'ensemble de données. On pourrait faire ça avec algorithmes de tri ou en utilisant la fonction intégrée trié (). La deuxième étape consiste à déterminer si la longueur de l'ensemble de données est impaire ou paire. En fonction de cela, certains des processus suivants :

    • Impair: La médiane est la valeur médiane de l'ensemble de données
    • Même: La médiane est la somme des deux valeurs médianes divisée par deux

    En continuant avec notre ensemble de données d'équipe de basket-ball, calculons la taille médiane des joueurs en centimètres :

    [181, 187, 196, 196, 198,  203, 207, 211, 215]
    # Since the dataset is odd, we select the middle value
    median = 198

    Comme vous pouvez le voir, puisque la longueur de l'ensemble de données est impaire, nous pouvons donc prendre la valeur médiane comme médiane. Cependant, que se passerait-il si un joueur venait de prendre sa retraite ?

    Nous aurions besoin de calculer la médiane en prenant les deux valeurs moyennes de l'ensemble de données

    [181, 187, 196, 198, 203, 207, 211, 215] 
    # We select the two middle values, and divide them by 2
    median = (198 + 203) / 2
    median = 200.5

    Création d'une fonction médiane personnalisée

    Implémentons le concept ci-dessus dans une fonction Python.

    N'oubliez pas les trois étapes que nous devons suivre pour obtenir la médiane d'un ensemble de données :

    • Triez l'ensemble de données : Nous pouvons le faire avec le trié () fonction
    • Déterminez s'il est pair ou impair : Nous pouvons le faire en obtenant la longueur de l'ensemble de données et en utilisant l'opérateur modulo (%)
    • Renvoie la médiane en fonction de chaque cas :
      • Impair: Renvoie la valeur médiane
      • Même: Renvoie la moyenne des deux valeurs moyennes

    Cela donnerait la fonction suivante :

    pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215]
    after_retirement = [181, 187, 196, 198, 203, 207, 211, 215]
    
    def median(dataset):
        data = sorted(dataset)
        index = len(data) // 2
        
        # If the dataset is odd  
        if len(dataset) % 2 != 0:
            return data[index]
        
        # If the dataset is even
        return (data[index - 1] + data[index]) / 2

    Impression du résultat de nos jeux de données :

    print(median(pythonic_machines_heights))
    print(median(after_retirement))

    Sortie :

    198
    200.5

    Notez comment nous créons un de data variable qui pointe vers la base de données triée au début de la fonction. Bien que les listes ci-dessus soient triées, nous souhaitons créer une fonction réutilisable, triant ainsi l'ensemble de données à chaque fois que la fonction est invoquée.

    Le indice stocke la valeur médiane - ou la valeur médiane supérieure - de l'ensemble de données, en utilisant le division entière opérateur. Par exemple, si nous passions la liste "pythonic_machine_heights", elle aurait la valeur de 4.

    N'oubliez pas qu'en Python, les index de séquence commencent à zéro, c'est parce que nous sommes capables de renvoyer l'index du milieu d'une liste, avec une division entière.

    Ensuite, nous vérifions si la longueur de l'ensemble de données est impaire en comparant le résultat de l'opération modulo avec toute valeur différente de zéro. Si la condition est vraie, nous retournons l'élément du milieu, par exemple, avec la liste « pythonic_machine_heights » :

    >>> pythonic_machine_heights[4]
    # 198

    D'un autre côté, si l'ensemble de données est pair, nous renvoyons la somme des valeurs médianes divisée par deux. Noter que données[index -1] nous donne le point médian inférieur de l'ensemble de données, tandis que données[index] nous fournit le point médian supérieur.

    Utilisation de median() du module Python Statistic

    Cette méthode est beaucoup plus simple car nous utilisons une fonction déjà existante du module de statistiques.

    Personnellement, s'il y a quelque chose de déjà défini pour moi, je l'utiliserais à cause du principe DRY — Ne vous répétez pas — (dans ce cas, ne répétez pas le code des autres).

    Vous pouvez calculer la médiane des jeux de données précédents avec le code suivant :

    from statistics import median
    
    pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215]
    after_retirement = [181, 187, 196, 198, 203, 207, 211, 215]
    
    print(median(pythonic_machines_heights))
    print(median(after_retirement))

    Sortie :

    198
    200.5

    Computing the Mode in Python

    Le mode est la valeur la plus fréquente dans l'ensemble de données. On peut le considérer comme le groupe « populaire » d'une école, qui peut représenter une norme pour tous les élèves.

    Un exemple de mode pourrait être les ventes quotidiennes d'un magasin de technologie. Le mode de cet ensemble de données serait le produit le plus vendu d'un jour spécifique.

    ['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']

    Comme vous pouvez le constater, le mode de l'ensemble de données ci-dessus est « ordinateur portable » car il s'agissait de la valeur la plus fréquente de la liste.

    L'avantage du mode est que l'ensemble de données ne doit pas être numérique. Par exemple, nous pouvons travailler avec des chaînes.

    Analysons les ventes d'un autre jour :

    ['mouse', 'camera', 'headphones', 'usb', 'headphones', 'mouse']

    L'ensemble de données ci-dessus a deux modes : « souris » et « casque » car les deux ont une fréquence de deux. Cela signifie que c'est un multimodal jeu de données.

    Que faire si nous ne pouvons pas trouver le mode dans un ensemble de données, comme celui ci-dessous ?

    ['usb', 'camera', 'smartphone', 'laptop', 'TV']

    C'est ce qu'on appelle un distribution uniforme, en gros, cela signifie qu'il n'y a pas de mode dans l'ensemble de données.

    Maintenant que vous avez une compréhension rapide du concept de mode, calculons-le en Python.

    Création d'une fonction de mode personnalisé

    Nous pouvons considérer la fréquence d'une valeur comme une paire clé-valeur, en d'autres termes, un dictionnaire Python.

    En récapitulant l'analogie avec le basket-ball, nous pouvons utiliser deux ensembles de données pour travailler : les points par match et le parrainage de baskets de certains joueurs.

    Pour trouver le mode, nous devons d'abord créer un dictionnaire de fréquences avec chacune des valeurs présentes dans l'ensemble de données, puis obtenir la fréquence maximale et renvoyer tous les éléments avec cette fréquence.

    Traduisons cela en code :

    points_per_game = [3, 15, 23, 42, 30, 10, 10, 12]
    sponsorship = ['nike', 'adidas', 'nike', 'jordan',
                   'jordan', 'rebook', 'under-armour', 'adidas']
    
    def mode(dataset):
        frequency = {}
    
        for value in dataset:
            frequency[value] = frequency.get(value, 0) + 1
    
        most_frequent = max(frequency.values())
    
        modes = [key for key, value in frequency.items()
                          if value == most_frequent]
    
        return modes

    Vérification du résultat en passant les deux listes en arguments :

    print(mode(points_per_game))
    print(mode(sponsorship))

    Sortie :

    [10]
    ['nike', 'adidas', 'jordan']

    Comme vous pouvez le voir, la première instruction print nous a donné un seul mode, tandis que la seconde a renvoyé plusieurs modes.

    Explication plus approfondie du code ci-dessus :

    • Nous déclarons un fréquence dictionnaire
    • Nous parcourons l'ensemble de données pour créer un histogramme — le terme statistique pour un ensemble de compteurs (ou fréquences) —
      • Si la clé est trouvée dans le dictionnaire alors, elle ajoute un à la valeur
      • S'il n'est pas trouvé, nous créons une paire clé-valeur avec une valeur de un
    • Le le plus fréquent la variable stocke - ironiquement - la plus grande valeur (pas la clé) du dictionnaire de fréquence
    • Nous retournons le modes variable qui se compose de toutes les clés de la fréquence dictionnaire avec le plus de fréquence.

    Notez à quel point le nommage des variables est important pour écrire du code lisible.

    Utilisation de mode() et multimode() du Python Statistic Module

    Encore une fois, le module de statistiques nous fournit un moyen rapide d'effectuer des opérations statistiques de base.

    Nous pouvons utiliser deux fonctions : mode() et multimode().

    from statistics import mode, multimode
    
    points_per_game = [3, 15, 23, 42, 30, 10, 10, 12]
    sponsorship = ['nike', 'adidas', 'nike', 'jordan',
                   'jordan', 'rebook', 'under-armour', 'adidas']

    Le code ci-dessus importe les deux fonctions et définit les ensembles de données avec lesquels nous avons travaillé.

    Voici la petite différence : le mode() la fonction renvoie le premier mode qu'elle rencontre, tandis que multimode() renvoie une liste avec les valeurs les plus fréquentes dans l'ensemble de données.

    Par conséquent, nous pouvons dire que la fonction personnalisée que nous avons définie est en fait un multimode() la fonction.
    print(mode(points_per_game))
    print(mode(sponsorship))
    

    Sortie :

    10
    nike

    A Noter: Dans Python 3.8 ou supérieur, la fonction mode() renvoie le premier mode qu'elle a trouvé. Si vous avez une ancienne version, vous obtiendrez un Erreur de statistiques.

    En utilisant l' multimode() fonction:

    print(multimode(points_per_game))
    print(multimode(sponsorship))

    Sortie :

    [10]
    ['nike', 'adidas', 'jordan']

    Pour résumer

    Félicitations à vous! Si vous avez suivi jusqu'ici, vous avez appris à calculer la moyenne, la médiane et le mode, les principales mesures de tendance centrale.

    Bien que vous puissiez définir vos fonctions personnalisées pour trouver la moyenne, la médiane et le mode, il est recommandé d'utiliser le module de statistiques, car il fait partie de la bibliothèque standard et vous n'avez rien à installer pour commencer à l'utiliser.

    Ensuite, lisez une introduction amicale à analyse de données en Python.