statslibx 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {statslibx-0.1.0 → statslibx-0.1.2}/PKG-INFO +34 -3
- statslibx-0.1.2/README.md +32 -0
- {statslibx-0.1.0 → statslibx-0.1.2}/setup.py +2 -2
- {statslibx-0.1.0/statslib → statslibx-0.1.2/statslibx}/__init__.py +5 -4
- {statslibx-0.1.0/statslib → statslibx-0.1.2/statslibx}/descriptive.py +182 -31
- statslibx-0.1.2/statslibx/inferential.py +974 -0
- statslibx-0.1.2/statslibx/utils.py +1180 -0
- {statslibx-0.1.0 → statslibx-0.1.2}/statslibx.egg-info/PKG-INFO +34 -3
- {statslibx-0.1.0 → statslibx-0.1.2}/statslibx.egg-info/SOURCES.txt +5 -4
- statslibx-0.1.2/statslibx.egg-info/top_level.txt +1 -0
- {statslibx-0.1.0 → statslibx-0.1.2}/tests/test1.py +1 -1
- statslibx-0.1.0/statslib/inferential.py +0 -547
- statslibx-0.1.0/statslib/utils.py +0 -889
- statslibx-0.1.0/statslibx.egg-info/top_level.txt +0 -1
- {statslibx-0.1.0 → statslibx-0.1.2}/setup.cfg +0 -0
- {statslibx-0.1.0 → statslibx-0.1.2}/statslibx.egg-info/dependency_links.txt +0 -0
- {statslibx-0.1.0 → statslibx-0.1.2}/statslibx.egg-info/requires.txt +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: statslibx
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Librería de estadística descriptiva e inferencial para Python
|
|
5
|
-
Home-page: https://github.com/Immanuel3008/
|
|
5
|
+
Home-page: https://github.com/Immanuel3008/StatsLibX
|
|
6
6
|
Author: Emmanuel Ascendra Perez
|
|
7
7
|
Author-email: ascendraemmanuel@gmail.com
|
|
8
8
|
Classifier: Development Status :: 3 - Alpha
|
|
@@ -43,4 +43,35 @@ Dynamic: requires-dist
|
|
|
43
43
|
Dynamic: requires-python
|
|
44
44
|
Dynamic: summary
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
📦 Descripción para PyPI (Plantilla Profesional)
|
|
47
|
+
|
|
48
|
+
StatsLibX es un paquete de Python diseñado para proporcionar una solución sencilla, eficiente y flexible para manejar volumenes de datos.
|
|
49
|
+
|
|
50
|
+
Este proyecto surge con la idea de ofrecer una alternativa moderna, intuitiva y ligera que permita a desarrolladores y entusiastas integrar la estadistica descriptiva e inferencial sin complicaciones, con multiples funcionalidades y utilidades pensadas para el futuro.
|
|
51
|
+
|
|
52
|
+
✨ Características principales
|
|
53
|
+
|
|
54
|
+
⚡ Rápido y eficiente: optimizado para ofrecer un rendimiento suave incluso en tareas exigentes.
|
|
55
|
+
|
|
56
|
+
🧩 Fácil de usar: una API limpia para que empieces en segundos.
|
|
57
|
+
|
|
58
|
+
🔧 Altamente extensible: personalízalo según tus necesidades.
|
|
59
|
+
|
|
60
|
+
📚 Documentación clara: ejemplos simples y prácticos.
|
|
61
|
+
|
|
62
|
+
🔮 Diseñado con visión a futuro: construido para escalar y adaptarse.
|
|
63
|
+
|
|
64
|
+
🚀 Ejemplo rápido
|
|
65
|
+
from statslibx import DescriptiveStats, InferentialStats, UtilsStats
|
|
66
|
+
|
|
67
|
+
stats = DescriptiveStats(data) # InferentialStats(data), UtilsStats()
|
|
68
|
+
stats.help()
|
|
69
|
+
|
|
70
|
+
📦 Instalación
|
|
71
|
+
pip install statslibx
|
|
72
|
+
|
|
73
|
+
🤝 Contribuciones
|
|
74
|
+
|
|
75
|
+
¡Todas las mejoras e ideas son bienvenidas!
|
|
76
|
+
|
|
77
|
+
E-mail: ascendraemmanuel@gmail.com
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
📦 Descripción para PyPI (Plantilla Profesional)
|
|
2
|
+
|
|
3
|
+
StatsLibX es un paquete de Python diseñado para proporcionar una solución sencilla, eficiente y flexible para manejar volumenes de datos.
|
|
4
|
+
|
|
5
|
+
Este proyecto surge con la idea de ofrecer una alternativa moderna, intuitiva y ligera que permita a desarrolladores y entusiastas integrar la estadistica descriptiva e inferencial sin complicaciones, con multiples funcionalidades y utilidades pensadas para el futuro.
|
|
6
|
+
|
|
7
|
+
✨ Características principales
|
|
8
|
+
|
|
9
|
+
⚡ Rápido y eficiente: optimizado para ofrecer un rendimiento suave incluso en tareas exigentes.
|
|
10
|
+
|
|
11
|
+
🧩 Fácil de usar: una API limpia para que empieces en segundos.
|
|
12
|
+
|
|
13
|
+
🔧 Altamente extensible: personalízalo según tus necesidades.
|
|
14
|
+
|
|
15
|
+
📚 Documentación clara: ejemplos simples y prácticos.
|
|
16
|
+
|
|
17
|
+
🔮 Diseñado con visión a futuro: construido para escalar y adaptarse.
|
|
18
|
+
|
|
19
|
+
🚀 Ejemplo rápido
|
|
20
|
+
from statslibx import DescriptiveStats, InferentialStats, UtilsStats
|
|
21
|
+
|
|
22
|
+
stats = DescriptiveStats(data) # InferentialStats(data), UtilsStats()
|
|
23
|
+
stats.help()
|
|
24
|
+
|
|
25
|
+
📦 Instalación
|
|
26
|
+
pip install statslibx
|
|
27
|
+
|
|
28
|
+
🤝 Contribuciones
|
|
29
|
+
|
|
30
|
+
¡Todas las mejoras e ideas son bienvenidas!
|
|
31
|
+
|
|
32
|
+
E-mail: ascendraemmanuel@gmail.com
|
|
@@ -9,13 +9,13 @@ except FileNotFoundError:
|
|
|
9
9
|
|
|
10
10
|
setup(
|
|
11
11
|
name="statslibx",
|
|
12
|
-
version="0.1.
|
|
12
|
+
version="0.1.2",
|
|
13
13
|
author="Emmanuel Ascendra Perez",
|
|
14
14
|
author_email="ascendraemmanuel@gmail.com",
|
|
15
15
|
description="Librería de estadística descriptiva e inferencial para Python",
|
|
16
16
|
long_description=long_description,
|
|
17
17
|
long_description_content_type="text/markdown",
|
|
18
|
-
url="https://github.com/Immanuel3008/
|
|
18
|
+
url="https://github.com/Immanuel3008/StatsLibX", # Opcional
|
|
19
19
|
packages=find_packages(), # Encuentra automáticamente todos los paquetes
|
|
20
20
|
classifiers=[
|
|
21
21
|
"Development Status :: 3 - Alpha",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"""
|
|
2
2
|
StatsLibx - Librería de Estadística para Python
|
|
3
3
|
Autor: Emmanuel Ascendra
|
|
4
|
-
Versión: 0.1.
|
|
4
|
+
Versión: 0.1.2
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
__version__ = "0.1.
|
|
7
|
+
__version__ = "0.1.2"
|
|
8
8
|
__author__ = "Emmanuel Ascendra"
|
|
9
9
|
|
|
10
10
|
# Importar las clases principales
|
|
@@ -26,10 +26,11 @@ __all__ = [
|
|
|
26
26
|
# Mensaje de bienvenida (opcional)
|
|
27
27
|
def welcome():
|
|
28
28
|
"""Muestra información sobre la librería"""
|
|
29
|
-
print(f"
|
|
29
|
+
print(f"StatsLibx v{__version__}")
|
|
30
30
|
print(f"Librería de estadística descriptiva e inferencial")
|
|
31
31
|
print(f"Autor: {__author__}")
|
|
32
32
|
print(f"\nClases disponibles:")
|
|
33
33
|
print(f" - DescriptiveStats: Estadística descriptiva")
|
|
34
34
|
print(f" - InferentialStats: Estadística inferencial")
|
|
35
|
-
print(f"
|
|
35
|
+
print(f" - UtilsStats: Utilidades Extras")
|
|
36
|
+
print(f"\nPara más información: help(statslibx)")
|
|
@@ -311,47 +311,198 @@ class DescriptiveStats:
|
|
|
311
311
|
Muestra ayuda completa de la clase DescriptiveStats
|
|
312
312
|
"""
|
|
313
313
|
help_text = """
|
|
314
|
-
|
|
314
|
+
╔════════════════════════════════════════════════════════════════════════════╗
|
|
315
|
+
║ 📊 CLASE DescriptiveStats - AYUDA COMPLETA ║
|
|
316
|
+
╚════════════════════════════════════════════════════════════════════════════╝
|
|
315
317
|
|
|
316
|
-
|
|
318
|
+
📝 DESCRIPCIÓN:
|
|
319
|
+
Clase para análisis estadístico descriptivo univariado y multivariado.
|
|
320
|
+
Proporciona herramientas para análisis exploratorio de datos, medidas de
|
|
321
|
+
tendencia central, dispersión, forma de distribución y regresión lineal.
|
|
317
322
|
|
|
318
|
-
|
|
323
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
319
324
|
|
|
320
|
-
|
|
321
|
-
• .mean(), .median(), .mode() # Tendencia central
|
|
322
|
-
• .std(), .variance() # Dispersión
|
|
323
|
-
• .skewness(), .kurtosis() # Forma de distribución
|
|
324
|
-
• .quantile(0.25) # Cuantiles
|
|
325
|
-
• .outliers('columna') # Detección de outliers
|
|
325
|
+
📋 MÉTODOS PRINCIPALES:
|
|
326
326
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
327
|
+
┌────────────────────────────────────────────────────────────────────────────┐
|
|
328
|
+
│ 1. 📊 ESTADÍSTICAS UNIVARIADAS │
|
|
329
|
+
└────────────────────────────────────────────────────────────────────────────┘
|
|
330
330
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
331
|
+
🔹 Medidas de Tendencia Central:
|
|
332
|
+
• .mean(column=None) → Media aritmética
|
|
333
|
+
• .median(column=None) → Mediana (valor central)
|
|
334
|
+
• .mode(column=None) → Moda (valor más frecuente)
|
|
334
335
|
|
|
335
|
-
|
|
336
|
-
|
|
336
|
+
🔹 Medidas de Dispersión:
|
|
337
|
+
• .std(column=None) → Desviación estándar
|
|
338
|
+
• .variance(column=None) → Varianza
|
|
339
|
+
• .quantile(q, column=None) → Cuantiles/Percentiles
|
|
337
340
|
|
|
338
|
-
|
|
341
|
+
🔹 Medidas de Forma:
|
|
342
|
+
• .skewness(column=None) → Asimetría (sesgo)
|
|
343
|
+
• .kurtosis(column=None) → Curtosis (apuntamiento)
|
|
339
344
|
|
|
340
|
-
|
|
341
|
-
|
|
345
|
+
🔹 Detección de Valores Atípicos:
|
|
346
|
+
• .outliers(column, method='iqr', threshold=1.5)
|
|
347
|
+
Métodos: 'iqr' (rango intercuartílico) o 'zscore' (puntuación z)
|
|
342
348
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
349
|
+
┌────────────────────────────────────────────────────────────────────────────┐
|
|
350
|
+
│ 2. 🔗 ESTADÍSTICAS MULTIVARIADAS │
|
|
351
|
+
└────────────────────────────────────────────────────────────────────────────┘
|
|
346
352
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
• .correlation(method='pearson', columns=None)
|
|
354
|
+
Matriz de correlación entre variables
|
|
355
|
+
Métodos: 'pearson', 'spearman', 'kendall'
|
|
356
|
+
|
|
357
|
+
• .covariance(columns=None)
|
|
358
|
+
Matriz de covarianza entre variables
|
|
359
|
+
|
|
360
|
+
┌────────────────────────────────────────────────────────────────────────────┐
|
|
361
|
+
│ 3. 📋 RESUMEN COMPLETO │
|
|
362
|
+
└────────────────────────────────────────────────────────────────────────────┘
|
|
363
|
+
|
|
364
|
+
• .summary(columns=None, show_plot=False, plot_backend='seaborn')
|
|
365
|
+
Resumen descriptivo completo con todas las estadísticas
|
|
366
|
+
|
|
367
|
+
Incluye: conteo, media, mediana, moda, desv. est., varianza,
|
|
368
|
+
mínimo, Q1, Q3, máximo, IQR, asimetría, curtosis
|
|
369
|
+
|
|
370
|
+
┌────────────────────────────────────────────────────────────────────────────┐
|
|
371
|
+
│ 4. 📈 REGRESIÓN LINEAL │
|
|
372
|
+
└────────────────────────────────────────────────────────────────────────────┘
|
|
373
|
+
|
|
374
|
+
• .linear_regression(y, X, engine='statsmodels',
|
|
375
|
+
fit_intercept=True, show_plot=False,
|
|
376
|
+
plot_backend='seaborn', handle_missing='drop')
|
|
377
|
+
|
|
378
|
+
Regresión lineal simple o múltiple con análisis completo
|
|
379
|
+
|
|
380
|
+
Parámetros:
|
|
381
|
+
y : Variable dependiente (str)
|
|
382
|
+
X : Variable(s) independiente(s) (str o list)
|
|
383
|
+
engine : 'statsmodels' o 'scikit-learn'
|
|
384
|
+
fit_intercept : Incluir intercepto (bool)
|
|
385
|
+
show_plot : Mostrar gráficos diagnósticos (bool)
|
|
386
|
+
handle_missing : 'drop', 'error', 'warn'
|
|
387
|
+
|
|
388
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
389
|
+
|
|
390
|
+
💡 EJEMPLOS DE USO:
|
|
391
|
+
|
|
392
|
+
┌─ Ejemplo 1: Inicialización ─────────────────────────────────────────────┐
|
|
393
|
+
│ import pandas as pd │
|
|
394
|
+
│ from descriptive import DescriptiveStats │
|
|
395
|
+
│ │
|
|
396
|
+
│ # Con DataFrame │
|
|
397
|
+
│ df = pd.read_csv('datos.csv') │
|
|
398
|
+
│ stats = DescriptiveStats(df) │
|
|
399
|
+
│ │
|
|
400
|
+
│ # Con array numpy │
|
|
401
|
+
│ import numpy as np │
|
|
402
|
+
│ datos = np.random.normal(0, 1, 1000) │
|
|
403
|
+
│ stats = DescriptiveStats(datos) │
|
|
404
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
405
|
+
|
|
406
|
+
┌─ Ejemplo 2: Análisis Univariado ────────────────────────────────────────┐
|
|
407
|
+
│ # Estadísticas de una columna │
|
|
408
|
+
│ media = stats.mean('edad') │
|
|
409
|
+
│ mediana = stats.median('edad') │
|
|
410
|
+
│ desv_est = stats.std('edad') │
|
|
411
|
+
│ │
|
|
412
|
+
│ # Cuartiles │
|
|
413
|
+
│ q25 = stats.quantile(0.25, 'edad') │
|
|
414
|
+
│ q75 = stats.quantile(0.75, 'edad') │
|
|
415
|
+
│ │
|
|
416
|
+
│ # Detectar outliers │
|
|
417
|
+
│ outliers_mask = stats.outliers('edad', method='iqr', threshold=1.5) │
|
|
418
|
+
│ print(f"Outliers detectados: {outliers_mask.sum()}") │
|
|
419
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
420
|
+
|
|
421
|
+
┌─ Ejemplo 3: Resumen Completo ───────────────────────────────────────────┐
|
|
422
|
+
│ # Resumen de todas las variables numéricas │
|
|
423
|
+
│ resumen = stats.summary() │
|
|
424
|
+
│ print(resumen) │
|
|
425
|
+
│ │
|
|
426
|
+
│ # Resumen de columnas específicas con visualización │
|
|
427
|
+
│ resumen = stats.summary( │
|
|
428
|
+
│ columns=['edad', 'salario', 'experiencia'], │
|
|
429
|
+
│ show_plot=True, │
|
|
430
|
+
│ plot_backend='seaborn' │
|
|
431
|
+
│ ) │
|
|
432
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
433
|
+
|
|
434
|
+
┌─ Ejemplo 4: Análisis Multivariado ──────────────────────────────────────┐
|
|
435
|
+
│ # Matriz de correlación │
|
|
436
|
+
│ corr_pearson = stats.correlation(method='pearson') │
|
|
437
|
+
│ corr_spearman = stats.correlation(method='spearman') │
|
|
438
|
+
│ │
|
|
439
|
+
│ # Matriz de covarianza │
|
|
440
|
+
│ cov_matrix = stats.covariance() │
|
|
441
|
+
│ │
|
|
442
|
+
│ # Correlación entre variables específicas │
|
|
443
|
+
│ corr_subset = stats.correlation( │
|
|
444
|
+
│ method='pearson', │
|
|
445
|
+
│ columns=['edad', 'salario', 'experiencia'] │
|
|
446
|
+
│ ) │
|
|
447
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
448
|
+
|
|
449
|
+
┌─ Ejemplo 5: Regresión Lineal Simple ────────────────────────────────────┐
|
|
450
|
+
│ # Regresión simple: salario ~ experiencia │
|
|
451
|
+
│ modelo = stats.linear_regression( │
|
|
452
|
+
│ y='salario', │
|
|
453
|
+
│ X='experiencia', │
|
|
454
|
+
│ engine='statsmodels', │
|
|
455
|
+
│ show_plot=True │
|
|
456
|
+
│ ) │
|
|
457
|
+
│ │
|
|
458
|
+
│ # Ver resultados │
|
|
459
|
+
│ print(modelo.summary()) │
|
|
460
|
+
│ │
|
|
461
|
+
│ # Acceder a coeficientes │
|
|
462
|
+
│ print(f"Intercepto: {modelo.intercept_}") │
|
|
463
|
+
│ print(f"Pendiente: {modelo.coef_[0]}") │
|
|
464
|
+
│ print(f"R²: {modelo.r_squared}") │
|
|
465
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
466
|
+
|
|
467
|
+
┌─ Ejemplo 6: Regresión Lineal Múltiple ──────────────────────────────────┐
|
|
468
|
+
│ # Regresión múltiple: salario ~ experiencia + edad + educacion │
|
|
469
|
+
│ modelo = stats.linear_regression( │
|
|
470
|
+
│ y='salario', │
|
|
471
|
+
│ X=['experiencia', 'edad', 'educacion'], │
|
|
472
|
+
│ engine='statsmodels', │
|
|
473
|
+
│ fit_intercept=True, │
|
|
474
|
+
│ handle_missing='drop' │
|
|
475
|
+
│ ) │
|
|
476
|
+
│ │
|
|
477
|
+
│ print(modelo.summary()) │
|
|
478
|
+
│ │
|
|
479
|
+
│ # Hacer predicciones │
|
|
480
|
+
│ import numpy as np │
|
|
481
|
+
│ X_nuevo = np.array([[5, 30, 16], [10, 35, 18]]) # experiencia, edad │
|
|
482
|
+
│ predicciones = modelo.predict(X_nuevo) │
|
|
483
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
484
|
+
|
|
485
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
486
|
+
|
|
487
|
+
🎯 CARACTERÍSTICAS CLAVE:
|
|
488
|
+
|
|
489
|
+
✓ Análisis univariado completo
|
|
490
|
+
✓ Análisis multivariado (correlación, covarianza)
|
|
491
|
+
✓ Detección de outliers con múltiples métodos
|
|
492
|
+
✓ Regresión lineal con statsmodels o scikit-learn
|
|
493
|
+
✓ Manejo automático de valores faltantes
|
|
494
|
+
✓ Soporte para pandas DataFrame y numpy arrays
|
|
495
|
+
✓ Salidas formateadas profesionales
|
|
496
|
+
✓ Visualizaciones opcionales
|
|
497
|
+
|
|
498
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
499
|
+
|
|
500
|
+
📚 DOCUMENTACIÓN ADICIONAL:
|
|
501
|
+
Para más información sobre métodos específicos, use:
|
|
502
|
+
help(DescriptiveStats.nombre_metodo)
|
|
503
|
+
|
|
504
|
+
╚════════════════════════════════════════════════════════════════════════════╝
|
|
505
|
+
"""
|
|
355
506
|
print(help_text)
|
|
356
507
|
|
|
357
508
|
class DescriptiveSummary:
|