763e06c127
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.5 KiB
3.5 KiB
name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | params | output | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| describe_numeric | function | py | datascience | 1.0.0 | pure | def describe_numeric(values: list, bins: int = 20) -> dict | Calcula el bloque estadistico fino numeric de un ColumnProfile del grupo eda sobre una MUESTRA de una columna numerica. Descarta None/NaN/no-numericos y devuelve min/max/mean/median/mode/std/variance/cv, percentiles, iqr, skew, kurtosis, outliers, zero_pct, negative_pct, distribution_type e histogram. Reusa detect_distribution_type, detect_outliers y histogram del registry. |
|
|
Dict con las claves exactas del contrato numeric_sub del grupo eda: {min, max, mean, median, mode, std, variance, cv, p1, p5, p25, p50, p75, p95, p99, iqr, skew, kurtosis, n_outliers, outlier_pct, zero_pct, negative_pct, distribution_type, histogram}. cv = std/mean (None si mean==0). iqr = p75-p25. mode = valor mas frecuente (menor en empate). histogram = lista de {lo, hi, count}. Si tras limpiar quedan 0 valores: todas las claves None y histogram=[]. |
|
false |
|
true |
|
python/functions/datascience/describe_numeric_test.py | python/functions/datascience/describe_numeric.py |
Ejemplo
import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from datascience.describe_numeric import describe_numeric
# Muestra de una columna numerica (con un None y un outlier claro):
prof = describe_numeric([1, 2, 2, 3, 100, None, 4])
print(prof["min"], prof["max"], prof["median"], prof["mode"])
# 1.0 100.0 2.5 2.0
print(prof["distribution_type"]) # etiqueta de forma (too_few_samples si n < 30)
print(prof["histogram"][:2]) # [{'lo': 1.0, 'hi': 5.95, 'count': ...}, ...]
Cuando usarla
- Usala cuando construyas el bloque
numericde unColumnProfiledel grupoedaa partir de una muestra de una columna numerica (no la tabla entera). - Cuando necesites de un solo paso percentiles finos (p1..p99), iqr, dispersion (std, variance, cv), forma (skew, kurtosis, distribution_type), outliers por z-score e histograma con bordes.
- Antes de decidir transformaciones (log, winsorize, escalado) sobre una columna: el
distribution_type,n_outliersyskeworientan la decision.
Gotchas
- Funcion pura, sin I/O. Descarta silenciosamente None, NaN, infinitos, strings y bool (True/False no cuentan como datos numericos).
distribution_type,skewykurtosisvienen dedetect_distribution_type, que devuelvetoo_few_samples(y skew/kurtosis None) cuando la muestra limpia tiene menos de 30 valores.- Los outliers usan z-score con
stdpoblacional y threshold 3.0 (dedetect_outliers): en muestras muy pequeñas un unico valor extremo puede inflar lastdy no marcarse como outlier (efecto masking). Para deteccion fiable, pasa una muestra suficientemente grande. cvesNonecuandomean == 0(division indefinida).