Übersetzer |. Bugatti
Reviewer |. In diesem Tutorial erfahren Sie, wie Sie mit Python Zeitreihendaten von der OpenWeatherMap-API abrufen und in einen Pandas DataFrame konvertieren. Als Nächstes verwenden wir den InfluxDB-Python-Client, um diese Daten in die Zeitreihen-Datenplattform InfluxDB zu schreiben.
Wir werden die JSON-Antwort vom API-Aufruf in einen Pandas DataFrame konvertieren, da dies der einfachste Weg ist, Daten in InfluxDB zu schreiben. Da es sich bei InfluxDB um eine speziell entwickelte Datenbank handelt, sind unsere Schreibvorgänge in InfluxDB darauf ausgelegt, die hohen Anforderungen hinsichtlich der Aufnahme von Zeitreihendaten zu erfüllen. AnforderungenDieses Tutorial wird auf einem macOS-System durchgeführt, auf dem Python 3 über Homebrew installiert ist. Es wird empfohlen, zusätzliche Tools wie virtualenv, pyenv oder conda-env zu installieren, um die Installation von Python und Client zu vereinfachen. Vollständige Anforderungen hier:txt influxdb-client=1.30.0 pandas=1.4.3 requests>=2.27.1
den Bucket erstellt haben. Sie können sich Buckets als die höchste Ebene der Datenorganisation in einer Datenbank oder InfluxDB vorstellen.
# Get time series data from OpenWeatherMap API params = {'lat':openWeatherMap_lat, 'lon':openWeatherMap_lon, 'exclude': "minutely,daily", 'appid':openWeatherMap_token} r = requests.get(openWeather_url, params = params).json() hourly = r['hourly']
python # Convert data to Pandas DataFrame and convert timestamp to datetime object df = pd.json_normalize(hourly) df = df.drop(columns=['weather', 'pop']) df['dt'] = pd.to_datetime(df['dt'], unit='s') print(df.head)
on # Write data to InfluxDB with InfluxDBClient(url=url, token=token, org=org) as client: df = df client.write_api(write_options=SYNCHRONOUS).write(bucket=bucket,record=df, data_frame_measurement_name="weather", data_frame_timestamp_column="dt")
InfluxDB-Bucket
python import requests import influxdb_client import pandas as pd from influxdb_client import InfluxDBClient from influxdb_client.client.write_api import SYNCHRONOUS bucket = "OpenWeather" org = "" # or email you used to create your Free Tier InfluxDB Cloud account token = " url = "" # for example, https://us-west-2-1.aws.cloud2.influxdata.com/ openWeatherMap_token = "" openWeatherMap_lat = "33.44" openWeatherMap_lon = "-94.04" openWeather_url = "https://api.openweathermap.org/data/2.5/onecall" # Get time series data from OpenWeatherMap API params = {'lat':openWeatherMap_lat, 'lon':openWeatherMap_lon, 'exclude': "minutely,daily", 'appid':openWeatherMap_token} r = requests.get(openWeather_url, params = params).json() hourly = r['hourly'] # Convert data to Pandas DataFrame and convert timestamp to datetime object df = pd.json_normalize(hourly) df = df.drop(columns=['weather', 'pop']) df['dt'] = pd.to_datetime(df['dt'], unit='s') print(df.head) # Write data to InfluxDB with InfluxDBClient(url=url, token=token, org=org) as client: df = df client.write_api(write_options=SYNCHRONOUS).write(bucket=bucket,record=df, data_frame_measurement_name="weather", data_frame_timestamp_column="dt")
Abbildung 1. Standardmäßige materialisierte Ansicht von Wetterdaten. InfluxDB aggregiert Zeitreihendaten automatisch, damit neue Benutzer nicht versehentlich zu viele Daten abfragen und Zeitüberschreitungen verursachen
Profi-Tipp: Wenn Sie Daten mit dem Abfrage-Builder abfragen, führt InfluxDB automatisch ein Downsampling der Daten durch. Um Rohdaten abzufragen, navigieren Sie zum Skripteditor, um die zugrunde liegende Flux-Abfrage anzuzeigen. Flux ist eine native Abfrage- und Skriptsprache für InfluxDB, mit der Sie Ihre Zeitreihendaten analysieren und Vorhersagen erstellen können. Verwenden Sie die Funktion „aggregatWindow()“, um Zeilen zu kommentieren oder zu löschen und die Originaldaten anzuzeigen.Abbildung 2. Navigieren Sie zum Skripteditor und entfernen Sie das Kommentarzeichen oder löschen Sie die Funktion „aggregatWindow()“, um die rohen Wetterdaten anzuzeigen Speichern Sie es in InfluxDB. Wenn Sie mehr über die Verwendung der Python-Client-Bibliothek zum Abfragen von Daten aus InfluxDB erfahren möchten, empfehle ich Ihnen einen Blick auf diesen Artikel (https://thenewstack.io/getting-started-with-python-and-influxdb/). Erwähnenswert ist auch, dass Sie Flux verwenden können, um Daten von der OpenWeatherMap-API abzurufen und in InfluxDB zu speichern. Wenn Sie InfluxDB Cloud verwenden, bedeutet dies, dass das Flux-Skript regelmäßig gehostet und ausgeführt wird, sodass Sie einen zuverlässigen Strom von Wetterdaten in die Instanz einspeisen können. Um mehr darüber zu erfahren, wie Sie mit Flux Wetterdaten nach einem benutzerdefinierten Zeitplan abrufen können, lesen Sie bitte diesen Artikel (https://www.influxdata.com/blog/tldr-influxdb-tech-tips-handling-json-objects- (mapping- arrays/?utm_source=vendor&utm_medium=referral&utm_campaign=2022-07_spnsr-ctn_obtaining-storing-ts-pything_tns).
Das obige ist der detaillierte Inhalt vonErhalten und speichern Sie Zeitreihendaten mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!