Groupe de pandas par compte

Suraj Joshi 30 janvier 2023
  1. Compter la valeur des valeurs uniques des lignes en utilisant la méthode Series.value_counts()
  2. Comptage des valeurs des groupes de DataFrame à l’aide de la fonction DataFrame.groupby()
  3. Obtenez plusieurs valeurs statistiques de chaque groupe en utilisant la méthode pandas.DataFrame.agg()
Groupe de pandas par compte

Ce tutoriel explique comment nous pouvons obtenir des statistiques comme count, sum, max et bien plus encore pour les groupes dérivés en utilisant la méthode DataFrame.groupby().

Nous utiliserons le automobile_data_df montré dans l’exemple ci-dessus pour expliquer les concepts. La DataFrame est constituée des employés, et des marques de voitures et de vélos qu’ils utilisent.

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha"],
    ["Toyota", "Ducati"],
    ["Volkswagen", "BMW"],
    ["Cherlovet", "Kawasaki"],
    ["Toyota", "Ducati"],
    ["Toyota", "BMW"],
    ["Volkswagen", "BMW"],
]

column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)
print(automobile_data_df)

Production :

          Car Brand Motorbike Brand
Steven    Chevrolet          Yamaha
Robert       Toyota          Ducati
Jimmy    Volkswagen             BMW
Mike      Cherlovet        Kawasaki
Phoenix      Toyota          Ducati
Scott        Toyota             BMW
John     Volkswagen             BMW

Compter la valeur des valeurs uniques des lignes en utilisant la méthode Series.value_counts()

Si nous voulons compter chaque valeur unique d’une seule colonne dans un DataFrame, nous pouvons utiliser la méthode Series.value_counts().

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha"],
    ["Toyota", "Ducati"],
    ["Volkswagen", "BMW"],
    ["Cherlovet", "Kawasaki"],
    ["Toyota", "Ducati"],
    ["Toyota", "BMW"],
    ["Volkswagen", "BMW"],
]

column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)

print(automobile_data_df["Car Brand"].value_counts())

Production :

Toyota        3
Volkswagen    2
Cherlovet     1
Chevrolet     1
Name: Car Brand, dtype: int64

Elle imprimera toutes les valeurs uniques dans la colonne Car Brand de automobile_data_df avec leurs comptes. La méthode n’est applicable que si nous voulons voir les valeurs d’une seule colonne à la fois.

Comptage des valeurs des groupes de DataFrame à l’aide de la fonction DataFrame.groupby()

Nous utilisons la fonction DataFrame.groupby() pour diviser une DataFrame en plusieurs groupes et ensuite utiliser la méthode size() pour compter les valeurs de chaque groupe créé.

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha"],
    ["Toyota", "Ducati"],
    ["Volkswagen", "BMW"],
    ["Cherlovet", "Kawasaki"],
    ["Toyota", "Ducati"],
    ["Toyota", "BMW"],
    ["Volkswagen", "BMW"],
]

column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)

group = automobile_data_df.groupby(["Car Brand", "Motorbike Brand"])
print(group.size().reset_index(name="counts"))

Production :

    Car Brand Motorbike Brand  counts
0   Cherlovet        Kawasaki       1
1   Chevrolet          Yamaha       1
2      Toyota             BMW       1
3      Toyota          Ducati       2
4  Volkswagen             BMW       2

Il imprime une DatFrame avec toutes les combinaisons uniques de valeurs des colonnes Car Brand et Motorbike Brand à partir du automobile_data_df avec le compte des occurrences de ces combinaisons dans la DataFrame automobile_data_df.

La méthode groupby() divise le automobile_data_df en groupes. Les lignes ayant les mêmes valeurs des colonnes Marque de voiture et Marque de moto seront placées dans le même groupe. La méthode size() donnera le nombre de valeurs dans chaque groupe et finalement nous générons le DataFrame à partir du nombre de valeurs dans chaque groupe.

Obtenez plusieurs valeurs statistiques de chaque groupe en utilisant la méthode pandas.DataFrame.agg()

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha", 4000],
    ["Toyota", "Ducati", 5000],
    ["Volkswagen", "BMW", 4500],
    ["Cherlovet", "Kawasaki", 3800],
    ["Toyota", "Ducati", 4500],
    ["Toyota", "BMW", 5000],
    ["Volkswagen", "BMW", 6000],
]

column_names = ["Car Brand", "Motorbike Brand", "Monthly Salary"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)

group = automobile_data_df.groupby(["Car Brand", "Motorbike Brand"])

print(group.agg({"Monthly Salary": [min, max, sum]}))

Production :

                           Monthly Salary             
                                      min   max    sum
Car Brand  Motorbike Brand                            
Cherlovet  Kawasaki                  3800  3800   3800
Chevrolet  Yamaha                    4000  4000   4000
Toyota     BMW                       5000  5000   5000
           Ducati                    4500  5000   9500
Volkswagen BMW                       4500  6000  10500

Il affiche le minimum, le maximum et la somme des valeurs de Monthly Salary pour chaque groupe généré.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas Groupby