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
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.
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:
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.
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:
df.describe() con columnas no numéricasAl 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.
df.describe()El método df.describe() es bastante flexible y permite varias opciones de personalización, algunas de las más utilizadas son:
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
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.
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
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.