kadi.kidas — Traitement et standardisation des données¶
Le module kadi.kidas est le pipeline de traitement des données agricoles de
KadiPy. Il prend en charge l'ingestion, le nettoyage, la validation et la
normalisation des données depuis n'importe quelle source.
kidas = KadiPy Data Ingestion, Alignment and Standardization
Architecture¶
Source (CSV / Excel / JSON / NetCDF / API)
|
DataPipeline ← Chef d'orchestre
|
┌──────┴──────┐
| |
DataCleaner DataValidator
| |
└──────┬──────┘
|
DataNormalizer ← Standardisation finale
|
DataCache ← Persistance SQLite
|
DataFrame + Rapport
Chaque composant peut être utilisé indépendamment ou enchaîné dans un pipeline.
Démarrage rapide¶
En une ligne¶
import kadi.kidas as kidas
# Chargement, nettoyage automatique et cache
df, rapport = kidas.load_and_clean("recolte_2024.csv")
print(f"Lignes chargées : {rapport.get('lignes_finales', len(df))}")
if "quality_score" in rapport:
print(f"Score qualité : {rapport['quality_score']}")
Pipeline personnalisé¶
from kadi.kidas import DataPipeline
pipeline = DataPipeline()
df, rapport = (
pipeline
.load_data("donnees_marche.xlsx")
.add_cleaning_step("remove_duplicates")
.add_cleaning_step("handle_missing_values", strategy="median")
.add_validation_step({
"culture": "str",
"rendement_kg": "float",
"latitude": "float",
})
.add_normalization_step({"crops": "culture"})
.execute(cache=True)
)
print(rapport["etapes_appliquees"])
Formats de fichiers supportés¶
| Format | Extension | Classe source |
|---|---|---|
| CSV | .csv |
CSVDataSource |
| Excel | .xlsx, .xls |
ExcelDataSource |
| JSON | .json |
JSONDataSource |
| NetCDF | .nc, .nc4 |
NetCDFDataSource |
| API REST | URL HTTP/HTTPS | APIDataSource |
Le format est détecté automatiquement depuis l'extension ou le préfixe de l'URL.
Rapport de pipeline¶
Chaque exécution de pipeline retourne un rapport structuré :
# L'ajout d'une étape de validation est nécessaire pour générer un quality_score
df, rapport = (
pipeline.load_data("recoltes.csv")
.add_validation_step({"culture": "str"})
.execute()
)
print(rapport.keys())
# dict_keys(['source', 'etapes_appliquees', 'nettoyage', 'validation', 'normalisation', 'cache_utilise', 'quality_score', 'lignes_finales'])
# Score de qualité (généré par l'étape de validation)
if "quality_score" in rapport:
print(f"Score : {rapport['quality_score']}")
# Nombre de lignes finales
print(f"Lignes en sortie : {rapport['lignes_finales']}")
Sous-modules¶
- Pipeline — Orchestration des étapes de traitement
- Nettoyage (DataCleaner) — Doublons, valeurs manquantes, outliers
- Validation (DataValidator) — Règles de validation des données
- Normalisation (DataNormalizer) — Standardisation des noms et unités