Penterjemah| Bugatti
Pengulas| untuk mendapatkan data siri masa daripada OpenWeatherMap API dan menukarnya menjadi Pandas DataFrame. Seterusnya, kami akan menggunakan Pelanggan Python InfluxDB untuk menulis data ini ke platform data siri masa InfluxDB.
Kami akan menukar respons JSON daripada panggilan API kepada Pandas DataFrame kerana ini adalah cara paling mudah untuk menulis data ke InfluxDB. Memandangkan InfluxDB ialah pangkalan data yang dibina khas, penulisan kami kepada InfluxDB direka bentuk untuk memenuhi keperluan tinggi dari segi pengambilan data siri masa. KeperluanTutorial ini dilengkapkan pada sistem macOS dengan Python 3 dipasang melalui Homebrew. Adalah disyorkan untuk memasang alat tambahan, seperti virtualenv, pyenv atau conda-env, untuk memudahkan pemasangan Python dan Klien. Keperluan penuh ada di sini:Tutorial ini juga mengandaikan bahawa anda telah membuat akaun awan InfluxDB Peringkat Percuma atau sedang menggunakan InfluxDB OSS, dan anda juga mempunyai:
txt influxdb-client=1.30.0 pandas=1.4.3 requests>=2.27.1
Mencipta baldi . Anda boleh menganggap baldi sebagai tahap tertinggi organisasi data dalam pangkalan data atau InfluxDB.
Tukar data kepada Pandas DataFrame
# 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']
Menulis Pandas DataFrame ke InfluxDB
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)
Skrip Penuh
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")
Badi InfluxDB
Mencari data
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")
Rajah 1. Paparan lalai terwujud data cuaca. InfluxDB mengagregatkan data siri masa secara automatik supaya pengguna baharu tidak menanyakan terlalu banyak data secara tidak sengaja dan menyebabkan tamat masa
Petua Pro: Apabila anda menanya data menggunakan pembina pertanyaan, InfluxDB menurunkan sampel data secara automatik. Untuk menanyakan data mentah, navigasi ke Editor Skrip untuk melihat pertanyaan Fluks yang mendasari. Flux ialah bahasa pertanyaan dan skrip asli untuk InfluxDB yang boleh digunakan untuk menganalisis dan membuat ramalan menggunakan data siri masa anda. Gunakan fungsi aggregateWindow() untuk menyahkomen atau memadamkan baris untuk melihat data asal.Rajah 2. Navigasi ke editor skrip dan nyahkomen atau padam fungsi aggregateWindow() untuk melihat data cuaca mentah
Semoga artikel ini membantu anda memanfaatkan InfluxDB sepenuhnya Pustaka Pelanggan Python, memperoleh data siri masa dan menyimpannya dalam InfluxDB. Jika anda ingin mengetahui lebih lanjut tentang menggunakan perpustakaan Klien Python untuk menanyakan data daripada InfluxDB, saya syorkan anda melihat artikel ini (https://thenewstack.io/getting-started-with-python-and-influxdb/). Perlu juga dinyatakan bahawa anda boleh menggunakan Flux untuk mendapatkan data daripada OpenWeatherMap API dan menyimpannya ke dalam InfluxDB. Jika anda menggunakan InfluxDB Cloud, ini bermakna skrip Flux akan dihoskan dan dilaksanakan secara berkala, supaya anda boleh mendapatkan aliran data cuaca yang boleh dipercayai yang dimasukkan ke dalam contoh. Untuk mengetahui lebih lanjut tentang cara menggunakan Flux untuk mendapatkan data cuaca pada jadual yang ditentukan pengguna, sila baca artikel ini (https://www.influxdata.com/blog/tldr-influxdb-tech-tips-handling-json-objects- pemetaan- tatasusunan/?utm_source=vendor&utm_medium=referral&utm_campaign=2022-07_spnsr-ctn_obtaining-storing-ts-pything_tns).
Atas ialah kandungan terperinci Dapatkan dan simpan data siri masa dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!