# 📊 DataProfiler

**DataProfiler** è un package Python didattico per il profiling automatico di dataset. Analizza file CSV, Excel e JSON generando report dettagliati con statistiche descrittive, rilevamento di anomalie e valori mancanti.

## Installazione

```bash
pip install dataprofiler-edu
```

Per lo sviluppo:

```bash
git clone https://github.com/tuonome/dataprofiler.git
cd dataprofiler
pip install -e ".[dev]"
```

## Uso rapido

```python
from dataprofiler import Profiler

# Analizza un file CSV
profiler = Profiler("vendite.csv")
report = profiler.profile()

# Stampa riepilogo
print(report.summary())

# Esporta in Markdown
profiler.export(report, "report.md")
```

## CLI

```bash
# Profiling rapido da terminale
dataprofiler dati.csv

# Esporta in formato specifico
dataprofiler dati.csv -o report.md -f md
dataprofiler vendite.xlsx -o report.json -f json
dataprofiler prodotti.json -o report.html -f html
```

## Formati supportati

| Input | Output |
|-------|--------|
| CSV (`.csv`) | Markdown (`.md`) |
| Excel (`.xlsx`, `.xls`) | JSON (`.json`) |
| JSON (`.json`) | HTML (`.html`) |

## Funzionalità

- **Rilevamento automatico del tipo** di ogni colonna (numerico, testuale, data, booleano)
- **Statistiche numeriche**: media, mediana, min, max, deviazione standard, quartili
- **Statistiche testuali**: lunghezze, frequenze, valori più comuni
- **Statistiche temporali**: range date, frequenza, formati rilevati
- **Analisi valori mancanti**: conteggio, percentuale, completezza
- **Warnings automatici**: colonne quasi vuote, valori costanti, possibili ID
- **Export multi-formato**: Markdown, JSON, HTML

## Concetti OOP dimostrati

Questo package è progettato come strumento didattico per un corso Python avanzato:

- **Classi astratte (ABC)**: `BaseReader`, `BaseAnalyzer`, `BaseExporter`
- **Ereditarietà**: ogni reader/analyzer/exporter estende la propria base
- **Composizione**: `Profiler` compone reader + analyzer + exporter
- **Polimorfismo**: gli analyzer vengono selezionati dinamicamente
- **Factory Pattern**: `ReaderFactory` e `ExporterFactory`
- **Strategy Pattern**: exporter intercambiabili
- **Dataclass**: modelli dati tipizzati con property calcolate

## Licenza

MIT
