Python

Exploración de datos con Pandas: Entendiendo df.describe()

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.

¿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

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Pandas

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.