Python Pandas pandas.pivot_table() Fonction

  1. Syntaxe de pandas.pivot_table()
  2. Exemples de codes : pandas.pivot_table()
  3. Exemple de codes : pandas.pivot_table() pour spécifier une fonction agrégée multiple
  4. Exemple de codes : pandas.pivot_table() pour utiliser le paramètre margins

La fonction Python Pandas pandas.pivot_table() évite la répétition des données de la DataFrame. Elle résume les données et applique différentes fonctions d’agrégation sur les données.

Syntaxe de pandas.pivot_table()

pandas.pivot_table(data,
                   values= None,
                   index= None,
                   columns= None,
                   aggfunc= 'mean',
                   fill_value= None,
                   margins= False,
                   dropna= True,
                   margins_name= 'All',
                   observed= False) 

Paramètres

Cette fonction a plusieurs paramètres. Les valeurs par défaut de tous les paramètres sont mentionnées ci-dessus.

data Il s’agit de la DataFrame dont nous voulons supprimer les données répétées.
values Il représente la colonne à agréger.
index C’est une colonne, un grouper, un tableau ou une liste. Elle représente la colonne de données que nous voulons comme index, c’est-à-dire comme lignes.
columns C’est une colonne, un grouper, un tableau ou une liste. Il représente la colonne de données que nous voulons comme colonnes dans notre tableau croisé dynamique de sortie.
aggfunc C’est une fonction, une liste de fonctions, ou un dictionnaire. Il représente la fonction agrégée qui sera appliquée aux données. Si une liste de fonctions agrégées est passée, il y aura une colonne pour chaque fonction agrégée dans le tableau résultant avec le nom de la colonne en haut.
fill_value C’est un scalaire. Il représente la valeur qui remplacera les valeurs manquantes dans le tableau de sortie
margins Il s’agit d’une valeur booléenne. Elle représente la ligne et la colonne générées après avoir pris la somme de la ligne et de la colonne respectives.
dropna Il s’agit d’une valeur booléenne. Elle élimine les colonnes dont les valeurs sont NaN de la table de sortie.
margins_name Il s’agit d’une chaîne de caractères. Elle représente le nom de la ligne et de la colonne générées si la valeur des margins est True.
observed Il s’agit d’une valeur booléenne. Si un mérou est catégorique, alors ce paramètre s’applique. S’il est True, il indique les valeurs observées pour les groupeurs catégoriels. S’il est False, il indique toutes les valeurs pour les groupes catégoriels

Renvoie

Il renvoie le DataFrame résumé.

Exemples de codes : pandas.pivot_table()

Creusons un peu plus cette fonction en l’implémentant.

import pandas as pd

dataframe = pd.DataFrame({
                            "Name": 
                                ["Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan"],
                            "Date": 
                                ["03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019"],
                            "Science Marks": 
                                [10, 
                                2, 
                                4, 
                                6, 
                                8, 
                                9, 
                                1, 
                                10]
                        })
print(dataframe)

L’exemple DataFrame est,

     Name        Date  Science Marks
0  Olivia  03-06-2019             10
1  Olivia  04-06-2019              2
2  Olivia  03-06-2019              4
3  Olivia  04-06-2019              6
4  Meghan  03-06-2019              8
5  Meghan  04-06-2019              9
6  Meghan  03-06-2019              1
7  Meghan  04-06-2019             10

Notez que les données ci-dessus contiennent plusieurs fois la même valeur dans une colonne. Cette fonction pivot_table résumera ces données.

import pandas as pd

dataframe = pd.DataFrame({
                            "Name": 
                                ["Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan"],
                            "Date": 
                                ["03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019"],
                            "Science Marks": 
                                [10, 
                                2, 
                                4, 
                                6, 
                                8, 
                                9, 
                                1, 
                                10]
                        })

pivotTable = pd.pivot_table(dataframe, index= "Name", columns= "Date")
print(pivotTable)

Production:

              Science Marks           
Date      03-06-2019 04-06-2019
Name                           
Meghan           4.5        9.5
Olivia           7.0        4.0

Ici, nous avons choisi la colonne Name comme index et la colonne Date comme colonne. La fonction a généré le résultat en se basant sur les paramètres par défaut. La fonction agrégée par défaut mean() a calculé la moyenne des valeurs.

Exemple de codes : pandas.pivot_table() pour spécifier une fonction agrégée multiple

import pandas as pd

dataframe = pd.DataFrame({
                            "Name": 
                                ["Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan"],
                            "Date": 
                                ["03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019"],
                            "Science Marks": 
                                [10, 
                                2, 
                                4, 
                                6, 
                                8, 
                                9, 
                                1, 
                                10]
                        })

pivotTable = pd.pivot_table(dataframe, 
                            index= "Name", 
                            columns= "Date", 
                            aggfunc= ["sum", "count"])
print(pivotTable)

Production:

                   sum                    count           
              Science Marks            Science Marks           
Date      03-06-2019 04-06-2019    03-06-2019 04-06-2019
Name                                                    
Meghan             9         19             2          2
Olivia            14          8             2          2

Nous avons utilisé deux fonctions agrégées. Les colonnes de ces fonctions sont générées séparément.

Exemple de codes : pandas.pivot_table() pour utiliser le paramètre margins

import pandas as pd

dataframe = pd.DataFrame({
                            "Name": 
                                ["Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Olivia", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan", 
                                "Meghan"],
                            "Date": 
                                ["03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019", 
                                "03-06-2019", 
                                "04-06-2019"],
                            "Science Marks": 
                                [10, 
                                2, 
                                4, 
                                6, 
                                8, 
                                9, 
                                1, 
                                10]
                        })

pivotTable = pd.pivot_table(dataframe, 
                            index= "Name", 
                            columns= "Date", 
                            aggfunc= ["sum", "count"], 
                            margins= True)
print(pivotTable)

Production:

                   sum                        count               
              Science Marks                Science Marks               
Date      03-06-2019 04-06-2019 All    03-06-2019 04-06-2019 All
Name                                                            
Meghan             9         19  28             2          2   4
Olivia            14          8  22             2          2   4
All               23         27  50             4          4   8

Le paramètre margins a généré une nouvelle ligne nommée All et une nouvelle colonne nommée également All qui montrent la somme de la ligne et de la colonne respectivement.

Article connexe - Pandas Core

  • Pandas pandas.melt() Fonction