Jadual Kandungan
Kesimpulan
Rumah pembangunan bahagian belakang Tutorial Python Dapatkan dan simpan data siri masa dengan Python

Dapatkan dan simpan data siri masa dengan Python

Apr 11, 2023 pm 07:30 PM
python data siri masa

Dapatkan dan simpan data siri masa dengan Python

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.

Keperluan

Tutorial 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
Salin selepas log masuk

Mencipta baldi . Anda boleh menganggap baldi sebagai tahap tertinggi organisasi data dalam pangkalan data atau InfluxDB.

    Token dicipta.
  • Akhir sekali, tutorial ini memerlukan anda telah membuat akaun dengan OpenWeatherMap dan mencipta token.
Minta data cuaca

Pertama, kami perlu meminta data tersebut. Kami akan menggunakan perpustakaan permintaan untuk mengembalikan data cuaca setiap jam daripada longitud dan latitud yang ditentukan melalui OpenWeatherMap API.

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']
Salin selepas log masuk
Seterusnya, tukar data JSON kepada Pandas DataFrame. Kami juga menukar cap masa daripada cap masa Unix ketepatan kedua kepada objek datetime. Penukaran ini dilakukan kerana kaedah tulis InfluxDB memerlukan cap waktu dalam format objek datetime. Seterusnya, kami akan menggunakan kaedah ini untuk menulis data ke InfluxDB. Kami juga mengalih keluar lajur yang kami tidak mahu ditulis kepada InfluxDB.

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)
Salin selepas log masuk
Sekarang buat contoh untuk perpustakaan klien Python InfluxDB dan tulis DataFrame ke InfluxDB. Kami menyatakan nama ukuran. Pengukuran mengandungi data dalam baldi. Anda boleh menganggapnya sebagai struktur tahap kedua tertinggi dalam organisasi data InfluxDB selepas baldi.

Anda juga boleh menentukan lajur yang hendak ditukar kepada teg menggunakan parameter data_frame__tag_columns.

Memandangkan kami tidak menentukan sebarang lajur sebagai label, semua lajur kami akan ditukar menjadi medan dalam InfluxDB. Teg digunakan untuk menulis metadata tentang data siri masa anda, yang boleh digunakan untuk menanya subset data dengan lebih cekap. Medan ialah tempat anda menyimpan data siri masa sebenar dalam InfluxDB. Dokumen ini (https://docs.influxdata.com/influxdb/cloud/reference/key-concepts/?utm_source=vendor&utm_medium=referral&utm_campaign=2022-07_spnsr-ctn_obtaining-storing-ts-pything_tns) menerangkan dengan lebih terperinci tentang konsep data ini .

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")
Salin selepas log masuk
Untuk imbas kembali, apa kata lihat skrip lengkapnya. Kami mengambil langkah berikut:

1.

2. Kumpul yang berikut:

Badi InfluxDB

    Organisasi InfluxDB
  • Token InfluxDB
  • URL InfluxDB
  • URL OpenWeatherMap
  • Token OpenWeatherMap
  • 3. Buat permintaan.
4. Tukar respons JSON kepada Pandas DataFrame.

5. Padamkan mana-mana lajur yang anda tidak mahu tulis ke InfluxDB.

6. Tukar lajur cap masa daripada masa Unix kepada objek masa tarikh Pandas.

7. Buat contoh untuk pustaka Pelanggan Python InfluxDB.

8 Tulis DataFrame dan nyatakan nama ukuran dan lajur cap masa.

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")
Salin selepas log masuk
Sekarang kami telah menulis data ke InfluxDB, kami boleh menggunakan UI InfluxDB untuk menanyakan data. Navigasi ke Penjelajah Data (dari bar navigasi kiri). Menggunakan Pembina Pertanyaan, pilih data yang anda mahu gambarkan dan julat yang anda mahu gambarkan, dan klik Serah.

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 Dapatkan dan simpan data siri masa dengan Python

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

Kesimpulan

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengintegrasikan perkhidmatan Node.js atau Python dengan cekap di bawah seni bina lampu? Bagaimana untuk mengintegrasikan perkhidmatan Node.js atau Python dengan cekap di bawah seni bina lampu? Apr 01, 2025 pm 02:48 PM

Ramai pemaju laman web menghadapi masalah mengintegrasikan perkhidmatan node.js atau python di bawah seni bina lampu: lampu sedia ada (Linux Apache MySQL PHP) Laman web seni bina memerlukan ...

Apakah sebabnya mengapa fail penyimpanan berterusan saluran paip tidak dapat ditulis apabila menggunakan crawler scapy? Apakah sebabnya mengapa fail penyimpanan berterusan saluran paip tidak dapat ditulis apabila menggunakan crawler scapy? Apr 01, 2025 pm 04:03 PM

Apabila menggunakan crawler scapy, sebab mengapa fail penyimpanan berterusan paip tidak boleh ditulis? Perbincangan Ketika belajar menggunakan Crawler Scapy untuk Crawler Data, anda sering menemui ...

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Apakah sebabnya mengapa Pool Proses Python mengendalikan permintaan TCP serentak dan menyebabkan pelanggan terjebak? Apakah sebabnya mengapa Pool Proses Python mengendalikan permintaan TCP serentak dan menyebabkan pelanggan terjebak? Apr 01, 2025 pm 04:09 PM

Proses Python Pool mengendalikan permintaan TCP serentak yang menyebabkan pelanggan terjebak. Apabila menggunakan Python untuk pengaturcaraan rangkaian, adalah penting untuk mengendalikan permintaan TCP serentak dengan cekap. …

Bagaimana untuk melihat fungsi asal yang terkandung secara dalaman oleh python funcools.partial Object? Bagaimana untuk melihat fungsi asal yang terkandung secara dalaman oleh python funcools.partial Object? Apr 01, 2025 pm 04:15 PM

Sangat meneroka kaedah tontonan python funcools.partial Object in Funcools.Partial Menggunakan Python ...

Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Apr 01, 2025 pm 05:24 PM

Pilihan Perpustakaan Pembangunan Aplikasi Desktop Python Python Banyak pemaju Python ingin membangunkan aplikasi desktop yang boleh dijalankan pada kedua-dua sistem Windows dan Linux ...

Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Apr 01, 2025 pm 06:27 PM

Bermula dengan Python: Lukisan Grafik Hourglass dan Pengesahan Input Artikel ini akan menyelesaikan masalah definisi berubah -ubah yang dihadapi oleh pemula python dalam program lukisan grafik Hourglass. Kod ...

See all articles