1

Réorganisation

This commit is contained in:
Richard Dern 2025-11-19 17:01:45 +01:00
parent 566d4400ce
commit 617b12c02e
91 changed files with 874 additions and 1715 deletions

View File

@ -1,17 +0,0 @@
# Installation de l'environnement de base
Après avoir cloné le dépôt :
```shell
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python -c "import pandas, influxdb_client, sklearn; print('OK')"
```
- On installe l'environnement virtuel de python
- On entre dans cet environnement
- On met à jour le gestionnaire de paquets pip
- On installe les dépendances définies dans `requirements.txt`
- On vérifie que les dépendances sont correctement installées

View File

@ -1,7 +1,43 @@
# Test de l'environnement de travail # Installation, configuration et tests
## Installation de l'environnement de base
Après avoir cloné le dépôt :
```shell ```shell
python -m scripts.test_influx_connection python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python -c "import pandas, influxdb_client, sklearn; print('OK')"
```
- On installe l'environnement virtuel de python
- On entre dans cet environnement
- On met à jour le gestionnaire de paquets pip
- On installe les dépendances définies dans `requirements.txt`
- On vérifie que les dépendances sont correctement installées
## Configuration
```shell
cp .env.example .env
```
On copie le fichier de configuration d'exemple, puis on l'ouvre pour l'adapter à notre cas.
- `INFLUXDB_URL` : URL de l'api du serveur InfluxDB2 (cela inclue probablement le port 8086)
- `INFLUXDB_TOKEN` : le jeton d'authentification à créer dans votre compte InfluxDB2
- `INFLUXDB_ORG` : l'organisation à laquelle le token est rattaché
- `INFLUXDB_BUCKET` : le nom du bucket dans lequel les données sont stockées
- `STATION_LATITUDE` : latitude GPS de la station météo
- `STATION_LONGITUDE` : longitude GPS de la station météo
- `STATION_ELEVATION` : altitude de la station météo
## Tests de l'environnement de travail
```shell
python "docs/01 - Installation, configuration et tests/scripts/test_influx_connection.py"
``` ```
```output ```output
@ -24,7 +60,7 @@ Exemple de point :
Ensuite, on peut demander à InfluxDB de nous détailler ce qu'il stocke : Ensuite, on peut demander à InfluxDB de nous détailler ce qu'il stocke :
```shell ```shell
python -m scripts.test_influx_schema python "docs/01 - Installation, configuration et tests/scripts/test_influx_schema.py"
``` ```
```output ```output
@ -82,7 +118,7 @@ Champs pour measurement « °C » :
Mais pour obtenir les données dont on a besoin, il faut aussi connaitre les entités manipulées par Influx : Mais pour obtenir les données dont on a besoin, il faut aussi connaitre les entités manipulées par Influx :
```shell ```shell
python -m scripts.test_influx_entities python "docs/01 - Installation, configuration et tests/scripts/test_influx_entities.py"
``` ```
```output ```output

View File

@ -1,10 +1,17 @@
# tests/test_influx_connection.py # tests/test_influx_connection.py
from __future__ import annotations from __future__ import annotations
from pathlib import Path
import sys
from contextlib import closing from contextlib import closing
from influxdb_client.client.exceptions import InfluxDBError from influxdb_client.client.exceptions import InfluxDBError
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.config import InfluxSettings from meteo.config import InfluxSettings
from meteo.influx_client import create_influx_client, test_basic_query from meteo.influx_client import create_influx_client, test_basic_query

View File

@ -1,8 +1,15 @@
# tests/test_influx_entities.py # tests/test_influx_entities.py
from __future__ import annotations from __future__ import annotations
from pathlib import Path
import sys
from contextlib import closing from contextlib import closing
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.config import InfluxSettings from meteo.config import InfluxSettings
from meteo.influx_client import create_influx_client from meteo.influx_client import create_influx_client
from meteo.schema import ( from meteo.schema import (

View File

@ -1,8 +1,15 @@
# tests/test_influx_schema.py # tests/test_influx_schema.py
from __future__ import annotations from __future__ import annotations
from pathlib import Path
import sys
from contextlib import closing from contextlib import closing
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.config import InfluxSettings from meteo.config import InfluxSettings
from meteo.influx_client import create_influx_client from meteo.influx_client import create_influx_client
from meteo.schema import list_measurements, list_measurement_fields from meteo.schema import list_measurements, list_measurement_fields

View File

@ -1,12 +0,0 @@
# Configuration
```shell
cp .env.example .env
```
On copie le fichier de configuration d'exemple, puis on l'ouvre pour l'adapter à notre cas.
- `INFLUXDB_URL` : URL de l'api du serveur InfluxDB2 (cela inclue probablement le port 8086)
- `INFLUXDB_TOKEN` : le jeton d'authentification à créer dans votre compte InfluxDB2
- `INFLUXDB_ORG` : l'organisation à laquelle le token est rattaché
- `INFLUXDB_BUCKET` : le nom du bucket dans lequel les données sont stockées

View File

@ -1,4 +1,34 @@
# Ajustements # Préparation des données
Cette étape regroupe l'export initial depuis InfluxDB ainsi que les scripts d'ajustement nécessaires pour obtenir un dataset minuté propre.
## Export des données
```shell
python "docs/02 - Préparation des données/scripts/export_station_data.py"
```
La sortie est assez longue, et inclut un certain nombre d'avertissements qui peuvent être ignorés.
L'important est que le script se termine sur :
```output
✔ Export terminé : /Users/richard/Documents/donnees_meteo/data/weather_raw_7d.csv
```
(Le chemin changera sur votre propre machine)
Vérifiez que le fichier est bien créé et qu'il contient des données.
À la place de `export_station_data.py`, on peut aussi lancer :
```shell
python "docs/02 - Préparation des données/scripts/export_station_data_full.py"
```
Au lieu de télécharger les données des 7 derniers jours, l'ensemble des données stockées sur le serveur pour ce bucket seront téléchargées, ce qui, selon la granularité et l'ancienneté des données peut prendre un certain temps et occuper un espace disque conséquent.
Mon fichier complet contient plus d'un million d'enregistrements et pèse 70Mo.
## Ajustements
Le fichier peut être rapidement inspecté avec la commande `head` : Le fichier peut être rapidement inspecté avec la commande `head` :
@ -24,7 +54,7 @@ On peut voir que HomeAssistant écrit une nouvelle entrée pour chaque capteur,
Le script suivant s'occupe de regrouper les données de capteurs dont l'enregistrement est proche : Le script suivant s'occupe de regrouper les données de capteurs dont l'enregistrement est proche :
```shell ```shell
python -m scripts.format_raw_csv python "docs/02 - Préparation des données/scripts/format_raw_csv.py"
``` ```
```output ```output
@ -59,35 +89,42 @@ Il reste des cellules vides : en effet, HA n'enregistre pas la valeur d'un capte
On fait donc : On fait donc :
```shell ```shell
python -m scripts.fill_formatted_1s python "docs/02 - Préparation des données/scripts/fill_formatted_1s.py"
``` ```
```output ```output
Fichier 1s formaté chargé : data/weather_formatted_1s.csv Fichier 1s formaté chargé : data/weather_formatted_1s.csv
Lignes : 630171, colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wi Lignes : 630171, colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate']
nd_direction', 'rain_rate'] Après propagation des dernières valeurs connues : 630171 lignes Après propagation des dernières valeurs connues : 630171 lignes
✔ Fichier 1s 'complet' écrit dans : /Users/richard/Documents/donnees_meteo/data/weather_filled_1s.csv ✔ Fichier 1s 'complet' écrit dans : /Users/richard/Documents/donnees_meteo/data/weather_filled_1s.csv
``` ```
On peut maintenant s'assurer d'avoir une seule ligne par minute, avec toutes les valeurs de capteurs : ## Enrichissements (saisons et position du soleil)
Une fois les données nettoyées, on peut les enrichir avec des métadonnées météorologiques simples :
- regrouper les points par minute,
- ajouter la saison correspondant à chaque observation (en fonction de l'hémisphère),
- calculer la hauteur du soleil si la latitude/longitude de la station sont configurées.
Ces opérations sont réalisées par :
```shell ```shell
python -m scripts.make_minutely_dataset python "docs/02 - Préparation des données/scripts/make_minutely_dataset.py"
``` ```
Ce qui va produire le fichier `data/weather_minutely.csv`. Le script produit `data/weather_minutely.csv`. Pensez à définir `STATION_LATITUDE`, `STATION_LONGITUDE` et `STATION_ELEVATION` dans votre `.env` pour permettre le calcul de la position du soleil ; sinon, seule la colonne `season` sera ajoutée.
On peut s'assurer que plus aucune information n'est manquante : On peut s'assurer que plus aucune information n'est manquante :
```shell ```shell
python -m scripts.check_missing_values python "docs/02 - Préparation des données/scripts/check_missing_values.py"
``` ```
```output ```output
Dataset chargé : data/weather_minutely.csv Dataset chargé : data/weather_minutely.csv
Lignes : 321881 Lignes : 321881
Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'r Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate']
ain_rate']
=== Synthèse des valeurs manquantes === === Synthèse des valeurs manquantes ===
Total de cellules : 2253167 Total de cellules : 2253167
Cellules manquantes : 0 Cellules manquantes : 0
@ -111,14 +148,13 @@ Valeurs manquantes par colonne :
Le script suivant nous permet de vérifier rapidement si des problèmes majeurs peuvent être découverts : Le script suivant nous permet de vérifier rapidement si des problèmes majeurs peuvent être découverts :
```shell ```shell
python -m scripts.describe_minutely_dataset python "docs/02 - Préparation des données/scripts/describe_minutely_dataset.py"
``` ```
```output ```output
Dataset minuté chargé : data/weather_minutely.csv Dataset minuté chargé : data/weather_minutely.csv
Lignes : 321881 Lignes : 321881
Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'r Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate'] Période : 2025-03-10 09:35:00+00:00 → 2025-11-17 00:41:00+00:00
ain_rate'] Période : 2025-03-10 09:35:00+00:00 → 2025-11-17 00:41:00+00:00
=== describe() === === describe() ===
temperature humidity pressure ... wind_speed wind_direction rain_rate temperature humidity pressure ... wind_speed wind_direction rain_rate
@ -169,11 +205,10 @@ Name: count, dtype: int64
Nombre d'intervalles ≠ 60s : 17589 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 : Ces écarts peuvent être identifiés avec le script suivant :
```shell ```shell
python -m scripts.list_time_gaps python "docs/02 - Préparation des données/scripts/list_time_gaps.py"
``` ```
``` ```
@ -185,17 +220,16 @@ Nombre de gaps : 17589
Total minutes manquantes (théoriques) : 40466 Total minutes manquantes (théoriques) : 40466
Top 10 des gaps les plus longs : 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 - 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)
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 - 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)
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 - 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)
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 - 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)
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 - 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)
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 - 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)
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 - 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)
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 - 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)
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 - 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)
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 - 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)
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. 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.

View File

@ -2,6 +2,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.quality import summarize_missing_values from meteo.quality import summarize_missing_values

View File

@ -2,9 +2,15 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
import pandas as pd import pandas as pd
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv

View File

@ -1,8 +1,15 @@
# tests/export_station_data.py # tests/export_station_data.py
from __future__ import annotations from __future__ import annotations
from pathlib import Path
import sys
from contextlib import closing from contextlib import closing
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.config import InfluxSettings from meteo.config import InfluxSettings
from meteo.influx_client import create_influx_client from meteo.influx_client import create_influx_client
from meteo.station_config import default_station_config from meteo.station_config import default_station_config

View File

@ -1,8 +1,15 @@
# tests/export_station_data_full.py # tests/export_station_data_full.py
from __future__ import annotations from __future__ import annotations
from pathlib import Path
import sys
from contextlib import closing from contextlib import closing
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.config import InfluxSettings from meteo.config import InfluxSettings
from meteo.influx_client import create_influx_client from meteo.influx_client import create_influx_client
from meteo.station_config import default_station_config from meteo.station_config import default_station_config

View File

@ -2,6 +2,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv, fill_missing_with_previous from meteo.dataset import load_raw_csv, fill_missing_with_previous
@ -13,7 +19,7 @@ OUTPUT_CSV_PATH = Path("data/weather_filled_1s.csv")
def main() -> None: def main() -> None:
if not INPUT_CSV_PATH.exists(): if not INPUT_CSV_PATH.exists():
print(f"⚠ Fichier introuvable : {INPUT_CSV_PATH}") print(f"⚠ Fichier introuvable : {INPUT_CSV_PATH}")
print(" Lancez d'abord : python -m scripts.format_raw_csv") print(' Lancez d\'abord : python "docs/02 - Préparation des données/scripts/format_raw_csv.py"')
return return
df_1s = load_raw_csv(INPUT_CSV_PATH) df_1s = load_raw_csv(INPUT_CSV_PATH)

View File

@ -1,6 +1,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv, combine_close_observations from meteo.dataset import load_raw_csv, combine_close_observations

View File

@ -2,6 +2,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.gaps import find_time_gaps from meteo.gaps import find_time_gaps

View File

@ -2,6 +2,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv, resample_to_minutes from meteo.dataset import load_raw_csv, resample_to_minutes
from meteo.config import StationLocation from meteo.config import StationLocation
@ -16,7 +22,7 @@ OUTPUT_CSV_PATH = Path("data/weather_minutely.csv")
def main() -> None: def main() -> None:
if not FORMATTED_CSV_PATH.exists(): if not FORMATTED_CSV_PATH.exists():
print(f"⚠ Fichier formaté introuvable : {FORMATTED_CSV_PATH}") print(f"⚠ Fichier formaté introuvable : {FORMATTED_CSV_PATH}")
print(" Lancez d'abord : python -m scripts.format_raw_csv") print(' Lancez d\'abord : python "docs/02 - Préparation des données/scripts/fill_formatted_1s.py"')
return return
df_1s = load_raw_csv(FORMATTED_CSV_PATH) df_1s = load_raw_csv(FORMATTED_CSV_PATH)

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,69 @@
# Premiers graphiques
On peut désormais tracer nos premiers graphiques simples et bruts.
S'ils ne sont pas très instructifs par rapport à ce que nous fournissent Home Assistant et InfluxDB, ils nous permettent au moins de nous assurer que tout fonctionne, et que les données semblent cohérentes.
Les fichiers CSV correspondant à chaque figure sont conservés dans `data/` dans ce dossier.
## Température
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only temperature
```
![](figures/temperature_last_7_days.png)
## Humidité relative
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only humidity
```
![](figures/humidity_last_7_days.png)
## Pression atmosphérique
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only pressure
```
![](figures/pressure_last_7_days.png)
## Précipitations instantanées
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only rain_rate
```
![](figures/rain_rate_last_7_days.png)
## Luminance
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only illuminance
```
![](figures/illuminance_last_7_days.png)
## Vitesse du vent
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only wind_speed
```
![](figures/wind_speed_last_7_days.png)
## Direction du vent
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only wind_direction
```
![](figures/wind_direction_last_7_days.png)
## Élévation solaire (si disponible après enrichissement)
```shell
python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" --only sun_elevation
```
![](figures/sun_elevation_last_7_days.png)

View File

@ -5,17 +5,24 @@ from __future__ import annotations
import argparse import argparse
from pathlib import Path from pathlib import Path
import sys
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import pandas as pd import pandas as pd
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.plots import export_plot_dataset from meteo.plots import export_plot_dataset
from meteo.variables import Variable, VARIABLES from meteo.variables import Variable, VARIABLES
CSV_PATH = Path("data/weather_minutely.csv") CSV_PATH = Path("data/weather_minutely.csv")
DEFAULT_OUTPUT_DIR = Path("figures/basic") DOC_DIR = Path(__file__).resolve().parent.parent
DEFAULT_OUTPUT_DIR = DOC_DIR / "figures"
def _prepare_slice(df: pd.DataFrame, *, last_days: int) -> pd.DataFrame: def _prepare_slice(df: pd.DataFrame, *, last_days: int) -> pd.DataFrame:

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

View File

@ -0,0 +1,72 @@
# Corrélations binaires
Cette étape regroupe l'ensemble des scripts dédiés aux corrélations et comparaisons directes entre variables.
Chaque figure déposée dans `figures/` possède son CSV compagnon exporté dans le dossier `data/` au même emplacement.
```shell
python "docs/04 - Corrélations binaires/scripts/plot_all_pairwise_scatter.py"
```
![](figures/pairwise_scatter/scatter_humidity_vs_illuminance.png)
![](figures/pairwise_scatter/scatter_humidity_vs_pressure.png)
![](figures/pairwise_scatter/scatter_humidity_vs_rain_rate.png)
![](figures/pairwise_scatter/scatter_humidity_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_humidity_vs_wind_direction.png)
![](figures/pairwise_scatter/scatter_humidity_vs_wind_speed.png)
![](figures/pairwise_scatter/scatter_illuminance_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_illuminance_vs_wind_direction.png)
![](figures/pairwise_scatter/scatter_illuminance_vs_wind_speed.png)
![](figures/pairwise_scatter/scatter_pressure_vs_illuminance.png)
![](figures/pairwise_scatter/scatter_pressure_vs_rain_rate.png)
![](figures/pairwise_scatter/scatter_pressure_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_pressure_vs_wind_direction.png)
![](figures/pairwise_scatter/scatter_pressure_vs_wind_speed.png)
![](figures/pairwise_scatter/scatter_rain_rate_vs_illuminance.png)
![](figures/pairwise_scatter/scatter_rain_rate_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_rain_rate_vs_wind_direction.png)
![](figures/pairwise_scatter/scatter_rain_rate_vs_wind_speed.png)
![](figures/pairwise_scatter/scatter_temperature_vs_humidity.png)
![](figures/pairwise_scatter/scatter_temperature_vs_illuminance.png)
![](figures/pairwise_scatter/scatter_temperature_vs_pressure.png)
![](figures/pairwise_scatter/scatter_temperature_vs_rain_rate.png)
![](figures/pairwise_scatter/scatter_temperature_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_temperature_vs_wind_direction.png)
![](figures/pairwise_scatter/scatter_temperature_vs_wind_speed.png)
![](figures/pairwise_scatter/scatter_wind_direction_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_wind_speed_vs_sun_elevation.png)
![](figures/pairwise_scatter/scatter_wind_speed_vs_wind_direction.png)
## Heatmap globale
```shell
python "docs/04 - Corrélations binaires/scripts/plot_correlation_heatmap.py"
```
![](figures/correlation_heatmap.png)

View File

@ -2,6 +2,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.variables import iter_variable_pairs from meteo.variables import iter_variable_pairs
@ -9,7 +15,8 @@ from meteo.plots import plot_scatter_pair
CSV_PATH = Path("data/weather_minutely.csv") CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_DIR = Path("figures/pairwise_scatter") DOC_DIR = Path(__file__).resolve().parent.parent
OUTPUT_DIR = DOC_DIR / "figures" / "pairwise_scatter"
def main() -> None: def main() -> None:

View File

@ -2,6 +2,12 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.variables import VARIABLES from meteo.variables import VARIABLES
@ -10,7 +16,8 @@ from meteo.plots import plot_correlation_heatmap
CSV_PATH = Path("data/weather_minutely.csv") CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_PATH = Path("figures/correlation_heatmap.png") DOC_DIR = Path(__file__).resolve().parent.parent
OUTPUT_PATH = DOC_DIR / "figures" / "correlation_heatmap.png"
def main() -> None: def main() -> None:

View File

@ -0,0 +1,96 @@
# scripts/plot_correlations.py
"""Produit les nuages de points ciblés entre variables sélectionnées."""
from __future__ import annotations
import argparse
from pathlib import Path
import sys
from typing import Sequence
import pandas as pd
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv
from meteo.variables import Variable, VARIABLES, VARIABLES_BY_KEY, iter_variable_pairs
from meteo.plots import plot_scatter_pair
CSV_PATH = Path("data/weather_minutely.csv")
DOC_DIR = Path(__file__).resolve().parent.parent
SCATTER_DIR = DOC_DIR / "figures" / "pairwise_scatter"
def _select_variables(keys: Sequence[str] | None) -> list[Variable]:
if not keys:
return list(VARIABLES)
try:
selected = [VARIABLES_BY_KEY[key] for key in keys]
except KeyError as exc:
raise SystemExit(f"Variable inconnue : {exc.args[0]!r}.") from exc
return selected
def _generate_pairwise_scatter(
df: pd.DataFrame,
variables: Sequence[Variable],
*,
sample_step: int,
) -> None:
pairs = iter_variable_pairs()
selected = [(vx, vy) for vx, vy in pairs if vx in variables and vy in variables]
if not selected:
print("⚠ Aucun couple sélectionné pour les nuages de points.")
return
SCATTER_DIR.mkdir(parents=True, exist_ok=True)
for var_x, var_y in selected:
output_path = SCATTER_DIR / f"scatter_{var_x.key}_vs_{var_y.key}.png"
print(f"→ Scatter {var_y.key} vs {var_x.key}")
plot_scatter_pair(df, var_x=var_x, var_y=var_y, output_path=output_path, sample_step=sample_step)
print(f"{len(selected)} nuage(s) de points généré(s) dans {SCATTER_DIR}.")
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(description="Génère des nuages de points pairwise entre variables.")
parser.add_argument(
"--dataset",
type=Path,
default=CSV_PATH,
help="Dataset à utiliser (par défaut : data/weather_minutely.csv).",
)
parser.add_argument(
"--variables",
nargs="*",
help="Restreint l'analyse à certaines clés de variables.",
)
parser.add_argument(
"--scatter-step",
type=int,
default=20,
help="Pas d'échantillonnage pour les nuages de points individuels.",
)
args = parser.parse_args(argv)
dataset_path = args.dataset
if not dataset_path.exists():
raise SystemExit(f"Dataset introuvable : {dataset_path}")
df = load_raw_csv(dataset_path)
print(f"Dataset chargé : {dataset_path} ({len(df)} lignes)")
print()
variables = _select_variables(args.variables)
_generate_pairwise_scatter(df, variables, sample_step=args.scatter_step)
print("✔ Terminé.")
return 0
if __name__ == "__main__": # pragma: no cover
raise SystemExit(main())

View File

@ -1,20 +0,0 @@
# Export des données
```shell
python -m scripts.export_station_data
```
La sortie est assez longue, et inclut un certain nombre d'avertissements qui peuvent être ignorés.
L'important est que le script se termine sur :
```output
✔ Export terminé : /Users/richard/Documents/donnees_meteo/data/weather_raw_7d.csv
```
(Le chemin changera sur votre propre machine)
Vérifiez que le fichier est bien créé et qu'il contient des données.
À la place de `scripts.export_station_data`, on pourrait aussi lancer `scripts.export_station_data_full`.
Au lieu de télécharger les données des 7 derniers jours, l'ensemble des données stockées sur le serveur pour ce bucket seront téléchargées, ce qui, selon la granularité et l'ancienneté des données peut prendre un certain temps et occuper un espace disque conséquent.
Mon fichier complet contient plus d'un million d'enregistrements et pèse 70Mo.

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

View File

@ -0,0 +1,29 @@
# Corrélations binaires avancées
## Corrélations décalées
```shell
python "docs/05 - Corrélations binaires avancées/scripts/plot_lagged_correlations.py"
```
![](figures/lagged_correlations/lagcorr_humidity_to_rain_rate.png)
![](figures/lagged_correlations/lagcorr_illuminance_to_temperature.png)
![](figures/lagged_correlations/lagcorr_pressure_to_illuminance.png)
![](figures/lagged_correlations/lagcorr_pressure_to_rain_rate.png)
![](figures/lagged_correlations/lagcorr_pressure_to_wind_speed.png)
![](figures/lagged_correlations/lagcorr_temperature_to_humidity.png)
![](figures/lagged_correlations/lagcorr_temperature_to_rain_rate.png)
## Corrélations glissantes
```shell
python "docs/05 - Corrélations binaires avancées/scripts/plot_rolling_correlation_heatmap.py"
```
![](figures/rolling_correlations/rolling_correlation_heatmap.png)

View File

@ -2,28 +2,23 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.variables import VARIABLES_BY_KEY from meteo.variables import VARIABLES_BY_KEY
from meteo.analysis import compute_lagged_correlation from meteo.analysis import compute_lagged_correlation
from meteo.plots import plot_lagged_correlation from meteo.plots import plot_lagged_correlation
from meteo.correlation_presets import DEFAULT_LAGGED_PAIRS
CSV_PATH = Path("data/weather_minutely.csv") CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_DIR = Path("figures/lagged_correlations") DOC_DIR = Path(__file__).resolve().parent.parent
OUTPUT_DIR = DOC_DIR / "figures" / "lagged_correlations"
# Paires à analyser (clé de variable X, clé de variable Y)
# Convention : X précède potentiellement Y
INTERESTING_PAIRS: list[tuple[str, str]] = [
("temperature", "humidity"),
("temperature", "rain_rate"),
("pressure", "rain_rate"),
("pressure", "wind_speed"),
("pressure", "illuminance"),
("illuminance", "temperature"),
("humidity", "rain_rate"),
]
def main() -> None: def main() -> None:
@ -37,7 +32,7 @@ def main() -> None:
print(f" Colonnes : {list(df.columns)}") print(f" Colonnes : {list(df.columns)}")
print() print()
for key_x, key_y in INTERESTING_PAIRS: for key_x, key_y in DEFAULT_LAGGED_PAIRS:
var_x = VARIABLES_BY_KEY[key_x] var_x = VARIABLES_BY_KEY[key_x]
var_y = VARIABLES_BY_KEY[key_y] var_y = VARIABLES_BY_KEY[key_y]

View File

@ -2,23 +2,23 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv from meteo.dataset import load_raw_csv
from meteo.variables import VARIABLES_BY_KEY from meteo.variables import VARIABLES_BY_KEY
from meteo.analysis import compute_rolling_correlations_for_pairs from meteo.analysis import compute_rolling_correlations_for_pairs
from meteo.plots import plot_rolling_correlation_heatmap from meteo.plots import plot_rolling_correlation_heatmap
from meteo.correlation_presets import DEFAULT_ROLLING_PAIRS
CSV_PATH = Path("data/weather_minutely.csv") CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_PATH = Path("figures/rolling_correlations/rolling_correlation_heatmap.png") DOC_DIR = Path(__file__).resolve().parent.parent
OUTPUT_PATH = DOC_DIR / "figures" / "rolling_correlations" / "rolling_correlation_heatmap.png"
ROLLING_PAIRS: list[tuple[str, str]] = [
("temperature", "humidity"),
("pressure", "rain_rate"),
("pressure", "wind_speed"),
("illuminance", "temperature"),
("humidity", "rain_rate"),
]
WINDOW_MINUTES = 180 # 3 heures pour observer les tendances synoptiques WINDOW_MINUTES = 180 # 3 heures pour observer les tendances synoptiques
STEP_MINUTES = 30 # on n'échantillonne qu'un point sur 30 minutes STEP_MINUTES = 30 # on n'échantillonne qu'un point sur 30 minutes
@ -35,7 +35,7 @@ def main() -> None:
print(f" Colonnes : {list(df.columns)}") print(f" Colonnes : {list(df.columns)}")
print() print()
pairs = [(VARIABLES_BY_KEY[a], VARIABLES_BY_KEY[b]) for a, b in ROLLING_PAIRS] pairs = [(VARIABLES_BY_KEY[a], VARIABLES_BY_KEY[b]) for a, b in DEFAULT_ROLLING_PAIRS]
rolling_df = compute_rolling_correlations_for_pairs( rolling_df = compute_rolling_correlations_for_pairs(
df=df, df=df,

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@ -0,0 +1,13 @@
# Corrélations multiples
## Hexbin colorés
```shell
python "docs/06 - Corrélations multiples/scripts/plot_hexbin_explorations.py"
```
![](figures/hexbin_explorations/hexbin_lux_humidity_color_temp.png)
![](figures/hexbin_explorations/hexbin_pressure_rain_color_wind.png)
![](figures/hexbin_explorations/hexbin_temp_humidity_color_rain.png)

View File

@ -0,0 +1,70 @@
# scripts/plot_hexbin_explorations.py
from __future__ import annotations
from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[3]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from meteo.dataset import load_raw_csv
from meteo.variables import VARIABLES_BY_KEY
from meteo.plots import plot_hexbin_with_third_variable
from meteo.correlation_presets import DEFAULT_HEXBIN_SCENARIOS
CSV_PATH = Path("data/weather_minutely.csv")
DOC_DIR = Path(__file__).resolve().parent.parent
OUTPUT_DIR = DOC_DIR / "figures" / "hexbin_explorations"
def main() -> None:
if not CSV_PATH.exists():
print(f"⚠ Fichier introuvable : {CSV_PATH}")
return
df = load_raw_csv(CSV_PATH)
print(f"Dataset minuté chargé : {CSV_PATH}")
print(f" Lignes : {len(df)}")
print(f" Colonnes : {list(df.columns)}")
print()
for scenario in DEFAULT_HEXBIN_SCENARIOS:
var_x = VARIABLES_BY_KEY[scenario.key_x]
var_y = VARIABLES_BY_KEY[scenario.key_y]
var_color = VARIABLES_BY_KEY[scenario.key_color]
filename = scenario.filename
output_path = OUTPUT_DIR / filename
reduce_func = scenario.get_reduce_func()
reduce_label = scenario.get_reduce_label()
gridsize = scenario.gridsize
mincnt = scenario.mincnt
description = scenario.description
print(f"→ Hexbin {var_y.key} vs {var_x.key} (couleur = {var_color.key})")
print(f" {description}")
plot_hexbin_with_third_variable(
df=df,
var_x=var_x,
var_y=var_y,
var_color=var_color,
output_path=output_path,
gridsize=gridsize,
mincnt=mincnt,
reduce_func=reduce_func,
reduce_func_label=reduce_label,
cmap="magma",
)
print(f" ✔ Graphique enregistré : {output_path}")
print()
print("✔ Tous les graphiques hexbin ont été générés.")
if __name__ == "__main__":
main()

View File

@ -1,68 +0,0 @@
# Premiers graphiques
On peut désormais tracer nos premiers graphiques simples et bruts.
S'ils ne sont pas très instructifs par rapport à ce que nous fournissent Home Assistant et InfluxDB, ils nous permettent au moins de nous assurer que tout fonctionne, et que les données semblent cohérentes.
## Température
```shell
python -m scripts.plot_basic_variables --only temperature
```
![](../figures/basic/temperature_last_7_days.png)
## Humidité relative
```shell
python -m scripts.plot_basic_variables --only humidity
```
![](../figures/basic/humidity_last_7_days.png)
## Pression atmosphérique
```shell
python -m scripts.plot_basic_variables --only pressure
```
![](../figures/basic/pressure_last_7_days.png)
## Précipitations instantanées
```shell
python -m scripts.plot_basic_variables --only rain_rate
```
![](../figures/basic/rain_rate_last_7_days.png)
## Luminance
```shell
python -m scripts.plot_basic_variables --only illuminance
```
![](../figures/basic/illuminance_last_7_days.png)
## Vitesse du vent
```shell
python -m scripts.plot_basic_variables --only wind_speed
```
![](../figures/basic/wind_speed_last_7_days.png)
## Direction du vent
```shell
python -m scripts.plot_basic_variables --only wind_direction
```
![](../figures/basic/wind_direction_last_7_days.png)
## Élévation solaire (si disponible après enrichissement)
```shell
python -m scripts.plot_basic_variables --only sun_elevation
```
![](../figures/basic/sun_elevation_last_7_days.png)

View File

@ -1,170 +0,0 @@
time,humidity
2025-11-11 08:00:00+00:00,90.4396551724138
2025-11-11 09:00:00+00:00,86.38333333333334
2025-11-11 10:00:00+00:00,82.6
2025-11-11 11:00:00+00:00,78.49166666666666
2025-11-11 12:00:00+00:00,72.68333333333334
2025-11-11 13:00:00+00:00,71.3
2025-11-11 14:00:00+00:00,71.54166666666667
2025-11-11 15:00:00+00:00,70.40833333333333
2025-11-11 16:00:00+00:00,83.8804347826087
2025-11-11 17:00:00+00:00,87.92391304347827
2025-11-11 18:00:00+00:00,88.80188679245283
2025-11-11 19:00:00+00:00,90.4375
2025-11-11 20:00:00+00:00,91.75
2025-11-11 21:00:00+00:00,91.14285714285714
2025-11-11 22:00:00+00:00,91.14
2025-11-11 23:00:00+00:00,89.47058823529412
2025-11-12 00:00:00+00:00,84.83962264150944
2025-11-12 01:00:00+00:00,79.8859649122807
2025-11-12 02:00:00+00:00,79.98979591836735
2025-11-12 03:00:00+00:00,76.77678571428571
2025-11-12 04:00:00+00:00,71.28448275862068
2025-11-12 05:00:00+00:00,68.91176470588235
2025-11-12 06:00:00+00:00,71.91666666666667
2025-11-12 07:00:00+00:00,72.00877192982456
2025-11-12 08:00:00+00:00,67.0
2025-11-12 09:00:00+00:00,62.127272727272725
2025-11-12 10:00:00+00:00,60.05
2025-11-12 11:00:00+00:00,54.725
2025-11-12 12:00:00+00:00,51.375
2025-11-12 13:00:00+00:00,54.416666666666664
2025-11-12 14:00:00+00:00,58.83898305084746
2025-11-12 15:00:00+00:00,64.99166666666666
2025-11-12 16:00:00+00:00,74.32558139534883
2025-11-12 17:00:00+00:00,79.30851063829788
2025-11-12 18:00:00+00:00,77.97674418604652
2025-11-12 19:00:00+00:00,80.41836734693878
2025-11-12 20:00:00+00:00,76.67073170731707
2025-11-12 21:00:00+00:00,69.82075471698113
2025-11-12 22:00:00+00:00,65.98305084745763
2025-11-12 23:00:00+00:00,74.3970588235294
2025-11-13 00:00:00+00:00,73.43243243243244
2025-11-13 01:00:00+00:00,56.75
2025-11-13 02:00:00+00:00,61.583333333333336
2025-11-13 03:00:00+00:00,75.79729729729729
2025-11-13 04:00:00+00:00,81.54651162790698
2025-11-13 05:00:00+00:00,69.05
2025-11-13 06:00:00+00:00,57.28333333333333
2025-11-13 07:00:00+00:00,49.30833333333333
2025-11-13 08:00:00+00:00,47.06666666666667
2025-11-13 09:00:00+00:00,48.18333333333333
2025-11-13 10:00:00+00:00,46.19491525423729
2025-11-13 11:00:00+00:00,44.059322033898304
2025-11-13 12:00:00+00:00,43.21666666666667
2025-11-13 13:00:00+00:00,42.45
2025-11-13 14:00:00+00:00,39.9
2025-11-13 15:00:00+00:00,40.96666666666667
2025-11-13 16:00:00+00:00,41.16949152542373
2025-11-13 17:00:00+00:00,45.42307692307692
2025-11-13 18:00:00+00:00,41.74561403508772
2025-11-13 19:00:00+00:00,41.208333333333336
2025-11-13 20:00:00+00:00,39.09322033898305
2025-11-13 21:00:00+00:00,35.78813559322034
2025-11-13 22:00:00+00:00,40.75
2025-11-13 23:00:00+00:00,52.91860465116279
2025-11-14 00:00:00+00:00,61.55128205128205
2025-11-14 01:00:00+00:00,65.34848484848484
2025-11-14 02:00:00+00:00,65.08333333333333
2025-11-14 03:00:00+00:00,58.27777777777778
2025-11-14 04:00:00+00:00,70.75581395348837
2025-11-14 05:00:00+00:00,70.87837837837837
2025-11-14 06:00:00+00:00,65.42592592592592
2025-11-14 07:00:00+00:00,70.32203389830508
2025-11-14 08:00:00+00:00,69.36666666666666
2025-11-14 09:00:00+00:00,53.34166666666667
2025-11-14 10:00:00+00:00,53.516666666666666
2025-11-14 11:00:00+00:00,63.891666666666666
2025-11-14 12:00:00+00:00,60.173469387755105
2025-11-14 13:00:00+00:00,55.824074074074076
2025-11-14 14:00:00+00:00,47.58474576271186
2025-11-14 15:00:00+00:00,46.93333333333333
2025-11-14 16:00:00+00:00,46.3
2025-11-14 17:00:00+00:00,45.09322033898305
2025-11-14 18:00:00+00:00,45.940677966101696
2025-11-14 19:00:00+00:00,50.78846153846154
2025-11-14 20:00:00+00:00,60.270833333333336
2025-11-14 21:00:00+00:00,54.36607142857143
2025-11-14 22:00:00+00:00,51.625
2025-11-14 23:00:00+00:00,54.96666666666667
2025-11-15 00:00:00+00:00,58.19166666666667
2025-11-15 01:00:00+00:00,63.208333333333336
2025-11-15 02:00:00+00:00,70.86666666666666
2025-11-15 03:00:00+00:00,78.99
2025-11-15 04:00:00+00:00,79.07627118644068
2025-11-15 05:00:00+00:00,80.51785714285714
2025-11-15 06:00:00+00:00,77.24137931034483
2025-11-15 07:00:00+00:00,80.29310344827586
2025-11-15 08:00:00+00:00,79.86440677966101
2025-11-15 09:00:00+00:00,86.08333333333333
2025-11-15 10:00:00+00:00,90.99166666666666
2025-11-15 11:00:00+00:00,90.225
2025-11-15 12:00:00+00:00,85.29166666666667
2025-11-15 13:00:00+00:00,86.05
2025-11-15 14:00:00+00:00,86.975
2025-11-15 15:00:00+00:00,91.30833333333334
2025-11-15 16:00:00+00:00,90.29761904761905
2025-11-15 17:00:00+00:00,94.45833333333333
2025-11-15 18:00:00+00:00,95.39285714285714
2025-11-15 19:00:00+00:00,95.44117647058823
2025-11-15 20:00:00+00:00,96.22222222222223
2025-11-15 21:00:00+00:00,96.36111111111111
2025-11-15 22:00:00+00:00,96.625
2025-11-15 23:00:00+00:00,96.3076923076923
2025-11-16 00:00:00+00:00,97.0
2025-11-16 01:00:00+00:00,96.17777777777778
2025-11-16 02:00:00+00:00,94.6
2025-11-16 03:00:00+00:00,92.78181818181818
2025-11-16 04:00:00+00:00,91.82926829268293
2025-11-16 05:00:00+00:00,92.62857142857143
2025-11-16 06:00:00+00:00,92.77358490566037
2025-11-16 07:00:00+00:00,92.66666666666667
2025-11-16 08:00:00+00:00,90.90833333333333
2025-11-16 09:00:00+00:00,89.325
2025-11-16 10:00:00+00:00,92.64166666666667
2025-11-16 11:00:00+00:00,93.24166666666666
2025-11-16 12:00:00+00:00,93.18333333333334
2025-11-16 13:00:00+00:00,93.96666666666667
2025-11-16 14:00:00+00:00,95.66666666666667
2025-11-16 15:00:00+00:00,96.98305084745763
2025-11-16 16:00:00+00:00,97.4375
2025-11-16 17:00:00+00:00,98.0
2025-11-16 18:00:00+00:00,98.0
2025-11-16 19:00:00+00:00,98.0
2025-11-16 20:00:00+00:00,96.79166666666667
2025-11-16 21:00:00+00:00,97.10416666666667
2025-11-16 22:00:00+00:00,98.49074074074075
2025-11-16 23:00:00+00:00,99.0
2025-11-17 00:00:00+00:00,99.0
2025-11-17 01:00:00+00:00,99.0
2025-11-17 02:00:00+00:00,99.0
2025-11-17 03:00:00+00:00,99.0
2025-11-17 04:00:00+00:00,99.0
2025-11-17 05:00:00+00:00,98.15
2025-11-17 06:00:00+00:00,97.975
2025-11-17 07:00:00+00:00,96.175
2025-11-17 08:00:00+00:00,93.91666666666667
2025-11-17 09:00:00+00:00,88.98214285714286
2025-11-17 10:00:00+00:00,84.61666666666666
2025-11-17 11:00:00+00:00,84.85
2025-11-17 12:00:00+00:00,84.43333333333334
2025-11-17 13:00:00+00:00,81.31666666666666
2025-11-17 14:00:00+00:00,80.85
2025-11-17 15:00:00+00:00,86.2
2025-11-17 16:00:00+00:00,84.92105263157895
2025-11-17 17:00:00+00:00,85.67948717948718
2025-11-17 18:00:00+00:00,88.0
2025-11-17 19:00:00+00:00,89.3061224489796
2025-11-17 20:00:00+00:00,92.12903225806451
2025-11-17 21:00:00+00:00,94.94285714285714
2025-11-17 22:00:00+00:00,95.88888888888889
2025-11-17 23:00:00+00:00,96.12765957446808
2025-11-18 00:00:00+00:00,96.84883720930233
2025-11-18 01:00:00+00:00,97.0
2025-11-18 02:00:00+00:00,97.0
2025-11-18 03:00:00+00:00,96.61702127659575
2025-11-18 04:00:00+00:00,96.02941176470588
2025-11-18 05:00:00+00:00,96.83333333333333
2025-11-18 06:00:00+00:00,97.0
2025-11-18 07:00:00+00:00,96.95
2025-11-18 08:00:00+00:00,96.0
1 time humidity
2 2025-11-11 08:00:00+00:00 90.4396551724138
3 2025-11-11 09:00:00+00:00 86.38333333333334
4 2025-11-11 10:00:00+00:00 82.6
5 2025-11-11 11:00:00+00:00 78.49166666666666
6 2025-11-11 12:00:00+00:00 72.68333333333334
7 2025-11-11 13:00:00+00:00 71.3
8 2025-11-11 14:00:00+00:00 71.54166666666667
9 2025-11-11 15:00:00+00:00 70.40833333333333
10 2025-11-11 16:00:00+00:00 83.8804347826087
11 2025-11-11 17:00:00+00:00 87.92391304347827
12 2025-11-11 18:00:00+00:00 88.80188679245283
13 2025-11-11 19:00:00+00:00 90.4375
14 2025-11-11 20:00:00+00:00 91.75
15 2025-11-11 21:00:00+00:00 91.14285714285714
16 2025-11-11 22:00:00+00:00 91.14
17 2025-11-11 23:00:00+00:00 89.47058823529412
18 2025-11-12 00:00:00+00:00 84.83962264150944
19 2025-11-12 01:00:00+00:00 79.8859649122807
20 2025-11-12 02:00:00+00:00 79.98979591836735
21 2025-11-12 03:00:00+00:00 76.77678571428571
22 2025-11-12 04:00:00+00:00 71.28448275862068
23 2025-11-12 05:00:00+00:00 68.91176470588235
24 2025-11-12 06:00:00+00:00 71.91666666666667
25 2025-11-12 07:00:00+00:00 72.00877192982456
26 2025-11-12 08:00:00+00:00 67.0
27 2025-11-12 09:00:00+00:00 62.127272727272725
28 2025-11-12 10:00:00+00:00 60.05
29 2025-11-12 11:00:00+00:00 54.725
30 2025-11-12 12:00:00+00:00 51.375
31 2025-11-12 13:00:00+00:00 54.416666666666664
32 2025-11-12 14:00:00+00:00 58.83898305084746
33 2025-11-12 15:00:00+00:00 64.99166666666666
34 2025-11-12 16:00:00+00:00 74.32558139534883
35 2025-11-12 17:00:00+00:00 79.30851063829788
36 2025-11-12 18:00:00+00:00 77.97674418604652
37 2025-11-12 19:00:00+00:00 80.41836734693878
38 2025-11-12 20:00:00+00:00 76.67073170731707
39 2025-11-12 21:00:00+00:00 69.82075471698113
40 2025-11-12 22:00:00+00:00 65.98305084745763
41 2025-11-12 23:00:00+00:00 74.3970588235294
42 2025-11-13 00:00:00+00:00 73.43243243243244
43 2025-11-13 01:00:00+00:00 56.75
44 2025-11-13 02:00:00+00:00 61.583333333333336
45 2025-11-13 03:00:00+00:00 75.79729729729729
46 2025-11-13 04:00:00+00:00 81.54651162790698
47 2025-11-13 05:00:00+00:00 69.05
48 2025-11-13 06:00:00+00:00 57.28333333333333
49 2025-11-13 07:00:00+00:00 49.30833333333333
50 2025-11-13 08:00:00+00:00 47.06666666666667
51 2025-11-13 09:00:00+00:00 48.18333333333333
52 2025-11-13 10:00:00+00:00 46.19491525423729
53 2025-11-13 11:00:00+00:00 44.059322033898304
54 2025-11-13 12:00:00+00:00 43.21666666666667
55 2025-11-13 13:00:00+00:00 42.45
56 2025-11-13 14:00:00+00:00 39.9
57 2025-11-13 15:00:00+00:00 40.96666666666667
58 2025-11-13 16:00:00+00:00 41.16949152542373
59 2025-11-13 17:00:00+00:00 45.42307692307692
60 2025-11-13 18:00:00+00:00 41.74561403508772
61 2025-11-13 19:00:00+00:00 41.208333333333336
62 2025-11-13 20:00:00+00:00 39.09322033898305
63 2025-11-13 21:00:00+00:00 35.78813559322034
64 2025-11-13 22:00:00+00:00 40.75
65 2025-11-13 23:00:00+00:00 52.91860465116279
66 2025-11-14 00:00:00+00:00 61.55128205128205
67 2025-11-14 01:00:00+00:00 65.34848484848484
68 2025-11-14 02:00:00+00:00 65.08333333333333
69 2025-11-14 03:00:00+00:00 58.27777777777778
70 2025-11-14 04:00:00+00:00 70.75581395348837
71 2025-11-14 05:00:00+00:00 70.87837837837837
72 2025-11-14 06:00:00+00:00 65.42592592592592
73 2025-11-14 07:00:00+00:00 70.32203389830508
74 2025-11-14 08:00:00+00:00 69.36666666666666
75 2025-11-14 09:00:00+00:00 53.34166666666667
76 2025-11-14 10:00:00+00:00 53.516666666666666
77 2025-11-14 11:00:00+00:00 63.891666666666666
78 2025-11-14 12:00:00+00:00 60.173469387755105
79 2025-11-14 13:00:00+00:00 55.824074074074076
80 2025-11-14 14:00:00+00:00 47.58474576271186
81 2025-11-14 15:00:00+00:00 46.93333333333333
82 2025-11-14 16:00:00+00:00 46.3
83 2025-11-14 17:00:00+00:00 45.09322033898305
84 2025-11-14 18:00:00+00:00 45.940677966101696
85 2025-11-14 19:00:00+00:00 50.78846153846154
86 2025-11-14 20:00:00+00:00 60.270833333333336
87 2025-11-14 21:00:00+00:00 54.36607142857143
88 2025-11-14 22:00:00+00:00 51.625
89 2025-11-14 23:00:00+00:00 54.96666666666667
90 2025-11-15 00:00:00+00:00 58.19166666666667
91 2025-11-15 01:00:00+00:00 63.208333333333336
92 2025-11-15 02:00:00+00:00 70.86666666666666
93 2025-11-15 03:00:00+00:00 78.99
94 2025-11-15 04:00:00+00:00 79.07627118644068
95 2025-11-15 05:00:00+00:00 80.51785714285714
96 2025-11-15 06:00:00+00:00 77.24137931034483
97 2025-11-15 07:00:00+00:00 80.29310344827586
98 2025-11-15 08:00:00+00:00 79.86440677966101
99 2025-11-15 09:00:00+00:00 86.08333333333333
100 2025-11-15 10:00:00+00:00 90.99166666666666
101 2025-11-15 11:00:00+00:00 90.225
102 2025-11-15 12:00:00+00:00 85.29166666666667
103 2025-11-15 13:00:00+00:00 86.05
104 2025-11-15 14:00:00+00:00 86.975
105 2025-11-15 15:00:00+00:00 91.30833333333334
106 2025-11-15 16:00:00+00:00 90.29761904761905
107 2025-11-15 17:00:00+00:00 94.45833333333333
108 2025-11-15 18:00:00+00:00 95.39285714285714
109 2025-11-15 19:00:00+00:00 95.44117647058823
110 2025-11-15 20:00:00+00:00 96.22222222222223
111 2025-11-15 21:00:00+00:00 96.36111111111111
112 2025-11-15 22:00:00+00:00 96.625
113 2025-11-15 23:00:00+00:00 96.3076923076923
114 2025-11-16 00:00:00+00:00 97.0
115 2025-11-16 01:00:00+00:00 96.17777777777778
116 2025-11-16 02:00:00+00:00 94.6
117 2025-11-16 03:00:00+00:00 92.78181818181818
118 2025-11-16 04:00:00+00:00 91.82926829268293
119 2025-11-16 05:00:00+00:00 92.62857142857143
120 2025-11-16 06:00:00+00:00 92.77358490566037
121 2025-11-16 07:00:00+00:00 92.66666666666667
122 2025-11-16 08:00:00+00:00 90.90833333333333
123 2025-11-16 09:00:00+00:00 89.325
124 2025-11-16 10:00:00+00:00 92.64166666666667
125 2025-11-16 11:00:00+00:00 93.24166666666666
126 2025-11-16 12:00:00+00:00 93.18333333333334
127 2025-11-16 13:00:00+00:00 93.96666666666667
128 2025-11-16 14:00:00+00:00 95.66666666666667
129 2025-11-16 15:00:00+00:00 96.98305084745763
130 2025-11-16 16:00:00+00:00 97.4375
131 2025-11-16 17:00:00+00:00 98.0
132 2025-11-16 18:00:00+00:00 98.0
133 2025-11-16 19:00:00+00:00 98.0
134 2025-11-16 20:00:00+00:00 96.79166666666667
135 2025-11-16 21:00:00+00:00 97.10416666666667
136 2025-11-16 22:00:00+00:00 98.49074074074075
137 2025-11-16 23:00:00+00:00 99.0
138 2025-11-17 00:00:00+00:00 99.0
139 2025-11-17 01:00:00+00:00 99.0
140 2025-11-17 02:00:00+00:00 99.0
141 2025-11-17 03:00:00+00:00 99.0
142 2025-11-17 04:00:00+00:00 99.0
143 2025-11-17 05:00:00+00:00 98.15
144 2025-11-17 06:00:00+00:00 97.975
145 2025-11-17 07:00:00+00:00 96.175
146 2025-11-17 08:00:00+00:00 93.91666666666667
147 2025-11-17 09:00:00+00:00 88.98214285714286
148 2025-11-17 10:00:00+00:00 84.61666666666666
149 2025-11-17 11:00:00+00:00 84.85
150 2025-11-17 12:00:00+00:00 84.43333333333334
151 2025-11-17 13:00:00+00:00 81.31666666666666
152 2025-11-17 14:00:00+00:00 80.85
153 2025-11-17 15:00:00+00:00 86.2
154 2025-11-17 16:00:00+00:00 84.92105263157895
155 2025-11-17 17:00:00+00:00 85.67948717948718
156 2025-11-17 18:00:00+00:00 88.0
157 2025-11-17 19:00:00+00:00 89.3061224489796
158 2025-11-17 20:00:00+00:00 92.12903225806451
159 2025-11-17 21:00:00+00:00 94.94285714285714
160 2025-11-17 22:00:00+00:00 95.88888888888889
161 2025-11-17 23:00:00+00:00 96.12765957446808
162 2025-11-18 00:00:00+00:00 96.84883720930233
163 2025-11-18 01:00:00+00:00 97.0
164 2025-11-18 02:00:00+00:00 97.0
165 2025-11-18 03:00:00+00:00 96.61702127659575
166 2025-11-18 04:00:00+00:00 96.02941176470588
167 2025-11-18 05:00:00+00:00 96.83333333333333
168 2025-11-18 06:00:00+00:00 97.0
169 2025-11-18 07:00:00+00:00 96.95
170 2025-11-18 08:00:00+00:00 96.0

View File

@ -1,170 +0,0 @@
time,illuminance
2025-11-11 08:00:00+00:00,8753.97920689655
2025-11-11 09:00:00+00:00,14803.2897
2025-11-11 10:00:00+00:00,21937.66
2025-11-11 11:00:00+00:00,22212.36
2025-11-11 12:00:00+00:00,17519.4696
2025-11-11 13:00:00+00:00,12761.3898
2025-11-11 14:00:00+00:00,6145.58
2025-11-11 15:00:00+00:00,2410.5097
2025-11-11 16:00:00+00:00,53.13913043478261
2025-11-11 17:00:00+00:00,0.0
2025-11-11 18:00:00+00:00,0.0
2025-11-11 19:00:00+00:00,0.0
2025-11-11 20:00:00+00:00,0.0
2025-11-11 21:00:00+00:00,0.0
2025-11-11 22:00:00+00:00,0.0
2025-11-11 23:00:00+00:00,0.0
2025-11-12 00:00:00+00:00,0.0
2025-11-12 01:00:00+00:00,0.0
2025-11-12 02:00:00+00:00,0.0
2025-11-12 03:00:00+00:00,0.0
2025-11-12 04:00:00+00:00,0.0
2025-11-12 05:00:00+00:00,0.0
2025-11-12 06:00:00+00:00,539.0774444444445
2025-11-12 07:00:00+00:00,4384.2525263157895
2025-11-12 08:00:00+00:00,9717.557789473683
2025-11-12 09:00:00+00:00,17651.825345454545
2025-11-12 10:00:00+00:00,19816.98
2025-11-12 11:00:00+00:00,22230.36
2025-11-12 12:00:00+00:00,18711.89
2025-11-12 13:00:00+00:00,15562.1695
2025-11-12 14:00:00+00:00,7915.596305084746
2025-11-12 15:00:00+00:00,2137.8196
2025-11-12 16:00:00+00:00,31.520930232558143
2025-11-12 17:00:00+00:00,0.0
2025-11-12 18:00:00+00:00,0.0
2025-11-12 19:00:00+00:00,0.0
2025-11-12 20:00:00+00:00,0.0
2025-11-12 21:00:00+00:00,0.0
2025-11-12 22:00:00+00:00,0.0
2025-11-12 23:00:00+00:00,0.0
2025-11-13 00:00:00+00:00,0.0
2025-11-13 01:00:00+00:00,0.0
2025-11-13 02:00:00+00:00,0.0
2025-11-13 03:00:00+00:00,0.0
2025-11-13 04:00:00+00:00,0.0
2025-11-13 05:00:00+00:00,0.0
2025-11-13 06:00:00+00:00,427.87
2025-11-13 07:00:00+00:00,5346.1699
2025-11-13 08:00:00+00:00,13033.1098
2025-11-13 09:00:00+00:00,20893.089900000003
2025-11-13 10:00:00+00:00,22835.084745762713
2025-11-13 11:00:00+00:00,21669.111864406783
2025-11-13 12:00:00+00:00,19302.780000000002
2025-11-13 13:00:00+00:00,15188.7199
2025-11-13 14:00:00+00:00,8176.39
2025-11-13 15:00:00+00:00,2037.7799
2025-11-13 16:00:00+00:00,18.1524406779661
2025-11-13 17:00:00+00:00,0.0
2025-11-13 18:00:00+00:00,0.0
2025-11-13 19:00:00+00:00,0.0
2025-11-13 20:00:00+00:00,0.0
2025-11-13 21:00:00+00:00,0.0
2025-11-13 22:00:00+00:00,0.0
2025-11-13 23:00:00+00:00,0.0
2025-11-14 00:00:00+00:00,0.0
2025-11-14 01:00:00+00:00,0.0
2025-11-14 02:00:00+00:00,0.0
2025-11-14 03:00:00+00:00,0.0
2025-11-14 04:00:00+00:00,0.0
2025-11-14 05:00:00+00:00,0.0
2025-11-14 06:00:00+00:00,286.9443333333333
2025-11-14 07:00:00+00:00,3290.775966101695
2025-11-14 08:00:00+00:00,8036.23
2025-11-14 09:00:00+00:00,15955.569599999999
2025-11-14 10:00:00+00:00,12867.2199
2025-11-14 11:00:00+00:00,17966.7599
2025-11-14 12:00:00+00:00,16961.644163265308
2025-11-14 13:00:00+00:00,10758.1
2025-11-14 14:00:00+00:00,3646.545661016949
2025-11-14 15:00:00+00:00,1107.0993999999998
2025-11-14 16:00:00+00:00,12.7699
2025-11-14 17:00:00+00:00,0.0
2025-11-14 18:00:00+00:00,0.0
2025-11-14 19:00:00+00:00,0.0
2025-11-14 20:00:00+00:00,0.0
2025-11-14 21:00:00+00:00,0.0
2025-11-14 22:00:00+00:00,0.0
2025-11-14 23:00:00+00:00,0.0
2025-11-15 00:00:00+00:00,0.0
2025-11-15 01:00:00+00:00,0.0
2025-11-15 02:00:00+00:00,0.0
2025-11-15 03:00:00+00:00,0.0
2025-11-15 04:00:00+00:00,0.0
2025-11-15 05:00:00+00:00,0.0
2025-11-15 06:00:00+00:00,194.75172413793103
2025-11-15 07:00:00+00:00,2002.148172413793
2025-11-15 08:00:00+00:00,4058.379559322034
2025-11-15 09:00:00+00:00,4793.6900000000005
2025-11-15 10:00:00+00:00,11489.619799999999
2025-11-15 11:00:00+00:00,13446.8499
2025-11-15 12:00:00+00:00,13169.3299
2025-11-15 13:00:00+00:00,7882.7998
2025-11-15 14:00:00+00:00,2470.0399
2025-11-15 15:00:00+00:00,683.1699000000001
2025-11-15 16:00:00+00:00,10.585428571428572
2025-11-15 17:00:00+00:00,0.0
2025-11-15 18:00:00+00:00,0.0
2025-11-15 19:00:00+00:00,0.0
2025-11-15 20:00:00+00:00,0.0
2025-11-15 21:00:00+00:00,0.0
2025-11-15 22:00:00+00:00,0.0
2025-11-15 23:00:00+00:00,0.0
2025-11-16 00:00:00+00:00,0.0
2025-11-16 01:00:00+00:00,0.0
2025-11-16 02:00:00+00:00,0.0
2025-11-16 03:00:00+00:00,0.0
2025-11-16 04:00:00+00:00,0.0
2025-11-16 05:00:00+00:00,0.0
2025-11-16 06:00:00+00:00,241.74305660377357
2025-11-16 07:00:00+00:00,2991.2299
2025-11-16 08:00:00+00:00,7205.5
2025-11-16 09:00:00+00:00,10105.749699999998
2025-11-16 10:00:00+00:00,14459.59
2025-11-16 11:00:00+00:00,12687.81
2025-11-16 12:00:00+00:00,10428.99
2025-11-16 13:00:00+00:00,6846.9298
2025-11-16 14:00:00+00:00,2649.51
2025-11-16 15:00:00+00:00,637.7998983050848
2025-11-16 16:00:00+00:00,0.0
2025-11-16 17:00:00+00:00,0.0
2025-11-16 18:00:00+00:00,0.0
2025-11-16 19:00:00+00:00,0.0
2025-11-16 20:00:00+00:00,0.0
2025-11-16 21:00:00+00:00,0.0
2025-11-16 22:00:00+00:00,0.0
2025-11-16 23:00:00+00:00,0.0
2025-11-17 00:00:00+00:00,0.0
2025-11-17 01:00:00+00:00,0.0
2025-11-17 02:00:00+00:00,0.0
2025-11-17 03:00:00+00:00,0.0
2025-11-17 04:00:00+00:00,0.0
2025-11-17 05:00:00+00:00,0.0
2025-11-17 06:00:00+00:00,36.38
2025-11-17 07:00:00+00:00,2247.98
2025-11-17 08:00:00+00:00,5345.479600000001
2025-11-17 09:00:00+00:00,13612.317321428573
2025-11-17 10:00:00+00:00,13954.1597
2025-11-17 11:00:00+00:00,8618.99
2025-11-17 12:00:00+00:00,7211.570000000001
2025-11-17 13:00:00+00:00,10041.5799
2025-11-17 14:00:00+00:00,6146.8598999999995
2025-11-17 15:00:00+00:00,1435.4297000000001
2025-11-17 16:00:00+00:00,17.263157894736842
2025-11-17 17:00:00+00:00,0.0
2025-11-17 18:00:00+00:00,0.0
2025-11-17 19:00:00+00:00,0.0
2025-11-17 20:00:00+00:00,0.0
2025-11-17 21:00:00+00:00,0.0
2025-11-17 22:00:00+00:00,0.0
2025-11-17 23:00:00+00:00,0.0
2025-11-18 00:00:00+00:00,0.0
2025-11-18 01:00:00+00:00,0.0
2025-11-18 02:00:00+00:00,0.0
2025-11-18 03:00:00+00:00,0.0
2025-11-18 04:00:00+00:00,0.0
2025-11-18 05:00:00+00:00,0.0
2025-11-18 06:00:00+00:00,230.0326530612245
2025-11-18 07:00:00+00:00,2010.6299
2025-11-18 08:00:00+00:00,3150.6
1 time illuminance
2 2025-11-11 08:00:00+00:00 8753.97920689655
3 2025-11-11 09:00:00+00:00 14803.2897
4 2025-11-11 10:00:00+00:00 21937.66
5 2025-11-11 11:00:00+00:00 22212.36
6 2025-11-11 12:00:00+00:00 17519.4696
7 2025-11-11 13:00:00+00:00 12761.3898
8 2025-11-11 14:00:00+00:00 6145.58
9 2025-11-11 15:00:00+00:00 2410.5097
10 2025-11-11 16:00:00+00:00 53.13913043478261
11 2025-11-11 17:00:00+00:00 0.0
12 2025-11-11 18:00:00+00:00 0.0
13 2025-11-11 19:00:00+00:00 0.0
14 2025-11-11 20:00:00+00:00 0.0
15 2025-11-11 21:00:00+00:00 0.0
16 2025-11-11 22:00:00+00:00 0.0
17 2025-11-11 23:00:00+00:00 0.0
18 2025-11-12 00:00:00+00:00 0.0
19 2025-11-12 01:00:00+00:00 0.0
20 2025-11-12 02:00:00+00:00 0.0
21 2025-11-12 03:00:00+00:00 0.0
22 2025-11-12 04:00:00+00:00 0.0
23 2025-11-12 05:00:00+00:00 0.0
24 2025-11-12 06:00:00+00:00 539.0774444444445
25 2025-11-12 07:00:00+00:00 4384.2525263157895
26 2025-11-12 08:00:00+00:00 9717.557789473683
27 2025-11-12 09:00:00+00:00 17651.825345454545
28 2025-11-12 10:00:00+00:00 19816.98
29 2025-11-12 11:00:00+00:00 22230.36
30 2025-11-12 12:00:00+00:00 18711.89
31 2025-11-12 13:00:00+00:00 15562.1695
32 2025-11-12 14:00:00+00:00 7915.596305084746
33 2025-11-12 15:00:00+00:00 2137.8196
34 2025-11-12 16:00:00+00:00 31.520930232558143
35 2025-11-12 17:00:00+00:00 0.0
36 2025-11-12 18:00:00+00:00 0.0
37 2025-11-12 19:00:00+00:00 0.0
38 2025-11-12 20:00:00+00:00 0.0
39 2025-11-12 21:00:00+00:00 0.0
40 2025-11-12 22:00:00+00:00 0.0
41 2025-11-12 23:00:00+00:00 0.0
42 2025-11-13 00:00:00+00:00 0.0
43 2025-11-13 01:00:00+00:00 0.0
44 2025-11-13 02:00:00+00:00 0.0
45 2025-11-13 03:00:00+00:00 0.0
46 2025-11-13 04:00:00+00:00 0.0
47 2025-11-13 05:00:00+00:00 0.0
48 2025-11-13 06:00:00+00:00 427.87
49 2025-11-13 07:00:00+00:00 5346.1699
50 2025-11-13 08:00:00+00:00 13033.1098
51 2025-11-13 09:00:00+00:00 20893.089900000003
52 2025-11-13 10:00:00+00:00 22835.084745762713
53 2025-11-13 11:00:00+00:00 21669.111864406783
54 2025-11-13 12:00:00+00:00 19302.780000000002
55 2025-11-13 13:00:00+00:00 15188.7199
56 2025-11-13 14:00:00+00:00 8176.39
57 2025-11-13 15:00:00+00:00 2037.7799
58 2025-11-13 16:00:00+00:00 18.1524406779661
59 2025-11-13 17:00:00+00:00 0.0
60 2025-11-13 18:00:00+00:00 0.0
61 2025-11-13 19:00:00+00:00 0.0
62 2025-11-13 20:00:00+00:00 0.0
63 2025-11-13 21:00:00+00:00 0.0
64 2025-11-13 22:00:00+00:00 0.0
65 2025-11-13 23:00:00+00:00 0.0
66 2025-11-14 00:00:00+00:00 0.0
67 2025-11-14 01:00:00+00:00 0.0
68 2025-11-14 02:00:00+00:00 0.0
69 2025-11-14 03:00:00+00:00 0.0
70 2025-11-14 04:00:00+00:00 0.0
71 2025-11-14 05:00:00+00:00 0.0
72 2025-11-14 06:00:00+00:00 286.9443333333333
73 2025-11-14 07:00:00+00:00 3290.775966101695
74 2025-11-14 08:00:00+00:00 8036.23
75 2025-11-14 09:00:00+00:00 15955.569599999999
76 2025-11-14 10:00:00+00:00 12867.2199
77 2025-11-14 11:00:00+00:00 17966.7599
78 2025-11-14 12:00:00+00:00 16961.644163265308
79 2025-11-14 13:00:00+00:00 10758.1
80 2025-11-14 14:00:00+00:00 3646.545661016949
81 2025-11-14 15:00:00+00:00 1107.0993999999998
82 2025-11-14 16:00:00+00:00 12.7699
83 2025-11-14 17:00:00+00:00 0.0
84 2025-11-14 18:00:00+00:00 0.0
85 2025-11-14 19:00:00+00:00 0.0
86 2025-11-14 20:00:00+00:00 0.0
87 2025-11-14 21:00:00+00:00 0.0
88 2025-11-14 22:00:00+00:00 0.0
89 2025-11-14 23:00:00+00:00 0.0
90 2025-11-15 00:00:00+00:00 0.0
91 2025-11-15 01:00:00+00:00 0.0
92 2025-11-15 02:00:00+00:00 0.0
93 2025-11-15 03:00:00+00:00 0.0
94 2025-11-15 04:00:00+00:00 0.0
95 2025-11-15 05:00:00+00:00 0.0
96 2025-11-15 06:00:00+00:00 194.75172413793103
97 2025-11-15 07:00:00+00:00 2002.148172413793
98 2025-11-15 08:00:00+00:00 4058.379559322034
99 2025-11-15 09:00:00+00:00 4793.6900000000005
100 2025-11-15 10:00:00+00:00 11489.619799999999
101 2025-11-15 11:00:00+00:00 13446.8499
102 2025-11-15 12:00:00+00:00 13169.3299
103 2025-11-15 13:00:00+00:00 7882.7998
104 2025-11-15 14:00:00+00:00 2470.0399
105 2025-11-15 15:00:00+00:00 683.1699000000001
106 2025-11-15 16:00:00+00:00 10.585428571428572
107 2025-11-15 17:00:00+00:00 0.0
108 2025-11-15 18:00:00+00:00 0.0
109 2025-11-15 19:00:00+00:00 0.0
110 2025-11-15 20:00:00+00:00 0.0
111 2025-11-15 21:00:00+00:00 0.0
112 2025-11-15 22:00:00+00:00 0.0
113 2025-11-15 23:00:00+00:00 0.0
114 2025-11-16 00:00:00+00:00 0.0
115 2025-11-16 01:00:00+00:00 0.0
116 2025-11-16 02:00:00+00:00 0.0
117 2025-11-16 03:00:00+00:00 0.0
118 2025-11-16 04:00:00+00:00 0.0
119 2025-11-16 05:00:00+00:00 0.0
120 2025-11-16 06:00:00+00:00 241.74305660377357
121 2025-11-16 07:00:00+00:00 2991.2299
122 2025-11-16 08:00:00+00:00 7205.5
123 2025-11-16 09:00:00+00:00 10105.749699999998
124 2025-11-16 10:00:00+00:00 14459.59
125 2025-11-16 11:00:00+00:00 12687.81
126 2025-11-16 12:00:00+00:00 10428.99
127 2025-11-16 13:00:00+00:00 6846.9298
128 2025-11-16 14:00:00+00:00 2649.51
129 2025-11-16 15:00:00+00:00 637.7998983050848
130 2025-11-16 16:00:00+00:00 0.0
131 2025-11-16 17:00:00+00:00 0.0
132 2025-11-16 18:00:00+00:00 0.0
133 2025-11-16 19:00:00+00:00 0.0
134 2025-11-16 20:00:00+00:00 0.0
135 2025-11-16 21:00:00+00:00 0.0
136 2025-11-16 22:00:00+00:00 0.0
137 2025-11-16 23:00:00+00:00 0.0
138 2025-11-17 00:00:00+00:00 0.0
139 2025-11-17 01:00:00+00:00 0.0
140 2025-11-17 02:00:00+00:00 0.0
141 2025-11-17 03:00:00+00:00 0.0
142 2025-11-17 04:00:00+00:00 0.0
143 2025-11-17 05:00:00+00:00 0.0
144 2025-11-17 06:00:00+00:00 36.38
145 2025-11-17 07:00:00+00:00 2247.98
146 2025-11-17 08:00:00+00:00 5345.479600000001
147 2025-11-17 09:00:00+00:00 13612.317321428573
148 2025-11-17 10:00:00+00:00 13954.1597
149 2025-11-17 11:00:00+00:00 8618.99
150 2025-11-17 12:00:00+00:00 7211.570000000001
151 2025-11-17 13:00:00+00:00 10041.5799
152 2025-11-17 14:00:00+00:00 6146.8598999999995
153 2025-11-17 15:00:00+00:00 1435.4297000000001
154 2025-11-17 16:00:00+00:00 17.263157894736842
155 2025-11-17 17:00:00+00:00 0.0
156 2025-11-17 18:00:00+00:00 0.0
157 2025-11-17 19:00:00+00:00 0.0
158 2025-11-17 20:00:00+00:00 0.0
159 2025-11-17 21:00:00+00:00 0.0
160 2025-11-17 22:00:00+00:00 0.0
161 2025-11-17 23:00:00+00:00 0.0
162 2025-11-18 00:00:00+00:00 0.0
163 2025-11-18 01:00:00+00:00 0.0
164 2025-11-18 02:00:00+00:00 0.0
165 2025-11-18 03:00:00+00:00 0.0
166 2025-11-18 04:00:00+00:00 0.0
167 2025-11-18 05:00:00+00:00 0.0
168 2025-11-18 06:00:00+00:00 230.0326530612245
169 2025-11-18 07:00:00+00:00 2010.6299
170 2025-11-18 08:00:00+00:00 3150.6

View File

@ -1,170 +0,0 @@
time,pressure
2025-11-11 08:00:00+00:00,1006.8025357788998
2025-11-11 09:00:00+00:00,1007.4336885582467
2025-11-11 10:00:00+00:00,1007.4336885582462
2025-11-11 11:00:00+00:00,1006.9821700728662
2025-11-11 12:00:00+00:00,1006.51936362535
2025-11-11 13:00:00+00:00,1006.1863687423846
2025-11-11 14:00:00+00:00,1006.1525048559816
2025-11-11 15:00:00+00:00,1006.09606504531
2025-11-11 16:00:00+00:00,1006.0960650453098
2025-11-11 17:00:00+00:00,1006.0224479009556
2025-11-11 18:00:00+00:00,1005.6935320559875
2025-11-11 19:00:00+00:00,1005.605038692461
2025-11-11 20:00:00+00:00,1005.8928817268919
2025-11-11 21:00:00+00:00,1005.8219288220467
2025-11-11 22:00:00+00:00,1005.6626072993489
2025-11-11 23:00:00+00:00,1005.7175863149204
2025-11-12 00:00:00+00:00,1005.4571237924154
2025-11-12 01:00:00+00:00,1005.2762025323852
2025-11-12 02:00:00+00:00,1004.9350175114786
2025-11-12 03:00:00+00:00,1004.6568498731625
2025-11-12 04:00:00+00:00,1004.8524430101495
2025-11-12 05:00:00+00:00,1005.0735084754837
2025-11-12 06:00:00+00:00,1005.2745522455234
2025-11-12 07:00:00+00:00,1005.5554310693974
2025-11-12 08:00:00+00:00,1005.4544335134557
2025-11-12 09:00:00+00:00,1005.5357716520901
2025-11-12 10:00:00+00:00,1005.7066303516732
2025-11-12 11:00:00+00:00,1005.2268919609563
2025-11-12 12:00:00+00:00,1004.6004100624923
2025-11-12 13:00:00+00:00,1004.4593105358116
2025-11-12 14:00:00+00:00,1004.1503264875583
2025-11-12 15:00:00+00:00,1004.2391952741922
2025-11-12 16:00:00+00:00,1004.2611149215926
2025-11-12 17:00:00+00:00,1004.633433355969
2025-11-12 18:00:00+00:00,1004.4186213699787
2025-11-12 19:00:00+00:00,1004.1264308361359
2025-11-12 20:00:00+00:00,1004.1137887680413
2025-11-12 21:00:00+00:00,1004.1153471613409
2025-11-12 22:00:00+00:00,1004.1216282787423
2025-11-12 23:00:00+00:00,1004.1737914935902
2025-11-13 00:00:00+00:00,1003.8994886299554
2025-11-13 01:00:00+00:00,1003.3367854124415
2025-11-13 02:00:00+00:00,1003.0200953636644
2025-11-13 03:00:00+00:00,1003.386954133039
2025-11-13 04:00:00+00:00,1004.2296136319123
2025-11-13 05:00:00+00:00,1004.572190157155
2025-11-13 06:00:00+00:00,1004.7358656081044
2025-11-13 07:00:00+00:00,1005.0801484532092
2025-11-13 08:00:00+00:00,1005.3792794497713
2025-11-13 09:00:00+00:00,1005.8364419162203
2025-11-13 10:00:00+00:00,1005.8607397330167
2025-11-13 11:00:00+00:00,1005.2810359149227
2025-11-13 12:00:00+00:00,1005.1083683585458
2025-11-13 13:00:00+00:00,1004.8600331915857
2025-11-13 14:00:00+00:00,1004.5778341382222
2025-11-13 15:00:00+00:00,1004.5157503464834
2025-11-13 16:00:00+00:00,1004.5693203362734
2025-11-13 17:00:00+00:00,1005.0475870239753
2025-11-13 18:00:00+00:00,1004.4622810521628
2025-11-13 19:00:00+00:00,1004.0924517664458
2025-11-13 20:00:00+00:00,1004.06423186111
2025-11-13 21:00:00+00:00,1003.6509776541492
2025-11-13 22:00:00+00:00,1003.3305143223666
2025-11-13 23:00:00+00:00,1002.7490530170666
2025-11-14 00:00:00+00:00,1001.9976664857203
2025-11-14 01:00:00+00:00,1001.1293617061444
2025-11-14 02:00:00+00:00,1000.2150367732527
2025-11-14 03:00:00+00:00,999.6092494720353
2025-11-14 04:00:00+00:00,999.8194330770515
2025-11-14 05:00:00+00:00,1000.1836135273107
2025-11-14 06:00:00+00:00,1000.2890356361329
2025-11-14 07:00:00+00:00,1000.4769557590513
2025-11-14 08:00:00+00:00,1000.344848337799
2025-11-14 09:00:00+00:00,1000.2263247353866
2025-11-14 10:00:00+00:00,999.955413644161
2025-11-14 11:00:00+00:00,999.9159057766907
2025-11-14 12:00:00+00:00,999.4960626952586
2025-11-14 13:00:00+00:00,999.0787152517155
2025-11-14 14:00:00+00:00,999.0707435270442
2025-11-14 15:00:00+00:00,998.9902928816622
2025-11-14 16:00:00+00:00,999.0072248248639
2025-11-14 17:00:00+00:00,999.145358869967
2025-11-14 18:00:00+00:00,999.1797967205467
2025-11-14 19:00:00+00:00,999.2907263353949
2025-11-14 20:00:00+00:00,999.1962981906162
2025-11-14 21:00:00+00:00,999.4381830934977
2025-11-14 22:00:00+00:00,999.7042564866678
2025-11-14 23:00:00+00:00,1000.1078011329762
2025-11-15 00:00:00+00:00,1000.2545446407224
2025-11-15 01:00:00+00:00,1000.4182200916727
2025-11-15 02:00:00+00:00,1000.1247330761779
2025-11-15 03:00:00+00:00,999.9260649426119
2025-11-15 04:00:00+00:00,1000.0579619103316
2025-11-15 05:00:00+00:00,999.8796230412585
2025-11-15 06:00:00+00:00,999.9246636783472
2025-11-15 07:00:00+00:00,1000.0706287059476
2025-11-15 08:00:00+00:00,1000.1497961785437
2025-11-15 09:00:00+00:00,1000.248900659657
2025-11-15 10:00:00+00:00,1000.4295080538088
2025-11-15 11:00:00+00:00,1000.0570053033717
2025-11-15 12:00:00+00:00,999.780450231076
2025-11-15 13:00:00+00:00,999.4079474806374
2025-11-15 14:00:00+00:00,999.9328377198912
2025-11-15 15:00:00+00:00,999.7917381932111
2025-11-15 16:00:00+00:00,999.6216124781831
2025-11-15 17:00:00+00:00,1000.5649635994246
2025-11-15 18:00:00+00:00,1000.67784322077
2025-11-15 19:00:00+00:00,1000.5284437219287
2025-11-15 20:00:00+00:00,1000.4426773429645
2025-11-15 21:00:00+00:00,1000.33920435673
2025-11-15 22:00:00+00:00,1000.3392043567299
2025-11-15 23:00:00+00:00,1000.3392043567311
2025-11-16 00:00:00+00:00,999.9521885121229
2025-11-16 01:00:00+00:00,999.7823315580983
2025-11-16 02:00:00+00:00,999.2186175702913
2025-11-16 03:00:00+00:00,999.021591322126
2025-11-16 04:00:00+00:00,998.7946807573566
2025-11-16 05:00:00+00:00,998.491203698717
2025-11-16 06:00:00+00:00,998.0773523214843
2025-11-16 07:00:00+00:00,997.9969522138283
2025-11-16 08:00:00+00:00,997.7486170468699
2025-11-16 09:00:00+00:00,997.7147531604664
2025-11-16 10:00:00+00:00,997.4664179935082
2025-11-16 11:00:00+00:00,996.7665643411713
2025-11-16 12:00:00+00:00,996.614176852356
2025-11-16 13:00:00+00:00,996.614176852356
2025-11-16 14:00:00+00:00,996.591600928087
2025-11-16 15:00:00+00:00,996.6830525535155
2025-11-16 16:00:00+00:00,996.9739806453921
2025-11-16 17:00:00+00:00,997.1463236386951
2025-11-16 18:00:00+00:00,997.2726413101999
2025-11-16 19:00:00+00:00,997.291454580424
2025-11-16 20:00:00+00:00,997.2914545804239
2025-11-16 21:00:00+00:00,997.2914545804239
2025-11-16 22:00:00+00:00,997.291454580424
2025-11-16 23:00:00+00:00,997.4868231558282
2025-11-17 00:00:00+00:00,997.2707215887484
2025-11-17 01:00:00+00:00,996.9592051289188
2025-11-17 02:00:00+00:00,996.8737999814488
2025-11-17 03:00:00+00:00,996.6326480631216
2025-11-17 04:00:00+00:00,996.9753916406589
2025-11-17 05:00:00+00:00,997.6696013119287
2025-11-17 06:00:00+00:00,998.4879785666784
2025-11-17 07:00:00+00:00,999.7240104204034
2025-11-17 08:00:00+00:00,1000.9148904255908
2025-11-17 09:00:00+00:00,1001.43978066484
2025-11-17 10:00:00+00:00,1001.7501996235417
2025-11-17 11:00:00+00:00,1001.970314885162
2025-11-17 12:00:00+00:00,1002.4444092948122
2025-11-17 13:00:00+00:00,1003.1781268335506
2025-11-17 14:00:00+00:00,1004.2053313877872
2025-11-17 15:00:00+00:00,1005.4300752793774
2025-11-17 16:00:00+00:00,1006.8149300022945
2025-11-17 17:00:00+00:00,1007.9716033691925
2025-11-17 18:00:00+00:00,1009.1641331534599
2025-11-17 19:00:00+00:00,1009.8487365385887
2025-11-17 20:00:00+00:00,1010.5311417807217
2025-11-17 21:00:00+00:00,1010.8176583495577
2025-11-17 22:00:00+00:00,1011.0477177682973
2025-11-17 23:00:00+00:00,1011.17564800582
2025-11-18 00:00:00+00:00,1011.3095284869521
2025-11-18 01:00:00+00:00,1011.6412764438712
2025-11-18 02:00:00+00:00,1011.3953056473576
2025-11-18 03:00:00+00:00,1010.9955209504839
2025-11-18 04:00:00+00:00,1010.9764486740377
2025-11-18 05:00:00+00:00,1011.2744176744983
2025-11-18 06:00:00+00:00,1011.3207789475515
2025-11-18 07:00:00+00:00,1011.4804229834554
2025-11-18 08:00:00+00:00,1011.85292573389
1 time pressure
2 2025-11-11 08:00:00+00:00 1006.8025357788998
3 2025-11-11 09:00:00+00:00 1007.4336885582467
4 2025-11-11 10:00:00+00:00 1007.4336885582462
5 2025-11-11 11:00:00+00:00 1006.9821700728662
6 2025-11-11 12:00:00+00:00 1006.51936362535
7 2025-11-11 13:00:00+00:00 1006.1863687423846
8 2025-11-11 14:00:00+00:00 1006.1525048559816
9 2025-11-11 15:00:00+00:00 1006.09606504531
10 2025-11-11 16:00:00+00:00 1006.0960650453098
11 2025-11-11 17:00:00+00:00 1006.0224479009556
12 2025-11-11 18:00:00+00:00 1005.6935320559875
13 2025-11-11 19:00:00+00:00 1005.605038692461
14 2025-11-11 20:00:00+00:00 1005.8928817268919
15 2025-11-11 21:00:00+00:00 1005.8219288220467
16 2025-11-11 22:00:00+00:00 1005.6626072993489
17 2025-11-11 23:00:00+00:00 1005.7175863149204
18 2025-11-12 00:00:00+00:00 1005.4571237924154
19 2025-11-12 01:00:00+00:00 1005.2762025323852
20 2025-11-12 02:00:00+00:00 1004.9350175114786
21 2025-11-12 03:00:00+00:00 1004.6568498731625
22 2025-11-12 04:00:00+00:00 1004.8524430101495
23 2025-11-12 05:00:00+00:00 1005.0735084754837
24 2025-11-12 06:00:00+00:00 1005.2745522455234
25 2025-11-12 07:00:00+00:00 1005.5554310693974
26 2025-11-12 08:00:00+00:00 1005.4544335134557
27 2025-11-12 09:00:00+00:00 1005.5357716520901
28 2025-11-12 10:00:00+00:00 1005.7066303516732
29 2025-11-12 11:00:00+00:00 1005.2268919609563
30 2025-11-12 12:00:00+00:00 1004.6004100624923
31 2025-11-12 13:00:00+00:00 1004.4593105358116
32 2025-11-12 14:00:00+00:00 1004.1503264875583
33 2025-11-12 15:00:00+00:00 1004.2391952741922
34 2025-11-12 16:00:00+00:00 1004.2611149215926
35 2025-11-12 17:00:00+00:00 1004.633433355969
36 2025-11-12 18:00:00+00:00 1004.4186213699787
37 2025-11-12 19:00:00+00:00 1004.1264308361359
38 2025-11-12 20:00:00+00:00 1004.1137887680413
39 2025-11-12 21:00:00+00:00 1004.1153471613409
40 2025-11-12 22:00:00+00:00 1004.1216282787423
41 2025-11-12 23:00:00+00:00 1004.1737914935902
42 2025-11-13 00:00:00+00:00 1003.8994886299554
43 2025-11-13 01:00:00+00:00 1003.3367854124415
44 2025-11-13 02:00:00+00:00 1003.0200953636644
45 2025-11-13 03:00:00+00:00 1003.386954133039
46 2025-11-13 04:00:00+00:00 1004.2296136319123
47 2025-11-13 05:00:00+00:00 1004.572190157155
48 2025-11-13 06:00:00+00:00 1004.7358656081044
49 2025-11-13 07:00:00+00:00 1005.0801484532092
50 2025-11-13 08:00:00+00:00 1005.3792794497713
51 2025-11-13 09:00:00+00:00 1005.8364419162203
52 2025-11-13 10:00:00+00:00 1005.8607397330167
53 2025-11-13 11:00:00+00:00 1005.2810359149227
54 2025-11-13 12:00:00+00:00 1005.1083683585458
55 2025-11-13 13:00:00+00:00 1004.8600331915857
56 2025-11-13 14:00:00+00:00 1004.5778341382222
57 2025-11-13 15:00:00+00:00 1004.5157503464834
58 2025-11-13 16:00:00+00:00 1004.5693203362734
59 2025-11-13 17:00:00+00:00 1005.0475870239753
60 2025-11-13 18:00:00+00:00 1004.4622810521628
61 2025-11-13 19:00:00+00:00 1004.0924517664458
62 2025-11-13 20:00:00+00:00 1004.06423186111
63 2025-11-13 21:00:00+00:00 1003.6509776541492
64 2025-11-13 22:00:00+00:00 1003.3305143223666
65 2025-11-13 23:00:00+00:00 1002.7490530170666
66 2025-11-14 00:00:00+00:00 1001.9976664857203
67 2025-11-14 01:00:00+00:00 1001.1293617061444
68 2025-11-14 02:00:00+00:00 1000.2150367732527
69 2025-11-14 03:00:00+00:00 999.6092494720353
70 2025-11-14 04:00:00+00:00 999.8194330770515
71 2025-11-14 05:00:00+00:00 1000.1836135273107
72 2025-11-14 06:00:00+00:00 1000.2890356361329
73 2025-11-14 07:00:00+00:00 1000.4769557590513
74 2025-11-14 08:00:00+00:00 1000.344848337799
75 2025-11-14 09:00:00+00:00 1000.2263247353866
76 2025-11-14 10:00:00+00:00 999.955413644161
77 2025-11-14 11:00:00+00:00 999.9159057766907
78 2025-11-14 12:00:00+00:00 999.4960626952586
79 2025-11-14 13:00:00+00:00 999.0787152517155
80 2025-11-14 14:00:00+00:00 999.0707435270442
81 2025-11-14 15:00:00+00:00 998.9902928816622
82 2025-11-14 16:00:00+00:00 999.0072248248639
83 2025-11-14 17:00:00+00:00 999.145358869967
84 2025-11-14 18:00:00+00:00 999.1797967205467
85 2025-11-14 19:00:00+00:00 999.2907263353949
86 2025-11-14 20:00:00+00:00 999.1962981906162
87 2025-11-14 21:00:00+00:00 999.4381830934977
88 2025-11-14 22:00:00+00:00 999.7042564866678
89 2025-11-14 23:00:00+00:00 1000.1078011329762
90 2025-11-15 00:00:00+00:00 1000.2545446407224
91 2025-11-15 01:00:00+00:00 1000.4182200916727
92 2025-11-15 02:00:00+00:00 1000.1247330761779
93 2025-11-15 03:00:00+00:00 999.9260649426119
94 2025-11-15 04:00:00+00:00 1000.0579619103316
95 2025-11-15 05:00:00+00:00 999.8796230412585
96 2025-11-15 06:00:00+00:00 999.9246636783472
97 2025-11-15 07:00:00+00:00 1000.0706287059476
98 2025-11-15 08:00:00+00:00 1000.1497961785437
99 2025-11-15 09:00:00+00:00 1000.248900659657
100 2025-11-15 10:00:00+00:00 1000.4295080538088
101 2025-11-15 11:00:00+00:00 1000.0570053033717
102 2025-11-15 12:00:00+00:00 999.780450231076
103 2025-11-15 13:00:00+00:00 999.4079474806374
104 2025-11-15 14:00:00+00:00 999.9328377198912
105 2025-11-15 15:00:00+00:00 999.7917381932111
106 2025-11-15 16:00:00+00:00 999.6216124781831
107 2025-11-15 17:00:00+00:00 1000.5649635994246
108 2025-11-15 18:00:00+00:00 1000.67784322077
109 2025-11-15 19:00:00+00:00 1000.5284437219287
110 2025-11-15 20:00:00+00:00 1000.4426773429645
111 2025-11-15 21:00:00+00:00 1000.33920435673
112 2025-11-15 22:00:00+00:00 1000.3392043567299
113 2025-11-15 23:00:00+00:00 1000.3392043567311
114 2025-11-16 00:00:00+00:00 999.9521885121229
115 2025-11-16 01:00:00+00:00 999.7823315580983
116 2025-11-16 02:00:00+00:00 999.2186175702913
117 2025-11-16 03:00:00+00:00 999.021591322126
118 2025-11-16 04:00:00+00:00 998.7946807573566
119 2025-11-16 05:00:00+00:00 998.491203698717
120 2025-11-16 06:00:00+00:00 998.0773523214843
121 2025-11-16 07:00:00+00:00 997.9969522138283
122 2025-11-16 08:00:00+00:00 997.7486170468699
123 2025-11-16 09:00:00+00:00 997.7147531604664
124 2025-11-16 10:00:00+00:00 997.4664179935082
125 2025-11-16 11:00:00+00:00 996.7665643411713
126 2025-11-16 12:00:00+00:00 996.614176852356
127 2025-11-16 13:00:00+00:00 996.614176852356
128 2025-11-16 14:00:00+00:00 996.591600928087
129 2025-11-16 15:00:00+00:00 996.6830525535155
130 2025-11-16 16:00:00+00:00 996.9739806453921
131 2025-11-16 17:00:00+00:00 997.1463236386951
132 2025-11-16 18:00:00+00:00 997.2726413101999
133 2025-11-16 19:00:00+00:00 997.291454580424
134 2025-11-16 20:00:00+00:00 997.2914545804239
135 2025-11-16 21:00:00+00:00 997.2914545804239
136 2025-11-16 22:00:00+00:00 997.291454580424
137 2025-11-16 23:00:00+00:00 997.4868231558282
138 2025-11-17 00:00:00+00:00 997.2707215887484
139 2025-11-17 01:00:00+00:00 996.9592051289188
140 2025-11-17 02:00:00+00:00 996.8737999814488
141 2025-11-17 03:00:00+00:00 996.6326480631216
142 2025-11-17 04:00:00+00:00 996.9753916406589
143 2025-11-17 05:00:00+00:00 997.6696013119287
144 2025-11-17 06:00:00+00:00 998.4879785666784
145 2025-11-17 07:00:00+00:00 999.7240104204034
146 2025-11-17 08:00:00+00:00 1000.9148904255908
147 2025-11-17 09:00:00+00:00 1001.43978066484
148 2025-11-17 10:00:00+00:00 1001.7501996235417
149 2025-11-17 11:00:00+00:00 1001.970314885162
150 2025-11-17 12:00:00+00:00 1002.4444092948122
151 2025-11-17 13:00:00+00:00 1003.1781268335506
152 2025-11-17 14:00:00+00:00 1004.2053313877872
153 2025-11-17 15:00:00+00:00 1005.4300752793774
154 2025-11-17 16:00:00+00:00 1006.8149300022945
155 2025-11-17 17:00:00+00:00 1007.9716033691925
156 2025-11-17 18:00:00+00:00 1009.1641331534599
157 2025-11-17 19:00:00+00:00 1009.8487365385887
158 2025-11-17 20:00:00+00:00 1010.5311417807217
159 2025-11-17 21:00:00+00:00 1010.8176583495577
160 2025-11-17 22:00:00+00:00 1011.0477177682973
161 2025-11-17 23:00:00+00:00 1011.17564800582
162 2025-11-18 00:00:00+00:00 1011.3095284869521
163 2025-11-18 01:00:00+00:00 1011.6412764438712
164 2025-11-18 02:00:00+00:00 1011.3953056473576
165 2025-11-18 03:00:00+00:00 1010.9955209504839
166 2025-11-18 04:00:00+00:00 1010.9764486740377
167 2025-11-18 05:00:00+00:00 1011.2744176744983
168 2025-11-18 06:00:00+00:00 1011.3207789475515
169 2025-11-18 07:00:00+00:00 1011.4804229834554
170 2025-11-18 08:00:00+00:00 1011.85292573389

View File

@ -1,170 +0,0 @@
time,rain_rate
2025-11-11 08:00:00+00:00,0.0
2025-11-11 09:00:00+00:00,0.0
2025-11-11 10:00:00+00:00,0.0
2025-11-11 11:00:00+00:00,0.0
2025-11-11 12:00:00+00:00,0.0
2025-11-11 13:00:00+00:00,0.0
2025-11-11 14:00:00+00:00,0.0
2025-11-11 15:00:00+00:00,0.0
2025-11-11 16:00:00+00:00,0.0
2025-11-11 17:00:00+00:00,0.0
2025-11-11 18:00:00+00:00,0.0
2025-11-11 19:00:00+00:00,0.0
2025-11-11 20:00:00+00:00,0.0
2025-11-11 21:00:00+00:00,0.0
2025-11-11 22:00:00+00:00,0.0
2025-11-11 23:00:00+00:00,0.0
2025-11-12 00:00:00+00:00,0.0
2025-11-12 01:00:00+00:00,0.0
2025-11-12 02:00:00+00:00,0.0
2025-11-12 03:00:00+00:00,0.0
2025-11-12 04:00:00+00:00,0.0
2025-11-12 05:00:00+00:00,0.0
2025-11-12 06:00:00+00:00,0.0
2025-11-12 07:00:00+00:00,0.0
2025-11-12 08:00:00+00:00,0.0
2025-11-12 09:00:00+00:00,0.0
2025-11-12 10:00:00+00:00,0.0
2025-11-12 11:00:00+00:00,0.0
2025-11-12 12:00:00+00:00,0.0
2025-11-12 13:00:00+00:00,0.0
2025-11-12 14:00:00+00:00,0.0
2025-11-12 15:00:00+00:00,0.0
2025-11-12 16:00:00+00:00,0.0
2025-11-12 17:00:00+00:00,0.0
2025-11-12 18:00:00+00:00,0.0
2025-11-12 19:00:00+00:00,0.0
2025-11-12 20:00:00+00:00,0.0
2025-11-12 21:00:00+00:00,0.0
2025-11-12 22:00:00+00:00,0.0
2025-11-12 23:00:00+00:00,0.0
2025-11-13 00:00:00+00:00,0.0
2025-11-13 01:00:00+00:00,0.0
2025-11-13 02:00:00+00:00,0.0
2025-11-13 03:00:00+00:00,0.0
2025-11-13 04:00:00+00:00,0.0
2025-11-13 05:00:00+00:00,0.0
2025-11-13 06:00:00+00:00,0.0
2025-11-13 07:00:00+00:00,0.0
2025-11-13 08:00:00+00:00,0.0
2025-11-13 09:00:00+00:00,0.0
2025-11-13 10:00:00+00:00,0.0
2025-11-13 11:00:00+00:00,0.0
2025-11-13 12:00:00+00:00,0.0
2025-11-13 13:00:00+00:00,0.0
2025-11-13 14:00:00+00:00,0.0
2025-11-13 15:00:00+00:00,0.0
2025-11-13 16:00:00+00:00,0.0
2025-11-13 17:00:00+00:00,0.0
2025-11-13 18:00:00+00:00,0.0
2025-11-13 19:00:00+00:00,0.0
2025-11-13 20:00:00+00:00,0.0
2025-11-13 21:00:00+00:00,0.0
2025-11-13 22:00:00+00:00,0.0
2025-11-13 23:00:00+00:00,0.0
2025-11-14 00:00:00+00:00,0.0
2025-11-14 01:00:00+00:00,0.0
2025-11-14 02:00:00+00:00,0.0
2025-11-14 03:00:00+00:00,0.0
2025-11-14 04:00:00+00:00,0.0
2025-11-14 05:00:00+00:00,0.0
2025-11-14 06:00:00+00:00,0.0
2025-11-14 07:00:00+00:00,0.0
2025-11-14 08:00:00+00:00,0.0
2025-11-14 09:00:00+00:00,0.0
2025-11-14 10:00:00+00:00,0.0
2025-11-14 11:00:00+00:00,0.0
2025-11-14 12:00:00+00:00,0.0
2025-11-14 13:00:00+00:00,0.0
2025-11-14 14:00:00+00:00,0.0
2025-11-14 15:00:00+00:00,0.0
2025-11-14 16:00:00+00:00,0.0
2025-11-14 17:00:00+00:00,0.0
2025-11-14 18:00:00+00:00,0.0
2025-11-14 19:00:00+00:00,0.0
2025-11-14 20:00:00+00:00,0.0
2025-11-14 21:00:00+00:00,0.0
2025-11-14 22:00:00+00:00,0.0
2025-11-14 23:00:00+00:00,0.0
2025-11-15 00:00:00+00:00,0.0
2025-11-15 01:00:00+00:00,0.0
2025-11-15 02:00:00+00:00,0.0
2025-11-15 03:00:00+00:00,0.0
2025-11-15 04:00:00+00:00,0.0
2025-11-15 05:00:00+00:00,0.0
2025-11-15 06:00:00+00:00,0.0
2025-11-15 07:00:00+00:00,0.23648275862068968
2025-11-15 08:00:00+00:00,0.0
2025-11-15 09:00:00+00:00,0.2413
2025-11-15 10:00:00+00:00,0.0
2025-11-15 11:00:00+00:00,0.0
2025-11-15 12:00:00+00:00,0.0
2025-11-15 13:00:00+00:00,0.0
2025-11-15 14:00:00+00:00,2.2479
2025-11-15 15:00:00+00:00,0.4318
2025-11-15 16:00:00+00:00,0.0
2025-11-15 17:00:00+00:00,0.0
2025-11-15 18:00:00+00:00,0.0
2025-11-15 19:00:00+00:00,0.0
2025-11-15 20:00:00+00:00,0.0
2025-11-15 21:00:00+00:00,0.0
2025-11-15 22:00:00+00:00,0.0
2025-11-15 23:00:00+00:00,0.0
2025-11-16 00:00:00+00:00,0.0
2025-11-16 01:00:00+00:00,0.0
2025-11-16 02:00:00+00:00,0.0
2025-11-16 03:00:00+00:00,0.0
2025-11-16 04:00:00+00:00,0.278780487804878
2025-11-16 05:00:00+00:00,0.0
2025-11-16 06:00:00+00:00,0.0
2025-11-16 07:00:00+00:00,0.0
2025-11-16 08:00:00+00:00,0.0
2025-11-16 09:00:00+00:00,0.0
2025-11-16 10:00:00+00:00,0.0
2025-11-16 11:00:00+00:00,0.0
2025-11-16 12:00:00+00:00,0.0
2025-11-16 13:00:00+00:00,0.0
2025-11-16 14:00:00+00:00,0.0
2025-11-16 15:00:00+00:00,0.0
2025-11-16 16:00:00+00:00,0.0
2025-11-16 17:00:00+00:00,0.0
2025-11-16 18:00:00+00:00,0.0
2025-11-16 19:00:00+00:00,0.0
2025-11-16 20:00:00+00:00,0.0
2025-11-16 21:00:00+00:00,0.0
2025-11-16 22:00:00+00:00,0.0
2025-11-16 23:00:00+00:00,0.0
2025-11-17 00:00:00+00:00,0.7308979591836735
2025-11-17 01:00:00+00:00,0.12939622641509435
2025-11-17 02:00:00+00:00,0.0
2025-11-17 03:00:00+00:00,0.0
2025-11-17 04:00:00+00:00,0.0
2025-11-17 05:00:00+00:00,0.2413
2025-11-17 06:00:00+00:00,0.9779
2025-11-17 07:00:00+00:00,0.254
2025-11-17 08:00:00+00:00,0.0
2025-11-17 09:00:00+00:00,0.0
2025-11-17 10:00:00+00:00,0.0
2025-11-17 11:00:00+00:00,0.0
2025-11-17 12:00:00+00:00,0.0
2025-11-17 13:00:00+00:00,0.0
2025-11-17 14:00:00+00:00,0.0
2025-11-17 15:00:00+00:00,0.0
2025-11-17 16:00:00+00:00,0.0
2025-11-17 17:00:00+00:00,0.0
2025-11-17 18:00:00+00:00,0.0
2025-11-17 19:00:00+00:00,0.0
2025-11-17 20:00:00+00:00,0.0
2025-11-17 21:00:00+00:00,0.0
2025-11-17 22:00:00+00:00,0.0
2025-11-17 23:00:00+00:00,0.0
2025-11-18 00:00:00+00:00,0.0
2025-11-18 01:00:00+00:00,0.0
2025-11-18 02:00:00+00:00,0.0
2025-11-18 03:00:00+00:00,0.0
2025-11-18 04:00:00+00:00,0.0
2025-11-18 05:00:00+00:00,0.0
2025-11-18 06:00:00+00:00,0.0
2025-11-18 07:00:00+00:00,0.0
2025-11-18 08:00:00+00:00,0.0
1 time rain_rate
2 2025-11-11 08:00:00+00:00 0.0
3 2025-11-11 09:00:00+00:00 0.0
4 2025-11-11 10:00:00+00:00 0.0
5 2025-11-11 11:00:00+00:00 0.0
6 2025-11-11 12:00:00+00:00 0.0
7 2025-11-11 13:00:00+00:00 0.0
8 2025-11-11 14:00:00+00:00 0.0
9 2025-11-11 15:00:00+00:00 0.0
10 2025-11-11 16:00:00+00:00 0.0
11 2025-11-11 17:00:00+00:00 0.0
12 2025-11-11 18:00:00+00:00 0.0
13 2025-11-11 19:00:00+00:00 0.0
14 2025-11-11 20:00:00+00:00 0.0
15 2025-11-11 21:00:00+00:00 0.0
16 2025-11-11 22:00:00+00:00 0.0
17 2025-11-11 23:00:00+00:00 0.0
18 2025-11-12 00:00:00+00:00 0.0
19 2025-11-12 01:00:00+00:00 0.0
20 2025-11-12 02:00:00+00:00 0.0
21 2025-11-12 03:00:00+00:00 0.0
22 2025-11-12 04:00:00+00:00 0.0
23 2025-11-12 05:00:00+00:00 0.0
24 2025-11-12 06:00:00+00:00 0.0
25 2025-11-12 07:00:00+00:00 0.0
26 2025-11-12 08:00:00+00:00 0.0
27 2025-11-12 09:00:00+00:00 0.0
28 2025-11-12 10:00:00+00:00 0.0
29 2025-11-12 11:00:00+00:00 0.0
30 2025-11-12 12:00:00+00:00 0.0
31 2025-11-12 13:00:00+00:00 0.0
32 2025-11-12 14:00:00+00:00 0.0
33 2025-11-12 15:00:00+00:00 0.0
34 2025-11-12 16:00:00+00:00 0.0
35 2025-11-12 17:00:00+00:00 0.0
36 2025-11-12 18:00:00+00:00 0.0
37 2025-11-12 19:00:00+00:00 0.0
38 2025-11-12 20:00:00+00:00 0.0
39 2025-11-12 21:00:00+00:00 0.0
40 2025-11-12 22:00:00+00:00 0.0
41 2025-11-12 23:00:00+00:00 0.0
42 2025-11-13 00:00:00+00:00 0.0
43 2025-11-13 01:00:00+00:00 0.0
44 2025-11-13 02:00:00+00:00 0.0
45 2025-11-13 03:00:00+00:00 0.0
46 2025-11-13 04:00:00+00:00 0.0
47 2025-11-13 05:00:00+00:00 0.0
48 2025-11-13 06:00:00+00:00 0.0
49 2025-11-13 07:00:00+00:00 0.0
50 2025-11-13 08:00:00+00:00 0.0
51 2025-11-13 09:00:00+00:00 0.0
52 2025-11-13 10:00:00+00:00 0.0
53 2025-11-13 11:00:00+00:00 0.0
54 2025-11-13 12:00:00+00:00 0.0
55 2025-11-13 13:00:00+00:00 0.0
56 2025-11-13 14:00:00+00:00 0.0
57 2025-11-13 15:00:00+00:00 0.0
58 2025-11-13 16:00:00+00:00 0.0
59 2025-11-13 17:00:00+00:00 0.0
60 2025-11-13 18:00:00+00:00 0.0
61 2025-11-13 19:00:00+00:00 0.0
62 2025-11-13 20:00:00+00:00 0.0
63 2025-11-13 21:00:00+00:00 0.0
64 2025-11-13 22:00:00+00:00 0.0
65 2025-11-13 23:00:00+00:00 0.0
66 2025-11-14 00:00:00+00:00 0.0
67 2025-11-14 01:00:00+00:00 0.0
68 2025-11-14 02:00:00+00:00 0.0
69 2025-11-14 03:00:00+00:00 0.0
70 2025-11-14 04:00:00+00:00 0.0
71 2025-11-14 05:00:00+00:00 0.0
72 2025-11-14 06:00:00+00:00 0.0
73 2025-11-14 07:00:00+00:00 0.0
74 2025-11-14 08:00:00+00:00 0.0
75 2025-11-14 09:00:00+00:00 0.0
76 2025-11-14 10:00:00+00:00 0.0
77 2025-11-14 11:00:00+00:00 0.0
78 2025-11-14 12:00:00+00:00 0.0
79 2025-11-14 13:00:00+00:00 0.0
80 2025-11-14 14:00:00+00:00 0.0
81 2025-11-14 15:00:00+00:00 0.0
82 2025-11-14 16:00:00+00:00 0.0
83 2025-11-14 17:00:00+00:00 0.0
84 2025-11-14 18:00:00+00:00 0.0
85 2025-11-14 19:00:00+00:00 0.0
86 2025-11-14 20:00:00+00:00 0.0
87 2025-11-14 21:00:00+00:00 0.0
88 2025-11-14 22:00:00+00:00 0.0
89 2025-11-14 23:00:00+00:00 0.0
90 2025-11-15 00:00:00+00:00 0.0
91 2025-11-15 01:00:00+00:00 0.0
92 2025-11-15 02:00:00+00:00 0.0
93 2025-11-15 03:00:00+00:00 0.0
94 2025-11-15 04:00:00+00:00 0.0
95 2025-11-15 05:00:00+00:00 0.0
96 2025-11-15 06:00:00+00:00 0.0
97 2025-11-15 07:00:00+00:00 0.23648275862068968
98 2025-11-15 08:00:00+00:00 0.0
99 2025-11-15 09:00:00+00:00 0.2413
100 2025-11-15 10:00:00+00:00 0.0
101 2025-11-15 11:00:00+00:00 0.0
102 2025-11-15 12:00:00+00:00 0.0
103 2025-11-15 13:00:00+00:00 0.0
104 2025-11-15 14:00:00+00:00 2.2479
105 2025-11-15 15:00:00+00:00 0.4318
106 2025-11-15 16:00:00+00:00 0.0
107 2025-11-15 17:00:00+00:00 0.0
108 2025-11-15 18:00:00+00:00 0.0
109 2025-11-15 19:00:00+00:00 0.0
110 2025-11-15 20:00:00+00:00 0.0
111 2025-11-15 21:00:00+00:00 0.0
112 2025-11-15 22:00:00+00:00 0.0
113 2025-11-15 23:00:00+00:00 0.0
114 2025-11-16 00:00:00+00:00 0.0
115 2025-11-16 01:00:00+00:00 0.0
116 2025-11-16 02:00:00+00:00 0.0
117 2025-11-16 03:00:00+00:00 0.0
118 2025-11-16 04:00:00+00:00 0.278780487804878
119 2025-11-16 05:00:00+00:00 0.0
120 2025-11-16 06:00:00+00:00 0.0
121 2025-11-16 07:00:00+00:00 0.0
122 2025-11-16 08:00:00+00:00 0.0
123 2025-11-16 09:00:00+00:00 0.0
124 2025-11-16 10:00:00+00:00 0.0
125 2025-11-16 11:00:00+00:00 0.0
126 2025-11-16 12:00:00+00:00 0.0
127 2025-11-16 13:00:00+00:00 0.0
128 2025-11-16 14:00:00+00:00 0.0
129 2025-11-16 15:00:00+00:00 0.0
130 2025-11-16 16:00:00+00:00 0.0
131 2025-11-16 17:00:00+00:00 0.0
132 2025-11-16 18:00:00+00:00 0.0
133 2025-11-16 19:00:00+00:00 0.0
134 2025-11-16 20:00:00+00:00 0.0
135 2025-11-16 21:00:00+00:00 0.0
136 2025-11-16 22:00:00+00:00 0.0
137 2025-11-16 23:00:00+00:00 0.0
138 2025-11-17 00:00:00+00:00 0.7308979591836735
139 2025-11-17 01:00:00+00:00 0.12939622641509435
140 2025-11-17 02:00:00+00:00 0.0
141 2025-11-17 03:00:00+00:00 0.0
142 2025-11-17 04:00:00+00:00 0.0
143 2025-11-17 05:00:00+00:00 0.2413
144 2025-11-17 06:00:00+00:00 0.9779
145 2025-11-17 07:00:00+00:00 0.254
146 2025-11-17 08:00:00+00:00 0.0
147 2025-11-17 09:00:00+00:00 0.0
148 2025-11-17 10:00:00+00:00 0.0
149 2025-11-17 11:00:00+00:00 0.0
150 2025-11-17 12:00:00+00:00 0.0
151 2025-11-17 13:00:00+00:00 0.0
152 2025-11-17 14:00:00+00:00 0.0
153 2025-11-17 15:00:00+00:00 0.0
154 2025-11-17 16:00:00+00:00 0.0
155 2025-11-17 17:00:00+00:00 0.0
156 2025-11-17 18:00:00+00:00 0.0
157 2025-11-17 19:00:00+00:00 0.0
158 2025-11-17 20:00:00+00:00 0.0
159 2025-11-17 21:00:00+00:00 0.0
160 2025-11-17 22:00:00+00:00 0.0
161 2025-11-17 23:00:00+00:00 0.0
162 2025-11-18 00:00:00+00:00 0.0
163 2025-11-18 01:00:00+00:00 0.0
164 2025-11-18 02:00:00+00:00 0.0
165 2025-11-18 03:00:00+00:00 0.0
166 2025-11-18 04:00:00+00:00 0.0
167 2025-11-18 05:00:00+00:00 0.0
168 2025-11-18 06:00:00+00:00 0.0
169 2025-11-18 07:00:00+00:00 0.0
170 2025-11-18 08:00:00+00:00 0.0

View File

@ -1,170 +0,0 @@
time,sun_elevation
2025-11-11 08:00:00+00:00,14.308718850096088
2025-11-11 09:00:00+00:00,19.641059178244088
2025-11-11 10:00:00+00:00,22.885323533749624
2025-11-11 11:00:00+00:00,23.572240234780136
2025-11-11 12:00:00+00:00,21.618490966427157
2025-11-11 13:00:00+00:00,17.25306445556676
2025-11-11 14:00:00+00:00,10.92273994659757
2025-11-11 15:00:00+00:00,3.2428890451279853
2025-11-11 16:00:00+00:00,-5.903087958357458
2025-11-11 17:00:00+00:00,-15.22730111177631
2025-11-11 18:00:00+00:00,-25.13232055875336
2025-11-11 19:00:00+00:00,-35.44086364722457
2025-11-11 20:00:00+00:00,-44.523565998887335
2025-11-11 21:00:00+00:00,-52.15651561105852
2025-11-11 22:00:00+00:00,-57.4261948850097
2025-11-11 23:00:00+00:00,-58.66321971266724
2025-11-12 00:00:00+00:00,-55.44562032226747
2025-11-12 01:00:00+00:00,-48.668159759993486
2025-11-12 02:00:00+00:00,-40.732158839860745
2025-11-12 03:00:00+00:00,-30.70841126725245
2025-11-12 04:00:00+00:00,-20.70087197418278
2025-11-12 05:00:00+00:00,-11.276008047769148
2025-11-12 06:00:00+00:00,-1.4046115369365415
2025-11-12 07:00:00+00:00,6.722007914419731
2025-11-12 08:00:00+00:00,14.074341039202734
2025-11-12 09:00:00+00:00,19.440118242416276
2025-11-12 10:00:00+00:00,22.613647344654602
2025-11-12 11:00:00+00:00,23.303853471787
2025-11-12 12:00:00+00:00,21.362421183707333
2025-11-12 13:00:00+00:00,17.015495448098136
2025-11-12 14:00:00+00:00,10.70222894285897
2025-11-12 15:00:00+00:00,3.0463016121060815
2025-11-12 16:00:00+00:00,-5.544993798508534
2025-11-12 17:00:00+00:00,-15.11776322592283
2025-11-12 18:00:00+00:00,-25.528577546140575
2025-11-12 19:00:00+00:00,-35.085822187174074
2025-11-12 20:00:00+00:00,-44.90088305749059
2025-11-12 21:00:00+00:00,-52.65574132818778
2025-11-12 22:00:00+00:00,-57.66044673539
2025-11-12 23:00:00+00:00,-58.89446352252472
2025-11-13 00:00:00+00:00,-55.72878243070744
2025-11-13 01:00:00+00:00,-48.97177496687385
2025-11-13 02:00:00+00:00,-41.016945559103206
2025-11-13 03:00:00+00:00,-30.890201876327012
2025-11-13 04:00:00+00:00,-20.461891592603692
2025-11-13 05:00:00+00:00,-11.187801232366729
2025-11-13 06:00:00+00:00,-1.7383875065774146
2025-11-13 07:00:00+00:00,6.601307518106436
2025-11-13 08:00:00+00:00,13.69215630197333
2025-11-13 09:00:00+00:00,19.11266697722042
2025-11-13 10:00:00+00:00,22.334002545882043
2025-11-13 11:00:00+00:00,23.03800907600499
2025-11-13 12:00:00+00:00,21.1120498631742
2025-11-13 13:00:00+00:00,16.783857428915603
2025-11-13 14:00:00+00:00,10.495797719803473
2025-11-13 15:00:00+00:00,2.8547816773483374
2025-11-13 16:00:00+00:00,-6.2870942727338495
2025-11-13 17:00:00+00:00,-15.483671431330357
2025-11-13 18:00:00+00:00,-25.737003948646695
2025-11-13 19:00:00+00:00,-35.44333825958562
2025-11-13 20:00:00+00:00,-44.72096585064475
2025-11-13 21:00:00+00:00,-52.59045587027669
2025-11-13 22:00:00+00:00,-57.75074416369176
2025-11-13 23:00:00+00:00,-59.15644141342444
2025-11-14 00:00:00+00:00,-56.11986608431349
2025-11-14 01:00:00+00:00,-49.00805323466757
2025-11-14 02:00:00+00:00,-39.81173703491096
2025-11-14 03:00:00+00:00,-31.11224360580915
2025-11-14 04:00:00+00:00,-21.40183358698364
2025-11-14 05:00:00+00:00,-11.653211241034962
2025-11-14 06:00:00+00:00,-1.6190221985650948
2025-11-14 07:00:00+00:00,6.400317144670118
2025-11-14 08:00:00+00:00,13.44399279955036
2025-11-14 09:00:00+00:00,18.85434158531877
2025-11-14 10:00:00+00:00,22.08425004289927
2025-11-14 11:00:00+00:00,22.78297737884391
2025-11-14 12:00:00+00:00,20.993319270722218
2025-11-14 13:00:00+00:00,16.424629313468
2025-11-14 14:00:00+00:00,10.305705156541737
2025-11-14 15:00:00+00:00,2.6688454383667466
2025-11-14 16:00:00+00:00,-6.392835813451928
2025-11-14 17:00:00+00:00,-15.97017802504351
2025-11-14 18:00:00+00:00,-25.746392678116898
2025-11-14 19:00:00+00:00,-35.557566964618495
2025-11-14 20:00:00+00:00,-44.92456295098489
2025-11-14 21:00:00+00:00,-52.84571453471228
2025-11-14 22:00:00+00:00,-58.291319119207664
2025-11-14 23:00:00+00:00,-59.43572195628009
2025-11-15 00:00:00+00:00,-56.15310326011466
2025-11-15 01:00:00+00:00,-49.437269974595466
2025-11-15 02:00:00+00:00,-40.7818544410004
2025-11-15 03:00:00+00:00,-31.173920939749177
2025-11-15 04:00:00+00:00,-21.286378610097128
2025-11-15 05:00:00+00:00,-11.904292339354084
2025-11-15 06:00:00+00:00,-2.065718258875086
2025-11-15 07:00:00+00:00,6.073547715991186
2025-11-15 08:00:00+00:00,13.242214489581697
2025-11-15 09:00:00+00:00,18.600080475957668
2025-11-15 10:00:00+00:00,21.82674662621842
2025-11-15 11:00:00+00:00,22.53069229652115
2025-11-15 12:00:00+00:00,20.62878392058985
2025-11-15 13:00:00+00:00,16.3387262666421
2025-11-15 14:00:00+00:00,10.093381289038067
2025-11-15 15:00:00+00:00,2.488879059293881
2025-11-15 16:00:00+00:00,-5.799443400851093
2025-11-15 17:00:00+00:00,-16.184110602687074
2025-11-15 18:00:00+00:00,-25.411854657879584
2025-11-15 19:00:00+00:00,-36.06104724244549
2025-11-15 20:00:00+00:00,-45.98868646753228
2025-11-15 21:00:00+00:00,-53.2595732204459
2025-11-15 22:00:00+00:00,-58.52517485072366
2025-11-15 23:00:00+00:00,-59.63899728878434
2025-11-16 00:00:00+00:00,-55.6769264482925
2025-11-16 01:00:00+00:00,-49.912079958491944
2025-11-16 02:00:00+00:00,-40.96494950596665
2025-11-16 03:00:00+00:00,-31.62867310692375
2025-11-16 04:00:00+00:00,-21.71821319742638
2025-11-16 05:00:00+00:00,-13.338694691943978
2025-11-16 06:00:00+00:00,-1.9246325115628766
2025-11-16 07:00:00+00:00,5.912836575600048
2025-11-16 08:00:00+00:00,12.957717123150797
2025-11-16 09:00:00+00:00,18.349996001989837
2025-11-16 10:00:00+00:00,21.57418368055951
2025-11-16 11:00:00+00:00,22.283976426762067
2025-11-16 12:00:00+00:00,20.396075390712685
2025-11-16 13:00:00+00:00,16.125403220024324
2025-11-16 14:00:00+00:00,9.901559594503782
2025-11-16 15:00:00+00:00,2.3683048173781134
2025-11-16 16:00:00+00:00,-6.5328577727526485
2025-11-16 17:00:00+00:00,-17.31105292102647
2025-11-16 18:00:00+00:00,-25.443557107213064
2025-11-16 19:00:00+00:00,-37.467532717145275
2025-11-16 20:00:00+00:00,-45.51725880720397
2025-11-16 21:00:00+00:00,-54.17733196452078
2025-11-16 22:00:00+00:00,-58.666480718842934
2025-11-16 23:00:00+00:00,-60.00700274586307
2025-11-17 00:00:00+00:00,-56.690411119523226
2025-11-17 01:00:00+00:00,-49.81557665105729
2025-11-17 02:00:00+00:00,-41.21631116519275
2025-11-17 03:00:00+00:00,-31.593407971145812
2025-11-17 04:00:00+00:00,-21.779455441787334
2025-11-17 05:00:00+00:00,-12.051848256207142
2025-11-17 06:00:00+00:00,-2.654746434168217
2025-11-17 07:00:00+00:00,5.689528772336274
2025-11-17 08:00:00+00:00,12.719830965357682
2025-11-17 09:00:00+00:00,18.07716294813033
2025-11-17 10:00:00+00:00,21.326667708461216
2025-11-17 11:00:00+00:00,22.042928388783245
2025-11-17 12:00:00+00:00,20.169437371222603
2025-11-17 13:00:00+00:00,15.918351230230488
2025-11-17 14:00:00+00:00,9.716090347681874
2025-11-17 15:00:00+00:00,2.1471267244237136
2025-11-17 16:00:00+00:00,-6.706949872607374
2025-11-17 17:00:00+00:00,-16.06152026701152
2025-11-17 18:00:00+00:00,-26.686322086852964
2025-11-17 19:00:00+00:00,-36.06309678522945
2025-11-17 20:00:00+00:00,-44.43295251251092
2025-11-17 21:00:00+00:00,-53.261199765238906
2025-11-17 22:00:00+00:00,-58.743298154177054
2025-11-17 23:00:00+00:00,-60.22192100454561
2025-11-18 00:00:00+00:00,-57.05924974531945
2025-11-18 01:00:00+00:00,-50.94477626965786
2025-11-18 02:00:00+00:00,-40.561841725348835
2025-11-18 03:00:00+00:00,-32.68266655442553
2025-11-18 04:00:00+00:00,-21.95606951068478
2025-11-18 05:00:00+00:00,-13.126587978505347
2025-11-18 06:00:00+00:00,-2.2546580915224554
2025-11-18 07:00:00+00:00,5.469537913593991
2025-11-18 08:00:00+00:00,9.37419719472193
1 time sun_elevation
2 2025-11-11 08:00:00+00:00 14.308718850096088
3 2025-11-11 09:00:00+00:00 19.641059178244088
4 2025-11-11 10:00:00+00:00 22.885323533749624
5 2025-11-11 11:00:00+00:00 23.572240234780136
6 2025-11-11 12:00:00+00:00 21.618490966427157
7 2025-11-11 13:00:00+00:00 17.25306445556676
8 2025-11-11 14:00:00+00:00 10.92273994659757
9 2025-11-11 15:00:00+00:00 3.2428890451279853
10 2025-11-11 16:00:00+00:00 -5.903087958357458
11 2025-11-11 17:00:00+00:00 -15.22730111177631
12 2025-11-11 18:00:00+00:00 -25.13232055875336
13 2025-11-11 19:00:00+00:00 -35.44086364722457
14 2025-11-11 20:00:00+00:00 -44.523565998887335
15 2025-11-11 21:00:00+00:00 -52.15651561105852
16 2025-11-11 22:00:00+00:00 -57.4261948850097
17 2025-11-11 23:00:00+00:00 -58.66321971266724
18 2025-11-12 00:00:00+00:00 -55.44562032226747
19 2025-11-12 01:00:00+00:00 -48.668159759993486
20 2025-11-12 02:00:00+00:00 -40.732158839860745
21 2025-11-12 03:00:00+00:00 -30.70841126725245
22 2025-11-12 04:00:00+00:00 -20.70087197418278
23 2025-11-12 05:00:00+00:00 -11.276008047769148
24 2025-11-12 06:00:00+00:00 -1.4046115369365415
25 2025-11-12 07:00:00+00:00 6.722007914419731
26 2025-11-12 08:00:00+00:00 14.074341039202734
27 2025-11-12 09:00:00+00:00 19.440118242416276
28 2025-11-12 10:00:00+00:00 22.613647344654602
29 2025-11-12 11:00:00+00:00 23.303853471787
30 2025-11-12 12:00:00+00:00 21.362421183707333
31 2025-11-12 13:00:00+00:00 17.015495448098136
32 2025-11-12 14:00:00+00:00 10.70222894285897
33 2025-11-12 15:00:00+00:00 3.0463016121060815
34 2025-11-12 16:00:00+00:00 -5.544993798508534
35 2025-11-12 17:00:00+00:00 -15.11776322592283
36 2025-11-12 18:00:00+00:00 -25.528577546140575
37 2025-11-12 19:00:00+00:00 -35.085822187174074
38 2025-11-12 20:00:00+00:00 -44.90088305749059
39 2025-11-12 21:00:00+00:00 -52.65574132818778
40 2025-11-12 22:00:00+00:00 -57.66044673539
41 2025-11-12 23:00:00+00:00 -58.89446352252472
42 2025-11-13 00:00:00+00:00 -55.72878243070744
43 2025-11-13 01:00:00+00:00 -48.97177496687385
44 2025-11-13 02:00:00+00:00 -41.016945559103206
45 2025-11-13 03:00:00+00:00 -30.890201876327012
46 2025-11-13 04:00:00+00:00 -20.461891592603692
47 2025-11-13 05:00:00+00:00 -11.187801232366729
48 2025-11-13 06:00:00+00:00 -1.7383875065774146
49 2025-11-13 07:00:00+00:00 6.601307518106436
50 2025-11-13 08:00:00+00:00 13.69215630197333
51 2025-11-13 09:00:00+00:00 19.11266697722042
52 2025-11-13 10:00:00+00:00 22.334002545882043
53 2025-11-13 11:00:00+00:00 23.03800907600499
54 2025-11-13 12:00:00+00:00 21.1120498631742
55 2025-11-13 13:00:00+00:00 16.783857428915603
56 2025-11-13 14:00:00+00:00 10.495797719803473
57 2025-11-13 15:00:00+00:00 2.8547816773483374
58 2025-11-13 16:00:00+00:00 -6.2870942727338495
59 2025-11-13 17:00:00+00:00 -15.483671431330357
60 2025-11-13 18:00:00+00:00 -25.737003948646695
61 2025-11-13 19:00:00+00:00 -35.44333825958562
62 2025-11-13 20:00:00+00:00 -44.72096585064475
63 2025-11-13 21:00:00+00:00 -52.59045587027669
64 2025-11-13 22:00:00+00:00 -57.75074416369176
65 2025-11-13 23:00:00+00:00 -59.15644141342444
66 2025-11-14 00:00:00+00:00 -56.11986608431349
67 2025-11-14 01:00:00+00:00 -49.00805323466757
68 2025-11-14 02:00:00+00:00 -39.81173703491096
69 2025-11-14 03:00:00+00:00 -31.11224360580915
70 2025-11-14 04:00:00+00:00 -21.40183358698364
71 2025-11-14 05:00:00+00:00 -11.653211241034962
72 2025-11-14 06:00:00+00:00 -1.6190221985650948
73 2025-11-14 07:00:00+00:00 6.400317144670118
74 2025-11-14 08:00:00+00:00 13.44399279955036
75 2025-11-14 09:00:00+00:00 18.85434158531877
76 2025-11-14 10:00:00+00:00 22.08425004289927
77 2025-11-14 11:00:00+00:00 22.78297737884391
78 2025-11-14 12:00:00+00:00 20.993319270722218
79 2025-11-14 13:00:00+00:00 16.424629313468
80 2025-11-14 14:00:00+00:00 10.305705156541737
81 2025-11-14 15:00:00+00:00 2.6688454383667466
82 2025-11-14 16:00:00+00:00 -6.392835813451928
83 2025-11-14 17:00:00+00:00 -15.97017802504351
84 2025-11-14 18:00:00+00:00 -25.746392678116898
85 2025-11-14 19:00:00+00:00 -35.557566964618495
86 2025-11-14 20:00:00+00:00 -44.92456295098489
87 2025-11-14 21:00:00+00:00 -52.84571453471228
88 2025-11-14 22:00:00+00:00 -58.291319119207664
89 2025-11-14 23:00:00+00:00 -59.43572195628009
90 2025-11-15 00:00:00+00:00 -56.15310326011466
91 2025-11-15 01:00:00+00:00 -49.437269974595466
92 2025-11-15 02:00:00+00:00 -40.7818544410004
93 2025-11-15 03:00:00+00:00 -31.173920939749177
94 2025-11-15 04:00:00+00:00 -21.286378610097128
95 2025-11-15 05:00:00+00:00 -11.904292339354084
96 2025-11-15 06:00:00+00:00 -2.065718258875086
97 2025-11-15 07:00:00+00:00 6.073547715991186
98 2025-11-15 08:00:00+00:00 13.242214489581697
99 2025-11-15 09:00:00+00:00 18.600080475957668
100 2025-11-15 10:00:00+00:00 21.82674662621842
101 2025-11-15 11:00:00+00:00 22.53069229652115
102 2025-11-15 12:00:00+00:00 20.62878392058985
103 2025-11-15 13:00:00+00:00 16.3387262666421
104 2025-11-15 14:00:00+00:00 10.093381289038067
105 2025-11-15 15:00:00+00:00 2.488879059293881
106 2025-11-15 16:00:00+00:00 -5.799443400851093
107 2025-11-15 17:00:00+00:00 -16.184110602687074
108 2025-11-15 18:00:00+00:00 -25.411854657879584
109 2025-11-15 19:00:00+00:00 -36.06104724244549
110 2025-11-15 20:00:00+00:00 -45.98868646753228
111 2025-11-15 21:00:00+00:00 -53.2595732204459
112 2025-11-15 22:00:00+00:00 -58.52517485072366
113 2025-11-15 23:00:00+00:00 -59.63899728878434
114 2025-11-16 00:00:00+00:00 -55.6769264482925
115 2025-11-16 01:00:00+00:00 -49.912079958491944
116 2025-11-16 02:00:00+00:00 -40.96494950596665
117 2025-11-16 03:00:00+00:00 -31.62867310692375
118 2025-11-16 04:00:00+00:00 -21.71821319742638
119 2025-11-16 05:00:00+00:00 -13.338694691943978
120 2025-11-16 06:00:00+00:00 -1.9246325115628766
121 2025-11-16 07:00:00+00:00 5.912836575600048
122 2025-11-16 08:00:00+00:00 12.957717123150797
123 2025-11-16 09:00:00+00:00 18.349996001989837
124 2025-11-16 10:00:00+00:00 21.57418368055951
125 2025-11-16 11:00:00+00:00 22.283976426762067
126 2025-11-16 12:00:00+00:00 20.396075390712685
127 2025-11-16 13:00:00+00:00 16.125403220024324
128 2025-11-16 14:00:00+00:00 9.901559594503782
129 2025-11-16 15:00:00+00:00 2.3683048173781134
130 2025-11-16 16:00:00+00:00 -6.5328577727526485
131 2025-11-16 17:00:00+00:00 -17.31105292102647
132 2025-11-16 18:00:00+00:00 -25.443557107213064
133 2025-11-16 19:00:00+00:00 -37.467532717145275
134 2025-11-16 20:00:00+00:00 -45.51725880720397
135 2025-11-16 21:00:00+00:00 -54.17733196452078
136 2025-11-16 22:00:00+00:00 -58.666480718842934
137 2025-11-16 23:00:00+00:00 -60.00700274586307
138 2025-11-17 00:00:00+00:00 -56.690411119523226
139 2025-11-17 01:00:00+00:00 -49.81557665105729
140 2025-11-17 02:00:00+00:00 -41.21631116519275
141 2025-11-17 03:00:00+00:00 -31.593407971145812
142 2025-11-17 04:00:00+00:00 -21.779455441787334
143 2025-11-17 05:00:00+00:00 -12.051848256207142
144 2025-11-17 06:00:00+00:00 -2.654746434168217
145 2025-11-17 07:00:00+00:00 5.689528772336274
146 2025-11-17 08:00:00+00:00 12.719830965357682
147 2025-11-17 09:00:00+00:00 18.07716294813033
148 2025-11-17 10:00:00+00:00 21.326667708461216
149 2025-11-17 11:00:00+00:00 22.042928388783245
150 2025-11-17 12:00:00+00:00 20.169437371222603
151 2025-11-17 13:00:00+00:00 15.918351230230488
152 2025-11-17 14:00:00+00:00 9.716090347681874
153 2025-11-17 15:00:00+00:00 2.1471267244237136
154 2025-11-17 16:00:00+00:00 -6.706949872607374
155 2025-11-17 17:00:00+00:00 -16.06152026701152
156 2025-11-17 18:00:00+00:00 -26.686322086852964
157 2025-11-17 19:00:00+00:00 -36.06309678522945
158 2025-11-17 20:00:00+00:00 -44.43295251251092
159 2025-11-17 21:00:00+00:00 -53.261199765238906
160 2025-11-17 22:00:00+00:00 -58.743298154177054
161 2025-11-17 23:00:00+00:00 -60.22192100454561
162 2025-11-18 00:00:00+00:00 -57.05924974531945
163 2025-11-18 01:00:00+00:00 -50.94477626965786
164 2025-11-18 02:00:00+00:00 -40.561841725348835
165 2025-11-18 03:00:00+00:00 -32.68266655442553
166 2025-11-18 04:00:00+00:00 -21.95606951068478
167 2025-11-18 05:00:00+00:00 -13.126587978505347
168 2025-11-18 06:00:00+00:00 -2.2546580915224554
169 2025-11-18 07:00:00+00:00 5.469537913593991
170 2025-11-18 08:00:00+00:00 9.37419719472193

View File

@ -1,170 +0,0 @@
time,temperature
2025-11-11 08:00:00+00:00,9.965996168582388
2025-11-11 09:00:00+00:00,10.987500000000022
2025-11-11 10:00:00+00:00,11.817592592592614
2025-11-11 11:00:00+00:00,12.637500000000022
2025-11-11 12:00:00+00:00,13.246759259259282
2025-11-11 13:00:00+00:00,13.832870370370385
2025-11-11 14:00:00+00:00,13.293055555555576
2025-11-11 15:00:00+00:00,13.28472222222224
2025-11-11 16:00:00+00:00,10.064009661835758
2025-11-11 17:00:00+00:00,9.247584541062803
2025-11-11 18:00:00+00:00,8.769916142557653
2025-11-11 19:00:00+00:00,8.168750000000001
2025-11-11 20:00:00+00:00,7.547222222222224
2025-11-11 21:00:00+00:00,7.481481481481483
2025-11-11 22:00:00+00:00,7.368333333333335
2025-11-11 23:00:00+00:00,7.112745098039217
2025-11-12 00:00:00+00:00,7.6781970649895195
2025-11-12 01:00:00+00:00,7.887914230019497
2025-11-12 02:00:00+00:00,7.867346938775513
2025-11-12 03:00:00+00:00,8.201388888888891
2025-11-12 04:00:00+00:00,8.817528735632186
2025-11-12 05:00:00+00:00,9.174291938997824
2025-11-12 06:00:00+00:00,8.288580246913583
2025-11-12 07:00:00+00:00,9.045808966861609
2025-11-12 08:00:00+00:00,12.399122807017566
2025-11-12 09:00:00+00:00,14.626262626262648
2025-11-12 10:00:00+00:00,15.19537037037039
2025-11-12 11:00:00+00:00,16.255555555555585
2025-11-12 12:00:00+00:00,16.912037037037052
2025-11-12 13:00:00+00:00,16.73287037037038
2025-11-12 14:00:00+00:00,15.981167608286277
2025-11-12 15:00:00+00:00,14.130092592592625
2025-11-12 16:00:00+00:00,11.878552971576244
2025-11-12 17:00:00+00:00,11.139479905437371
2025-11-12 18:00:00+00:00,10.967700258397958
2025-11-12 19:00:00+00:00,10.130385487528358
2025-11-12 20:00:00+00:00,11.02168021680219
2025-11-12 21:00:00+00:00,12.440775681341744
2025-11-12 22:00:00+00:00,13.428907721280623
2025-11-12 23:00:00+00:00,11.055555555555577
2025-11-13 00:00:00+00:00,10.917417417417441
2025-11-13 01:00:00+00:00,13.5956790123457
2025-11-13 02:00:00+00:00,11.973379629629653
2025-11-13 03:00:00+00:00,9.185435435435439
2025-11-13 04:00:00+00:00,8.089147286821706
2025-11-13 05:00:00+00:00,11.47175925925928
2025-11-13 06:00:00+00:00,14.162037037037063
2025-11-13 07:00:00+00:00,15.731481481481506
2025-11-13 08:00:00+00:00,16.855092592592612
2025-11-13 09:00:00+00:00,17.668518518518546
2025-11-13 10:00:00+00:00,18.876647834274973
2025-11-13 11:00:00+00:00,19.14877589453864
2025-11-13 12:00:00+00:00,19.313888888888908
2025-11-13 13:00:00+00:00,19.311574074074095
2025-11-13 14:00:00+00:00,18.7763888888889
2025-11-13 15:00:00+00:00,17.792592592592612
2025-11-13 16:00:00+00:00,17.19020715630887
2025-11-13 17:00:00+00:00,15.861645299145321
2025-11-13 18:00:00+00:00,17.029727095516595
2025-11-13 19:00:00+00:00,17.23611111111114
2025-11-13 20:00:00+00:00,17.227871939736367
2025-11-13 21:00:00+00:00,17.860169491525443
2025-11-13 22:00:00+00:00,15.800925925925945
2025-11-13 23:00:00+00:00,12.624677002584006
2025-11-14 00:00:00+00:00,11.420227920227942
2025-11-14 01:00:00+00:00,10.823232323232341
2025-11-14 02:00:00+00:00,10.84629629629632
2025-11-14 03:00:00+00:00,12.197530864197555
2025-11-14 04:00:00+00:00,10.516795865633087
2025-11-14 05:00:00+00:00,10.442942942942969
2025-11-14 06:00:00+00:00,11.37448559670784
2025-11-14 07:00:00+00:00,10.394067796610189
2025-11-14 08:00:00+00:00,11.249537037037062
2025-11-14 09:00:00+00:00,14.907870370370398
2025-11-14 10:00:00+00:00,15.971759259259292
2025-11-14 11:00:00+00:00,14.7439814814815
2025-11-14 12:00:00+00:00,15.397392290249455
2025-11-14 13:00:00+00:00,15.906893004115249
2025-11-14 14:00:00+00:00,16.829566854990613
2025-11-14 15:00:00+00:00,16.5564814814815
2025-11-14 16:00:00+00:00,16.65601851851854
2025-11-14 17:00:00+00:00,17.032956685499077
2025-11-14 18:00:00+00:00,16.97834274952921
2025-11-14 19:00:00+00:00,15.650641025641049
2025-11-14 20:00:00+00:00,14.129050925925945
2025-11-14 21:00:00+00:00,15.676091269841294
2025-11-14 22:00:00+00:00,17.198412698412724
2025-11-14 23:00:00+00:00,16.954166666666687
2025-11-15 00:00:00+00:00,16.487037037037062
2025-11-15 01:00:00+00:00,15.979629629629647
2025-11-15 02:00:00+00:00,14.903703703703718
2025-11-15 03:00:00+00:00,13.74222222222224
2025-11-15 04:00:00+00:00,13.687853107344653
2025-11-15 05:00:00+00:00,13.51636904761907
2025-11-15 06:00:00+00:00,13.82614942528738
2025-11-15 07:00:00+00:00,13.79262452107282
2025-11-15 08:00:00+00:00,14.000941619585701
2025-11-15 09:00:00+00:00,13.451388888888914
2025-11-15 10:00:00+00:00,13.141666666666683
2025-11-15 11:00:00+00:00,13.591666666666681
2025-11-15 12:00:00+00:00,14.441203703703726
2025-11-15 13:00:00+00:00,14.339351851851868
2025-11-15 14:00:00+00:00,14.1351851851852
2025-11-15 15:00:00+00:00,12.209259259259293
2025-11-15 16:00:00+00:00,11.866402116402147
2025-11-15 17:00:00+00:00,10.611111111111128
2025-11-15 18:00:00+00:00,10.166666666666696
2025-11-15 19:00:00+00:00,9.468954248366018
2025-11-15 20:00:00+00:00,8.715277777777779
2025-11-15 21:00:00+00:00,8.26697530864198
2025-11-15 22:00:00+00:00,7.70277777777778
2025-11-15 23:00:00+00:00,7.004273504273505
2025-11-16 00:00:00+00:00,6.738095238095239
2025-11-16 01:00:00+00:00,7.212345679012348
2025-11-16 02:00:00+00:00,7.311111111111113
2025-11-16 03:00:00+00:00,7.605050505050508
2025-11-16 04:00:00+00:00,7.698509485094853
2025-11-16 05:00:00+00:00,7.150000000000001
2025-11-16 06:00:00+00:00,7.224318658280924
2025-11-16 07:00:00+00:00,7.32638888888889
2025-11-16 08:00:00+00:00,8.389814814814818
2025-11-16 09:00:00+00:00,9.316203703703705
2025-11-16 10:00:00+00:00,9.354629629629631
2025-11-16 11:00:00+00:00,10.327314814814834
2025-11-16 12:00:00+00:00,10.848148148148164
2025-11-16 13:00:00+00:00,10.535185185185213
2025-11-16 14:00:00+00:00,9.850462962962974
2025-11-16 15:00:00+00:00,9.65254237288136
2025-11-16 16:00:00+00:00,9.392361111111112
2025-11-16 17:00:00+00:00,9.074074074074074
2025-11-16 18:00:00+00:00,8.989197530864198
2025-11-16 19:00:00+00:00,8.902777777777779
2025-11-16 20:00:00+00:00,9.430555555555557
2025-11-16 21:00:00+00:00,8.921296296296298
2025-11-16 22:00:00+00:00,8.233024691358027
2025-11-16 23:00:00+00:00,7.8440170940170955
2025-11-17 00:00:00+00:00,7.66666666666667
2025-11-17 01:00:00+00:00,7.7473794549266275
2025-11-17 02:00:00+00:00,7.88888888888889
2025-11-17 03:00:00+00:00,7.8707070707070725
2025-11-17 04:00:00+00:00,6.940277777777779
2025-11-17 05:00:00+00:00,5.725000000000002
2025-11-17 06:00:00+00:00,4.8699074074074105
2025-11-17 07:00:00+00:00,2.8541666666666674
2025-11-17 08:00:00+00:00,2.325462962962965
2025-11-17 09:00:00+00:00,4.097222222222224
2025-11-17 10:00:00+00:00,4.830555555555558
2025-11-17 11:00:00+00:00,5.0791666666666675
2025-11-17 12:00:00+00:00,5.517129629629631
2025-11-17 13:00:00+00:00,5.70138888888889
2025-11-17 14:00:00+00:00,5.449537037037037
2025-11-17 15:00:00+00:00,3.6583333333333323
2025-11-17 16:00:00+00:00,3.5584795321637452
2025-11-17 17:00:00+00:00,2.7207977207977216
2025-11-17 18:00:00+00:00,1.9255555555555568
2025-11-17 19:00:00+00:00,1.1938775510204074
2025-11-17 20:00:00+00:00,0.7311827956989249
2025-11-17 21:00:00+00:00,-0.19444444444444453
2025-11-17 22:00:00+00:00,-0.7740740740740741
2025-11-17 23:00:00+00:00,-0.8475177304964536
2025-11-18 00:00:00+00:00,-1.220930232558139
2025-11-18 01:00:00+00:00,-1.2968749999999991
2025-11-18 02:00:00+00:00,-1.6891891891891873
2025-11-18 03:00:00+00:00,-1.6560283687943247
2025-11-18 04:00:00+00:00,-2.1388888888888875
2025-11-18 05:00:00+00:00,-3.0092592592592577
2025-11-18 06:00:00+00:00,-2.7250566893424018
2025-11-18 07:00:00+00:00,-2.1851851851851833
2025-11-18 08:00:00+00:00,-2.2037037037037
1 time temperature
2 2025-11-11 08:00:00+00:00 9.965996168582388
3 2025-11-11 09:00:00+00:00 10.987500000000022
4 2025-11-11 10:00:00+00:00 11.817592592592614
5 2025-11-11 11:00:00+00:00 12.637500000000022
6 2025-11-11 12:00:00+00:00 13.246759259259282
7 2025-11-11 13:00:00+00:00 13.832870370370385
8 2025-11-11 14:00:00+00:00 13.293055555555576
9 2025-11-11 15:00:00+00:00 13.28472222222224
10 2025-11-11 16:00:00+00:00 10.064009661835758
11 2025-11-11 17:00:00+00:00 9.247584541062803
12 2025-11-11 18:00:00+00:00 8.769916142557653
13 2025-11-11 19:00:00+00:00 8.168750000000001
14 2025-11-11 20:00:00+00:00 7.547222222222224
15 2025-11-11 21:00:00+00:00 7.481481481481483
16 2025-11-11 22:00:00+00:00 7.368333333333335
17 2025-11-11 23:00:00+00:00 7.112745098039217
18 2025-11-12 00:00:00+00:00 7.6781970649895195
19 2025-11-12 01:00:00+00:00 7.887914230019497
20 2025-11-12 02:00:00+00:00 7.867346938775513
21 2025-11-12 03:00:00+00:00 8.201388888888891
22 2025-11-12 04:00:00+00:00 8.817528735632186
23 2025-11-12 05:00:00+00:00 9.174291938997824
24 2025-11-12 06:00:00+00:00 8.288580246913583
25 2025-11-12 07:00:00+00:00 9.045808966861609
26 2025-11-12 08:00:00+00:00 12.399122807017566
27 2025-11-12 09:00:00+00:00 14.626262626262648
28 2025-11-12 10:00:00+00:00 15.19537037037039
29 2025-11-12 11:00:00+00:00 16.255555555555585
30 2025-11-12 12:00:00+00:00 16.912037037037052
31 2025-11-12 13:00:00+00:00 16.73287037037038
32 2025-11-12 14:00:00+00:00 15.981167608286277
33 2025-11-12 15:00:00+00:00 14.130092592592625
34 2025-11-12 16:00:00+00:00 11.878552971576244
35 2025-11-12 17:00:00+00:00 11.139479905437371
36 2025-11-12 18:00:00+00:00 10.967700258397958
37 2025-11-12 19:00:00+00:00 10.130385487528358
38 2025-11-12 20:00:00+00:00 11.02168021680219
39 2025-11-12 21:00:00+00:00 12.440775681341744
40 2025-11-12 22:00:00+00:00 13.428907721280623
41 2025-11-12 23:00:00+00:00 11.055555555555577
42 2025-11-13 00:00:00+00:00 10.917417417417441
43 2025-11-13 01:00:00+00:00 13.5956790123457
44 2025-11-13 02:00:00+00:00 11.973379629629653
45 2025-11-13 03:00:00+00:00 9.185435435435439
46 2025-11-13 04:00:00+00:00 8.089147286821706
47 2025-11-13 05:00:00+00:00 11.47175925925928
48 2025-11-13 06:00:00+00:00 14.162037037037063
49 2025-11-13 07:00:00+00:00 15.731481481481506
50 2025-11-13 08:00:00+00:00 16.855092592592612
51 2025-11-13 09:00:00+00:00 17.668518518518546
52 2025-11-13 10:00:00+00:00 18.876647834274973
53 2025-11-13 11:00:00+00:00 19.14877589453864
54 2025-11-13 12:00:00+00:00 19.313888888888908
55 2025-11-13 13:00:00+00:00 19.311574074074095
56 2025-11-13 14:00:00+00:00 18.7763888888889
57 2025-11-13 15:00:00+00:00 17.792592592592612
58 2025-11-13 16:00:00+00:00 17.19020715630887
59 2025-11-13 17:00:00+00:00 15.861645299145321
60 2025-11-13 18:00:00+00:00 17.029727095516595
61 2025-11-13 19:00:00+00:00 17.23611111111114
62 2025-11-13 20:00:00+00:00 17.227871939736367
63 2025-11-13 21:00:00+00:00 17.860169491525443
64 2025-11-13 22:00:00+00:00 15.800925925925945
65 2025-11-13 23:00:00+00:00 12.624677002584006
66 2025-11-14 00:00:00+00:00 11.420227920227942
67 2025-11-14 01:00:00+00:00 10.823232323232341
68 2025-11-14 02:00:00+00:00 10.84629629629632
69 2025-11-14 03:00:00+00:00 12.197530864197555
70 2025-11-14 04:00:00+00:00 10.516795865633087
71 2025-11-14 05:00:00+00:00 10.442942942942969
72 2025-11-14 06:00:00+00:00 11.37448559670784
73 2025-11-14 07:00:00+00:00 10.394067796610189
74 2025-11-14 08:00:00+00:00 11.249537037037062
75 2025-11-14 09:00:00+00:00 14.907870370370398
76 2025-11-14 10:00:00+00:00 15.971759259259292
77 2025-11-14 11:00:00+00:00 14.7439814814815
78 2025-11-14 12:00:00+00:00 15.397392290249455
79 2025-11-14 13:00:00+00:00 15.906893004115249
80 2025-11-14 14:00:00+00:00 16.829566854990613
81 2025-11-14 15:00:00+00:00 16.5564814814815
82 2025-11-14 16:00:00+00:00 16.65601851851854
83 2025-11-14 17:00:00+00:00 17.032956685499077
84 2025-11-14 18:00:00+00:00 16.97834274952921
85 2025-11-14 19:00:00+00:00 15.650641025641049
86 2025-11-14 20:00:00+00:00 14.129050925925945
87 2025-11-14 21:00:00+00:00 15.676091269841294
88 2025-11-14 22:00:00+00:00 17.198412698412724
89 2025-11-14 23:00:00+00:00 16.954166666666687
90 2025-11-15 00:00:00+00:00 16.487037037037062
91 2025-11-15 01:00:00+00:00 15.979629629629647
92 2025-11-15 02:00:00+00:00 14.903703703703718
93 2025-11-15 03:00:00+00:00 13.74222222222224
94 2025-11-15 04:00:00+00:00 13.687853107344653
95 2025-11-15 05:00:00+00:00 13.51636904761907
96 2025-11-15 06:00:00+00:00 13.82614942528738
97 2025-11-15 07:00:00+00:00 13.79262452107282
98 2025-11-15 08:00:00+00:00 14.000941619585701
99 2025-11-15 09:00:00+00:00 13.451388888888914
100 2025-11-15 10:00:00+00:00 13.141666666666683
101 2025-11-15 11:00:00+00:00 13.591666666666681
102 2025-11-15 12:00:00+00:00 14.441203703703726
103 2025-11-15 13:00:00+00:00 14.339351851851868
104 2025-11-15 14:00:00+00:00 14.1351851851852
105 2025-11-15 15:00:00+00:00 12.209259259259293
106 2025-11-15 16:00:00+00:00 11.866402116402147
107 2025-11-15 17:00:00+00:00 10.611111111111128
108 2025-11-15 18:00:00+00:00 10.166666666666696
109 2025-11-15 19:00:00+00:00 9.468954248366018
110 2025-11-15 20:00:00+00:00 8.715277777777779
111 2025-11-15 21:00:00+00:00 8.26697530864198
112 2025-11-15 22:00:00+00:00 7.70277777777778
113 2025-11-15 23:00:00+00:00 7.004273504273505
114 2025-11-16 00:00:00+00:00 6.738095238095239
115 2025-11-16 01:00:00+00:00 7.212345679012348
116 2025-11-16 02:00:00+00:00 7.311111111111113
117 2025-11-16 03:00:00+00:00 7.605050505050508
118 2025-11-16 04:00:00+00:00 7.698509485094853
119 2025-11-16 05:00:00+00:00 7.150000000000001
120 2025-11-16 06:00:00+00:00 7.224318658280924
121 2025-11-16 07:00:00+00:00 7.32638888888889
122 2025-11-16 08:00:00+00:00 8.389814814814818
123 2025-11-16 09:00:00+00:00 9.316203703703705
124 2025-11-16 10:00:00+00:00 9.354629629629631
125 2025-11-16 11:00:00+00:00 10.327314814814834
126 2025-11-16 12:00:00+00:00 10.848148148148164
127 2025-11-16 13:00:00+00:00 10.535185185185213
128 2025-11-16 14:00:00+00:00 9.850462962962974
129 2025-11-16 15:00:00+00:00 9.65254237288136
130 2025-11-16 16:00:00+00:00 9.392361111111112
131 2025-11-16 17:00:00+00:00 9.074074074074074
132 2025-11-16 18:00:00+00:00 8.989197530864198
133 2025-11-16 19:00:00+00:00 8.902777777777779
134 2025-11-16 20:00:00+00:00 9.430555555555557
135 2025-11-16 21:00:00+00:00 8.921296296296298
136 2025-11-16 22:00:00+00:00 8.233024691358027
137 2025-11-16 23:00:00+00:00 7.8440170940170955
138 2025-11-17 00:00:00+00:00 7.66666666666667
139 2025-11-17 01:00:00+00:00 7.7473794549266275
140 2025-11-17 02:00:00+00:00 7.88888888888889
141 2025-11-17 03:00:00+00:00 7.8707070707070725
142 2025-11-17 04:00:00+00:00 6.940277777777779
143 2025-11-17 05:00:00+00:00 5.725000000000002
144 2025-11-17 06:00:00+00:00 4.8699074074074105
145 2025-11-17 07:00:00+00:00 2.8541666666666674
146 2025-11-17 08:00:00+00:00 2.325462962962965
147 2025-11-17 09:00:00+00:00 4.097222222222224
148 2025-11-17 10:00:00+00:00 4.830555555555558
149 2025-11-17 11:00:00+00:00 5.0791666666666675
150 2025-11-17 12:00:00+00:00 5.517129629629631
151 2025-11-17 13:00:00+00:00 5.70138888888889
152 2025-11-17 14:00:00+00:00 5.449537037037037
153 2025-11-17 15:00:00+00:00 3.6583333333333323
154 2025-11-17 16:00:00+00:00 3.5584795321637452
155 2025-11-17 17:00:00+00:00 2.7207977207977216
156 2025-11-17 18:00:00+00:00 1.9255555555555568
157 2025-11-17 19:00:00+00:00 1.1938775510204074
158 2025-11-17 20:00:00+00:00 0.7311827956989249
159 2025-11-17 21:00:00+00:00 -0.19444444444444453
160 2025-11-17 22:00:00+00:00 -0.7740740740740741
161 2025-11-17 23:00:00+00:00 -0.8475177304964536
162 2025-11-18 00:00:00+00:00 -1.220930232558139
163 2025-11-18 01:00:00+00:00 -1.2968749999999991
164 2025-11-18 02:00:00+00:00 -1.6891891891891873
165 2025-11-18 03:00:00+00:00 -1.6560283687943247
166 2025-11-18 04:00:00+00:00 -2.1388888888888875
167 2025-11-18 05:00:00+00:00 -3.0092592592592577
168 2025-11-18 06:00:00+00:00 -2.7250566893424018
169 2025-11-18 07:00:00+00:00 -2.1851851851851833
170 2025-11-18 08:00:00+00:00 -2.2037037037037

View File

@ -1,170 +0,0 @@
time,wind_direction
2025-11-11 08:00:00+00:00,247.00862068965517
2025-11-11 09:00:00+00:00,239.95
2025-11-11 10:00:00+00:00,249.35833333333332
2025-11-11 11:00:00+00:00,251.28333333333333
2025-11-11 12:00:00+00:00,235.73333333333332
2025-11-11 13:00:00+00:00,243.49166666666667
2025-11-11 14:00:00+00:00,230.325
2025-11-11 15:00:00+00:00,200.49999999999997
2025-11-11 16:00:00+00:00,136.72826086956522
2025-11-11 17:00:00+00:00,163.06521739130434
2025-11-11 18:00:00+00:00,160.29245283018867
2025-11-11 19:00:00+00:00,160.6
2025-11-11 20:00:00+00:00,152.52
2025-11-11 21:00:00+00:00,144.14285714285714
2025-11-11 22:00:00+00:00,154.36
2025-11-11 23:00:00+00:00,163.38235294117646
2025-11-12 00:00:00+00:00,161.69811320754718
2025-11-12 01:00:00+00:00,159.48245614035088
2025-11-12 02:00:00+00:00,162.1734693877551
2025-11-12 03:00:00+00:00,164.61607142857142
2025-11-12 04:00:00+00:00,180.26724137931035
2025-11-12 05:00:00+00:00,199.58823529411762
2025-11-12 06:00:00+00:00,206.90740740740736
2025-11-12 07:00:00+00:00,198.140350877193
2025-11-12 08:00:00+00:00,233.28070175438597
2025-11-12 09:00:00+00:00,242.5909090909091
2025-11-12 10:00:00+00:00,245.74166666666667
2025-11-12 11:00:00+00:00,244.15
2025-11-12 12:00:00+00:00,240.475
2025-11-12 13:00:00+00:00,247.21666666666667
2025-11-12 14:00:00+00:00,236.5593220338983
2025-11-12 15:00:00+00:00,232.0583333333333
2025-11-12 16:00:00+00:00,181.11627906976742
2025-11-12 17:00:00+00:00,161.91489361702128
2025-11-12 18:00:00+00:00,176.3953488372093
2025-11-12 19:00:00+00:00,109.27551020408163
2025-11-12 20:00:00+00:00,227.28048780487805
2025-11-12 21:00:00+00:00,240.38679245283018
2025-11-12 22:00:00+00:00,228.92372881355934
2025-11-12 23:00:00+00:00,24.000000000000004
2025-11-13 00:00:00+00:00,238.3783783783784
2025-11-13 01:00:00+00:00,226.2535197689996
2025-11-13 02:00:00+00:00,188.9375
2025-11-13 03:00:00+00:00,183.25675675675674
2025-11-13 04:00:00+00:00,180.98837209302323
2025-11-13 05:00:00+00:00,242.95833333333334
2025-11-13 06:00:00+00:00,239.95833333333334
2025-11-13 07:00:00+00:00,229.53333333333333
2025-11-13 08:00:00+00:00,252.33333333333334
2025-11-13 09:00:00+00:00,251.24166666666667
2025-11-13 10:00:00+00:00,241.15254237288136
2025-11-13 11:00:00+00:00,242.85593220338984
2025-11-13 12:00:00+00:00,244.20833333333334
2025-11-13 13:00:00+00:00,238.5
2025-11-13 14:00:00+00:00,230.075
2025-11-13 15:00:00+00:00,232.19166666666666
2025-11-13 16:00:00+00:00,231.28813559322035
2025-11-13 17:00:00+00:00,230.6346153846154
2025-11-13 18:00:00+00:00,230.98245614035088
2025-11-13 19:00:00+00:00,236.85833333333332
2025-11-13 20:00:00+00:00,232.0084745762712
2025-11-13 21:00:00+00:00,232.26271186440678
2025-11-13 22:00:00+00:00,253.89583333333334
2025-11-13 23:00:00+00:00,110.0
2025-11-14 00:00:00+00:00,115.23076923076923
2025-11-14 01:00:00+00:00,162.0
2025-11-14 02:00:00+00:00,162.0
2025-11-14 03:00:00+00:00,162.0
2025-11-14 04:00:00+00:00,242.91860465116278
2025-11-14 05:00:00+00:00,214.54054054054055
2025-11-14 06:00:00+00:00,187.40740740740736
2025-11-14 07:00:00+00:00,240.9406779661017
2025-11-14 08:00:00+00:00,227.48333333333332
2025-11-14 09:00:00+00:00,250.35
2025-11-14 10:00:00+00:00,125.55833333333332
2025-11-14 11:00:00+00:00,55.19166666666667
2025-11-14 12:00:00+00:00,99.3265306122449
2025-11-14 13:00:00+00:00,138.77777777777777
2025-11-14 14:00:00+00:00,234.42372881355934
2025-11-14 15:00:00+00:00,228.48333333333332
2025-11-14 16:00:00+00:00,231.825
2025-11-14 17:00:00+00:00,228.77118644067798
2025-11-14 18:00:00+00:00,243.57627118644066
2025-11-14 19:00:00+00:00,212.39423076923077
2025-11-14 20:00:00+00:00,211.79166666666666
2025-11-14 21:00:00+00:00,235.44642857142858
2025-11-14 22:00:00+00:00,235.05357142857142
2025-11-14 23:00:00+00:00,240.96666666666667
2025-11-15 00:00:00+00:00,233.89166666666668
2025-11-15 01:00:00+00:00,240.85
2025-11-15 02:00:00+00:00,239.08333333333334
2025-11-15 03:00:00+00:00,236.62
2025-11-15 04:00:00+00:00,227.07627118644066
2025-11-15 05:00:00+00:00,210.51785714285714
2025-11-15 06:00:00+00:00,229.07758620689654
2025-11-15 07:00:00+00:00,231.2155172413793
2025-11-15 08:00:00+00:00,160.27966101694915
2025-11-15 09:00:00+00:00,90.825
2025-11-15 10:00:00+00:00,0.0
2025-11-15 11:00:00+00:00,14.025
2025-11-15 12:00:00+00:00,108.15833333333333
2025-11-15 13:00:00+00:00,241.16666666666666
2025-11-15 14:00:00+00:00,156.99166666666667
2025-11-15 15:00:00+00:00,119.84166666666667
2025-11-15 16:00:00+00:00,217.02380952380952
2025-11-15 17:00:00+00:00,129.375
2025-11-15 18:00:00+00:00,161.28571428571428
2025-11-15 19:00:00+00:00,196.0
2025-11-15 20:00:00+00:00,232.69444444444446
2025-11-15 21:00:00+00:00,212.79166666666663
2025-11-15 22:00:00+00:00,209.5
2025-11-15 23:00:00+00:00,221.99999999999997
2025-11-16 00:00:00+00:00,252.1757175012371
2025-11-16 01:00:00+00:00,160.11111111111111
2025-11-16 02:00:00+00:00,166.9090909090909
2025-11-16 03:00:00+00:00,176.79090909090908
2025-11-16 04:00:00+00:00,163.9268292682927
2025-11-16 05:00:00+00:00,123.6
2025-11-16 06:00:00+00:00,175.12264150943398
2025-11-16 07:00:00+00:00,133.84166666666667
2025-11-16 08:00:00+00:00,197.88333333333333
2025-11-16 09:00:00+00:00,126.83333333333333
2025-11-16 10:00:00+00:00,109.0
2025-11-16 11:00:00+00:00,54.275
2025-11-16 12:00:00+00:00,24.000000000000004
2025-11-16 13:00:00+00:00,216.91666666666666
2025-11-16 14:00:00+00:00,255.75833333333333
2025-11-16 15:00:00+00:00,135.71186440677965
2025-11-16 16:00:00+00:00,166.875
2025-11-16 17:00:00+00:00,192.2380952380952
2025-11-16 18:00:00+00:00,233.72222222222223
2025-11-16 19:00:00+00:00,176.125
2025-11-16 20:00:00+00:00,181.91666666666666
2025-11-16 21:00:00+00:00,226.75
2025-11-16 22:00:00+00:00,304.9074074074074
2025-11-16 23:00:00+00:00,295.86538461538464
2025-11-17 00:00:00+00:00,298.90816326530614
2025-11-17 01:00:00+00:00,259.188679245283
2025-11-17 02:00:00+00:00,266.3833333333333
2025-11-17 03:00:00+00:00,283.06363636363636
2025-11-17 04:00:00+00:00,245.325
2025-11-17 05:00:00+00:00,258.65833333333336
2025-11-17 06:00:00+00:00,227.33333333333334
2025-11-17 07:00:00+00:00,134.81666666666666
2025-11-17 08:00:00+00:00,277.5
2025-11-17 09:00:00+00:00,276.42857142857144
2025-11-17 10:00:00+00:00,267.60833333333335
2025-11-17 11:00:00+00:00,267.5833333333333
2025-11-17 12:00:00+00:00,290.65
2025-11-17 13:00:00+00:00,294.2416666666667
2025-11-17 14:00:00+00:00,296.76666666666665
2025-11-17 15:00:00+00:00,294.69166666666666
2025-11-17 16:00:00+00:00,305.49122807017545
2025-11-17 17:00:00+00:00,337.28205128205127
2025-11-17 18:00:00+00:00,277.09999999999997
2025-11-17 19:00:00+00:00,236.91836734693874
2025-11-17 20:00:00+00:00,202.0806451612903
2025-11-17 21:00:00+00:00,195.0285714285714
2025-11-17 22:00:00+00:00,154.74444444444444
2025-11-17 23:00:00+00:00,168.82978723404256
2025-11-18 00:00:00+00:00,168.0
2025-11-18 01:00:00+00:00,172.875
2025-11-18 02:00:00+00:00,167.02702702702703
2025-11-18 03:00:00+00:00,163.7340425531915
2025-11-18 04:00:00+00:00,167.73529411764707
2025-11-18 05:00:00+00:00,168.0
2025-11-18 06:00:00+00:00,171.79591836734693
2025-11-18 07:00:00+00:00,168.55
2025-11-18 08:00:00+00:00,168.0
1 time wind_direction
2 2025-11-11 08:00:00+00:00 247.00862068965517
3 2025-11-11 09:00:00+00:00 239.95
4 2025-11-11 10:00:00+00:00 249.35833333333332
5 2025-11-11 11:00:00+00:00 251.28333333333333
6 2025-11-11 12:00:00+00:00 235.73333333333332
7 2025-11-11 13:00:00+00:00 243.49166666666667
8 2025-11-11 14:00:00+00:00 230.325
9 2025-11-11 15:00:00+00:00 200.49999999999997
10 2025-11-11 16:00:00+00:00 136.72826086956522
11 2025-11-11 17:00:00+00:00 163.06521739130434
12 2025-11-11 18:00:00+00:00 160.29245283018867
13 2025-11-11 19:00:00+00:00 160.6
14 2025-11-11 20:00:00+00:00 152.52
15 2025-11-11 21:00:00+00:00 144.14285714285714
16 2025-11-11 22:00:00+00:00 154.36
17 2025-11-11 23:00:00+00:00 163.38235294117646
18 2025-11-12 00:00:00+00:00 161.69811320754718
19 2025-11-12 01:00:00+00:00 159.48245614035088
20 2025-11-12 02:00:00+00:00 162.1734693877551
21 2025-11-12 03:00:00+00:00 164.61607142857142
22 2025-11-12 04:00:00+00:00 180.26724137931035
23 2025-11-12 05:00:00+00:00 199.58823529411762
24 2025-11-12 06:00:00+00:00 206.90740740740736
25 2025-11-12 07:00:00+00:00 198.140350877193
26 2025-11-12 08:00:00+00:00 233.28070175438597
27 2025-11-12 09:00:00+00:00 242.5909090909091
28 2025-11-12 10:00:00+00:00 245.74166666666667
29 2025-11-12 11:00:00+00:00 244.15
30 2025-11-12 12:00:00+00:00 240.475
31 2025-11-12 13:00:00+00:00 247.21666666666667
32 2025-11-12 14:00:00+00:00 236.5593220338983
33 2025-11-12 15:00:00+00:00 232.0583333333333
34 2025-11-12 16:00:00+00:00 181.11627906976742
35 2025-11-12 17:00:00+00:00 161.91489361702128
36 2025-11-12 18:00:00+00:00 176.3953488372093
37 2025-11-12 19:00:00+00:00 109.27551020408163
38 2025-11-12 20:00:00+00:00 227.28048780487805
39 2025-11-12 21:00:00+00:00 240.38679245283018
40 2025-11-12 22:00:00+00:00 228.92372881355934
41 2025-11-12 23:00:00+00:00 24.000000000000004
42 2025-11-13 00:00:00+00:00 238.3783783783784
43 2025-11-13 01:00:00+00:00 226.2535197689996
44 2025-11-13 02:00:00+00:00 188.9375
45 2025-11-13 03:00:00+00:00 183.25675675675674
46 2025-11-13 04:00:00+00:00 180.98837209302323
47 2025-11-13 05:00:00+00:00 242.95833333333334
48 2025-11-13 06:00:00+00:00 239.95833333333334
49 2025-11-13 07:00:00+00:00 229.53333333333333
50 2025-11-13 08:00:00+00:00 252.33333333333334
51 2025-11-13 09:00:00+00:00 251.24166666666667
52 2025-11-13 10:00:00+00:00 241.15254237288136
53 2025-11-13 11:00:00+00:00 242.85593220338984
54 2025-11-13 12:00:00+00:00 244.20833333333334
55 2025-11-13 13:00:00+00:00 238.5
56 2025-11-13 14:00:00+00:00 230.075
57 2025-11-13 15:00:00+00:00 232.19166666666666
58 2025-11-13 16:00:00+00:00 231.28813559322035
59 2025-11-13 17:00:00+00:00 230.6346153846154
60 2025-11-13 18:00:00+00:00 230.98245614035088
61 2025-11-13 19:00:00+00:00 236.85833333333332
62 2025-11-13 20:00:00+00:00 232.0084745762712
63 2025-11-13 21:00:00+00:00 232.26271186440678
64 2025-11-13 22:00:00+00:00 253.89583333333334
65 2025-11-13 23:00:00+00:00 110.0
66 2025-11-14 00:00:00+00:00 115.23076923076923
67 2025-11-14 01:00:00+00:00 162.0
68 2025-11-14 02:00:00+00:00 162.0
69 2025-11-14 03:00:00+00:00 162.0
70 2025-11-14 04:00:00+00:00 242.91860465116278
71 2025-11-14 05:00:00+00:00 214.54054054054055
72 2025-11-14 06:00:00+00:00 187.40740740740736
73 2025-11-14 07:00:00+00:00 240.9406779661017
74 2025-11-14 08:00:00+00:00 227.48333333333332
75 2025-11-14 09:00:00+00:00 250.35
76 2025-11-14 10:00:00+00:00 125.55833333333332
77 2025-11-14 11:00:00+00:00 55.19166666666667
78 2025-11-14 12:00:00+00:00 99.3265306122449
79 2025-11-14 13:00:00+00:00 138.77777777777777
80 2025-11-14 14:00:00+00:00 234.42372881355934
81 2025-11-14 15:00:00+00:00 228.48333333333332
82 2025-11-14 16:00:00+00:00 231.825
83 2025-11-14 17:00:00+00:00 228.77118644067798
84 2025-11-14 18:00:00+00:00 243.57627118644066
85 2025-11-14 19:00:00+00:00 212.39423076923077
86 2025-11-14 20:00:00+00:00 211.79166666666666
87 2025-11-14 21:00:00+00:00 235.44642857142858
88 2025-11-14 22:00:00+00:00 235.05357142857142
89 2025-11-14 23:00:00+00:00 240.96666666666667
90 2025-11-15 00:00:00+00:00 233.89166666666668
91 2025-11-15 01:00:00+00:00 240.85
92 2025-11-15 02:00:00+00:00 239.08333333333334
93 2025-11-15 03:00:00+00:00 236.62
94 2025-11-15 04:00:00+00:00 227.07627118644066
95 2025-11-15 05:00:00+00:00 210.51785714285714
96 2025-11-15 06:00:00+00:00 229.07758620689654
97 2025-11-15 07:00:00+00:00 231.2155172413793
98 2025-11-15 08:00:00+00:00 160.27966101694915
99 2025-11-15 09:00:00+00:00 90.825
100 2025-11-15 10:00:00+00:00 0.0
101 2025-11-15 11:00:00+00:00 14.025
102 2025-11-15 12:00:00+00:00 108.15833333333333
103 2025-11-15 13:00:00+00:00 241.16666666666666
104 2025-11-15 14:00:00+00:00 156.99166666666667
105 2025-11-15 15:00:00+00:00 119.84166666666667
106 2025-11-15 16:00:00+00:00 217.02380952380952
107 2025-11-15 17:00:00+00:00 129.375
108 2025-11-15 18:00:00+00:00 161.28571428571428
109 2025-11-15 19:00:00+00:00 196.0
110 2025-11-15 20:00:00+00:00 232.69444444444446
111 2025-11-15 21:00:00+00:00 212.79166666666663
112 2025-11-15 22:00:00+00:00 209.5
113 2025-11-15 23:00:00+00:00 221.99999999999997
114 2025-11-16 00:00:00+00:00 252.1757175012371
115 2025-11-16 01:00:00+00:00 160.11111111111111
116 2025-11-16 02:00:00+00:00 166.9090909090909
117 2025-11-16 03:00:00+00:00 176.79090909090908
118 2025-11-16 04:00:00+00:00 163.9268292682927
119 2025-11-16 05:00:00+00:00 123.6
120 2025-11-16 06:00:00+00:00 175.12264150943398
121 2025-11-16 07:00:00+00:00 133.84166666666667
122 2025-11-16 08:00:00+00:00 197.88333333333333
123 2025-11-16 09:00:00+00:00 126.83333333333333
124 2025-11-16 10:00:00+00:00 109.0
125 2025-11-16 11:00:00+00:00 54.275
126 2025-11-16 12:00:00+00:00 24.000000000000004
127 2025-11-16 13:00:00+00:00 216.91666666666666
128 2025-11-16 14:00:00+00:00 255.75833333333333
129 2025-11-16 15:00:00+00:00 135.71186440677965
130 2025-11-16 16:00:00+00:00 166.875
131 2025-11-16 17:00:00+00:00 192.2380952380952
132 2025-11-16 18:00:00+00:00 233.72222222222223
133 2025-11-16 19:00:00+00:00 176.125
134 2025-11-16 20:00:00+00:00 181.91666666666666
135 2025-11-16 21:00:00+00:00 226.75
136 2025-11-16 22:00:00+00:00 304.9074074074074
137 2025-11-16 23:00:00+00:00 295.86538461538464
138 2025-11-17 00:00:00+00:00 298.90816326530614
139 2025-11-17 01:00:00+00:00 259.188679245283
140 2025-11-17 02:00:00+00:00 266.3833333333333
141 2025-11-17 03:00:00+00:00 283.06363636363636
142 2025-11-17 04:00:00+00:00 245.325
143 2025-11-17 05:00:00+00:00 258.65833333333336
144 2025-11-17 06:00:00+00:00 227.33333333333334
145 2025-11-17 07:00:00+00:00 134.81666666666666
146 2025-11-17 08:00:00+00:00 277.5
147 2025-11-17 09:00:00+00:00 276.42857142857144
148 2025-11-17 10:00:00+00:00 267.60833333333335
149 2025-11-17 11:00:00+00:00 267.5833333333333
150 2025-11-17 12:00:00+00:00 290.65
151 2025-11-17 13:00:00+00:00 294.2416666666667
152 2025-11-17 14:00:00+00:00 296.76666666666665
153 2025-11-17 15:00:00+00:00 294.69166666666666
154 2025-11-17 16:00:00+00:00 305.49122807017545
155 2025-11-17 17:00:00+00:00 337.28205128205127
156 2025-11-17 18:00:00+00:00 277.09999999999997
157 2025-11-17 19:00:00+00:00 236.91836734693874
158 2025-11-17 20:00:00+00:00 202.0806451612903
159 2025-11-17 21:00:00+00:00 195.0285714285714
160 2025-11-17 22:00:00+00:00 154.74444444444444
161 2025-11-17 23:00:00+00:00 168.82978723404256
162 2025-11-18 00:00:00+00:00 168.0
163 2025-11-18 01:00:00+00:00 172.875
164 2025-11-18 02:00:00+00:00 167.02702702702703
165 2025-11-18 03:00:00+00:00 163.7340425531915
166 2025-11-18 04:00:00+00:00 167.73529411764707
167 2025-11-18 05:00:00+00:00 168.0
168 2025-11-18 06:00:00+00:00 171.79591836734693
169 2025-11-18 07:00:00+00:00 168.55
170 2025-11-18 08:00:00+00:00 168.0

View File

@ -1,170 +0,0 @@
time,wind_speed
2025-11-11 08:00:00+00:00,4.973705379310345
2025-11-11 09:00:00+00:00,5.52004992
2025-11-11 10:00:00+00:00,5.595152639999999
2025-11-11 11:00:00+00:00,5.0479756799999995
2025-11-11 12:00:00+00:00,4.88301792
2025-11-11 13:00:00+00:00,5.2102512
2025-11-11 14:00:00+00:00,2.36841792
2025-11-11 15:00:00+00:00,0.0402336
2025-11-11 16:00:00+00:00,0.6139997217391304
2025-11-11 17:00:00+00:00,0.9813499826086958
2025-11-11 18:00:00+00:00,1.2054897509433962
2025-11-11 19:00:00+00:00,1.00181664
2025-11-11 20:00:00+00:00,0.9994026239999999
2025-11-11 21:00:00+00:00,0.8889709714285714
2025-11-11 22:00:00+00:00,1.197888384
2025-11-11 23:00:00+00:00,0.870939105882353
2025-11-12 00:00:00+00:00,1.7049936905660377
2025-11-12 01:00:00+00:00,2.8347041684210526
2025-11-12 02:00:00+00:00,3.1989817469387756
2025-11-12 03:00:00+00:00,2.0389813714285716
2025-11-12 04:00:00+00:00,2.5139063172413794
2025-11-12 05:00:00+00:00,1.715055811764706
2025-11-12 06:00:00+00:00,1.5303669333333334
2025-11-12 07:00:00+00:00,2.0046214736842107
2025-11-12 08:00:00+00:00,4.1588837052631575
2025-11-12 09:00:00+00:00,6.605625600000001
2025-11-12 10:00:00+00:00,7.79593056
2025-11-12 11:00:00+00:00,6.350203199999999
2025-11-12 12:00:00+00:00,7.30373952
2025-11-12 13:00:00+00:00,6.31801632
2025-11-12 14:00:00+00:00,3.342798427118644
2025-11-12 15:00:00+00:00,0.0
2025-11-12 16:00:00+00:00,0.5426857674418605
2025-11-12 17:00:00+00:00,0.9912874212765957
2025-11-12 18:00:00+00:00,0.9038525023255813
2025-11-12 19:00:00+00:00,0.6322422857142858
2025-11-12 20:00:00+00:00,0.2551399024390244
2025-11-12 21:00:00+00:00,2.090628950943396
2025-11-12 22:00:00+00:00,1.4047663728813558
2025-11-12 23:00:00+00:00,0.0
2025-11-13 00:00:00+00:00,0.0
2025-11-13 01:00:00+00:00,1.9103509333333333
2025-11-13 02:00:00+00:00,0.1391412
2025-11-13 03:00:00+00:00,0.0
2025-11-13 04:00:00+00:00,0.8888818604651162
2025-11-13 05:00:00+00:00,5.5589424
2025-11-13 06:00:00+00:00,8.65558848
2025-11-13 07:00:00+00:00,9.86259648
2025-11-13 08:00:00+00:00,9.02305536
2025-11-13 09:00:00+00:00,8.524158719999999
2025-11-13 10:00:00+00:00,8.282666196610169
2025-11-13 11:00:00+00:00,8.476333016949154
2025-11-13 12:00:00+00:00,6.3434976
2025-11-13 13:00:00+00:00,6.0108998399999995
2025-11-13 14:00:00+00:00,8.43966816
2025-11-13 15:00:00+00:00,5.68232544
2025-11-13 16:00:00+00:00,4.4243321491525425
2025-11-13 17:00:00+00:00,1.4035336615384617
2025-11-13 18:00:00+00:00,5.594587957894737
2025-11-13 19:00:00+00:00,5.19684
2025-11-13 20:00:00+00:00,5.674983376271187
2025-11-13 21:00:00+00:00,5.634067850847457
2025-11-13 22:00:00+00:00,0.7141464000000001
2025-11-13 23:00:00+00:00,0.0
2025-11-14 00:00:00+00:00,0.0
2025-11-14 01:00:00+00:00,0.0
2025-11-14 02:00:00+00:00,0.0
2025-11-14 03:00:00+00:00,0.0
2025-11-14 04:00:00+00:00,0.1665483906976744
2025-11-14 05:00:00+00:00,0.07394283243243244
2025-11-14 06:00:00+00:00,0.1475232
2025-11-14 07:00:00+00:00,0.0
2025-11-14 08:00:00+00:00,0.0
2025-11-14 09:00:00+00:00,2.63798304
2025-11-14 10:00:00+00:00,0.0
2025-11-14 11:00:00+00:00,0.11667744
2025-11-14 12:00:00+00:00,0.06732969795918367
2025-11-14 13:00:00+00:00,0.12219093333333335
2025-11-14 14:00:00+00:00,5.661344867796609
2025-11-14 15:00:00+00:00,5.833872
2025-11-14 16:00:00+00:00,6.4843152
2025-11-14 17:00:00+00:00,4.365686562711865
2025-11-14 18:00:00+00:00,3.8010523118644066
2025-11-14 19:00:00+00:00,0.733489476923077
2025-11-14 20:00:00+00:00,0.0972312
2025-11-14 21:00:00+00:00,3.419856
2025-11-14 22:00:00+00:00,6.855518057142858
2025-11-14 23:00:00+00:00,7.08379584
2025-11-15 00:00:00+00:00,6.4641984
2025-11-15 01:00:00+00:00,6.46956288
2025-11-15 02:00:00+00:00,5.25450816
2025-11-15 03:00:00+00:00,2.159739648
2025-11-15 04:00:00+00:00,4.705285423728813
2025-11-15 05:00:00+00:00,2.5677658285714284
2025-11-15 06:00:00+00:00,4.790573131034483
2025-11-15 07:00:00+00:00,6.766181627586207
2025-11-15 08:00:00+00:00,2.6117743728813556
2025-11-15 09:00:00+00:00,0.18909792
2025-11-15 10:00:00+00:00,0.017434559999999998
2025-11-15 11:00:00+00:00,0.10460735999999998
2025-11-15 12:00:00+00:00,0.0
2025-11-15 13:00:00+00:00,0.0
2025-11-15 14:00:00+00:00,1.13592864
2025-11-15 15:00:00+00:00,2.02911456
2025-11-15 16:00:00+00:00,1.0403259428571427
2025-11-15 17:00:00+00:00,0.0
2025-11-15 18:00:00+00:00,0.0
2025-11-15 19:00:00+00:00,0.0
2025-11-15 20:00:00+00:00,0.0
2025-11-15 21:00:00+00:00,0.0
2025-11-15 22:00:00+00:00,0.0
2025-11-15 23:00:00+00:00,0.0
2025-11-16 00:00:00+00:00,0.0
2025-11-16 01:00:00+00:00,0.0
2025-11-16 02:00:00+00:00,1.19530368
2025-11-16 03:00:00+00:00,0.85441536
2025-11-16 04:00:00+00:00,0.6457002146341464
2025-11-16 05:00:00+00:00,0.22990628571428573
2025-11-16 06:00:00+00:00,1.8932565735849056
2025-11-16 07:00:00+00:00,0.43452288
2025-11-16 08:00:00+00:00,1.7233392
2025-11-16 09:00:00+00:00,1.20432576
2025-11-16 10:00:00+00:00,0.0
2025-11-16 11:00:00+00:00,0.0
2025-11-16 12:00:00+00:00,0.0
2025-11-16 13:00:00+00:00,0.0
2025-11-16 14:00:00+00:00,0.0
2025-11-16 15:00:00+00:00,0.0
2025-11-16 16:00:00+00:00,0.0
2025-11-16 17:00:00+00:00,0.0
2025-11-16 18:00:00+00:00,0.0
2025-11-16 19:00:00+00:00,0.0
2025-11-16 20:00:00+00:00,0.0
2025-11-16 21:00:00+00:00,0.7543799999999999
2025-11-16 22:00:00+00:00,1.7225941333333334
2025-11-16 23:00:00+00:00,1.587679753846154
2025-11-17 00:00:00+00:00,0.6634438530612244
2025-11-17 01:00:00+00:00,1.9084390641509432
2025-11-17 02:00:00+00:00,2.4207216
2025-11-17 03:00:00+00:00,2.4549811200000002
2025-11-17 04:00:00+00:00,2.95851072
2025-11-17 05:00:00+00:00,4.325112
2025-11-17 06:00:00+00:00,3.8999769599999996
2025-11-17 07:00:00+00:00,1.62409632
2025-11-17 08:00:00+00:00,0.27627072
2025-11-17 09:00:00+00:00,2.118011657142857
2025-11-17 10:00:00+00:00,4.2714672
2025-11-17 11:00:00+00:00,4.55846688
2025-11-17 12:00:00+00:00,5.01042432
2025-11-17 13:00:00+00:00,5.455676159999999
2025-11-17 14:00:00+00:00,4.75561152
2025-11-17 15:00:00+00:00,1.0366857600000001
2025-11-17 16:00:00+00:00,1.6898112
2025-11-17 17:00:00+00:00,0.44153796923076927
2025-11-17 18:00:00+00:00,1.493471232
2025-11-17 19:00:00+00:00,1.6306924408163266
2025-11-17 20:00:00+00:00,1.0512650322580646
2025-11-17 21:00:00+00:00,0.7540926171428571
2025-11-17 22:00:00+00:00,1.09435392
2025-11-17 23:00:00+00:00,1.7017956765957447
2025-11-18 00:00:00+00:00,0.8664258976744186
2025-11-18 01:00:00+00:00,1.207008
2025-11-18 02:00:00+00:00,1.3788163459459462
2025-11-18 03:00:00+00:00,1.8028076936170214
2025-11-18 04:00:00+00:00,0.5632704
2025-11-18 05:00:00+00:00,0.0
2025-11-18 06:00:00+00:00,0.645379787755102
2025-11-18 07:00:00+00:00,0.64641984
2025-11-18 08:00:00+00:00,0.0
1 time wind_speed
2 2025-11-11 08:00:00+00:00 4.973705379310345
3 2025-11-11 09:00:00+00:00 5.52004992
4 2025-11-11 10:00:00+00:00 5.595152639999999
5 2025-11-11 11:00:00+00:00 5.0479756799999995
6 2025-11-11 12:00:00+00:00 4.88301792
7 2025-11-11 13:00:00+00:00 5.2102512
8 2025-11-11 14:00:00+00:00 2.36841792
9 2025-11-11 15:00:00+00:00 0.0402336
10 2025-11-11 16:00:00+00:00 0.6139997217391304
11 2025-11-11 17:00:00+00:00 0.9813499826086958
12 2025-11-11 18:00:00+00:00 1.2054897509433962
13 2025-11-11 19:00:00+00:00 1.00181664
14 2025-11-11 20:00:00+00:00 0.9994026239999999
15 2025-11-11 21:00:00+00:00 0.8889709714285714
16 2025-11-11 22:00:00+00:00 1.197888384
17 2025-11-11 23:00:00+00:00 0.870939105882353
18 2025-11-12 00:00:00+00:00 1.7049936905660377
19 2025-11-12 01:00:00+00:00 2.8347041684210526
20 2025-11-12 02:00:00+00:00 3.1989817469387756
21 2025-11-12 03:00:00+00:00 2.0389813714285716
22 2025-11-12 04:00:00+00:00 2.5139063172413794
23 2025-11-12 05:00:00+00:00 1.715055811764706
24 2025-11-12 06:00:00+00:00 1.5303669333333334
25 2025-11-12 07:00:00+00:00 2.0046214736842107
26 2025-11-12 08:00:00+00:00 4.1588837052631575
27 2025-11-12 09:00:00+00:00 6.605625600000001
28 2025-11-12 10:00:00+00:00 7.79593056
29 2025-11-12 11:00:00+00:00 6.350203199999999
30 2025-11-12 12:00:00+00:00 7.30373952
31 2025-11-12 13:00:00+00:00 6.31801632
32 2025-11-12 14:00:00+00:00 3.342798427118644
33 2025-11-12 15:00:00+00:00 0.0
34 2025-11-12 16:00:00+00:00 0.5426857674418605
35 2025-11-12 17:00:00+00:00 0.9912874212765957
36 2025-11-12 18:00:00+00:00 0.9038525023255813
37 2025-11-12 19:00:00+00:00 0.6322422857142858
38 2025-11-12 20:00:00+00:00 0.2551399024390244
39 2025-11-12 21:00:00+00:00 2.090628950943396
40 2025-11-12 22:00:00+00:00 1.4047663728813558
41 2025-11-12 23:00:00+00:00 0.0
42 2025-11-13 00:00:00+00:00 0.0
43 2025-11-13 01:00:00+00:00 1.9103509333333333
44 2025-11-13 02:00:00+00:00 0.1391412
45 2025-11-13 03:00:00+00:00 0.0
46 2025-11-13 04:00:00+00:00 0.8888818604651162
47 2025-11-13 05:00:00+00:00 5.5589424
48 2025-11-13 06:00:00+00:00 8.65558848
49 2025-11-13 07:00:00+00:00 9.86259648
50 2025-11-13 08:00:00+00:00 9.02305536
51 2025-11-13 09:00:00+00:00 8.524158719999999
52 2025-11-13 10:00:00+00:00 8.282666196610169
53 2025-11-13 11:00:00+00:00 8.476333016949154
54 2025-11-13 12:00:00+00:00 6.3434976
55 2025-11-13 13:00:00+00:00 6.0108998399999995
56 2025-11-13 14:00:00+00:00 8.43966816
57 2025-11-13 15:00:00+00:00 5.68232544
58 2025-11-13 16:00:00+00:00 4.4243321491525425
59 2025-11-13 17:00:00+00:00 1.4035336615384617
60 2025-11-13 18:00:00+00:00 5.594587957894737
61 2025-11-13 19:00:00+00:00 5.19684
62 2025-11-13 20:00:00+00:00 5.674983376271187
63 2025-11-13 21:00:00+00:00 5.634067850847457
64 2025-11-13 22:00:00+00:00 0.7141464000000001
65 2025-11-13 23:00:00+00:00 0.0
66 2025-11-14 00:00:00+00:00 0.0
67 2025-11-14 01:00:00+00:00 0.0
68 2025-11-14 02:00:00+00:00 0.0
69 2025-11-14 03:00:00+00:00 0.0
70 2025-11-14 04:00:00+00:00 0.1665483906976744
71 2025-11-14 05:00:00+00:00 0.07394283243243244
72 2025-11-14 06:00:00+00:00 0.1475232
73 2025-11-14 07:00:00+00:00 0.0
74 2025-11-14 08:00:00+00:00 0.0
75 2025-11-14 09:00:00+00:00 2.63798304
76 2025-11-14 10:00:00+00:00 0.0
77 2025-11-14 11:00:00+00:00 0.11667744
78 2025-11-14 12:00:00+00:00 0.06732969795918367
79 2025-11-14 13:00:00+00:00 0.12219093333333335
80 2025-11-14 14:00:00+00:00 5.661344867796609
81 2025-11-14 15:00:00+00:00 5.833872
82 2025-11-14 16:00:00+00:00 6.4843152
83 2025-11-14 17:00:00+00:00 4.365686562711865
84 2025-11-14 18:00:00+00:00 3.8010523118644066
85 2025-11-14 19:00:00+00:00 0.733489476923077
86 2025-11-14 20:00:00+00:00 0.0972312
87 2025-11-14 21:00:00+00:00 3.419856
88 2025-11-14 22:00:00+00:00 6.855518057142858
89 2025-11-14 23:00:00+00:00 7.08379584
90 2025-11-15 00:00:00+00:00 6.4641984
91 2025-11-15 01:00:00+00:00 6.46956288
92 2025-11-15 02:00:00+00:00 5.25450816
93 2025-11-15 03:00:00+00:00 2.159739648
94 2025-11-15 04:00:00+00:00 4.705285423728813
95 2025-11-15 05:00:00+00:00 2.5677658285714284
96 2025-11-15 06:00:00+00:00 4.790573131034483
97 2025-11-15 07:00:00+00:00 6.766181627586207
98 2025-11-15 08:00:00+00:00 2.6117743728813556
99 2025-11-15 09:00:00+00:00 0.18909792
100 2025-11-15 10:00:00+00:00 0.017434559999999998
101 2025-11-15 11:00:00+00:00 0.10460735999999998
102 2025-11-15 12:00:00+00:00 0.0
103 2025-11-15 13:00:00+00:00 0.0
104 2025-11-15 14:00:00+00:00 1.13592864
105 2025-11-15 15:00:00+00:00 2.02911456
106 2025-11-15 16:00:00+00:00 1.0403259428571427
107 2025-11-15 17:00:00+00:00 0.0
108 2025-11-15 18:00:00+00:00 0.0
109 2025-11-15 19:00:00+00:00 0.0
110 2025-11-15 20:00:00+00:00 0.0
111 2025-11-15 21:00:00+00:00 0.0
112 2025-11-15 22:00:00+00:00 0.0
113 2025-11-15 23:00:00+00:00 0.0
114 2025-11-16 00:00:00+00:00 0.0
115 2025-11-16 01:00:00+00:00 0.0
116 2025-11-16 02:00:00+00:00 1.19530368
117 2025-11-16 03:00:00+00:00 0.85441536
118 2025-11-16 04:00:00+00:00 0.6457002146341464
119 2025-11-16 05:00:00+00:00 0.22990628571428573
120 2025-11-16 06:00:00+00:00 1.8932565735849056
121 2025-11-16 07:00:00+00:00 0.43452288
122 2025-11-16 08:00:00+00:00 1.7233392
123 2025-11-16 09:00:00+00:00 1.20432576
124 2025-11-16 10:00:00+00:00 0.0
125 2025-11-16 11:00:00+00:00 0.0
126 2025-11-16 12:00:00+00:00 0.0
127 2025-11-16 13:00:00+00:00 0.0
128 2025-11-16 14:00:00+00:00 0.0
129 2025-11-16 15:00:00+00:00 0.0
130 2025-11-16 16:00:00+00:00 0.0
131 2025-11-16 17:00:00+00:00 0.0
132 2025-11-16 18:00:00+00:00 0.0
133 2025-11-16 19:00:00+00:00 0.0
134 2025-11-16 20:00:00+00:00 0.0
135 2025-11-16 21:00:00+00:00 0.7543799999999999
136 2025-11-16 22:00:00+00:00 1.7225941333333334
137 2025-11-16 23:00:00+00:00 1.587679753846154
138 2025-11-17 00:00:00+00:00 0.6634438530612244
139 2025-11-17 01:00:00+00:00 1.9084390641509432
140 2025-11-17 02:00:00+00:00 2.4207216
141 2025-11-17 03:00:00+00:00 2.4549811200000002
142 2025-11-17 04:00:00+00:00 2.95851072
143 2025-11-17 05:00:00+00:00 4.325112
144 2025-11-17 06:00:00+00:00 3.8999769599999996
145 2025-11-17 07:00:00+00:00 1.62409632
146 2025-11-17 08:00:00+00:00 0.27627072
147 2025-11-17 09:00:00+00:00 2.118011657142857
148 2025-11-17 10:00:00+00:00 4.2714672
149 2025-11-17 11:00:00+00:00 4.55846688
150 2025-11-17 12:00:00+00:00 5.01042432
151 2025-11-17 13:00:00+00:00 5.455676159999999
152 2025-11-17 14:00:00+00:00 4.75561152
153 2025-11-17 15:00:00+00:00 1.0366857600000001
154 2025-11-17 16:00:00+00:00 1.6898112
155 2025-11-17 17:00:00+00:00 0.44153796923076927
156 2025-11-17 18:00:00+00:00 1.493471232
157 2025-11-17 19:00:00+00:00 1.6306924408163266
158 2025-11-17 20:00:00+00:00 1.0512650322580646
159 2025-11-17 21:00:00+00:00 0.7540926171428571
160 2025-11-17 22:00:00+00:00 1.09435392
161 2025-11-17 23:00:00+00:00 1.7017956765957447
162 2025-11-18 00:00:00+00:00 0.8664258976744186
163 2025-11-18 01:00:00+00:00 1.207008
164 2025-11-18 02:00:00+00:00 1.3788163459459462
165 2025-11-18 03:00:00+00:00 1.8028076936170214
166 2025-11-18 04:00:00+00:00 0.5632704
167 2025-11-18 05:00:00+00:00 0.0
168 2025-11-18 06:00:00+00:00 0.645379787755102
169 2025-11-18 07:00:00+00:00 0.64641984
170 2025-11-18 08:00:00+00:00 0.0

View File

@ -0,0 +1,119 @@
"""Jeux de paires et scénarios standardisés pour explorer les corrélations."""
from __future__ import annotations
from dataclasses import dataclass
from typing import Callable, Sequence
import numpy as np
HexbinReducer = Callable[[np.ndarray], float]
HEXBIN_REDUCE_FUNCTIONS: dict[str, HexbinReducer] = {
"mean": np.mean,
"median": np.median,
"max": np.max,
}
HEXBIN_REDUCE_LABELS: dict[str, str] = {
"mean": "moyenne",
"median": "médiane",
"max": "maximum",
}
@dataclass(frozen=True)
class HexbinScenario:
"""Décrit un cas d'usage pour un nuage hexbin coloré par une 3ᵉ variable."""
key_x: str
key_y: str
key_color: str
filename: str
description: str
reduce: str = "mean"
gridsize: int = 60
mincnt: int = 5
def get_reduce_func(self) -> HexbinReducer:
"""Retourne la fonction de réduction associée (moyenne, médiane, ...)."""
return HEXBIN_REDUCE_FUNCTIONS.get(self.reduce, np.mean)
def get_reduce_label(self) -> str:
"""Libellé français de la fonction de réduction utilisée."""
return HEXBIN_REDUCE_LABELS.get(self.reduce, self.reduce)
DEFAULT_LAGGED_PAIRS: Sequence[tuple[str, str]] = (
("temperature", "humidity"),
("temperature", "rain_rate"),
("pressure", "rain_rate"),
("pressure", "wind_speed"),
("pressure", "illuminance"),
("illuminance", "temperature"),
("humidity", "rain_rate"),
)
DEFAULT_ROLLING_PAIRS: Sequence[tuple[str, str]] = (
("temperature", "humidity"),
("pressure", "rain_rate"),
("pressure", "wind_speed"),
("illuminance", "temperature"),
("humidity", "rain_rate"),
)
DEFAULT_HEXBIN_SCENARIOS: Sequence[HexbinScenario] = (
HexbinScenario(
key_x="temperature",
key_y="humidity",
key_color="rain_rate",
filename="hexbin_temp_humidity_color_rain.png",
description=(
"Mettre en évidence comment l'humidité relative plafonne lorsque la température chute "
"et comment les épisodes de pluie se situent dans une bande restreinte."
),
reduce="max",
gridsize=50,
mincnt=8,
),
HexbinScenario(
key_x="pressure",
key_y="rain_rate",
key_color="wind_speed",
filename="hexbin_pressure_rain_color_wind.png",
description=(
"Vérifier si des rafales accompagnent vraiment les chutes de pression. "
"On s'attend à voir beaucoup de cases vides : la corrélation est loin d'être systématique."
),
reduce="median",
gridsize=45,
mincnt=5,
),
HexbinScenario(
key_x="illuminance",
key_y="humidity",
key_color="temperature",
filename="hexbin_lux_humidity_color_temp.png",
description=(
"Explorer le cycle jour/nuit : l'humidité monte quand l'illuminance chute, "
"mais cela n'implique pas toujours une baisse rapide de température."
),
reduce="mean",
gridsize=55,
mincnt=6,
),
)
__all__ = [
"HexbinScenario",
"DEFAULT_LAGGED_PAIRS",
"DEFAULT_ROLLING_PAIRS",
"DEFAULT_HEXBIN_SCENARIOS",
]

View File

@ -11,6 +11,7 @@ from .rain import plot_daily_rainfall_hyetograph, plot_rainfall_by_season
from .relationships import ( from .relationships import (
plot_event_composite, plot_event_composite,
plot_hexbin_with_third_variable, plot_hexbin_with_third_variable,
plot_pairwise_relationship_grid,
plot_scatter_pair, plot_scatter_pair,
) )
from .seasonal_profiles import ( from .seasonal_profiles import (
@ -37,6 +38,7 @@ __all__ = [
"plot_rainfall_by_season", "plot_rainfall_by_season",
"plot_event_composite", "plot_event_composite",
"plot_hexbin_with_third_variable", "plot_hexbin_with_third_variable",
"plot_pairwise_relationship_grid",
"plot_scatter_pair", "plot_scatter_pair",
"plot_daylight_hours", "plot_daylight_hours",
"plot_diurnal_cycle", "plot_diurnal_cycle",

View File

@ -21,6 +21,16 @@ def export_plot_dataset(data: Any, output_path: str | Path, *, suffix: str = ".c
output_path = Path(output_path) output_path = Path(output_path)
dataset_path = output_path.with_suffix(suffix) dataset_path = output_path.with_suffix(suffix)
# If the image is exported under a "figures" directory, keep the dataset in
# an equivalent "data" directory to avoid mixing assets.
parts = list(dataset_path.parts)
for idx, part in enumerate(parts):
if part == "figures":
parts[idx] = "data"
dataset_path = Path(*parts)
break
dataset_path.parent.mkdir(parents=True, exist_ok=True) dataset_path.parent.mkdir(parents=True, exist_ok=True)
def _normalize(value: Any, *, default_name: str = "value") -> pd.DataFrame: def _normalize(value: Any, *, default_name: str = "value") -> pd.DataFrame:

View File

@ -13,7 +13,7 @@ import pandas as pd
from .base import export_plot_dataset from .base import export_plot_dataset
from meteo.variables import Variable from meteo.variables import Variable
__all__ = ['plot_scatter_pair', 'plot_hexbin_with_third_variable', 'plot_event_composite'] __all__ = ['plot_scatter_pair', 'plot_pairwise_relationship_grid', 'plot_hexbin_with_third_variable', 'plot_event_composite']
def plot_scatter_pair( def plot_scatter_pair(
@ -193,6 +193,87 @@ def plot_scatter_pair(
return output_path.resolve() return output_path.resolve()
def plot_pairwise_relationship_grid(
df: pd.DataFrame,
variables: Sequence[Variable],
output_path: str | Path,
*,
sample_step: int = 10,
hist_bins: int = 40,
scatter_kwargs: dict | None = None,
) -> Path:
"""Trace un tableau de nuages de points exhaustif (sans doublon)."""
output_path = Path(output_path)
output_path.parent.mkdir(parents=True, exist_ok=True)
if not variables:
raise ValueError("La liste de variables ne peut pas être vide.")
columns = [v.column for v in variables]
for col in columns:
if col not in df.columns:
raise KeyError(f"Colonne absente dans le DataFrame : {col}")
df_pairs = df[columns].dropna()
if df_pairs.empty:
raise RuntimeError("Aucune ligne complète pour générer les nuages de points.")
if sample_step > 1:
df_pairs = df_pairs.iloc[::sample_step, :]
export_plot_dataset(df_pairs, output_path)
n = len(variables)
fig_size = max(3.0, 1.8 * n)
fig, axes = plt.subplots(n, n, figsize=(fig_size, fig_size), squeeze=False)
default_scatter_kwargs = {"s": 5, "alpha": 0.5}
scatter_kwargs = {**default_scatter_kwargs, **(scatter_kwargs or {})}
for row_idx, var_y in enumerate(variables):
for col_idx, var_x in enumerate(variables):
ax = axes[row_idx][col_idx]
if row_idx < col_idx:
# Triangle supérieur vide pour éviter les doublons
ax.set_visible(False)
continue
if row_idx == col_idx:
series = df_pairs[var_x.column].dropna()
if series.empty:
ax.text(0.5, 0.5, "(vide)", ha="center", va="center")
ax.set_axis_off()
else:
bins = min(hist_bins, max(5, series.nunique()))
ax.hist(series, bins=bins, color="tab:blue", alpha=0.7)
ax.set_ylabel("")
else:
ax.scatter(
df_pairs[var_x.column],
df_pairs[var_y.column],
**scatter_kwargs,
)
if row_idx == n - 1:
ax.set_xlabel(var_x.label)
else:
ax.set_xticklabels([])
if col_idx == 0:
ax.set_ylabel(var_y.label)
else:
ax.set_yticklabels([])
fig.suptitle("Matrice de corrélations simples (nuages de points)")
fig.tight_layout(rect=[0, 0, 1, 0.97])
fig.savefig(output_path, dpi=150)
plt.close(fig)
return output_path.resolve()
def plot_hexbin_with_third_variable( def plot_hexbin_with_third_variable(
df: pd.DataFrame, df: pd.DataFrame,
var_x: Variable, var_x: Variable,

View File

@ -1,128 +0,0 @@
# scripts/plot_hexbin_explorations.py
from __future__ import annotations
from pathlib import Path
from typing import Callable
import numpy as np
from meteo.dataset import load_raw_csv
from meteo.variables import VARIABLES_BY_KEY
from meteo.plots import plot_hexbin_with_third_variable
CSV_PATH = Path("data/weather_minutely.csv")
OUTPUT_DIR = Path("figures/hexbin_explorations")
REDUCE_FUNCTIONS: dict[str, Callable[[np.ndarray], float]] = {
"mean": np.mean,
"median": np.median,
"max": np.max,
}
REDUCE_LABEL_FR: dict[str, str] = {
"mean": "moyenne",
"median": "médiane",
"max": "maximum",
}
# Chaque scénario illustre soit une corrélation bien connue,
# soit l'absence de structure entre variables.
HEXBIN_SCENARIOS: list[dict[str, object]] = [
{
"x": "temperature",
"y": "humidity",
"color": "rain_rate",
"filename": "hexbin_temp_humidity_color_rain.png",
"description": (
"Mettre en évidence comment l'humidité relative plafonne lorsque la température chute "
"et comment les épisodes de pluie se situent dans une bande restreinte."
),
"reduce": "max",
"gridsize": 50,
"mincnt": 8,
},
{
"x": "pressure",
"y": "rain_rate",
"color": "wind_speed",
"filename": "hexbin_pressure_rain_color_wind.png",
"description": (
"Vérifier si des rafales accompagnent vraiment les chutes de pression. "
"On s'attend à voir beaucoup de cases vides : la corrélation est loin d'être systématique."
),
"reduce": "median",
"gridsize": 45,
"mincnt": 5,
},
{
"x": "illuminance",
"y": "humidity",
"color": "temperature",
"filename": "hexbin_lux_humidity_color_temp.png",
"description": (
"Explorer le cycle jour/nuit : l'humidité monte quand l'illuminance chute, "
"mais cela n'implique pas toujours une baisse rapide de température."
),
"reduce": "mean",
"gridsize": 55,
"mincnt": 6,
},
]
def main() -> None:
if not CSV_PATH.exists():
print(f"⚠ Fichier introuvable : {CSV_PATH}")
return
df = load_raw_csv(CSV_PATH)
print(f"Dataset minuté chargé : {CSV_PATH}")
print(f" Lignes : {len(df)}")
print(f" Colonnes : {list(df.columns)}")
print()
for scenario in HEXBIN_SCENARIOS:
key_x = scenario["x"]
key_y = scenario["y"]
key_color = scenario["color"]
var_x = VARIABLES_BY_KEY[key_x]
var_y = VARIABLES_BY_KEY[key_y]
var_color = VARIABLES_BY_KEY[key_color]
filename = scenario["filename"]
output_path = OUTPUT_DIR / filename
reduce_name = scenario.get("reduce", "mean")
reduce_func = REDUCE_FUNCTIONS.get(reduce_name, np.mean)
reduce_label = REDUCE_LABEL_FR.get(reduce_name, reduce_name)
gridsize = int(scenario.get("gridsize", 60))
mincnt = int(scenario.get("mincnt", 5))
description = scenario["description"]
print(f"→ Hexbin {var_y.key} vs {var_x.key} (couleur = {var_color.key})")
print(f" {description}")
plot_hexbin_with_third_variable(
df=df,
var_x=var_x,
var_y=var_y,
var_color=var_color,
output_path=output_path,
gridsize=gridsize,
mincnt=mincnt,
reduce_func=reduce_func,
reduce_func_label=reduce_label,
cmap="magma",
)
print(f" ✔ Graphique enregistré : {output_path}")
print()
print("✔ Tous les graphiques hexbin ont été générés.")
if __name__ == "__main__":
main()

View File

@ -36,7 +36,7 @@ def main() -> None:
print() print()
if "season" not in df.columns: if "season" not in df.columns:
print("⚠ La colonne 'season' est absente. Relancez scripts.make_minutely_dataset.") print('⚠ La colonne "season" est absente. Relancez python "docs/02 - Préparation des données/scripts/make_minutely_dataset.py".')
return return
OUTPUT_DIR.mkdir(parents=True, exist_ok=True) OUTPUT_DIR.mkdir(parents=True, exist_ok=True)

View File

@ -4,78 +4,124 @@ from __future__ import annotations
import argparse import argparse
import subprocess import subprocess
import sys import sys
from dataclasses import dataclass
from pathlib import Path
from typing import Iterable from typing import Iterable
PLOT_MODULES: tuple[str, ...] = ( PROJECT_ROOT = Path(__file__).resolve().parents[1]
"scripts.plot_basic_variables",
"scripts.plot_calendar_overview",
"scripts.plot_all_pairwise_scatter", @dataclass(frozen=True)
"scripts.plot_correlation_heatmap", class PlotScript:
"scripts.plot_diurnal_cycle", key: str
"scripts.plot_hexbin_explorations", path: Path
"scripts.plot_illuminance_focus",
"scripts.plot_lagged_correlations", def display_path(self) -> str:
"scripts.plot_monthly_patterns", try:
"scripts.plot_rain_event_composites", return str(self.path.relative_to(PROJECT_ROOT))
"scripts.plot_rain_hyetograph", except ValueError:
"scripts.plot_rolling_correlation_heatmap", return str(self.path)
"scripts.plot_seasonal_overview",
"scripts.plot_sun_elevation_relationships",
"scripts.plot_wind_conditionals", PLOT_SCRIPTS: tuple[PlotScript, ...] = (
"scripts.plot_wind_rose", PlotScript(
"scripts.plot_wind_rose_rain", "plot_basic_variables",
PROJECT_ROOT / "docs" / "03 - Premiers graphiques" / "scripts" / "plot_basic_variables.py",
),
PlotScript("plot_calendar_overview", PROJECT_ROOT / "scripts" / "plot_calendar_overview.py"),
PlotScript(
"plot_all_pairwise_scatter",
PROJECT_ROOT / "docs" / "04 - Corrélations binaires" / "scripts" / "plot_all_pairwise_scatter.py",
),
PlotScript(
"plot_correlation_heatmap",
PROJECT_ROOT / "docs" / "04 - Corrélations binaires" / "scripts" / "plot_correlation_heatmap.py",
),
PlotScript("plot_diurnal_cycle", PROJECT_ROOT / "scripts" / "plot_diurnal_cycle.py"),
PlotScript("plot_illuminance_focus", PROJECT_ROOT / "scripts" / "plot_illuminance_focus.py"),
PlotScript(
"plot_hexbin_explorations",
PROJECT_ROOT / "docs" / "06 - Corrélations multiples" / "scripts" / "plot_hexbin_explorations.py",
),
PlotScript("plot_monthly_patterns", PROJECT_ROOT / "scripts" / "plot_monthly_patterns.py"),
PlotScript("plot_rain_event_composites", PROJECT_ROOT / "scripts" / "plot_rain_event_composites.py"),
PlotScript("plot_rain_hyetograph", PROJECT_ROOT / "scripts" / "plot_rain_hyetograph.py"),
PlotScript(
"plot_lagged_correlations",
PROJECT_ROOT / "docs" / "05 - Corrélations binaires avancées" / "scripts" / "plot_lagged_correlations.py",
),
PlotScript(
"plot_rolling_correlation_heatmap",
PROJECT_ROOT / "docs" / "05 - Corrélations binaires avancées" / "scripts" / "plot_rolling_correlation_heatmap.py",
),
PlotScript("plot_seasonal_overview", PROJECT_ROOT / "scripts" / "plot_seasonal_overview.py"),
PlotScript(
"plot_sun_elevation_relationships",
PROJECT_ROOT / "scripts" / "plot_sun_elevation_relationships.py",
),
PlotScript("plot_wind_conditionals", PROJECT_ROOT / "scripts" / "plot_wind_conditionals.py"),
PlotScript("plot_wind_rose", PROJECT_ROOT / "scripts" / "plot_wind_rose.py"),
PlotScript("plot_wind_rose_rain", PROJECT_ROOT / "scripts" / "plot_wind_rose_rain.py"),
) )
def _normalize_module(name: str) -> str: def _normalize_key(name: str) -> str:
name = name.strip() normalized = name.strip()
if not name: if not normalized:
raise ValueError("Nom de module vide.") raise ValueError("Nom de script vide.")
return name if name.startswith("scripts.") else f"scripts.{name}" if normalized.startswith("scripts."):
normalized = normalized.split(".", 1)[1]
return normalized
def iter_modules(selected: Iterable[str] | None) -> list[str]: def iter_scripts(selected: Iterable[str] | None) -> list[PlotScript]:
if not selected: if not selected:
return list(PLOT_MODULES) return list(PLOT_SCRIPTS)
normalized = [_normalize_module(name) for name in selected] mapping = {script.key: script for script in PLOT_SCRIPTS}
modules: list[str] = [] normalized = [_normalize_key(name) for name in selected]
scripts: list[PlotScript] = []
missing: list[str] = [] missing: list[str] = []
for module in normalized: for key in normalized:
if module in PLOT_MODULES: script = mapping.get(key)
modules.append(module) if script is None:
missing.append(key)
else: else:
missing.append(module) scripts.append(script)
if missing: if missing:
available = "\n - ".join(("",) + PLOT_MODULES) available = "\n - ".join(("",) + tuple(script.key for script in PLOT_SCRIPTS))
missing_list = "\n - ".join(("",) + tuple(missing)) missing_list = "\n - ".join(("",) + tuple(missing))
raise SystemExit( raise SystemExit(
"\n".join( "\n".join(
[ [
"Les modules suivants ne sont pas reconnus :", "Les scripts suivants ne sont pas reconnus :",
missing_list, missing_list,
"", "",
"Modules disponibles :", "Scripts disponibles :",
available, available,
] ]
) )
) )
return modules return scripts
def run_module(module: str) -> bool: def run_script(script: PlotScript) -> bool:
cmd = [sys.executable, "-m", module] if not script.path.exists():
print(f"\n=== {module} ===") print(f"✘ Script introuvable : {script.display_path()}")
return False
cmd = [sys.executable, str(script.path)]
print(f"\n=== {script.key} ({script.display_path()}) ===")
result = subprocess.run(cmd, check=False) result = subprocess.run(cmd, check=False)
if result.returncode == 0: if result.returncode == 0:
print(f"{module} terminé avec succès.") print(f"{script.key} terminé avec succès.")
return True return True
print(f"{module} a échoué (code {result.returncode}).") print(f"{script.key} a échoué (code {result.returncode}).")
return False return False
@ -84,21 +130,21 @@ def main(argv: list[str] | None = None) -> int:
parser.add_argument( parser.add_argument(
"--only", "--only",
nargs="*", nargs="*",
help="Limiter l'exécution à certains modules (ex: plot_temperature).", help="Limiter l'exécution à certains scripts (ex: plot_temperature).",
) )
args = parser.parse_args(argv) args = parser.parse_args(argv)
modules = iter_modules(args.only) scripts = iter_scripts(args.only)
print(f"Exécution de {len(modules)} script(s) de tracé…") print(f"Exécution de {len(scripts)} script(s) de tracé…")
success_count = 0 success_count = 0
for module in modules: for script in scripts:
if run_module(module): if run_script(script):
success_count += 1 success_count += 1
print() print()
print(f"Scripts réussis : {success_count}/{len(modules)}") print(f"Scripts réussis : {success_count}/{len(scripts)}")
failed = len(modules) - success_count failed = len(scripts) - success_count
if failed: if failed:
print(f"{failed} script(s) ont échoué. Consultez les messages ci-dessus.") print(f"{failed} script(s) ont échoué. Consultez les messages ci-dessus.")
return 1 return 1