Wie man historische Bodentemperaturdaten in Python mit pandas und OpenMeteo abruft
English
Deutsch
soil_temperature_openmeteo.py
import openmeteo_requests
import requests_cache
import pandas as pd
from retry_requests import retry
# Open-Meteo-API-Client mit Cache und Wiederholung bei Fehler einrichten
cache_session = requests_cache.CachedSession('.cache', expire_after = 3600)
retry_session = retry(cache_session, retries = 5, backoff_factor = 0.2)
openmeteo = openmeteo_requests.Client(session = retry_session)
# Stellen Sie sicher, dass alle erforderlichen Wettervariablen hier aufgelistet sind
# Die Reihenfolge der Variablen in hourly oder daily ist wichtig, um sie unten korrekt zuzuordnen
url = "https://archive-api.open-meteo.com/v1/era5"
params = {
'latitude': 48.1351, # Breitengrad von München
'longitude': 11.5820, # Längengrad von München
'start_date': '2023-04-01',
'end_date': '2024-05-16',
"hourly": "soil_temperature_7_to_28cm"
}
responses = openmeteo.weather_api(url, params=params)
# Ersten Standort verarbeiten. For-Schleife für mehrere Standorte oder Wettermodelle hinzufügen
response = responses[0]
print(f"Coordinates {response.Latitude()}°N {response.Longitude()}°E")
print(f"Elevation {response.Elevation()} m asl")
print(f"Timezone {response.Timezone()} {response.TimezoneAbbreviation()}")
print(f"Timezone difference to GMT+0 {response.UtcOffsetSeconds()} s")
# Stündliche Daten verarbeiten. Die Reihenfolge der Variablen muss mit der angeforderten übereinstimmen.
hourly = response.Hourly()
hourly_soil_temperature = hourly.Variables(0).ValuesAsNumpy()
hourly_data = {"date": pd.date_range(
start = pd.to_datetime(hourly.Time(), unit = "s", utc = True),
end = pd.to_datetime(hourly.TimeEnd(), unit = "s", utc = True),
freq = pd.Timedelta(seconds = hourly.Interval()),
inclusive = "left"
)}
hourly_data["soil_temperature"] = hourly_soil_temperature
hourly_dataframe = pd.DataFrame(data = hourly_data)
print(hourly_dataframe)
hourly_dataframe.set_index("date", inplace = True)
hourly_dataframe.plot()If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow