docs(i18n): ship Spanish translations of buyer-facing docs
Adds README.es.md, docs/README.es.md, docs/USER-GUIDE.es.md, and docs/CLI-REFERENCE.es.md mirroring the English client-facing set. Each English doc gains a one-line language-switch banner pointing at its Spanish counterpart; the docs index advertises both language sets in the buyer-facing section. Internal docs (TECHNICAL, DECISIONS, REQUIREMENTS, BUSINESS, RECOVERY) stay English-only by design — they don't ship with the product. The CLI itself emits English only, so CLI-REFERENCE.es.md notes that flags and values are language-invariant while translating the prose. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
93
README.es.md
Normal file
93
README.es.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
> 🌐 **Idioma:** Español · [English](README.md)
|
||||||
|
|
||||||
|
# DataTools
|
||||||
|
|
||||||
|
Limpieza local de CSV / Excel. CLI + GUI en el navegador, sin nube, sin ceremonias de instalación. La GUI incluye paquetes de idioma en inglés y español.
|
||||||
|
|
||||||
|
## Herramientas
|
||||||
|
|
||||||
|
| # | Herramienta | Estado |
|
||||||
|
|---|------|--------|
|
||||||
|
| 01 | **Eliminador de duplicados** — coincidencia exacta + difusa, 5 normalizadores, reglas de superviviente, auditoría | Listo |
|
||||||
|
| 02 | **Limpiador de texto** — espacios, caracteres tipográficos, BOM, finales de línea, mayúsculas/minúsculas | Listo |
|
||||||
|
| 03 | **Estandarizador de formatos** — fechas, teléfonos, correos, direcciones, nombres, monedas, booleanos | Listo |
|
||||||
|
| 04 | **Gestor de valores faltantes** — detección de nulos disfrazados, perfil, media/mediana/moda/ffill/bfill/interpolación, estrategias de descarte | Listo |
|
||||||
|
| 05 | **Mapeador de columnas** — autodetección difusa de renombrados, esquema objetivo con coerción de tipos, campos requeridos con valores por defecto, descartar/reordenar | Listo |
|
||||||
|
| 06 | Detector de valores atípicos | Próximamente |
|
||||||
|
| 07 | Combinador de varios archivos | Próximamente |
|
||||||
|
| 08 | Validador e informes | Próximamente |
|
||||||
|
| 09 | **Ejecutor de canalizaciones** — encadena herramientas en un orden recomendado (no forzado), guarda/carga JSON, automatiza limpiezas semanales | Listo |
|
||||||
|
|
||||||
|
## Descarga (usuarios no técnicos)
|
||||||
|
|
||||||
|
Instaladores precompilados — no se requiere Python:
|
||||||
|
|
||||||
|
| Plataforma | Descarga | Nota de primer arranque |
|
||||||
|
|---|---|---|
|
||||||
|
| **macOS** | `DataTools-X.Y.Z-mac.dmg` | Arrastra DataTools.app a /Applications y haz doble clic. |
|
||||||
|
| **Windows** | `DataTools-X.Y.Z-win-setup.exe` | Ejecuta el instalador; se inicia desde el menú Inicio. |
|
||||||
|
| **Linux** | `DataTools-X.Y.Z-linux-x86_64.AppImage` | `chmod +x` al archivo y luego doble clic. |
|
||||||
|
|
||||||
|
Última versión: consulta [GitHub Releases](https://git.invixiom.com/giteadmin/datatools-dev/releases) (o el listado de Gumroad). Los instaladores ocupan ~150–200 MB; el lanzador arranca un servidor local en http://127.0.0.1:8501 y abre tu navegador. Nada se envía a la nube.
|
||||||
|
|
||||||
|
## Instalar desde el código (desarrolladores)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Requiere Python 3.10+.
|
||||||
|
|
||||||
|
## Ejecutar
|
||||||
|
|
||||||
|
**GUI** (recomendado):
|
||||||
|
```bash
|
||||||
|
streamlit run src/gui/app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
**CLI** — siete puntos de entrada:
|
||||||
|
```bash
|
||||||
|
python -m src.cli customers.csv [--apply] # deduplicación
|
||||||
|
python -m src.cli_text_clean messy.csv [--apply] # limpieza de texto
|
||||||
|
python -m src.cli_format intl.csv [--apply] # estandarización de formatos (auto-stream si >100 MB)
|
||||||
|
python -m src.cli_missing holes.csv [--apply] # valores faltantes
|
||||||
|
python -m src.cli_column_map vendor.csv [--apply] # mapeador de columnas
|
||||||
|
python -m src.cli_pipeline any_file.csv [--apply] # encadena herramientas de extremo a extremo
|
||||||
|
python -m src.cli_analyze any_file.csv [--json] # solo escanea
|
||||||
|
```
|
||||||
|
|
||||||
|
Cada CLI ejecuta solo previsualización por defecto; añade `--apply` para escribir la salida.
|
||||||
|
|
||||||
|
## Idioma
|
||||||
|
|
||||||
|
La barra lateral de la GUI tiene un selector de idioma. Se incluyen paquetes para **English** y **Español** (`src/i18n/packs/`); la elección persiste durante la sesión. Para añadir un idioma: coloca un `<código>.json` junto a `en.json` reproduciendo el árbol de claves, y luego añádelo a `LANGUAGES`. Ver [Guía del desarrollador §i18n](docs/DEVELOPER.md#i18n--language-packs) (solo en inglés).
|
||||||
|
|
||||||
|
## Verificación de Revisar y Normalizar
|
||||||
|
|
||||||
|
Cada archivo subido pasa por una verificación de normalización CSV antes de que cualquier herramienta lo toque. El analizador detecta ~15 tipos de problemas (espacios, caracteres NBSP / de ancho cero, BOM, codificación, puntuación tipográfica, encabezados sucios, centinelas nulos, mojibake, …) etiquetados por **confianza** (alta / media / baja) y **acción de corrección**. La GUI muestra cada hallazgo con Corregir auto / Saltar / Personalizar, una previsualización antes/después en vivo, y un selector para anular la codificación. Las páginas de herramientas se niegan a cargar hasta que se pase la verificación.
|
||||||
|
|
||||||
|
## Salida
|
||||||
|
|
||||||
|
Cada ejecución escribe:
|
||||||
|
|
||||||
|
- `{input}_<tool>.csv` — los datos limpios
|
||||||
|
- `{input}_changes.csv` (limpiador de texto) o `{input}_match_groups.csv` (duplicados) — pista de auditoría
|
||||||
|
- `logs/<tool>_YYYYMMDD_HHMMSS.log` — registro de depuración de la ejecución
|
||||||
|
|
||||||
|
El archivo de entrada original nunca se modifica.
|
||||||
|
|
||||||
|
## Documentación
|
||||||
|
|
||||||
|
- [Guía del usuario](docs/USER-GUIDE.es.md) — instalación, flujo de la GUI, verificación
|
||||||
|
- [Referencia de la CLI](docs/CLI-REFERENCE.es.md) — cada bandera con recetas
|
||||||
|
- [Requisitos](docs/REQUIREMENTS.md) — tamaños de archivo, codificaciones, detectores, objetivos de rendimiento (solo en inglés)
|
||||||
|
- [Técnico](docs/TECHNICAL.md) — arquitectura, internos de la verificación, registro de correcciones (solo en inglés)
|
||||||
|
- [Guía del desarrollador](docs/DEVELOPER.md) — añadir correcciones / detectores / estandarizadores (solo en inglés)
|
||||||
|
|
||||||
|
## Dependencias
|
||||||
|
|
||||||
|
`pandas`, `openpyxl`, `rapidfuzz`, `phonenumbers`, `typer`, `loguru`, `charset-normalizer`, `streamlit`. Opcional: `ftfy` para reparación de mojibake.
|
||||||
|
|
||||||
|
## Licencia
|
||||||
|
|
||||||
|
Propietaria.
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
> 🌐 **Language:** English · [Español](README.es.md)
|
||||||
|
|
||||||
# DataTools
|
# DataTools
|
||||||
|
|
||||||
Local CSV / Excel cleaning. CLI + browser GUI, no cloud, no install ceremony. GUI ships with English and Spanish language packs.
|
Local CSV / Excel cleaning. CLI + browser GUI, no cloud, no install ceremony. GUI ships with English and Spanish language packs.
|
||||||
|
|||||||
239
docs/CLI-REFERENCE.es.md
Normal file
239
docs/CLI-REFERENCE.es.md
Normal file
@@ -0,0 +1,239 @@
|
|||||||
|
> 🌐 **Idioma:** Español · [English](CLI-REFERENCE.md)
|
||||||
|
|
||||||
|
# Referencia de la CLI
|
||||||
|
|
||||||
|
> ⚠️ Los comandos, banderas y valores de las opciones son **idénticos en ambos idiomas**. La CLI emite todos sus mensajes en inglés; este documento traduce las explicaciones, no los comandos.
|
||||||
|
|
||||||
|
Tres módulos de CLI, uno por cada herramienta Lista:
|
||||||
|
|
||||||
|
| Módulo | Comando | Propósito |
|
||||||
|
|--------|---------|---------|
|
||||||
|
| `src.cli` | `python -m src.cli FILE` | Eliminador de duplicados |
|
||||||
|
| `src.cli_text_clean` | `python -m src.cli_text_clean FILE` | Limpiador de texto |
|
||||||
|
| `src.cli_analyze` | `python -m src.cli_analyze FILE` | Analizador (escaneo de solo lectura) |
|
||||||
|
|
||||||
|
Cada comando es **previsualización por defecto** — añade `--apply` para escribir la salida.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Eliminador de duplicados
|
||||||
|
|
||||||
|
```
|
||||||
|
python -m src.cli ARCHIVO_ENTRADA [OPCIONES]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Opciones
|
||||||
|
|
||||||
|
### Generales
|
||||||
|
- `--apply` — escribe los archivos de salida (por defecto: previsualización).
|
||||||
|
- `-o, --output RUTA` — ruta de salida (por defecto `{input}_deduplicated.csv`).
|
||||||
|
|
||||||
|
### Selección de columnas
|
||||||
|
- `-s, --subset COLS` — columnas separadas por comas en las que hacer la coincidencia (por defecto: detección automática).
|
||||||
|
- `-k, --key COLS` — columnas de clave fuerte; cada una se convierte en una estrategia independiente de coincidencia exacta (`fb_id`, `ein`, `sku`).
|
||||||
|
|
||||||
|
### Coincidencia difusa
|
||||||
|
- `--fuzzy COLS` — columnas separadas por comas para coincidencia difusa.
|
||||||
|
- `-a, --algorithm ALG` — `levenshtein` / `jaro_winkler` (por defecto) / `token_set_ratio`.
|
||||||
|
- `-t, --threshold N` — similitud 0-100 (por defecto 85).
|
||||||
|
|
||||||
|
### Normalización
|
||||||
|
- `--normalize COL:TIPO` — pares `col:tipo` separados por comas. Tipos: `email`, `phone`, `name`, `address`, `string`.
|
||||||
|
|
||||||
|
| Tipo | Efecto | Ejemplo |
|
||||||
|
|------|--------|---------|
|
||||||
|
| `email` | minúsculas, elimina puntos de Gmail, elimina `+etiqueta` | `John.Doe+x@gmail.com` → `johndoe@gmail.com` |
|
||||||
|
| `phone` | E.164 (extensión preservada) | `(555) 123-4567 ext 100` → `+15551234567;ext=100` |
|
||||||
|
| `name` | elimina títulos + sufijos + partículas, baja a minúsculas | `Dr. Charles de Gaulle Jr.` → `charles gaulle` |
|
||||||
|
| `address` | abreviaturas USPS + nombre de estado → 2 letras, minúsculas | `123 Main Street, California` → `123 main st ca` |
|
||||||
|
| `string` | recorta + colapsa + minúsculas | ` HELLO WORLD ` → `hello world` |
|
||||||
|
|
||||||
|
### Selección del superviviente
|
||||||
|
- `--survivor REGLA` — `first` (por defecto) / `last` / `most-complete` / `most-recent`.
|
||||||
|
- `--date-column COL` — obligatoria para `most-recent`.
|
||||||
|
- `--merge` — rellena los huecos del superviviente desde las filas eliminadas.
|
||||||
|
|
||||||
|
### Revisión interactiva
|
||||||
|
- `--review` — pregunta s/n/saltar por cada grupo de coincidencias con diff lado a lado.
|
||||||
|
|
||||||
|
### Configuración
|
||||||
|
- `--config RUTA` — carga toda la configuración desde un JSON.
|
||||||
|
- `--save-config RUTA` — guarda la configuración actual en un JSON.
|
||||||
|
|
||||||
|
### Manejo de archivos
|
||||||
|
- `--sheet NOMBRE|N` — nombre de hoja de Excel o índice base 0.
|
||||||
|
- `--encoding ENC` — anula la codificación autodetectada.
|
||||||
|
- `--header-row N` — fila de encabezado en base 0.
|
||||||
|
|
||||||
|
## Recetas
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Deduplicación básica con autodetección
|
||||||
|
python -m src.cli customers.csv [--apply]
|
||||||
|
|
||||||
|
# Coincidencia difusa de nombres al 80%
|
||||||
|
python -m src.cli customers.csv --fuzzy name --threshold 80 --apply
|
||||||
|
|
||||||
|
# Múltiples claves fuertes (lógica OR)
|
||||||
|
python -m src.cli donors.csv --key fb_id,ein --apply
|
||||||
|
|
||||||
|
# Fila más completa + fusionar campos faltantes
|
||||||
|
python -m src.cli contacts.csv --survivor most-complete --merge --apply
|
||||||
|
|
||||||
|
# Más reciente + fusión
|
||||||
|
python -m src.cli contacts.csv --survivor most-recent --date-column updated_at --merge --apply
|
||||||
|
|
||||||
|
# Revisión interactiva
|
||||||
|
python -m src.cli customers.csv --review --apply
|
||||||
|
|
||||||
|
# Guardar / cargar perfil
|
||||||
|
python -m src.cli customers.csv --fuzzy name --threshold 80 --save-config dedup.json
|
||||||
|
python -m src.cli new.csv --config dedup.json --apply
|
||||||
|
|
||||||
|
# Excel
|
||||||
|
python -m src.cli data.xlsx --sheet "Sales" --apply
|
||||||
|
```
|
||||||
|
|
||||||
|
## Algoritmos
|
||||||
|
|
||||||
|
- **`jaro_winkler`** (por defecto) — el mejor para cadenas cortas (nombres); pondera los primeros caracteres.
|
||||||
|
- **`levenshtein`** — ratio de distancia de edición; errores tipográficos y transposiciones.
|
||||||
|
- **`token_set_ratio`** — el mejor para direcciones; ignora el orden de las palabras.
|
||||||
|
|
||||||
|
## Detección automática
|
||||||
|
|
||||||
|
Cuando no se pasan banderas `--subset` / `--fuzzy`, las columnas se detectan por su nombre:
|
||||||
|
|
||||||
|
| Patrón | Algoritmo | Umbral | Normalizador | Clave |
|
||||||
|
|---------|-----------|-----------|------------|-----|
|
||||||
|
| Email | exacto | 100% | email | fuerte |
|
||||||
|
| Teléfono | exacto | 100% | phone | fuerte |
|
||||||
|
| Nombre | jaro_winkler | 85% | name | débil |
|
||||||
|
| Dirección | token_set_ratio | 80% | address | débil |
|
||||||
|
|
||||||
|
**Reglas de estrategia**: claves fuertes → OR independiente; claves débiles → AND emparejadas con cada clave fuerte; sin claves fuertes → las débiles se promueven a independientes; sin patrones → coincidencia exacta en todas las columnas.
|
||||||
|
|
||||||
|
## Archivos de salida (con `--apply`)
|
||||||
|
|
||||||
|
| Archivo | Contenido |
|
||||||
|
|------|----------|
|
||||||
|
| `{stem}_deduplicated.csv` | Datos limpios |
|
||||||
|
| `{stem}_removed.csv` | Filas eliminadas |
|
||||||
|
| `{stem}_match_groups.csv` | `_group_id`, `_is_survivor`, `_confidence`, `_matched_on`, `_original_row` + columnas originales |
|
||||||
|
|
||||||
|
Registro: `logs/dedup_YYYYMMDD_HHMMSS.log`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Limpiador de texto
|
||||||
|
|
||||||
|
```
|
||||||
|
python -m src.cli_text_clean ARCHIVO_ENTRADA [OPCIONES]
|
||||||
|
```
|
||||||
|
|
||||||
|
Higiene a nivel de carácter. Ver [TECHNICAL.md §10.2](TECHNICAL.md) (solo en inglés) para la especificación.
|
||||||
|
|
||||||
|
## Opciones
|
||||||
|
|
||||||
|
### Generales
|
||||||
|
- `--apply` — escribe la salida (por defecto: previsualización).
|
||||||
|
- `-o, --output RUTA` — ruta de salida (por defecto `{input}_cleaned.csv`).
|
||||||
|
- `--preset NOMBRE` — `minimal` / `excel-hygiene` (por defecto) / `paranoid`.
|
||||||
|
|
||||||
|
### Alcance
|
||||||
|
- `--columns COLS` — columnas separadas por comas a limpiar (por defecto: todas las columnas de texto).
|
||||||
|
- `--skip COLS` — excluye estas columnas.
|
||||||
|
|
||||||
|
### Anulaciones por operación (anulan el preset activo)
|
||||||
|
- `--no-trim`, `--no-collapse`, `--no-nfc`, `--nfkc`, `--no-smart-chars`, `--no-zero-width`, `--no-bom`, `--no-control`, `--no-line-endings`.
|
||||||
|
|
||||||
|
### Mayúsculas / minúsculas
|
||||||
|
- `--case MODO` — `upper` / `lower` / `title` / `sentence`. O por columna: `--case title:name,upper:sku`.
|
||||||
|
- El modo título preserva los tokens en mayúsculas (`USA`) y deja en minúsculas las partículas internas (`of`, `and`).
|
||||||
|
|
||||||
|
### Auditoría + configuración
|
||||||
|
- `--full-changelog` — escribe todos los cambios (por defecto se limita a los primeros 1000).
|
||||||
|
- `--config RUTA` / `--save-config RUTA`.
|
||||||
|
|
||||||
|
### Archivo
|
||||||
|
- `--sheet`, `--encoding`, `--header-row` — iguales que en el Eliminador de duplicados.
|
||||||
|
|
||||||
|
## Presets
|
||||||
|
|
||||||
|
| Preset | Qué hace |
|
||||||
|
|--------|--------------|
|
||||||
|
| `minimal` | Solo recorte y colapso. |
|
||||||
|
| `excel-hygiene` (por defecto) | Recorte, colapso, NFC, plegado de caracteres tipográficos, eliminación de caracteres invisibles, eliminación de BOM, eliminación de caracteres de control, normalización de finales de línea. |
|
||||||
|
| `paranoid` | `excel-hygiene` + plegado de compatibilidad NFKC (con pérdida). |
|
||||||
|
|
||||||
|
## Recetas
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Valores por defecto seguros (previsualiza, luego aplica)
|
||||||
|
python -m src.cli_text_clean messy.csv [--apply]
|
||||||
|
|
||||||
|
# Solo recorte y colapso, sin tocar Unicode
|
||||||
|
python -m src.cli_text_clean messy.csv --preset minimal --apply
|
||||||
|
|
||||||
|
# Nombres en formato título, SKUs en mayúsculas
|
||||||
|
python -m src.cli_text_clean people.csv --case title:name,upper:sku --apply
|
||||||
|
|
||||||
|
# Limpiar solo columnas concretas
|
||||||
|
python -m src.cli_text_clean orders.csv --columns vendor,product --apply
|
||||||
|
|
||||||
|
# Excluir una columna de notas en texto libre
|
||||||
|
python -m src.cli_text_clean tickets.csv --skip notes --apply
|
||||||
|
```
|
||||||
|
|
||||||
|
## Archivos de salida (con `--apply`)
|
||||||
|
|
||||||
|
| Archivo | Contenido |
|
||||||
|
|------|----------|
|
||||||
|
| `{stem}_cleaned.csv` | Datos limpios |
|
||||||
|
| `{stem}_changes.csv` | `row`, `column`, `old`, `new`, `ops_applied` (limitado a 1000; `--full-changelog` quita el límite) |
|
||||||
|
|
||||||
|
Registro: `logs/text_clean_YYYYMMDD_HHMMSS.log`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Analizador
|
||||||
|
|
||||||
|
```
|
||||||
|
python -m src.cli_analyze ARCHIVO_ENTRADA [OPCIONES]
|
||||||
|
```
|
||||||
|
|
||||||
|
Escaneo de solo lectura; muestra todos los hallazgos del detector sin modificar el archivo.
|
||||||
|
|
||||||
|
## Opciones
|
||||||
|
- `--sample-rows N` — límite de filas escaneadas (por defecto 1000).
|
||||||
|
- `--json` — imprime los hallazgos como un array JSON en stdout.
|
||||||
|
- `--strict` — sale con código no cero ante cualquier hallazgo `warn`/`error`.
|
||||||
|
|
||||||
|
## Esquema JSON (un objeto por hallazgo)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "smart_punctuation_in_data",
|
||||||
|
"severity": "warn",
|
||||||
|
"confidence": "high",
|
||||||
|
"fix_action": "fold_smart_punctuation",
|
||||||
|
"pre_applied": false,
|
||||||
|
"tool": "02_text_cleaner",
|
||||||
|
"count": 17,
|
||||||
|
"description": "17 cell(s) contain curly quotes…",
|
||||||
|
"column": null,
|
||||||
|
"samples": [{"row": 3, "column": "name", "value": "“Alice”"}]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Significado de los campos
|
||||||
|
- `severity` — `info` / `warn` / `error`. Solo `error` bloquea la verificación de la GUI.
|
||||||
|
- `confidence` — `high` (un clic), `medium` (previsualiza), `low` (opt-in).
|
||||||
|
- `fix_action` — id del algoritmo en `src/core/fixes.py`. Vacío si es solo informativo.
|
||||||
|
- `pre_applied` — `true` para correcciones ya aplicadas durante la lectura a nivel de bytes.
|
||||||
|
|
||||||
|
## Detectores
|
||||||
|
|
||||||
|
Puntuación tipográfica, espacios NBSP / Unicode, caracteres de ancho cero, encabezados sucios, relleno con espacios, centinelas tipo null, huellas de mojibake, columnas de email con mayúsculas/minúsculas mezcladas, formatos de fecha inconsistentes, filas casi duplicadas, identificadores con ceros a la izquierda, finales de línea mezclados, fallo de decodificación de codificación, presencia de U+FFFD.
|
||||||
|
|
||||||
|
Agregar un detector: añade la entrada en `analyze.py` y la corrección correspondiente en `fixes.py`. Ningún otro punto de llamada cambia.
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
> 🌐 **Language:** English · [Español](CLI-REFERENCE.es.md)
|
||||||
|
|
||||||
# CLI Reference
|
# CLI Reference
|
||||||
|
|
||||||
Three CLI modules, one per Ready tool:
|
Three CLI modules, one per Ready tool:
|
||||||
|
|||||||
33
docs/README.es.md
Normal file
33
docs/README.es.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
> 🌐 **Idioma:** Español · [English](README.md)
|
||||||
|
|
||||||
|
# Paquete Maestría en Limpieza de Datos Excel y CSV
|
||||||
|
|
||||||
|
9 herramientas de limpieza de datos en Python, cada una con CLI y GUI en el navegador. Solo local, sin internet. Windows / macOS / Linux.
|
||||||
|
|
||||||
|
## Inicio rápido
|
||||||
|
|
||||||
|
1. Descarga el instalador para tu sistema operativo desde tu correo de compra.
|
||||||
|
2. Ejecútalo (no se requieren conocimientos de Python).
|
||||||
|
3. Lánzalo desde el acceso directo del escritorio → tu navegador predeterminado se abrirá en una página local.
|
||||||
|
|
||||||
|
Instrucciones completas: [USER-GUIDE.es.md](USER-GUIDE.es.md).
|
||||||
|
|
||||||
|
## Documentación
|
||||||
|
|
||||||
|
**Para usuarios** (se entrega con el producto, en español):
|
||||||
|
- [USER-GUIDE.es.md](USER-GUIDE.es.md) — instalación + guía por herramienta
|
||||||
|
- [CLI-REFERENCE.es.md](CLI-REFERENCE.es.md) — referencia de cada comando
|
||||||
|
|
||||||
|
**Para usuarios** (se entrega con el producto, en inglés):
|
||||||
|
- [USER-GUIDE.md](USER-GUIDE.md) · [CLI-REFERENCE.md](CLI-REFERENCE.md)
|
||||||
|
|
||||||
|
**Solo internos** (no se entrega; solo en inglés):
|
||||||
|
- [BUSINESS.md](BUSINESS.md) — mercado, precios, marketing
|
||||||
|
- [TECHNICAL.md](TECHNICAL.md) — arquitectura, pipeline de build, estándares
|
||||||
|
- [DECISIONS.md](DECISIONS.md) — criterios bloqueados, registro de decisiones
|
||||||
|
- [RECOVERY.md](RECOVERY.md) — guía de reconstrucción completa
|
||||||
|
- [REQUIREMENTS.md](REQUIREMENTS.md) — matriz numerada de soporte
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Versión**: 1.6 · **Actualizado**: 2026-05-13 · **Propietario**: Michael
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
> 🌐 **Language:** English · [Español](README.es.md)
|
||||||
|
|
||||||
# Excel & CSV Data Cleaning Mastery Bundle
|
# Excel & CSV Data Cleaning Mastery Bundle
|
||||||
|
|
||||||
9 Python data-cleaning tools, every one with a CLI and a browser GUI. Local-only, no internet. Windows / macOS / Linux.
|
9 Python data-cleaning tools, every one with a CLI and a browser GUI. Local-only, no internet. Windows / macOS / Linux.
|
||||||
@@ -13,7 +15,8 @@ Full instructions: [USER-GUIDE.md](USER-GUIDE.md).
|
|||||||
## Docs
|
## Docs
|
||||||
|
|
||||||
**Buyer-facing** (ships with the product):
|
**Buyer-facing** (ships with the product):
|
||||||
- [USER-GUIDE.md](USER-GUIDE.md) — install + per-tool walkthrough
|
- **English**: [USER-GUIDE.md](USER-GUIDE.md) · [CLI-REFERENCE.md](CLI-REFERENCE.md)
|
||||||
|
- **Español**: [USER-GUIDE.es.md](USER-GUIDE.es.md) · [CLI-REFERENCE.es.md](CLI-REFERENCE.es.md)
|
||||||
|
|
||||||
**Creator-only** (do not ship):
|
**Creator-only** (do not ship):
|
||||||
- [BUSINESS.md](BUSINESS.md) — market, pricing, marketing
|
- [BUSINESS.md](BUSINESS.md) — market, pricing, marketing
|
||||||
|
|||||||
131
docs/USER-GUIDE.es.md
Normal file
131
docs/USER-GUIDE.es.md
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
> 🌐 **Idioma:** Español · [English](USER-GUIDE.md)
|
||||||
|
|
||||||
|
# Guía del usuario
|
||||||
|
|
||||||
|
**Versión**: 1.6 · **Actualizado**: 2026-05-13
|
||||||
|
|
||||||
|
## 1. Instalación
|
||||||
|
|
||||||
|
No necesitas tener Python instalado — el paquete es autocontenido.
|
||||||
|
|
||||||
|
| Sistema operativo | Archivo | Cómo |
|
||||||
|
|----|------|-----|
|
||||||
|
| Windows | `BundleName-Setup-1.0.exe` | Doble clic en el instalador → acceso directo en el escritorio. |
|
||||||
|
| macOS | `BundleName-1.0.dmg` | Monta el DMG y arrástralo a Aplicaciones. Firmado y notarizado. |
|
||||||
|
| Linux | `BundleName-1.0.AppImage` | `chmod +x`, doble clic. (También hay un `.tar.gz` de respaldo.) |
|
||||||
|
|
||||||
|
Al iniciar la app, se abre tu navegador predeterminado en una página local (`http://localhost:8501`).
|
||||||
|
|
||||||
|
### Cómo funciona la interfaz gráfica (GUI)
|
||||||
|
|
||||||
|
- Se ejecuta localmente en tu equipo. **Sin internet, sin subidas.**
|
||||||
|
- El navegador es solo la capa de visualización. Cerrarlo detiene el programa subyacente.
|
||||||
|
- ¿Prefieres la terminal? Cada herramienta incluye también una interfaz de línea de comandos (CLI) — ver Sección 3.
|
||||||
|
|
||||||
|
### Requisitos del sistema
|
||||||
|
|
||||||
|
- Windows 10/11 (64 bits), macOS 11+, Linux moderno (2020+).
|
||||||
|
- Navegador moderno (Chrome, Edge, Firefox, Safari, últimos 3 años).
|
||||||
|
- ~400-500 MB de espacio libre en disco.
|
||||||
|
|
||||||
|
Matriz de soporte completa: [REQUIREMENTS.md](REQUIREMENTS.md) (solo en inglés).
|
||||||
|
|
||||||
|
## 2. Qué incluye
|
||||||
|
|
||||||
|
| # | Herramienta | Propósito | Estado |
|
||||||
|
|---|------|---------|--------|
|
||||||
|
| 01 | Eliminador de duplicados | Coincidencia exacta + difusa, 5 normalizadores, auditoría | Listo |
|
||||||
|
| 02 | Limpiador de texto | Espacios, caracteres tipográficos, BOM, finales de línea, mayúsculas/minúsculas | Listo |
|
||||||
|
| 03 | Estandarizador de formatos | Fechas / teléfonos / correos / direcciones / nombres / monedas / booleanos | Listo |
|
||||||
|
| 04 | Gestor de valores faltantes | Nulos disfrazados, imputación, descarte por umbral | Próximamente |
|
||||||
|
| 05 | Mapeador de columnas | Renombrar + aplicar esquema | Próximamente |
|
||||||
|
| 06 | Detector de valores atípicos | z-score, IQR, multivariante | Próximamente |
|
||||||
|
| 07 | Combinador de varios archivos | Combina varios archivos | Próximamente |
|
||||||
|
| 08 | Validador e informes | Reglas + informe PDF/Excel | Próximamente |
|
||||||
|
| 09 | Ejecutor de canalizaciones | Lanzador multi-herramienta de un clic | Próximamente |
|
||||||
|
|
||||||
|
**Datos de muestra** (`samples/`): `messy_sales.csv`, `bank_export.xlsx`.
|
||||||
|
|
||||||
|
## 3. Uso
|
||||||
|
|
||||||
|
### 3.1 GUI (recomendada)
|
||||||
|
|
||||||
|
1. Inicia el paquete.
|
||||||
|
2. Selecciona una herramienta en la barra lateral.
|
||||||
|
3. Suelta tu archivo (o elige una muestra).
|
||||||
|
4. Los valores por defecto están preconfigurados — pulsa **Ejecutar** para previsualizar.
|
||||||
|
5. Pulsa **Guardar salida** para escribir el archivo limpio.
|
||||||
|
|
||||||
|
Las opciones avanzadas se encuentran en paneles desplegables. El archivo original nunca se modifica.
|
||||||
|
|
||||||
|
### 3.2 CLI
|
||||||
|
|
||||||
|
```bash
|
||||||
|
deduplicator customers.csv [--apply]
|
||||||
|
text-cleaner messy.csv [--apply]
|
||||||
|
format-standardize feed.csv [--apply]
|
||||||
|
```
|
||||||
|
|
||||||
|
Ayuda: `deduplicator --help`. Referencia completa: [CLI-REFERENCE.es.md](CLI-REFERENCE.es.md).
|
||||||
|
|
||||||
|
### 3.3 Orden de ejecución (cuando uses las herramientas manualmente)
|
||||||
|
|
||||||
|
Si no usas el Ejecutor de canalizaciones, sigue este orden:
|
||||||
|
|
||||||
|
1. **02 Limpiador de texto** primero — normaliza espacios y caracteres especiales.
|
||||||
|
2. **03 Estandarizador de formatos** — fechas, teléfonos, etc. necesitan texto limpio.
|
||||||
|
3. **04 Gestor de valores faltantes** — códigos centinela se ocultan como números.
|
||||||
|
4. **05 Mapeador de columnas** — esquema antes que estadísticas de atípicos.
|
||||||
|
5. **06 Detector de valores atípicos** — necesita datos numéricos limpios. Calcular estadísticas con `NaN` o `-999` envenena los resultados.
|
||||||
|
6. **07 Combinador de varios archivos**, **08 Validador** según sea necesario.
|
||||||
|
7. **01 Eliminador de duplicados** es flexible en cuanto al orden (normaliza internamente para la coincidencia).
|
||||||
|
|
||||||
|
El Ejecutor de canalizaciones aplica este orden automáticamente.
|
||||||
|
|
||||||
|
### 3.4 Idioma
|
||||||
|
|
||||||
|
La barra lateral tiene un selector **Language / Idioma**. Se incluyen dos paquetes hoy:
|
||||||
|
|
||||||
|
- **English** (por defecto)
|
||||||
|
- **Español**
|
||||||
|
|
||||||
|
Elige el idioma una vez — la opción persiste durante la sesión y el selector es visible desde cualquier página. Cambia cuando quieras; la página se vuelve a renderizar en su sitio sin perder datos.
|
||||||
|
|
||||||
|
**Cobertura** (v1.6): página de inicio, tarjetas de herramientas, panel de carga y análisis, lista de hallazgos, indicador de la verificación de normalización CSV, selector lateral y pantalla de cierre. Los cuerpos de cada página de herramienta (etiquetas de opciones avanzadas, indicaciones del mapeador de columnas, etiquetas de revisión de duplicados) están planificados para paquetes futuros — actualmente se muestran en inglés en ambos modos. Si una cadena que esperabas ver traducida no cambia, se trata de una clave de paquete pendiente, no de un fallo del selector; escribe a soporte adjuntando una captura.
|
||||||
|
|
||||||
|
## 4. Verificación de Revisar y Normalizar
|
||||||
|
|
||||||
|
Cada archivo subido se analiza antes de que cualquier herramienta lo toque.
|
||||||
|
|
||||||
|
**Niveles de confianza**:
|
||||||
|
- **Alta** — seguras de ida y vuelta. El botón "Corregir automáticamente lo de alta confianza" las aplica todas con un clic.
|
||||||
|
- **Media** — normalmente correctas, con falsos positivos ocasionales. Previsualiza primero.
|
||||||
|
- **Baja** — heurística. Desactivada por defecto; opt-in por hallazgo.
|
||||||
|
- **Error** — bloquea la verificación (archivo vacío, U+FFFD, filas no reparables).
|
||||||
|
|
||||||
|
**Sustitución de codificación**: cuando el detector reporta `encoding_uncertain` o detectas mojibake (`é`) o caracteres `<60>`, elige el codepage correcto en la parte superior de la página (cp1252 para Excel occidental, KOI8-R para ruso antiguo, Big5 para chino tradicional, …) → **Re-analizar**.
|
||||||
|
|
||||||
|
**Salida avanzada**: un desplegable `⚙️` en la descarga te permite ajustar la codificación, el delimitador y el terminador de línea. El nombre del archivo descargado se ajusta automáticamente (`.tsv` para tabulador, `.csv` en los demás casos).
|
||||||
|
|
||||||
|
## 5. Salida
|
||||||
|
|
||||||
|
Cada ejecución escribe:
|
||||||
|
- **Archivo limpio** junto al original (o donde indiques).
|
||||||
|
- **Archivo de auditoría** (cambios celda por celda en herramientas de texto/formato, grupos de coincidencia en deduplicación).
|
||||||
|
- **Registro con marca de tiempo** en `logs/`.
|
||||||
|
|
||||||
|
El archivo original nunca se modifica.
|
||||||
|
|
||||||
|
## 6. Solución de problemas
|
||||||
|
|
||||||
|
- **La GUI no se abre / el navegador no se inicia** — espera 10-15 s; visita manualmente `http://localhost:8501`. Error de puerto ocupado → cierra otras instancias.
|
||||||
|
- **¿Por qué se abre el navegador?** — patrón de aplicación web local (igual que Jupyter o RStudio). Nada sale de tu equipo.
|
||||||
|
- **Windows SmartScreen** — pulsa "Más información" → "Ejecutar de todas formas". Estándar para software sin firma EV.
|
||||||
|
- **macOS "La aplicación está dañada"** — descárgala de nuevo (probablemente se corrompió en tránsito).
|
||||||
|
- **El AppImage de Linux no se ejecuta** — `chmod +x archivo.AppImage`. Si falta FUSE → `sudo apt install libfuse2` o usa el `.tar.gz`.
|
||||||
|
- **Lento con archivos grandes** — por encima de ~100k filas tarda más; la barra de progreso lo indica. Para millones de filas → usa la CLI directamente.
|
||||||
|
- **Necesito ayuda** — escribe al correo que aparece en tu recibo de compra.
|
||||||
|
|
||||||
|
## 7. Licencia
|
||||||
|
|
||||||
|
Usuario único. Consulta `LICENSE.txt`.
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
> 🌐 **Language:** English · [Español](USER-GUIDE.es.md)
|
||||||
|
|
||||||
# User Guide
|
# User Guide
|
||||||
|
|
||||||
**Version**: 1.6 · **Updated**: 2026-05-01
|
**Version**: 1.6 · **Updated**: 2026-05-01
|
||||||
|
|||||||
Reference in New Issue
Block a user