preloader

Función `pivot_table()` de Pandas

Índice de contenido

Introducción


La función pivot_table() en Pandas se utiliza para crear una tabla dinámica a partir de un DataFrame. Una tabla dinámica es una herramienta que permite resumir y analizar grandes conjuntos de datos de manera rápida y eficiente. La función pivot_table() es similar a la función pivot(), pero también puede agregar valores utilizando una función de agregación, como la media, la suma, la mediana, etc.

La sintaxis básica de la función pivot_table() es la siguiente:

python
pd.pivot_table(df, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name, observed)

En cuyo caso:

  • df: es el DataFrame que se desea transformar.
  • values: es la columna o lista de columnas cuyos valores se utilizarán para llenar el DataFrame transformado.
  • index: es la columna o lista de columnas que se utilizarán como índice en el DataFrame transformado.
  • columns: es la columna o lista de columnas cuyos valores se utilizarán como nombres de las nuevas columnas en el DataFrame transformado.
  • aggfunc: es la función de agregación que se utilizará para agregar los valores en el DataFrame transformado.

Aquí hay un ejemplo para ilustrar cómo usar la función pivot_table():

python
import pandas as pd

Primer ejemplo


python
# Creamos un DataFrame de ejemplo:
df = pd.DataFrame({'Estudiante': ['Juan', 'Maria', 'Pedro', 'Ana'],
                   'Asignatura': ['Matematicas', 'Matematicas', 'Ciencias', 'Ciencias'],
                   'Calificacion': [90, 85, 80, 92],
                   'Edad': [18, 19, 20, 19]})

df.head(4)

EstudianteAsignaturaCalificacionEdad
0JuanMatematicas9018
1MariaMatematicas8519
2PedroCiencias8020
3AnaCiencias9219
python
# Creamos una tabla dinámica a partir del DataFrame:
tabla_dinamica = pd.pivot_table(df, 
                                values = 'Calificacion', 
                                index = 'Estudiante', 
                                columns = 'Asignatura', 
                                aggfunc = 'mean')

tabla_dinamica.head(12)

AsignaturaCienciasMatematicas
Estudiante
Ana92.0NaN
JuanNaN90.0
MariaNaN85.0
Pedro80.0NaN

En este ejemplo, el DataFrame df tiene una columna Asignatura y una columna Calificacion que se deben transformar en dos columnas separadas en el DataFrame transformado. La función pivot_table() se utiliza para hacer esto, y también se agrega la función de agregación mean para calcular el promedio de las calificaciones de cada estudiante.

En este DataFrame transformado, cada fila representa un estudiante y cada columna representa una asignatura. Los valores en cada celda corresponden al promedio de las calificaciones de los estudiantes en esa asignatura. Si un estudiante no tiene una calificación para una asignatura determinada, la celda correspondiente se llenará con un valor NaN.

Segundo ejemplo


python
# Creamos un DataFrame de ejemplo:
df = pd.DataFrame({'Cliente': ['A', 'A', 'B', 'B', 'C', 'C'],
                   'Mes': ['Enero', 'Febrero', 'Enero', 'Febrero', 'Enero', 'Febrero'],
                   'Producto': ['Producto 1', 'Producto 2', 'Producto 1', 'Producto 2', 'Producto 1', 'Producto 2'],
                   'Cantidad': [2, 3, 1, 2, 4, 2],
                   'Precio': [10, 20, 15, 25, 8, 12]})

df.head(4)

ClienteMesProductoCantidadPrecio
0AEneroProducto 1210
1AFebreroProducto 2320
2BEneroProducto 1115
3BFebreroProducto 2225
python
# Creamos una tabla dinámica a partir del DataFrame:
tabla_dinamica = pd.pivot_table(df, 
                                values = 'Cantidad', 
                                index = 'Cliente', 
                                columns = 'Mes', 
                                aggfunc = 'sum')

tabla_dinamica.head(12)

MesEneroFebrero
Cliente
A23
B12
C42

En este ejemplo, queremos ver la cantidad total de productos vendidos por cliente y por mes. La función pivot_table() se utiliza para hacer esto, y se utiliza la función de agregación sum para sumar las cantidades de productos vendidos.

En este DataFrame transformado, cada fila representa un cliente y cada columna representa un mes. Los valores en cada celda corresponden a la cantidad total de productos vendidos por ese cliente en ese mes. Si un cliente no tiene un pedido en un mes determinado, la celda correspondiente se llenará con un valor NaN.

comments powered by Disqus