Dalam tutorial ini kita akan melakukan beberapa visualisasi eksplorasi dasar dan analisis data deret waktu. Kita akan belajar cara membuat objek _2 dari file data input, memplot isinya dengan berbagai cara, bekerja dengan resampling dan perhitungan rolling, dan mengidentifikasi korelasi dan periodisitas Show Untuk menyelesaikan tutorial, Anda memerlukan lingkungan Python dengan versi terbaru 3 (Saya menggunakan v0. 23. 4). Saya sangat menyarankan menggunakan Jupyter untuk jenis pekerjaan ini - Anda dapat membaca lebih lanjut tentang Jupyter di siniJika Anda belum terbiasa dengan 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 5Pekerjaan 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 3 untuk bekerja dengan deret waktu. Ini menawarkan rangkaian alat canggih yang dioptimalkan yang dapat menghasilkan analisis berguna hanya dalam beberapa baris kode. Objek 2 dapat berisi beberapa kuantitas, yang masing-masing dapat diekstraksi sebagai objek 8 individu, dan objek ini memiliki sejumlah metode yang berguna khusus untuk bekerja dengan data deret waktuPertama impor paket yang akan kita gunakan
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 _9, 0, atau 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. 3 berisi serangkaian alat IO untuk berbagai format - lihat di sini jika Anda ingin membaca atau menulis kumpulan dataPada 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 3 untuk melihat daftar kolom yang terdapat dalam kumpulan data. Ini cukup rumit. tapi kami hanya akan menggunakan beberapa kolom
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)
Lihat sekilas baris pertama file data
Anda harus melihat sesuatu seperti _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)
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, 4. Lihatlah bagian atasnya dengan 5. Seharusnya terlihat seperti
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 6 yang lebih fungsional yang didasarkan pada objek Python 5,Kami menggunakan fungsi 8 untuk membuat indeks baru dari kolom "Tahun", "DOY", dan "Jam", lalu menetapkannya langsung ke properti 9 dari 4, lalu jatuhkan kolom yang tidak dibutuhkan
1 menggabungkan kolom menjadi satu kolom angka dengan lebar tetap mengikuti pola 2 yang dapat diuraikan oleh penentu format 3. _5 seharusnya sekarang ditampilkan
Saat bekerja dengan data lain, Anda perlu menemukan cara yang tepat untuk membuat indeks dari stempel waktu di data Anda, tetapi _8 akan sering membantu. Sekarang kami menggunakan _6, kami memiliki akses ke sejumlah fungsi khusus deret waktu dalam 3Dalam kumpulan data ini, celah data telah diisi dengan angka 9. Kita dapat mengganti kejadian ini dengan NaN
Kita seharusnya sekarang
Merupakan praktik yang baik untuk melakukan beberapa pemeriksaan pada data. Misalnya, apakah data benar-benar diambil sampelnya setiap jam? 0Ini 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 1NB. Baris terakhir menggunakan "f-strings" yang baru di Python 3. 6. Cara lama, dan lebih tua, untuk melakukan ini adalah 2Data 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 3Ini dengan cepat mencapai empat plot berbeda
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? 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. 3 menawarkan cara mudah untuk mengurangi irama data dengan melakukan resampling dengan metode 0 4Di sini kami telah mengekstrak kerangka data dengan kolom yang kami minati dengan 1, menghasilkan berbasis tahun, yang kemudian direduksi menjadi deret waktu tahunan baru dengan mengambil median setiap interval tahun _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 _3 untuk melakukan ini. Di sini kita membuat filter median bergerak 5Perhitungan 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 4Lihatlah 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 6Pusat 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 7Ini 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 6, dan kemudian menghitung berapa banyak entri setiap tahun yang memenuhi kondisi ini 8Kami juga telah mengindeks ulang Dst_count sehingga indeksnya akan cocok dengan 4 (bukan indeks tahunan yang dibuat oleh resampling). Mari tambahkan "hitungan badai tahunan" ini kembali ke 4 dan plot bersama dengan R _9Sepertinya 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 3 dan 0. Pada titik ini kami juga akan menurunkan sampel ke tarif harian, yang membuat plot sedikit lebih jelas dan lebih cepat dihasilkan 0Kami sekarang memiliki daftar, _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 0 secara langsung (menggunakan 4 untuk menautkan sumbu x pada setiap plot), kemudian mengarahkan 3 perintah plot untuk mengarahkannya ke sumbu yang kita inginkan setiap benda untuk diplot menggunakan . Kami juga menghitung rata-rata deret waktu bertumpuk _1Ini 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 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. |