# Documentation du Processus de Collecte et de Nettoyage des Données

# 1. Introduction

Ce document détaille le processus de collecte, d'extraction et de nettoyage des ensembles de données COVID-19 et MPOX. Les données COVID-19 proviennent directement de l'Organisation Mondiale de la Santé (OMS) et les données MPOX d'un ensemble de données statique, garantissant une source officielle et fiable.

# 2. Collecte des Données

# 2.1. Sources des Données

Les données proviennent de deux sources principales :

  • WHO COVID-19 Global Data - Données officielles de l'OMS
  • MPOX Dataset - Ensemble de données statique (mpox-22-june.csv)

# 2.2. Architecture Simplifiée

Le système a été simplifié pour utiliser des sources de données plus fiables et officielles :

# 2.2.1. Configuration des Dossiers

DOWNLOAD_PATH = os.path.expanduser("./downloads")

# 2.2.2. Sources de Données Actuelles

datasets = {
    "WHO-COVID-19-global-data.csv": {
        "url": "https://srhdpeuwpubsa.blob.core.windows.net/whdh/COVID/WHO-COVID-19-global-data.csv",
        "extract_to": "raw_data"
    }
}

# 2.2.3. Téléchargement via curl

Le fichier WHO COVID-19 est téléchargé directement depuis le serveur officiel de l'OMS :

command = f'curl -L -o "{file_path}" "{info["url"]}"'
subprocess.run(command, shell=True, check=True)

# 2.2.4. Déplacement vers le Dossier de Données

Les fichiers sont déplacés vers le dossier raw_data après téléchargement :

os.rename(file_path, os.path.join(extract_path, filename))

# 3. Nettoyage et Prétraitement des Données

# 3.1. Chargement des Données

Les fichiers CSV sont chargés avec un encodage UTF-8 explicite :

data1 = pd.read_csv('raw_data/WHO-COVID-19-global-data.csv', encoding='utf-8')
data2 = pd.read_csv('raw_data/mpox-22-june.csv', encoding='utf-8')

# 3.2. Définition des Colonnes Finales

Les colonnes finales sont standardisées pour les deux ensembles de données :

data1_final_columns = ["date", "country", "total_cases", "new_cases", "total_deaths", "new_deaths"]
data2_final_columns = ["date", "country", "total_cases", "new_cases", "total_deaths", "new_deaths"]

# 3.3. Standardisation des Noms de Colonnes

Les noms de colonnes sont convertis en minuscules et les espaces remplacés par des underscores :

data1.columns = data1.columns.str.lower().str.replace(' ', '_')
data2.columns = data2.columns.str.lower().str.replace(' ', '_')

# 3.4. Renommage des Colonnes Clés

# 3.4.1. Données COVID-19 (WHO)

data1.rename(columns={
    "date_reported": "date",
    "country": "country",
    "cumulative_cases": "total_cases",
    "new_cases": "new_cases",
    "cumulative_deaths": "total_deaths",
    "new_deaths": "new_deaths"
}, inplace=True)

# 3.4.2. Données MPOX

data2.rename(columns={
    "date": "date",
    "country": "country",
    "total_conf_cases": "total_cases",
    "new_conf_cases": "new_cases",
    "total_conf_deaths": "total_deaths",
    "new_conf_deaths": "new_deaths"
}, inplace=True)

# 3.5. Traitement des Dates

Les dates MPOX sont converties en format datetime :

data2['date'] = pd.to_datetime(data2['date'])

# 3.6. Gestion des Valeurs Manquantes

Toutes les valeurs NaN sont remplacées par 0 :

data1.fillna(0, inplace=True)
data2.fillna(0, inplace=True)

# 3.7. Traitement par Pays (COVID-19)

Pour assurer la cohérence des données COVID-19, un traitement par pays est effectué :

# 3.7.1. Séparation par Pays

for country, group in data1.groupby("country"):
    os.makedirs('tempfilter', exist_ok=True)
    group.to_csv(f'tempfilter/{country}_data1_filtered.csv', index=False, encoding='utf-8')

# 3.7.2. Rechargement et Concaténation

all_datas = []
for file_name in os.listdir('tempfilter'):
    file_path = os.path.join('tempfilter', file_name)
    try:
        dataf = pd.read_csv(file_path, delimiter=',', encoding='utf-8')
        all_datas.append(dataf)
    except Exception as e:
        print(e)

data1 = pd.concat(all_datas)

# 3.7.3. Nettoyage des Fichiers Temporaires

for file_name in os.listdir('tempfilter'):
    file_path = os.path.join('tempfilter', file_name)
    os.remove(file_path)
os.rmdir('tempfilter')

# 3.8. Sélection des Colonnes Finales

Chaque dataset est réduit aux colonnes standardisées :

data1 = data1[data1_final_columns]
data2 = data2[data2_final_columns]

# 3.9. Nettoyage des Noms de Pays

Correction des caractères spéciaux et des noms de pays problématiques :

data1.replace("Côte d'Ivoire", "Cote d'Ivoire", inplace=True)
data1.replace("Türkiye", "Turkey", inplace=True)
data1.replace("Curaçao", "Curacao", inplace=True)
data1.replace("Réunion", "Reunion", inplace=True)
data1.replace("Saint Barthélemy", "Saint Barthélemy", inplace=True)

# 4. Exportation des Données Nettoyées

Les datasets nettoyés sont sauvegardés dans le dossier filtered/ avec encodage UTF-8 :

os.makedirs('filtered', exist_ok=True)
data2.to_csv('filtered/mpox_filtered.csv', index=False, encoding='utf-8')
data1.to_csv('filtered/covid_filtered.csv', index=False, encoding='utf-8')

# 5. Avantages de la Nouvelle Approche

# 5.1. Sources Officielles

  • Données COVID-19 : Directement de l'OMS, garantissant l'authenticité
  • Données MPOX : Ensemble de données contrôlé et vérifié

# 5.2. Simplicité et Fiabilité

  • Moins de dépendances externes (plus de Kaggle API)
  • Processus de téléchargement plus direct
  • Meilleur contrôle de la qualité des données

# 5.3. Performance Améliorée

  • Moins de fichiers à traiter
  • Processus ETL plus rapide
  • Encodage UTF-8 cohérent

# 5.4. Maintenance Simplifiée

  • Code plus simple et lisible
  • Moins de points de défaillance
  • Sources de données stables

# 6. Structure des Données Finales

# 6.1. COVID-19 (covid_filtered.csv)

  • date : Date de rapport (AAAA-MM-JJ)
  • country : Nom du pays
  • total_cases : Cas cumulés confirmés
  • new_cases : Nouveaux cas du jour
  • total_deaths : Décès cumulés
  • new_deaths : Nouveaux décès du jour

# 6.2. MPOX (mpox_filtered.csv)

  • date : Date de rapport (AAAA-MM-JJ)
  • country : Nom du pays
  • total_cases : Cas cumulés confirmés
  • new_cases : Nouveaux cas du jour
  • total_deaths : Décès cumulés
  • new_deaths : Nouveaux décès du jour

# 7. Conclusion

Cette approche simplifiée assure une collecte de données plus fiable et un traitement plus efficace. L'utilisation de sources officielles comme l'OMS garantit la qualité et l'authenticité des données, tandis que la simplification du processus améliore la maintenance et les performances du système ETL.