Función de Pandas Crosstab

Función de Pandas Crosstab
La función "crosstab ()" en pandas crea una tabla de tabulación cruzada que muestra la frecuencia con la que aparecen los conjuntos específicos de datos. El método "crosstab ()" es una de las diversas técnicas en pandas que le permite reestructurar sus datos. Esta publicación explica cómo utilizar la función "crosstab ()".

Sintaxis de crosstab ():

pandas.CrosStab (índice, columnas, valores = ninguno, Rownames = None, Colnames = None, Margins = False, Margins_Name = 'All', Dropna = True, Normalize = False)

Parámetros:

  1. Aquí, el primer parámetro es el "índice", que son los valores que se utilizan como el índice de DataFrame de salida de salida. Puede ser una matriz, serie o múltiples matrices o series.
  2. Las "columnas" son las columnas de DataFrame generadas.
  3. Los "valores" son los valores que se utilizan para calcular la estadística proporcionada por "AGG _func".
  4. El "Rownames" es el nombre (s) que se asignan a las filas en el marco de datos resultante. El "Rownames = None" es la configuración predeterminada para este argumento.
  5. El "colnames" es el nombre (s) de la columna que se dan al marcado de datos de salida. El "colnames = none" es la configuración predeterminada. La entrada de esta función es "valores" y el elemento de retorno es la estadística agregada como la media, máxima, etc.
  6. Los "márgenes" determinan si agregar una fila y una columna adicionales que muestran la suma de las celdas en cuanto a la fila y en cuanto a columnas. El "margen = falso" es la configuración predeterminada.
  7. El "Margins-Name" es el título de la fila y la columna recién agregadas si los "márgenes" se configuran en "verdadero".
  8. El "dropna" determina si eliminar las columnas con solo valores NAN. El "dropna = false" es la configuración predeterminada.
  9. La "normalizar" dice si normalizar los números obtenidos dividiendo por el total.

Ejemplo 1:
Cree un marco de datos con 5 columnas y genere una tabla de contingencia (pestaña cruzada) configurando el eje X como columna "Opción2" y el eje Y como columna "Nombre".

importación de pandas
# Crear un marco de datos con 5 columnas
myData = pandas.DataFrame ([[1, "Sravan", "Tecnología en la nube", "Bases de datos", 89],
[2, "Sravan", "Python", "Programación frontend", 98],
[3, "Sravan", "Elective 1", "Bases de datos", 50],
[5, "satwik", "php", "bases de datos", 99],
[6, "Diba", "Php", "Bases de datos", 19],
[9, "Diba", "Elective 1", "Programación frontend", 54],
],
columnas = ["ID de examen", "nombre", "opción1", "opción2", "marca"]
)
Imprimir (MyData, "\ n")
# Usemos la función crosstab ()
frecuencia = pandas.Crosstab (MyData.Opción2, MyData.nombre)
Imprimir (frecuencia)

Producción:

Explicación:
Pasamos la columna "Opción2" como eje X y la columna "Nombre" como eje Y. Ahora, puede ver en la ilustración anterior que se genera la tabla de frecuencia. Analicémoslo.

  1. "Bases de datos" - "Diba" solo contiene 1, "Satwik" también 1 y "Sravan" 2.
  2. "Programación frontend" - "Diba" contiene solo 1, "Satwik" tiene 0, y "Sravan" también es 1.

Ejemplo 2:
Utilice el mismo marcado de datos y genere una tabla de contingencia (pestaña cruzada) configurando el eje X como columnas "Opción1" y "Opción2" y la columna del eje Y como "Nombre".

importación de pandas
# Crear un marco de datos con 5 columnas
myData = pandas.DataFrame ([[1, "Sravan", "Tecnología en la nube", "Bases de datos", 89],
[2, "Sravan", "Elective 1", "Programación frontend", 98],
[3, "Sravan", "Elective 1", "Bases de datos", 50],
[5, "satwik", "php", "bases de datos", 99],
[6, "Diba", "Php", "Bases de datos", 19],
[9, "Diba", "PHP", "Programación frontend", 54],
],
columnas = ["ID de examen", "nombre", "opción1", "opción2", "marca"]
)
# Usemos la función crosstab ()
frecuencia = pandas.Crosstab ([MyData.Opción1, MyData.Opción2], MyData.nombre)
Imprimir (frecuencia)

Producción:

Explicación:
Pasamos las columnas "Opción1" y "Opción2" como el eje X a través de una lista y la columna "Nombre" como eje Y. Ahora, puede ver en la ilustración anterior que se genera la tabla de frecuencia.

Ejemplo 3: Establezca los márgenes
Ahora, creamos una tabla de contingencia para columnas "opción2" y "nombre" estableciendo los márgenes y proporcionando los nombres de margen como "recuento total".

importación de pandas
# Crear un marco de datos con 5 columnas
myData = pandas.DataFrame ([[1, "Sravan", "Tecnología en la nube", "Bases de datos", 89],
[2, "Sravan", "Elective 1", "Programación frontend", 98],
[3, "Sravan", "Elective 1", "Bases de datos", 50],
[5, "satwik", "php", "bases de datos", 99],
[6, "Diba", "Php", "Bases de datos", 19],
[9, "Diba", "PHP", "Programación frontend", 54],
],
columnas = ["ID de examen", "nombre", "opción1", "opción2", "marca"]
)
# Usemos la función CrosStab () configurando márgenes y parámetro Margins_Name
frecuencia = pandas.Crosstab (MyData.Opción2, MyData.Nombre, Margins = True, Margins_Name = "Total Count")
Imprimir (frecuencia)

Producción:

Explicación:
Pasamos los márgenes y los establecemos en verdadero y el nombre de los márgenes al "recuento total". Se crean los márgenes y la suma total de valores para el eje se devuelve como 6.

A través de las filas:

  1. Para "bases de datos" - 1+1+2 = 4
  2. Para "programación frontend" - 1+0+1 = 2

El recuento total es 6.

A través de columnas:

  1. Para "Diba" - 1+1 = 2
  2. Para "satwik" - 1+0 = 1
  3. Para "sravan" - 2+1 = 3

El recuento total es 6.

Ejemplo 4: Establezca los valores de normalización
Ahora, creamos una tabla de contingencia para columnas "opción2" y "nombre" normalizando los valores.

importación de pandas
# Crear un marco de datos con 5 columnas
myData = pandas.DataFrame ([[1, "Sravan", "Tecnología en la nube", "Bases de datos", 89],
[2, "Sravan", "Elective 1", "Programación frontend", 98],
[3, "Sravan", "Elective 1", "Bases de datos", 50],
[5, "satwik", "php", "bases de datos", 99],
[6, "Diba", "Php", "Bases de datos", 19],
[9, "Diba", "PHP", "Programación frontend", 54],
],
columnas = ["ID de examen", "nombre", "opción1", "opción2", "marca"]
)
# Usemos la función crosstab () configurando el parámetro normalize en el índice.
frecuencia = pandas.Crosstab (MyData.Opción2, MyData.nombre, normalize = 'índice')
Imprimir (frecuencia)

Producción:

Explicación:
Pasamos el parámetro de normalización y lo establecemos en "índice". Devuelve el porcentaje de cada ocurrencia.

El recuento total es 6.

  1. En "bases de datos" - para "Diba" - 1 Entre 4 => El valor normalizado es 0.25.
  2. En "bases de datos" - para "satwik" - 1 entre 4 => el valor normalizado es 0.25.
  3. En "bases de datos" - para "sravan" - 2 entre 4 => el valor normalizado es 0.5.
  4. En "Programación frontend" - para "Diba" - 1 Entre 2 => El valor normalizado es 0.50.
  5. En "Programación frontend" - para "satwik" - 0 entre 2 => el valor normalizado es 0.00.
  6. En "Programación frontend" - para "Sravan" - 1 Entre 2 => El valor normalizado es 0.5.

Conclusión

Este artículo está escrito para darle la idea y hacerle comprender el concepto de calcular la tabulación cruzada para el análisis de datos. Pandas nos proporciona un montón de características útiles. De la cual, "Pandas.crosstab () ”es uno. Utilizamos este método en este aprendizaje para calcular la tabulación cruzada y consideramos la mayoría de los parámetros para la demostración.