Función Python Pandas pandas.pivot_table()

Minahil Noor 30 enero 2023
  1. La sintaxis de pandas.pivot_table()
  2. Códigos de ejemplo: pandas.pivot_table()
  3. Códigos de ejemplo: pandas.pivot_table() para especificar la función de agregación múltiple
  4. Códigos de ejemplo: pandas.pivot_table() para usar el parámetro margins
Función Python Pandas pandas.pivot_table()

La función Python Pandas pandas.pivot_table() evita la repetición de datos del DataFrame. Resume los datos y aplica diferentes funciones de agregación a los datos.

La sintaxis 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,
)

Parámetros

Esta función tiene varios parámetros. Los valores por defecto de todos los parámetros se mencionan más arriba.

data Es el DataFrame del que queremos eliminar los datos repetidos.
values Representa la columna para agregar.
index Es una column, grouper, matriz, o una lista. Representa la columna de datos que queremos como índice, es decir, como filas.
columns Es una column, grouper, matriz, o una lista. Representa la columna de datos que queremos como columnas en nuestra tabla pivote de salida.
aggfunc Es una función, una lista de funciones o un diccionario. Representa la función agregada que se aplicará a los datos. Si se pasa una lista de funciones agregadas, habrá una columna para cada función agregada en el cuadro resultante con el nombre de la columna en la parte superior.
fill_value Es un escalar. Representa el valor que sustituirá a los valores que faltan en la tabla de salida
margins Es un valor booleano. Representa la fila y la columna generadas después de tomar la suma de la respectiva fila y columna.
dropna Es un valor booleano. Elimina las columnas cuyos valores son NaN de la tabla de salida.
margins_name Es una cuerda. Representa el nombre de la fila y la columna generada si el valor de los margins es True.
observed Es un valor booleano. Si algún mero es categórico, entonces este parámetro se aplica. Si es True, muestra los valores observados para los meros categóricos. Si es False, muestra todos los valores de los meros categóricos.

Retorna

Devuelve el resumen de DataFrame.

Códigos de ejemplo: pandas.pivot_table()

Profundicemos en esta función implementándola.

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)

El ejemplo DataFrame es,

     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

Obsérvese que los datos anteriores contienen el mismo valor en una columna varias veces. Esta función pivot_table resumirá estos datos.

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)

Producción:

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

Aquí, hemos elegido la columna Name como el índice y la Date como la columna. La función ha generado el resultado basado en los parámetros por defecto. La función agregada por defecto mean() ha calculado la media de los valores.

Códigos de ejemplo: pandas.pivot_table() para especificar la función de agregación múltiple

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)

Producción:

                   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

Hemos utilizado dos funciones agregadas. Las columnas de estas funciones se generan por separado.

Códigos de ejemplo: pandas.pivot_table() para usar el parámetro 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)

Producción:

                   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

El parámetro margins ha generado una nueva fila llamada All y una nueva columna llamada también como All que muestran la suma de la fila y la columna respectivamente.

Artículo relacionado - Pandas Core