Configuran el comportamiento global de la instancia para visualizaciones.
from statslibx import UtilsStats
utils = UtilsStats()
utils.set_plot_backend('seaborn') # 'matplotlib', 'seaborn', 'plotly'
utils.set_default_figsize((14, 6)) # (ancho, alto) en pulgadas
utils.set_save_fig_options(
save_fig=True,
fig_format='png', # 'png', 'svg', 'pdf'
fig_dpi=300,
figures_dir='mis_graficos'
)Carga datos desde archivo en múltiples formatos. Detecta el formato automáticamente por la extensión.
| Formato | Extensiones |
|---|---|
| CSV | .csv |
| Excel | .xlsx, .xls |
| Texto / TSV | .txt, .tsv |
| JSON | .json |
| Parquet | .parquet |
| Feather | .feather |
df = utils.load_data("ventas.csv")
df = utils.load_data("reporte.xlsx", sheet_name="Hoja1")
df = utils.load_data("datos.json")Verifica normalidad con el test de Shapiro-Wilk. Acepta datos en memoria o rutas de archivo.
result = utils.check_normality(df, column='edad')
# {'is_normal': True, 'shapiro_statistic': 0.98, 'shapiro_pvalue': 0.12,
# 'alpha': 0.05, 'interpretation': 'Normal'}
# Desde archivo directo
result = utils.check_normality("datos.csv", column="salario")Calcula intervalos de confianza para la media. El método 'bootstrap' es preferible para datos no normales (1000 resamplings).
ci = utils.calculate_confidence_intervals(df, column='salario', confidence_level=0.95)
# {'mean': 52000, 'std': 8200, 'n': 300, 'confidence_level': 0.95,
# 'ci_lower': 51070, 'ci_upper': 52930, 'margin_error': 930, 'method': 'parametric'}
ci_boot = utils.calculate_confidence_intervals(data, method='bootstrap')Detecta outliers con tres métodos. Retorna array booleano. isolation_forest requiere scikit-learn.
mask_iqr = utils.detect_outliers(df, column='precio', method='iqr')
mask_z = utils.detect_outliers(df, column='precio', method='zscore', threshold=3)
mask_if = utils.detect_outliers(df, column='precio', method='isolation_forest', contamination=0.05)
# Filtrar outliers
df_limpio = df[~mask_iqr]Calcula el tamaño del efecto entre dos grupos usando Cohen's d o Hedges' g (corrección para muestras pequeñas).
# Desde DataFrame con nombres de columna
efecto = utils.calculate_effect_size(df, group1='salario_h', group2='salario_m')
# {'effect_size': 0.45, 'method': 'cohen', 'interpretation': 'Pequeño',
# 'mean_diff': 3200, 'pooled_std': 7100}
# Desde arrays numpy
import numpy as np
g1 = np.random.normal(100, 15, 100)
g2 = np.random.normal(110, 15, 100)
efecto = utils.calculate_effect_size(g1, group2=g2, method='hedges')Retorna un diccionario completo de estadísticas descriptivas: count, mean, median, mode, std, variance, min, max, q1, q3, iqr, skewness, kurtosis, range.
stats = utils.get_descriptive_stats(df, column='edad')
print(f"Media: {stats['mean']:.2f}, IQR: {stats['iqr']:.2f}")Visualiza la distribución de una variable. Con plot_type='all' genera cuatro paneles (histograma+KDE, boxplot, violin, Q-Q). Acepta rutas de archivo directamente.
matplotlib
Rápido y ligero. Ideal para scripts y exportar.
seaborn
Gráficos estadísticos elegantes. Por defecto.
plotly
Interactivo con zoom y tooltips.
utils.plot_distribution(df, column='salario', plot_type='hist', backend='seaborn')
utils.plot_distribution(df, column='edad', plot_type='all') # 4 paneles
utils.plot_distribution("datos.csv", column="precio", plot_type='violin') # Desde archivo
fig = utils.plot_distribution(df, column='edad', backend='plotly') # InteractivoGenera dos paneles: histograma+KDE y KDE con intervalo de confianza sombreado. Incluye estadísticas en recuadro informativo.
utils.plot_distribution_with_ci(
df, column='salario',
confidence_level=0.95,
ci_method='parametric',
save_fig=True, filename='salario_ic'
)Heatmap de la matriz de correlación. Con triangular=True oculta la diagonal superior para mayor claridad.
utils.plot_correlation_matrix(df, method='pearson', triangular=True)
fig = utils.plot_correlation_matrix(df, backend='plotly') # InteractivoPairplot / scatter matrix. Muestra relaciones entre todas las variables numéricas de forma simultánea.
utils.plot_scatter_matrix(df, columns=['edad', 'salario', 'experiencia'])
fig = utils.plot_scatter_matrix(df, backend='plotly')