Función `crosstab()` de Pandas
Índice de contenido
Introducción
La función crosstab()
en Pandas se utiliza para crear una tabla de contingencia a partir de dos o más columnas de un DataFrame. Una tabla de contingencia es una herramienta que permite ver la distribución de frecuencias de las variables categóricas en forma de una tabla cruzada. La función crosstab()
se puede utilizar para analizar la relación entre dos o más variables categóricas.
La sintaxis básica de la función crosstab()
es la siguiente:
En cuyo caso:
index
: es la columna o lista de columnas que se utilizarán como índice en la tabla de contingencia.columns
: es la columna o lista de columnas cuyos valores se utilizarán como nombres de las nuevas columnas en la tabla de contingencia.values
: es la columna o lista de columnas cuyos valores se utilizarán para llenar la tabla de contingencia. Si no se proporciona ningún valor, se contará el número de ocurrencias en cada celda.aggfunc
: es la función de agregación que se utilizará para agregar los valores en la tabla de contingencia. Si no se proporciona ninguna función de agregación, se utilizará la funcióncount
.rownames
y colnames: son los nombres de las filas y columnas, respectivamente, en la tabla de contingencia.margins
: es un booleano que indica si se deben agregar totales de fila y columna en la tabla de contingencia.margins_name
: es el nombre que se le dará a la fila y columna de los totales simargins
esTrue
.dropna
: es un booleano que indica si se deben eliminar las filas y columnas que contienen valores faltantes (NaN
) en la tabla de contingencia.normalize
: es un booleano que indica si se debe normalizar la tabla de contingencia. Si es True, se calcula el porcentaje de cada celda con respecto a la suma total de todas las celdas.
Aquí hay un ejemplo para ilustrar cómo usar la función crosstab()
:
import pandas as pd
Primer ejemplo
# Creamos un DataFrame de ejemplo:
df = pd.DataFrame({'Genero': ['Hombre', 'Mujer', 'Mujer', 'Hombre', 'Hombre', 'Mujer', 'Mujer', 'Hombre'],
'Edad': [25, 30, 35, 40, 45, 50, 55, 60],
'Estado Civil': ['Soltero', 'Casado', 'Casado', 'Soltero', 'Viudo', 'Casado', 'Divorciado', 'Viudo']})
df.head(4)
Genero | Edad | Estado Civil | |
---|---|---|---|
0 | Hombre | 25 | Soltero |
1 | Mujer | 30 | Casado |
2 | Mujer | 35 | Casado |
3 | Hombre | 40 | Soltero |
# Creamos una tabla de contingencia a partir del DataFrame:
tabla_contingencia = pd.crosstab(index = df['Genero'],
columns = df['Estado Civil'])
tabla_contingencia.head(12)
Estado Civil | Casado | Divorciado | Soltero | Viudo |
---|---|---|---|---|
Genero | ||||
Hombre | 0 | 0 | 2 | 2 |
Mujer | 3 | 1 | 0 | 0 |
En este ejemplo, el DataFrame df
contiene información sobre el género, la edad y el estado civil de una muestra de personas. Queremos ver la distribución de frecuencias de las variables Genero
y Estado Civil
. La función crosstab()
se utiliza para hacer esto, y se cuenta el número de ocurrencias en cada celda.
Segundo ejemplo
# Creamos un DataFrame de ejemplo:
df = pd.DataFrame({'Genero': ['Hombre', 'Mujer', 'Mujer', 'Hombre', 'Hombre', 'Mujer', 'Mujer', 'Hombre'],
'Edad': [25, 30, 35, 40, 45, 50, 55, 60],
'Estado Civil': ['Soltero', 'Casado', 'Casado', 'Soltero', 'Viudo', 'Casado', 'Divorciado', 'Viudo'],
'Region': ['Norte', 'Sur', 'Norte', 'Centro', 'Centro', 'Sur', 'Norte', 'Sur']})
df.head(4)
Genero | Edad | Estado Civil | Region | |
---|---|---|---|---|
0 | Hombre | 25 | Soltero | Norte |
1 | Mujer | 30 | Casado | Sur |
2 | Mujer | 35 | Casado | Norte |
3 | Hombre | 40 | Soltero | Centro |
# Creamos una tabla de contingencia a partir del DataFrame:
tabla_contingencia = pd.crosstab(index = [df['Genero'], df['Estado Civil']],
columns = df['Region'])
tabla_contingencia.head(12)
Region | Centro | Norte | Sur | |
---|---|---|---|---|
Genero | Estado Civil | |||
Hombre | Soltero | 1 | 1 | 0 |
Viudo | 1 | 0 | 1 | |
Mujer | Casado | 0 | 1 | 2 |
Divorciado | 0 | 1 | 0 |
En este ejemplo, el DataFrame df
contiene información sobre el género, la edad, el estado civil y la región de una muestra de personas. Queremos ver la distribución de frecuencias de las variables Genero
, Estado Civil
y Region
. La función crosstab()
se utiliza para hacer esto, y se cuenta el número de ocurrencias en cada celda.
Esta tabla de contingencia muestra la distribución de frecuencias de las variables Genero
, Estado Civil
y Region
. Se puede observar que, por ejemplo, hay una mujer casada en la región Norte, y un hombre soltero en la región Centro. La tabla también puede ser útil para analizar la relación entre las variables categóricas y para hacer inferencias sobre la población de donde se extrajo la muestra.