Pandas es la biblioteca de referencia en Python para el análisis y manipulación de datos. Usando para ello los objetos DataFrame. Una de los métodos más útiles que se incluyen en los DataFrame es df.describe()
, con el que se puede obtener de una forma rápida un resumen comprensible de los datos. En esta entrada, se analizará cómo usar esta función para obtener diferentes estadísticas descriptivas de los DataFrame.
Tabla de contenidos
¿Qué es df.describe()
?
Básicamente, el método df.describe()
proporciona un resumen estadístico de las columnas de un DataFrame. Un resumen en el que se incluyen medidas de tendencia central, dispersión y forma de la distribución de los datos. Siendo en especial útil para obtener rápidamente una visión general de los datos.
Estadísticas descriptivas predeterminadas
Por defecto, cuando se llama el método sin ningún parámetro, la función df.describe()
calcula las siguientes estadísticas para cada una de las columna numérica del DataFrame sobre el que se ejecuta:
- count: El número de valores no nulos.
- mean: La media de los valores.
- std: La desviación estándar de los valores.
- min: El valor mínimo.
- 25%: El percentil 25 (primer cuartil).
- 50%: El percentil 50 (mediana).
- 75%: El percentil 75 (tercer cuartil).
- max: El valor máximo.
Ejemplo básico del uso de df.describe()
A continuación se muestra un ejemplo básico del uso de df.describe()
con un DataFrame:
import pandas as pd # Crear un DataFrame de ejemplo data = { 'edad': [23, 45, 12, 35, 67, 34, 25, 27, 19, 24], 'ingresos': [50000, 60000, 12000, 35000, 67000, 34000, 25000, 27000, 19000, 24000] } df = pd.DataFrame(data) # Obtener estadísticas descriptivas descripcion = df.describe() print(descripcion)
edad ingresos
count 10.000000 10.000000
mean 31.100000 35300.000000
std 15.588101 18086.520456
min 12.000000 12000.000000
25% 23.250000 24250.000000
50% 26.000000 30500.000000
75% 34.750000 46250.000000
max 67.000000 67000.000000
Como puedes ver en los resultados, df.describe()
proporciona un resumen claro y conciso con las estadísticas más importantes para cada columna numérica del DataFrame.
Información de columnas no numéricas
Además de las columnas numéricas, df.describe()
también proporciona estadísticas descriptivas de las columnas tipo objeto (como son las cadenas de texto). Para este tipo de columna, las estadísticas que se muestran por defecto son:
- count: El número de elementos no nulos.
- unique: El número de valores únicos.
- top: El valor más frecuente.
- freq: La frecuencia del valor más frecuente.
Ejemplo básico del uso de df.describe()
con columnas no numéricas
Al igual que en el caso de datos numéricos se muestra a continuación un ejemplo del uso básico de df.describe()
con columnas no numéricas.
df_text = pd.DataFrame({ 'nombre': ['Ana', 'Juan', 'Ana', 'Luis', 'Juan', 'Ana'], 'ciudad': ['Madrid', 'Barcelona', 'Madrid', 'Sevilla', 'Madrid', 'Sevilla'] }) descripcion_texto = df_text.describe() print(descripcion_texto)
nombre ciudad
count 6 6
unique 3 3
top Ana Madrid
freq 3 3
En el resultado se puede ver que existen 6 valores en cada columna, con 3 valores únicos en cada una. “Ana” es el nombre más frecuente y aparece 3 veces, mientras que “Madrid” es la ciudad más frecuente, también con 3 apariciones.
Opciones de personalización de df.describe()
El método df.describe()
es bastante flexible y permite varias opciones de personalización, algunas de las más utilizadas son:
Incluir y excluir tipos de datos
Se puede especificar qué tipos de datos incluir o excluir en el análisis usando los parámetros include
(lo que es una lista blanca de tipos de datos) y exclude
(una lista negra de los tipos de datos).
import numpy as np # Crear un DataFrame de ejemplo con datos mixtos data = { 'nombre': ['Ana', 'Juan', 'Ana', 'Luis', 'Juan', 'Ana', 'Pedro', 'María'], 'ciudad': ['Madrid', 'Barcelona', 'Madrid', 'Sevilla', 'Madrid', 'Sevilla', 'Valencia', 'Barcelona'], 'edad': [23, 45, 12, 35, 67, 34, 25, 27], 'ingresos': [50000, 60000, 12000, 35000, 67000, 34000, 25000, 27000] } df = pd.DataFrame(data) # Incluir solo columnas de tipo numérico descripcion = df.describe(include=[np.number]) print("Descripción de columnas de tipo numérico:") print(descripcion) # Excluir columnas de tipo numérico descripcion = df.describe(exclude=[np.number]) print("\nDescripción excluyendo columnas numéricas:") print(descripcion)
Descripción de columnas de tipo objeto:
edad ingresos
count 8.000000 8.000000
mean 33.500000 38750.000000
std 16.664762 18729.274259
min 12.000000 12000.000000
25% 24.500000 26500.000000
50% 30.500000 34500.000000
75% 37.500000 52500.000000
max 67.000000 67000.000000
Descripción excluyendo columnas numéricas:
nombre ciudad
count 8 8
unique 5 4
top Ana Madrid
freq 3 3
Para este DataFrame, este último resultado también se puede generar mediante el uso de una lista blanca.
# Incluir solo columnas de tipo objeto descripcion_objeto = df.describe(include=[object]) print("Descripción de columnas de tipo objeto:") print(descripcion_objeto)
Descripción de columnas de tipo objeto:
nombre ciudad
count 8 8
unique 5 4
top Ana Madrid
freq 3 3
Valores de los percentiles personalizados
Por defecto, df.describe()
calcula los percentiles 25, 50 y 75. Sin embargo, es posible especificar una lista de percentiles personalizados usando el parámetro percentiles
.
# Calcular percentiles personalizados descripcion_percentiles = df.describe(percentiles=[.1, .25, .5, .75, .9]) print(descripcion_percentiles)
edad ingresos
count 8.000000 8.000000
mean 33.500000 38750.000000
std 16.664762 18729.274259
min 12.000000 12000.000000
10% 19.700000 21100.000000
25% 24.500000 26500.000000
50% 30.500000 34500.000000
75% 37.500000 52500.000000
90% 51.600000 62100.000000
max 67.000000 67000.000000
Como se puede ver, ahora, además de los precentiles por defecto, también se muestran valores para 10 y 90.
Conclusiones
El método df.describe()
de Pandas es una herramienta básica, pero clave, para el análisis exploratorio de datos en Python. Proporcionando un resumen rápido y fácil de comprender de las principales características del conjunto de datos sobre el que se está trabajando. Ayudando a identificar tendencias, detectar valores atípicos y comprender mejor la estructura de los datos.
Imagen de Panumas Nikhomkhai en Pixabay
Deja una respuesta