Aller au contenu

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


Accès direct aux sources

from kadi.kidas import CSVDataSource, ExcelDataSource, APIDataSource

# Lecture directe d'un CSV sans pipeline
source = CSVDataSource("recoltes_2024.csv")
df = source.read()

# API REST
source_api = APIDataSource("https://api.data.bj/agriculture/prices")
df_api = source_api.read()