Cómo crear tablas dinámicas en Python

Una tabla dinámica es un tipo de tabla que resume un conjunto de datos utilizando estadísticas de resumen.

Podemos crear tablas dinámicas en Python usando la función pivot_table del paquete pandas, que usa la siguiente sintaxis:

pivot_table (datos, índice = Ninguno, valores = Ninguno, aggfunc = ‘mean’, fill_value = Ninguno,…)

dónde:

  • data: nombre de DataFrame
  • índice: columnas de DataFrame para agrupar
  • valores: columnas de DataFrame para agregar
  • aggfunc: función agregada a utilizar. El valor predeterminado es malo.
  • fill_value: valor con el que reemplazar los valores perdidos.

Ejemplo: tablas dinámicas en Python

Supongamos que tenemos el siguiente conjunto de datos que contiene información sobre ocho jugadores de baloncesto:

importar pandas como pd

datos = {'equipo': ['E', 'E', 'C', 'C', 'C', 'W', 'W', 'W'],
        'jugador': ['Andy', 'Ben', 'Chris', 'Dwight', 'Elias', 'Frank', 'Greg', 'Hank'],
        'rebotes': [12, 14, 13, 7, 8, 8, 9, 13],
        'puntos': [22, 24, 26, 26, 29, 32, 20, 14]
        }

df = pd.DataFrame (datos, columnas = ['equipo', 'jugador', 'rebotes', 'puntos'])
df

   jugador de equipo rebota puntos
0 E Andy 12 22
1 E Ben 14 24
2 C Chris 13 26
3 C Dwight 7 26
4 C Elías 8 29
5 W Frank 8 32
6 W Greg 9 20
7 W Hank 13 14

Para encontrar el número medio de puntos y rebotes anotados por los jugadores de cada equipo, podemos usar la siguiente sintaxis:

pd.pivot_table (df, index = [' equipo '])

     puntos rebotes
equipo 
   C 27 9.333333
   E 23 13.000000
   W 22 10.000000

Para encontrar solo el número medio de puntos anotados por los jugadores de cada equipo, podemos usar la siguiente sintaxis:

pd.pivot_table (df, index = [' equipo '], valores = [' puntos '])

     puntos
equipo 
   C 27
   E 23
   W 22

Para encontrar el número total de puntos anotados por los jugadores de cada equipo, podemos usar la siguiente sintaxis:

pd.pivot_table (df, index = [' equipo '], valores = [' puntos '], aggfunc = ' suma ')

     puntos
equipo 
   C 81
   E 46
   W 66

Para encontrar el número máximo de puntos anotados por los jugadores de cada equipo, podemos usar la siguiente sintaxis:

pd.pivot_table (df, index = [' equipo '], valores = [' puntos '], aggfunc = ' max ')

     puntos
equipo 
   C 29
   E 34
   W 32

Para encontrar el número total de jugadores individuales en cada equipo, podemos usar la siguiente sintaxis:

pd.pivot_table (df, index = [' equipo '], valores = [' jugador '], aggfunc = ' count ')

     jugador
equipo 
   C 3
   E 2
   W 3

Lidiar con los valores perdidos

Suponga que tiene valores faltantes en su conjunto de datos:

importar pandas como pd 
 importar numpy como np
 
datos = {'equipo': ['E', 'E', 'C', 'C', 'C', 'W', 'W', 'W'],
        'jugador': ['Andy', 'Ben', 'Chris', 'Dwight', 'Elias', 'Frank', 'Greg', 'Hank'],
        'rebotes': [12, 14, np.NaN, 7, 8, np.NaN, 9, 13],
        'puntos': [22, 24, 26, 26, 29, 32, np.NaN, 14]
        }

df = pd.DataFrame (datos, columnas = ['equipo', 'jugador', 'rebotes', 'puntos'])
df

   jugador de equipo rebota puntos
0 E Andy 12,0 22,0
1 E Ben 14.0 24.0
2 C Chris NaN 26.0
3 C Dwight 7.0 26.0
4 C Elías 8.0 29.0
5 W Frank NaN 32.0
6 W Greg 9,0 NaN
7 W Hank 13.0 14.0

Para calcular las estadísticas de resumen, puede utilizar numerosas funciones que ignoran automáticamente los valores perdidos. Por ejemplo, a continuación se explica cómo calcular el número medio de puntos anotados por los jugadores de cada equipo:

pd.pivot_table (df, index = [' equipo '], valores = [' puntos '], aggfunc = [np.mean])

	significar
      puntos
equipo	
C 27,0
E 23.0
W 23.0

Filtrado de tablas dinámicas

Una vez que haya creado una tabla dinámica, puede filtrarla.

Por ejemplo, supongamos que solo queremos ver las estadísticas medias de los jugadores que están en el equipo W:

pivotTable = pd.pivot_table (df, index = [' equipo '])

pivotTable.query ('equipo == ["W"]')

     puntos rebotes
equipo 
   W 23,0 11,0

O supongamos que solo queremos ver las estadísticas medias de los jugadores de los equipos E o W:

pivotTable.query ('equipo == ["E", "W"]')

     puntos rebotes
equipo 
   E 23,0 13,0
   W 23,0 11,0

Puede encontrar la documentación completa para la función pivot_table aquí .

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Una de las preguntas más comunes en estadística elemental es: "Encuentre el área indicada debajo de la curva normal estándar".…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!