# Downsampling On peut maintenant s'assurer d'avoir une seule ligne par minute, avec toutes les valeurs de capteurs : ```shell python -m scripts.make_minutely_dataset ``` Ce qui va produire le fichier `data/weather_minutely.csv`. On peut s'assurer que plus aucune information n'est manquante : ```shell python -m scripts.check_missing_values ``` ```output Dataset chargé : data/weather_minutely.csv Lignes : 321881 Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'r ain_rate'] === Synthèse des valeurs manquantes === Total de cellules : 2253167 Cellules manquantes : 0 Fraction manquante : 0.000000 Lignes complètes : 321881 Lignes avec des trous : 0 Fraction lignes complètes : 1.000000 Valeurs manquantes par colonne : - temperature : 0 - humidity : 0 - pressure : 0 - illuminance : 0 - wind_speed : 0 - wind_direction : 0 - rain_rate : 0 ✔ Aucune valeur manquante dans le dataset minuté. ``` Le script suivant nous permet de vérifier rapidement si des problèmes majeurs peuvent être découverts : ```shell python -m scripts.describe_minutely_dataset ``` ```output Dataset minuté chargé : data/weather_minutely.csv Lignes : 321881 Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'r ain_rate'] Période : 2025-03-10 09:35:00+00:00 → 2025-11-17 00:41:00+00:00 === describe() === temperature humidity pressure ... wind_speed wind_direction rain_rate count 321881.000000 321881.000000 321881.000000 ... 321881.000000 321881.000000 321881.000000 mean 15.004488 74.131993 1010.683189 ... 2.877190 181.977411 0.108216 std 6.349077 18.885843 8.210283 ... 3.151080 88.089334 0.820691 min -2.200000 20.000000 976.973123 ... 0.000000 0.000000 0.000000 25% 10.277778 59.000000 1005.420000 ... 0.000000 96.000000 0.000000 50% 14.600000 77.666667 1011.514287 ... 2.333549 210.000000 0.000000 75% 19.000000 91.000000 1015.900000 ... 4.650000 247.666196 0.000000 max 34.888889 99.000000 1033.187174 ... 26.554176 360.000000 42.672000 [8 rows x 7 columns] === Min / max avec dates === - temperature: min = -2.2 à 2025-03-17 05:16:00+00:00 max = 34.8888888888889 à 2025-07-02 15:59:00+00:00 - humidity: min = 20.0 à 2025-04-30 15:22:00+00:00 max = 99.0 à 2025-03-11 06:29:00+00:00 - pressure: min = 976.973122738378 à 2025-10-23 05:06:00+00:00 max = 1033.18717416804 à 2025-10-10 17:12:00+00:00 - illuminance: min = 0.0 à 2025-03-10 17:44:00+00:00 max = 133520.394 à 2025-07-29 11:48:00+00:00 - wind_speed: min = 0.0 à 2025-03-10 14:31:00+00:00 max = 26.554176 à 2025-06-26 00:10:00+00:00 - wind_direction: min = 0.0 à 2025-03-12 04:57:00+00:00 max = 360.0 à 2025-03-12 07:33:00+00:00 - rain_rate: min = 0.0 à 2025-03-10 09:35:00+00:00 max = 42.672 à 2025-06-15 03:10:00+00:00 === Vérification de la continuité temporelle === Différences d'intervalle (top 5): time 0 days 00:01:00 304291 0 days 00:02:00 9426 0 days 00:03:00 3562 0 days 00:04:00 1740 0 days 00:05:00 1142 Name: count, dtype: int64 Nombre d'intervalles ≠ 60s : 17589 ``` Il y a donc des trous entre certains jeux de données. Ces écarts peuvent être identifiés avec le script suivant : ```shell python -m scripts.list_time_gaps ``` ``` Dataset minuté chargé : data/weather_minutely.csv Lignes : 321881 === Gaps temporels détectés === Nombre de gaps : 17589 Total minutes manquantes (théoriques) : 40466 Top 10 des gaps les plus longs : - De 2025-06-21 19:09:00+00:00 à 2025-06-21 20:10:00+00:00 (durée: 0 days 01:01:00, manquants: 60, de 2025-06-21 19:10:00+00:00 à 2025-06-21 20:09:00+00:00) - De 2025-08-10 22:17:00+00:00 à 2025-08-10 23:15:00+00:00 (durée: 0 days 00:58:00, manquants: 57, de 2025-08-10 22:18:00+00:00 à 2025-08-10 23:14:00+00:00) - De 2025-09-24 20:34:00+00:00 à 2025-09-24 21:32:00+00:00 (durée: 0 days 00:58:00, manquants: 57, de 2025-09-24 20:35:00+00:00 à 2025-09-24 21:31:00+00:00) - De 2025-06-21 10:58:00+00:00 à 2025-06-21 11:55:00+00:00 (durée: 0 days 00:57:00, manquants: 56, de 2025-06-21 10:59:00+00:00 à 2025-06-21 11:54:00+00:00) - De 2025-07-10 07:17:00+00:00 à 2025-07-10 08:14:00+00:00 (durée: 0 days 00:57:00, manquants: 56, de 2025-07-10 07:18:00+00:00 à 2025-07-10 08:13:00+00:00) - De 2025-07-24 03:52:00+00:00 à 2025-07-24 04:46:00+00:00 (durée: 0 days 00:54:00, manquants: 53, de 2025-07-24 03:53:00+00:00 à 2025-07-24 04:45:00+00:00) - De 2025-10-28 08:31:00+00:00 à 2025-10-28 09:23:00+00:00 (durée: 0 days 00:52:00, manquants: 51, de 2025-10-28 08:32:00+00:00 à 2025-10-28 09:22:00+00:00) - De 2025-03-16 15:31:00+00:00 à 2025-03-16 16:20:00+00:00 (durée: 0 days 00:49:00, manquants: 48, de 2025-03-16 15:32:00+00:00 à 2025-03-16 16:19:00+00:00) - De 2025-06-21 12:22:00+00:00 à 2025-06-21 13:08:00+00:00 (durée: 0 days 00:46:00, manquants: 45, de 2025-06-21 12:23:00+00:00 à 2025-06-21 13:07:00+00:00) - De 2025-06-21 17:25:00+00:00 à 2025-06-21 18:10:00+00:00 (durée: 0 days 00:45:00, manquants: 44, de 2025-06-21 17:26:00+00:00 à 2025-06-21 18:09:00+00:00) ``` Ces trous dans les données peuvent correspondre à des pannes de connexion entre la station et mon réseau, un redémarrage de mon serveur (physique ou logiciel), au redémarrage de la box ou du point d'accès sans-fil, etc.