Biblioteca Python para limpeza, normalização e validação de dados nacionais angolanos — BI, NIF, telefones (Unitel/Movicel/Africell), datas e endereços. Integração com pandas e CLI incluídos.
# angola-data-cleaner
> Biblioteca Python open source para limpeza, normalização e validação de dados angolanos.
---
## Funcionalidades
| Módulo | Funcionalidades |
|---|---|
| **Normalização** | Nomes · Datas (→ ISO 8601) · Telefones (+244) · Endereços |
| **Validação** | BI · NIF · Prefixos de telefone |
| **Deduplicação** | Fuzzy matching · Multi-campo · Clusters |
| **Pipeline** | `clean_dataframe()` · `CleaningPipeline` · CLI |
---
## Instalação
```bash
pip install angola-data-cleaner
```
Com suporte a pandas:
```bash
pip install "angola-data-cleaner[pandas]"
```
---
## Uso Rápido
### Normalização
```python
from angola_data_cleaner import normalize_name, normalize_date, normalize_phone
normalize_name(" João Manuel ")
# → 'joao manuel'
normalize_name("ÂNGELA CONCEIÇÃO", lowercase=False)
# → 'ANGELA CONCEICAO'
normalize_date("15/08/1975")
# → '1975-08-15'
normalize_date("01-11-2000")
# → '2000-11-01'
normalize_phone("923 456 789")
# → '+244923456789'
normalize_phone("00244992123456")
# → '+244992123456'
```
### Detecção de Operadora
```python
from angola_data_cleaner.normalization import detect_operator
detect_operator("+244923456789") # → 'Unitel'
detect_operator("+244992000001") # → 'Movicel'
detect_operator("+244991000001") # → 'Africell'
```
### Validação
```python
from angola_data_cleaner import validate_bi, validate_nif, validate_phone
validate_bi("004357890LA042") # → True
validate_bi("12345") # → False
validate_nif("1234567890") # → True
validate_nif("123456789A") # → False
validate_phone("923456789") # → True
validate_phone("999999999") # → False
# Resultado detalhado com mensagens de erro:
from angola_data_cleaner.validation import validate_bi_detailed
r = validate_bi_detailed("12345")
print(r.errors)
# ['Comprimento inválido: esperados 14 caracteres, recebidos 5.']
```
### Pipeline com Pandas
```python
import pandas as pd
from angola_data_cleaner import clean_dataframe
df = pd. …