Inicializa con un DataFrame de pandas o array numpy. Detecta automáticamente columnas numéricas y categóricas
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| data | pd.DataFrame | np.ndarray | — | Dataset de entrada (requerido) |
| lang | str | 'es-ES' | Idioma de salidas: 'es-ES' o 'en-US' |
from statslibx import DescriptiveStats
from statslibx.datasets import load_iris
data = load_iris()
ds = DescriptiveStats(data)
Calcula la media aritmética de una columna específica o de todas las columnas numéricas.
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| column | str | None | None | Nombre de la columna. Si es None, calcula para todas las columnas numéricas. |
ds.mean('sepal_length') # → float
ds.mean() # → pd.Series con todas las columnasCalcula la mediana (valor central) de una columna o de todas las numéricas.
ds.median('petal_width') # → float
ds.median() # → pd.SeriesCalcula la moda (valor más frecuente) de una columna o de todas las numéricas.
ds.mode('species') # → valor más frecuente
ds.mode() # → pd.SeriesDesviación estándar muestral de una columna o de todas las numéricas.
ds.std('sepal_length') # → float
ds.std() # → pd.SeriesVarianza muestral de una columna o de todas las numéricas.
ds.variance('petal_length') # → floatCalcula cuantiles / percentiles para una o todas las columnas numéricas.
| Parámetro | Tipo | Descripción |
|---|---|---|
| q | float | List[float] | Cuantil(es) a calcular. Ej: 0.25, [0.25, 0.5, 0.75] |
| column | str | None | Columna específica. None para todas. |
ds.quantile(0.25, 'sepal_length') # Q1 de una columna
ds.quantile([0.25, 0.5, 0.75]) # Cuartiles de todas
ds.quantile([0.1, 0.9], 'petal_width') # Percentiles 10 y 90Asimetría (sesgo) de la distribución. Valores positivos indican cola derecha, negativos cola izquierda.
skew = ds.skewness('sepal_length')
# >0: sesgo positivo (cola derecha), <0: sesgo negativoCurtosis (apuntamiento) de la distribución. Mide cuánto difiere la distribución de la normal en sus colas.
kurt = ds.kurtosis('petal_length')
# >0: leptocúrtica (colas pesadas), <0: platicúrtica (colas ligeras)Detecta outliers en una columna usando el método IQR (rango intercuartílico) o z-score. Retorna una máscara booleana.
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| column | str | — | Columna a analizar (requerido) |
| method | 'iqr' | 'zscore' | 'iqr' | Método de detección |
| threshold | float | 1.5 | 1.5 para IQR, 3 para zscore típicamente |
mask = ds.outliers('sepal_length', method='iqr', threshold=1.5)
print(f"Outliers encontrados: {mask.sum()}")
# Con z-score
mask_z = ds.outliers('petal_length', method='zscore', threshold=3)
datos_limpios = data[~mask_z] # Filtrar outliersCalcula la matriz de correlación entre variables numéricas usando el método seleccionado.
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| method | str | 'pearson' | 'pearson', 'spearman' o 'kendall' |
| columns | List[str] | None | None | Subconjunto de columnas. None para todas las numéricas. |
# Correlación de Pearson
corr = ds.correlation(method='pearson')
# Correlación de Spearman para columnas específicas
corr_sub = ds.correlation(
method='spearman',
columns=['sepal_length', 'petal_length', 'petal_width']
)Calcula la matriz de covarianza entre variables numéricas.
cov_matrix = ds.covariance()
cov_sub = ds.covariance(columns=['sepal_length', 'petal_length'])Resumen estadístico completo: conteo, media, mediana, moda, desviación estándar, varianza, mínimo, Q1, Q3, máximo, IQR, asimetría y curtosis. Retorna un objeto DescriptiveSummary con métodos de conversión.
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| columns | List[str] | None | None | Columnas a resumir. None para todas las numéricas. |
| show_plot | bool | False | Mostrar gráficos de distribución |
| plot_backend | str | 'seaborn' | 'seaborn', 'plotly' o 'matplotlib' |
resumen = ds.summary()
print(resumen) # Tabla formateada
# Convertir a DataFrame
df_wide = resumen.to_dataframe(format='wide') # estadísticas en filas
df_compact = resumen.to_dataframe(format='compact') # variables en filas
df_long = resumen.to_dataframe(format='long') # formato largo
# DataFrame estilizado para Jupyter
styled = resumen.to_styled_df() # Heatmap de valores
# Resumen por categorías
cats = resumen.to_categorical_summary()
print(cats['Tendencia Central'])
print(cats['Dispersión'])Regresión lineal simple o múltiple. Retorna un objeto completo con coeficientes, R², residuales, intervalos de confianza y métodos de predicción.
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| X | str | List[str] | — | Variable(s) independiente(s) |
| y | str | — | Variable dependiente |
| engine | str | 'statsmodels' | 'statsmodels' o 'scikit-learn' |
| fit_intercept | bool | True | Incluir intercepto en el modelo |
| show_plot | bool | False | Mostrar gráfico de regresión |
| handle_missing | str | 'drop' | 'drop', 'error' o 'warn' |
# Regresión simple
modelo = ds.linear_regression(X='sepal_length', y='petal_length')
print(modelo.summary())
print(f"R²: {modelo.r_squared:.4f}")
print(f"Intercepto: {modelo.intercept_:.4f}")
print(f"Coeficiente: {modelo.coef_[0]:.4f}")
# Predicciones
import numpy as np
X_nuevo = np.array([[5.0], [6.5], [7.2]])
preds = modelo.predict(X_nuevo)
# Regresión múltiple
modelo_m = ds.linear_regression(
X=['sepal_length', 'sepal_width'],
y='petal_length',
engine='statsmodels',
show_plot=True
)Muestra la documentación completa de la clase en la consola, en el idioma configurado (lang).
ds = DescriptiveStats(data, lang='en-US')
ds.help() # Imprime guía completa en inglés