Projet - Application Météo avec Analyse de Données 🌦️📊
Ce projet consiste à créer une application qui récupère des données météorologiques (simulées ou réelles via une API simple), les stocke, et permet d'effectuer des analyses simples (température moyenne, jours de pluie, etc.).
Concepts Abordés
- Structures de données : listes de dictionnaires pour les relevés météo.
- Manipulation de fichiers (CSV ou JSON pour stocker les données).
- Traitement de données : calcul de moyennes, comptages, recherche de min/max.
- Utilisation de dates (module
datetime
). - Fonctions pour organiser les opérations.
- (Optionnel) Interaction avec une API web simple pour récupérer des données réelles.
Fonctionnalités à Implémenter
1. Structure et Stockage des Données Météo
Chaque relevé météo concernera une date spécifique.
Structure d'un relevé météo
Définir une structure pour un relevé météo quotidien. Un dictionnaire est adapté :
- date
(chaîne de caractères au format AAAA-MM-JJ ou objet date
)
- temperature_max
(flottant, en °C)
- temperature_min
(flottant, en °C)
- precipitation_mm
(flottant, quantité de pluie en mm)
- description_temps
(chaîne de caractères, ex: "Ensoleillé", "Nuageux", "Pluie légère")
Base de données des relevés
Créer une liste globale releves_meteo
pour stocker tous les relevés.
Ajouter un relevé météo
Créer une fonction ajouter_releve(releves_meteo, date_str, temp_max, temp_min, precip, desc)
qui :
1. Vérifie si un relevé pour date_str
existe déjà.
2. Convertit date_str
en un format de date standard (si ce n'est pas déjà fait).
3. Crée un dictionnaire de relevé et l'ajoute à releves_meteo
.
4. Renvoie True
si ajouté, False
sinon (date déjà présente).
Pensez à la validation des types de données (ex: températures sont des nombres).
Sauvegarde et Chargement des relevés
- Créer une fonction
sauvegarder_releves(releves_meteo, nom_fichier)
pour sauvegarder la listereleves_meteo
dans un fichier CSV ou JSON. - Créer une fonction
charger_releves(nom_fichier)
pour charger les relevés depuis le fichier au démarrage de l'application. Si le fichier n'existe pas, retourner une liste vide. Attention à la conversion des types lors du chargement (surtout pour les dates et les nombres).
Tests de la gestion des données
- Initialiser
releves_meteo
(ou chargez depuis un fichier vide). - Ajouter manuellement plusieurs relevés pour différentes dates.
- Essayer d'ajouter un relevé pour une date existante.
- Sauvegarder les relevés.
- Redémarrer le script (ou effacez la variable) et charger les relevés. Vérifier qu'ils sont corrects.
2. Saisie Manuelle des Données
Interface de saisie
Créer une fonction qui permet à l'utilisateur de saisir les informations pour un nouveau relevé météo (date, températures, précipitations, description).
Cette fonction appellera ajouter_releve
.
S'assurer de gérer les erreurs de saisie (par exemple, si l'utilisateur entre du texte pour une température).
3. Analyse des Données Météo
Température moyenne pour une période
Créer une fonction temperature_moyenne_periode(releves_meteo, date_debut_str, date_fin_str)
qui :
1. Filtre les relevés compris entre date_debut_str
et date_fin_str
(incluses).
2. Calcule la température moyenne ((temp_max + temp_min) / 2) pour chaque jour sélectionné.
3. Renvoie la moyenne de ces températures moyennes journalières. Si aucun relevé n'est trouvé pour la période, renvoyez None
ou un message approprié.
Jour le plus chaud / froid sur une période
Créer deux fonctions :
- jour_plus_chaud(releves_meteo, date_debut_str, date_fin_str)
: renvoie le dictionnaire du relevé avec la temperature_max
la plus élevée dans la période.
- jour_plus_froid(releves_meteo, date_debut_str, date_fin_str)
: renvoie le dictionnaire du relevé avec la temperature_min
la plus basse dans la période.
Nombre de jours de pluie et total précipitations
Créer une fonction stats_precipitation_periode(releves_meteo, date_debut_str, date_fin_str)
qui :
1. Filtre les relevés pour la période donnée.
2. Compte le nombre de jours où precipitation_mm > 0
.
3. Calcule le total des precipitation_mm
sur ces jours de pluie.
4. Renvoie ces deux valeurs (par exemple, sous forme de tuple ou de dictionnaire).
Afficher les relevés pour un jour donné
Créer une fonction afficher_releve_jour(releves_meteo, date_str)
qui recherche et affiche de manière formatée le relevé météo pour la date_str
spécifiée, ou un message si aucun relevé n'est trouvé.
Tests des analyses
Après avoir saisi ou chargé un ensemble de données de test (par exemple, pour un mois complet) : 1. Calculer la température moyenne pour ce mois. 2. Trouver le jour le plus chaud et le jour le plus froid du mois. 3. Calculer le nombre de jours de pluie et le total des précipitations pour le mois. 4. Afficher les données pour un jour spécifique.
4. Interface Utilisateur
Menu principal
Créer une interface en mode texte pour permettre à l'utilisateur de : 1. Ajouter un nouveau relevé météo. 2. Afficher le relevé pour un jour spécifique. 3. Afficher les statistiques pour une période (température moyenne, jour le plus chaud/froid, stats de pluie). 4. Sauvegarder les données (si non automatique à chaque ajout). 5. Quitter.
Test de l'application complète
- Lancer l'application. Charger des données existantes s'il y en a, sinon commencer avec une base vide.
- Ajouter quelques relevés pour plusieurs jours.
- Demander des statistiques pour différentes périodes.
- Afficher des relevés spécifiques.
- Sauvegarder et quitter. Relancer pour vérifier la persistance.
Pour aller plus loin (Optionnel)
- Graphiques simples : Utilisez une bibliothèque comme
matplotlib
(si autorisée et installée) pour tracer des graphiques simples (évolution des températures, histogramme des précipitations). - Récupération de données réelles : Utilisez une API météo gratuite (comme OpenWeatherMap, nécessite une clé API) pour récupérer les données d'aujourd'hui ou des prévisions. Cela introduirait la gestion des requêtes HTTP (module
requests
) et l'analyse de JSON complexe. - Prévisions basiques : Si vous avez suffisamment de données historiques, essayez de calculer des moyennes saisonnières pour "prédire" grossièrement le temps.
- Alertes météo : Définir des seuils (température très élevée, fortes pluies) et afficher des alertes si les données récentes les dépassent.