preloader

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:

python
pd.crosstab(index, columns, values = None, rownames = None, colnames = None, aggfunc = None, margins = False, margins_name = 'All', dropna = True, normalize = False)

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ón count.
  • 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 si margins es True.
  • 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():

python
import pandas as pd

Primer ejemplo


python
# 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)

GeneroEdadEstado Civil
0Hombre25Soltero
1Mujer30Casado
2Mujer35Casado
3Hombre40Soltero
python
# 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 CivilCasadoDivorciadoSolteroViudo
Genero
Hombre0022
Mujer3100

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


python
# 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)

GeneroEdadEstado CivilRegion
0Hombre25SolteroNorte
1Mujer30CasadoSur
2Mujer35CasadoNorte
3Hombre40SolteroCentro
python
# 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)

RegionCentroNorteSur
GeneroEstado Civil
HombreSoltero110
Viudo101
MujerCasado012
Divorciado010

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.

comments powered by Disqus