Plot deret waktu bulanan dengan python

Dalam tutorial ini kita akan melakukan beberapa visualisasi eksplorasi dasar dan analisis data deret waktu. Kita akan belajar cara membuat objek

with open("omni2_all_years.dat") as f:
    print(f.readline())
_2 dari file data input, memplot isinya dengan berbagai cara, bekerja dengan resampling dan perhitungan rolling, dan mengidentifikasi korelasi dan periodisitas

Untuk menyelesaikan tutorial, Anda memerlukan lingkungan Python dengan versi terbaru

with open("omni2_all_years.dat") as f:
    print(f.readline())
3 (Saya menggunakan v0. 23. 4). Saya sangat menyarankan menggunakan Jupyter untuk jenis pekerjaan ini - Anda dapat membaca lebih lanjut tentang Jupyter di sini

Jika Anda belum terbiasa dengan

with open("omni2_all_years.dat") as f:
    print(f.readline())
3 maka Anda mungkin ingin memulai dengan tutorial kami sebelumnya tetapi Anda akan baik-baik saja jika Anda memahami konsep kerangka data. Ini juga akan membantu jika Anda sudah terbiasa dengan modul
with open("omni2_all_years.dat") as f:
    print(f.readline())
5

Pekerjaan kuantitatif sering melibatkan bekerja dengan data deret waktu dalam berbagai penyamaran. Deret waktu adalah urutan data yang terurut yang biasanya menunjukkan bagaimana beberapa kuantitas berubah dari waktu ke waktu. Contoh besaran tersebut dapat berupa pengukuran frekuensi tinggi dari seismometer selama beberapa hari, hingga rata-rata suhu tahunan yang diukur di berbagai lokasi dalam satu abad, hingga perubahan populasi spesies yang berbeda, tetapi kita dapat menggunakan perangkat lunak yang sama untuk bekerja dengannya.

Dalam Python, sangat populer untuk menggunakan paket

with open("omni2_all_years.dat") as f:
    print(f.readline())
3 untuk bekerja dengan deret waktu. Ini menawarkan rangkaian alat canggih yang dioptimalkan yang dapat menghasilkan analisis berguna hanya dalam beberapa baris kode. Objek
with open("omni2_all_years.dat") as f:
    print(f.readline())
2 dapat berisi beberapa kuantitas, yang masing-masing dapat diekstraksi sebagai objek
with open("omni2_all_years.dat") as f:
    print(f.readline())
8 individu, dan objek ini memiliki sejumlah metode yang berguna khusus untuk bekerja dengan data deret waktu

Pertama impor paket yang akan kita gunakan

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Tutorial ini akan menggunakan dataset heliofisika sebagai contoh yang berisi rentang pengukuran yang berbeda. Versi dataset yang akan kami gunakan tersedia sebagai file teks mentah dan berisi pengukuran per jam dari awal tahun 1963 dan seterusnya. Jenis file ini (biasanya

with open("omni2_all_years.dat") as f:
    print(f.readline())
_9,
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
0, atau
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
1) adalah yang paling tidak canggih dan bukan solusi yang tepat untuk kumpulan data yang lebih besar tetapi tidak apa-apa di sini (ukuran file sekitar 150MB) - kumpulan data besar/baru akan sering menggunakan format seperti HDF atau NetCDF.
with open("omni2_all_years.dat") as f:
    print(f.readline())
3 berisi serangkaian alat IO untuk berbagai format - lihat di sini jika Anda ingin membaca atau menulis kumpulan data

Pada Agustus 2019, NASA mengubah protokol akses datanya, sehingga tautan ftp dan kode di bawah ini tidak berfungsi. Untuk mengakses data dan melanjutkan tutorial, kami mengusulkan solusi berikut

[ABAIKAN BIT INI. ]

Unduh dataset dari ftp. //spdf. gsfc. nasa. gov/pub/data/omni/low_res_omni/omni2_all_years. dat dan lihat deskripsi yang menyertainya. ftp. //spdf. gsfc. nasa. gov/pub/data/omni/low_res_omni/omni2. tex Cari

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
3 untuk melihat daftar kolom yang terdapat dalam kumpulan data. Ini cukup rumit. tapi kami hanya akan menggunakan beberapa kolom

  • kolom 1, 2, 3 memberikan tahun, hari dalam setahun (DOY), dan jam dalam setiap pengukuran
  • kolom 40. nomor bintik matahari (R) - jumlah bintik di permukaan Matahari, menunjukkan seberapa aktifnya
  • kolom 41. indeks Dst - indeks aktivitas magnetik per jam yang diukur di permukaan bumi, dalam nT
  • kolom 51. F10. 7 indeks - fluks radio pada 10. 7cm (saya. e. seberapa terang Matahari pada panjang gelombang itu), dalam "satuan fluks matahari" (sfu)

Kami akan menyelidiki data ini untuk melihat apakah ada hubungan antara kondisi di Matahari (R dan Dst), dan kondisi magnetik di Bumi (Dst)

NB. jika Anda menggunakan notebook Jupyter, Anda dapat mengunduh file dengan (kode ini tidak akan berfungsi sekarang karena perubahan akses ftp NASA)

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 

Lihat sekilas baris pertama file data

with open("omni2_all_years.dat") as f:
    print(f.readline())

Anda harus melihat sesuatu seperti

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
_

Ini adalah file yang sangat tidak bersahabat dengan nama kolom yang dijelaskan di file lain, jadi kami harus melakukan pekerjaan hati-hati untuk memuat data dan memastikan kami tahu apa itu. Beberapa panda ajaib untuk memuatnya adalah ini (ada juga cara lain)

df = pd.read_csv("omni2_all_years.dat",
                 delim_whitespace=True,
                 usecols=[0, 1, 2, 39, 40, 50],
                 names=["Year", "DOY", "Hour", "R", "Dst", "F10.7"])

Kami menentukan bahwa kolom dibatasi oleh spasi putih, kolom yang ingin kami ekstrak (ingat bahwa kami menghitung dari 0, bukan 1), dan nama yang akan ditetapkan untuknya. Kami sekarang telah membuat kerangka data,

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
4. Lihatlah bagian atasnya dengan
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
5. Seharusnya terlihat seperti

   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9

Sekarang kami telah memuat data, kami ingin memperbaikinya sedikit agar lebih berguna. Pertama kita akan mengubah indeks dari keadaan saat ini sebagai urutan bilangan bulat ke

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
6 yang lebih fungsional yang didasarkan pada objek Python
with open("omni2_all_years.dat") as f:
    print(f.readline())
5,

Kami menggunakan fungsi

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
8 untuk membuat indeks baru dari kolom "Tahun", "DOY", dan "Jam", lalu menetapkannya langsung ke properti
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
9 dari
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
4, lalu jatuhkan kolom yang tidak dibutuhkan

df.index = pd.to_datetime(df["Year"] * 100000 + df["DOY"] * 100 + df["Hour"], format="%Y%j%H")
df = df.drop(columns=["Year", "DOY", "Hour"])

df = pd.read_csv("omni2_all_years.dat",
                 delim_whitespace=True,
                 usecols=[0, 1, 2, 39, 40, 50],
                 names=["Year", "DOY", "Hour", "R", "Dst", "F10.7"])
1 menggabungkan kolom menjadi satu kolom angka dengan lebar tetap mengikuti pola
df = pd.read_csv("omni2_all_years.dat",
                 delim_whitespace=True,
                 usecols=[0, 1, 2, 39, 40, 50],
                 names=["Year", "DOY", "Hour", "R", "Dst", "F10.7"])
2 yang dapat diuraikan oleh penentu format
df = pd.read_csv("omni2_all_years.dat",
                 delim_whitespace=True,
                 usecols=[0, 1, 2, 39, 40, 50],
                 names=["Year", "DOY", "Hour", "R", "Dst", "F10.7"])
3.
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
_5 seharusnya sekarang ditampilkan

                      R  Dst  F10.7
1963-01-01 00:00:00  33   -6  999.9
1963-01-01 01:00:00  33   -5  999.9
1963-01-01 02:00:00  33   -5  999.9
1963-01-01 03:00:00  33   -3  999.9
1963-01-01 04:00:00  33   -3  999.9

Saat bekerja dengan data lain, Anda perlu menemukan cara yang tepat untuk membuat indeks dari stempel waktu di data Anda, tetapi

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
_8 akan sering membantu. Sekarang kami menggunakan
df = pd.read_csv("omni2_all_years.dat",
                 delim_whitespace=True,
                 usecols=[0, 1, 2, 39, 40, 50],
                 names=["Year", "DOY", "Hour", "R", "Dst", "F10.7"])
_6, kami memiliki akses ke sejumlah fungsi khusus deret waktu dalam
with open("omni2_all_years.dat") as f:
    print(f.readline())
3

Dalam kumpulan data ini, celah data telah diisi dengan angka 9. Kita dapat mengganti kejadian ini dengan NaN

df = df.replace({"R":999,
                 "Dst":99999,
                 "F10.7":999.9}, np.nan)

Kita seharusnya sekarang

                      R  Dst  F10.7
1963-01-01 00:00:00  33   -6    NaN
1963-01-01 01:00:00  33   -5    NaN
1963-01-01 02:00:00  33   -5    NaN
1963-01-01 03:00:00  33   -3    NaN
1963-01-01 04:00:00  33   -3    NaN

Merupakan praktik yang baik untuk melakukan beberapa pemeriksaan pada data. Misalnya, apakah data benar-benar diambil sampelnya setiap jam?

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
0

Ini memberitahu kita bahwa ada jumlah rekaman yang sama dalam kumpulan data dengan jumlah jam antara pengambilan sampel pertama dan terakhir. Kami berurusan dengan lebih dari 55 tahun sampel per jam yang menghasilkan sekitar setengah juta rekaman

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
1

NB. Baris terakhir menggunakan "f-strings" yang baru di Python 3. 6. Cara lama, dan lebih tua, untuk melakukan ini adalah

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
2

Data sekarang harus dalam format "siap analisis" dan kita harus mulai memeriksanya. Mari kita mulai dengan menggunakan metode ________16______8. Coba masing-masing berikut dan bandingkan apa yang Anda dapatkan

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
3

Ini dengan cepat mencapai empat plot berbeda

  1. Merencanakan semua deret waktu pada satu sumbu
  2. Merencanakan semuanya pada subplot terpisah untuk melihatnya lebih jelas (berbagi sumbu x)
  3. Merencanakan pilihan kolom
  4. Merencanakan dua variabel terhadap salah satu variabel lainnya

Sekarang Anda bisa mulai merasakan datanya. F10. 7 dan R terlihat berkorelasi dengan baik, masing-masing dengan 5 puncak berjarak sama dari waktu ke waktu. Ada banyak noise di semua pengukuran, dan sulit untuk melihat hubungannya dengan Dst. Jadi apa yang bisa kita lakukan untuk melihat lebih dalam tren dan hubungan?

Plot deret waktu bulanan dengan python

Untuk mengurangi noise pada data, kita bisa menghaluskannya. Ada berbagai cara untuk melakukan ini dan karenanya ada pilihan yang harus dibuat tentang metode yang digunakan dan tingkat penghalusan yang diperlukan.

with open("omni2_all_years.dat") as f:
    print(f.readline())
3 menawarkan cara mudah untuk mengurangi irama data dengan melakukan resampling dengan metode
   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9
0

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
4

Plot deret waktu bulanan dengan python

Di sini kami telah mengekstrak kerangka data dengan kolom yang kami minati dengan

   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9
1, menghasilkan berbasis tahun, yang kemudian direduksi menjadi deret waktu tahunan baru dengan mengambil median setiap interval tahun

   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9
_0 telah memberi kami dataset irama yang lebih rendah yang kemudian tidak mengandung noise frekuensi tinggi. Serupa dengan ini adalah kalkulasi, yang mengembalikan irama data yang sama sebagai input, tetapi kalkulasi dilakukan pada rolling window dengan lebar tertentu di sekitar setiap titik data. Kita dapat menggunakan metode
   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9
_3 untuk melakukan ini. Di sini kita membuat filter median bergerak

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
5

Plot deret waktu bulanan dengan python

Perhitungan bergulir menggunakan ukuran jendela sebagai argumen, sedangkan resampling menggunakan penentu frekuensi sebagai argumen. NB. kita sekarang bisa melihat munculnya beberapa celah di F10. 7 deret waktu karena secara default tidak ada celah yang diizinkan dalam setiap jendela yang dihitung - perilaku ini dapat diubah dengan argumen

   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9
4

Lihatlah dokumentasi untuk melihat perhitungan lain apa yang dapat dilakukan pada resampler dan objek bergulir

Diferensiasi seringkali merupakan alat yang berguna yang dapat menjadi bagian dari algoritma deret waktu. Lihat misalnya bagaimana kita dapat menggunakan smoothing dan differencing untuk mengisolasi sinyal periodik dengan lebih jelas

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
6

Plot deret waktu bulanan dengan python

Pusat maksimum dan minimum setiap periode siklus dapat ditentukan oleh maksimum dan minimum dari kurva ini

Kita dapat melihat secara kasat mata bahwa ada siklus sekitar 10 tahun di R dan F10. 7. Alat tingkat tinggi yang berguna untuk mengidentifikasi periodisitas ini adalah

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
7

Plot deret waktu bulanan dengan python

Ini menghasilkan plot autokorelasi. korelasi deret waktu dengan dirinya sendiri pada rentang jeda waktu. Kami telah menerapkannya pada deret waktu tahunan yang dikurangi sampelnya yang membuat penghitungan jauh lebih cepat. Karena irama deret waktu adalah satu tahun, sumbu "Lag" diukur dalam tahun. Puncak pertama (setelah jeda 0) adalah sekitar 11 tahun, artinya rangkaian berkorelasi baik dengan dirinya sendiri pada jeda waktu 11 tahun. Ini adalah siklus aktivitas matahari yang terkenal

Mari kita lihat kembali indeks Dst dan coba temukan apakah ada koneksi ke R. Sangat membantu untuk mempertimbangkan konteks kuantitas yang kita periksa. R, nomor bintik matahari, menunjukkan aktivitas matahari, dan Dst menunjukkan aktivitas geomagnetik, medan magnet yang diciptakan oleh arus listrik berskala besar yang bervariasi waktu di sekitar Bumi. Kita dapat mencoba menghaluskan Dst juga untuk mencoba mengurangi kebisingan untuk melihat apakah ada korelasi dengan R, tetapi saya dapat memberi tahu Anda sekarang bahwa akan sulit untuk membuktikan sesuatu dari itu. Variasi dalam Dst sebenarnya cenderung terjadi dalam peristiwa diskrit yang disebut "badai geomagnetik", di mana Dst tiba-tiba turun jauh di bawah 0nT dan memerlukan beberapa jam atau hari untuk pulih kembali ke 0. Kita dapat mengklasifikasikan badai besar ketika Dst turun di bawah -100nT. Mari gunakan ini untuk mencari kejadian badai besar

Kita dapat menutupi di mana Dst turun di bawah -100 dengan

   Year  DOY  Hour   R  Dst  F10.7
0  1963    1     0  33   -6  999.9
1  1963    1     1  33   -5  999.9
2  1963    1     2  33   -5  999.9
3  1963    1     3  33   -3  999.9
4  1963    1     4  33   -3  999.9
6, dan kemudian menghitung berapa banyak entri setiap tahun yang memenuhi kondisi ini

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
8

Kami juga telah mengindeks ulang Dst_count sehingga indeksnya akan cocok dengan

1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
4 (bukan indeks tahunan yang dibuat oleh resampling). Mari tambahkan "hitungan badai tahunan" ini kembali ke
1963   1  0 1771 99 99 999 999 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 999.9 9999999. 999.9 9999. 999.9 999.9 9.999 99.99 9999999. 999.9 9999. 999.9 999.9 9.999 999.99 999.99 999.9  7  33    -6  119 999999.99 99999.99 99999.99 99999.99 99999.99 99999.99  0   3 999.9 999.9 99999 99999 99.9
4 dan plot bersama dengan R

!wget ftp://spdf.gsfc.nasa.gov/pub/data/omni/low_res_omni/omni2_all_years.dat 
_9

Plot deret waktu bulanan dengan python

Sepertinya ada korelasi antara jumlah bintik matahari yang tinggi (puncak siklus matahari) dan tingkat terjadinya badai besar. Namun, ada lebih banyak variasi dalam tingkat badai ini - banyak bintik matahari tidak menjamin banyak badai, dan badai masih dapat terjadi ketika bintik matahari sedikit.

Mari kita pisahkan deret waktu menjadi siklus penyusunnya dan susun menjadi satu. Ini membutuhkan beberapa pekerjaan yang lebih kompleks dengan

with open("omni2_all_years.dat") as f:
    print(f.readline())
3 dan
df.index = pd.to_datetime(df["Year"] * 100000 + df["DOY"] * 100 + df["Hour"], format="%Y%j%H")
df = df.drop(columns=["Year", "DOY", "Hour"])
0. Pada titik ini kami juga akan menurunkan sampel ke tarif harian, yang membuat plot sedikit lebih jelas dan lebih cepat dihasilkan

with open("omni2_all_years.dat") as f:
    print(f.readline())
0

Kami sekarang memiliki daftar,

df.index = pd.to_datetime(df["Year"] * 100000 + df["DOY"] * 100 + df["Hour"], format="%Y%j%H")
df = df.drop(columns=["Year", "DOY", "Hour"])
_1, berisi lima kerangka data, masing-masing berisi siklus yang berbeda. Pada setiap kerangka data, kami telah mengubah indeks menjadi jumlah hari dari minimum, dan digunakan untuk memperbaiki semuanya dengan panjang yang sama sehingga kami dapat melakukan operasi aritmatika bersama-sama. Berikut ini akan membuat plot dari setiap parameter, dengan siklus yang dilapiskan satu sama lain. Dalam contoh ini, pertama-tama kita membuat gambar dan sumbunya menggunakan
df.index = pd.to_datetime(df["Year"] * 100000 + df["DOY"] * 100 + df["Hour"], format="%Y%j%H")
df = df.drop(columns=["Year", "DOY", "Hour"])
0 secara langsung (menggunakan
df.index = pd.to_datetime(df["Year"] * 100000 + df["DOY"] * 100 + df["Hour"], format="%Y%j%H")
df = df.drop(columns=["Year", "DOY", "Hour"])
4 untuk menautkan sumbu x pada setiap plot), kemudian mengarahkan
with open("omni2_all_years.dat") as f:
    print(f.readline())
3 perintah plot untuk mengarahkannya ke sumbu yang kita inginkan setiap benda untuk diplot menggunakan . Kami juga menghitung rata-rata deret waktu bertumpuk

with open("omni2_all_years.dat") as f:
    print(f.readline())
_1

Plot deret waktu bulanan dengan python

Ini membantu kita untuk melihat bagaimana siklus berbeda satu sama lain. misalnya, siklus terbaru secara konsisten lebih rendah dari rata-rata, baik dalam kondisi matahari maupun laju badai geomagnetik. Dengan membangun rata-rata siklus, kita sebenarnya memperkuat pola yang sama pada setiap siklus dan mengurangi efek noise acak. Ini adalah dasar dari teknik yang disebut analisis zaman tersuperposisi, yang berguna untuk mengidentifikasi periodisitas dan kesamaan antara deret waktu yang bising

Kami telah menjelajahi bagaimana kami dapat melakukan beberapa langkah pertama dalam menyelidiki deret waktu menggunakan kekuatan

with open("omni2_all_years.dat") as f:
    print(f.readline())
3. Kami telah menunjukkan bagaimana metode dapat dirangkai untuk melakukan operasi kompleks pada kerangka data dalam satu baris dan hasilnya diplot dengan mudah

Bagaimana Anda merencanakan plot deret waktu dengan Python?

Plot deret waktu dasar diperoleh dengan cara yang sama dengan plot baris lainnya -- dengan plt. plot(x, y) atau kapak. plot(x, y) . Satu-satunya perbedaan adalah bahwa sekarang x bukan hanya variabel numerik, tetapi variabel tanggal yang dikenali oleh Matplotlib.

Bagaimana cara memplot data stempel waktu dengan Python?

Cara Merencanakan Stempel Waktu Unix di Pandas dan Python .
Mempersiapkan. Mari buat DataFrame dengan informasi cap waktu Unix. .
Langkah 1. Ubah stempel waktu Unix menjadi tanggal. .
Langkah 2. Ubah tanggal waktu menjadi tanggal yang dapat dibaca. .
Langkah 3. Plot stempel waktu Unix sebagai index. .
Langkah 4. Kelompokkan berdasarkan tanggal dan plot stempel waktu Unix

Bagaimana Anda merencanakan beberapa deret waktu dengan Python?

Plot beberapa deret waktu .
Argumen peta warna. kapak = df. plot(colormap='Dark2', figsize=(14, 7)) kapak. set_xlabel('Tanggal') kapak. set_ylabel('Volume Produksi (dalam ton)') plt. menunjukkan().
Meningkatkan plot Anda dengan informasi. kapak = df. plot(colormap='Dark2', figsize=(14, 7)).
Plot segi

Bagaimana Anda memvisualisasikan beberapa deret waktu?

Grafik garis adalah cara termudah untuk merepresentasikan data deret waktu. Ini membantu pemirsa mendapatkan gambaran cepat tentang bagaimana sesuatu telah berubah dari waktu ke waktu.