Saat bekerja dengan data pasar saham, terkadang kami ingin mengubah jendela referensi waktu kami. Umumnya harga harian tersedia di bursa saham. Mari kita lihat bagaimana mengubah harga harian menjadi harga mingguan dan bulanan. Anda dapat mengunduh harga harian dari NSE dari [tautan ini](https. // www. nseindia. com/produk/konten/ekuitas/ekuitas/eq_security. htm). Kami akan mengunduh harga harian selama 24 bulan terakhir. Berikut adalah contoh file yang akan kami gunakan Silakan merujuk ke program di bawah ini untuk mengubah harga harian menjadi mingguan. Komentar dalam program akan membantu Anda memahami logika di balik setiap baris. ```python ############################################## . convert_daily_to_weekly. py # desc. mengambil inout sebagai harga harian dan mengubahnya menjadi data mingguan # tanggal. 15-06-2018 # Penulis. conquistadorjd ################################################### . read_csv('15-06-2016-TO-14-06-2018HDFCBANKALLN. csv') # memastikan hanya seri ekuitas yang dianggap df = df. loc[df['Series'] == 'EQ'] # Konversi tanggal ke format datetime panda df['Date'] = pd. to_datetime(df['Date']) # Mendapatkan nomor minggu df['Week_Number'] = df['Date']. dt. minggu # Mendapatkan tahun. Weeknum adalah umum sepanjang tahun sehingga kita perlu membuat indeks unik dengan menggunakan year dan weeknum df['Year'] = df['Date']. dt. tahun # Pengelompokan berdasarkan nilai yang dibutuhkan df2 = df. groupby(['Tahun','Nomor_Minggu']). agg({'Harga Terbuka'. 'pertama', 'Harga Tinggi'. 'maks', 'Harga Murah'. 'min', 'Harga Tutup'. 'terakhir','Total Kuantitas yang Diperdagangkan'. 'jumlah'}) # df3 = df. groupby(['Tahun','Nomor_Minggu']). agg({'Harga Terbuka'. 'pertama', 'Harga Tinggi'. 'maks', 'Harga Murah'. 'min', 'Harga Tutup'. 'terakhir','Total Kuantitas yang Diperdagangkan'. 'jumlah','Harga Rata-Rata'. 'rata-rata'}) df2. to_csv('Mingguan_OHLC. csv') print('*** Program telah berakhir ***') ``` Setelah Anda memahami harian hingga mingguan, hanya diperlukan modifikasi kecil untuk mengubahnya menjadi data OHLC bulanan. Ini skrip ```python ########################################## . convert_daily_to_monthly. py # desc. ambil inout sebagai harga harian dan ubah menjadi data bulanan # tanggal. 15-06-2018 # Penulis. conquistadorjd ################################################### . read_csv('15-06-2016-TO-14-06-2018HDFCBANKALLN. csv') # memastikan hanya seri ekuitas yang dianggap df = df. loc[df['Series'] == 'EQ'] # Konversi tanggal ke format datetime panda df['Date'] = pd. to_datetime(df['Date']) # Mendapatkan nomor bulan df['Month_Number'] = df['Date']. dt. bulan # Mendapatkan tahun. bulan biasa terjadi selama bertahun-tahun (seolah-olah Anda tidak tahu. ) )untuk kita perlu membuat indeks unik dengan menggunakan tahun dan bulan df['Year'] = df['Date']. dt. tahun # Pengelompokan berdasarkan nilai yang dibutuhkan df2 = df. groupby(['Tahun','Bulan_Nomor']). agg({'Harga Terbuka'. 'pertama', 'Harga Tinggi'. 'maks', 'Harga Murah'. 'min', 'Harga Tutup'. 'terakhir','Total Kuantitas yang Diperdagangkan'. 'jumlah'}) # df3 = df. groupby(['Tahun','Nomor_Minggu']). agg({'Harga Terbuka'. 'pertama', 'Harga Tinggi'. 'maks', 'Harga Murah'. 'min', 'Harga Tutup'. 'terakhir','Total Kuantitas yang Diperdagangkan'. 'jumlah','Harga Rata-Rata'. 'rata-rata'}) df2. to_csv('Bulanan_OHLC. csv') print('*** Program berakhir ***') ``` Saya membuang waktu untuk menemukan 'Harga Terbuka' untuk data mingguan dan bulanan. Saya mencoba beberapa pertanyaan panda yang rumit dan kemudian menyadari hal yang sama dapat dicapai hanya dengan menggunakan fungsi agregat. Tolong beri tahu saya tanggapan Anda Show Posting ini ditulis oleh Pravin Tag Tinggalkan komentarKirimUntuk menghitung tingkat pengembalian bulanan, kita dapat menggunakan sedikit keajaiban panda dan mencontoh kembali pengembalian harian asli. Selama proses ini, kita juga perlu membuang hari-hari yang bukan merupakan akhir bulan serta meneruskan mengisi nilai yang hilang. Ini dapat dilakukan dengan menggunakan. ffill() pada hasil resampling Perhatikan tanggal entri dan sekarang semuanya adalah tanggal akhir bulan. Nilai tidak berubah, karena sampel ulang hanya memilih tanggal di akhir bulan, atau mengisi dengan nilai sebelum tanggal tersebut jika tidak ada di sumber Sekarang kita dapat menggunakan ini untuk menghitung bulanan Resampling digunakan dalam data deret waktu. Ini adalah metode praktis untuk konversi frekuensi dan resampling data deret waktu. Meskipun bekerja dengan syarat bahwa objek harus memiliki indeks seperti datetime misalnya, DatetimeIndex, PeriodIndex, atau TimedeltaIndex. Dengan kata sederhana, jika seseorang ingin mengatur data deret waktu dalam pola seperti bulanan, mingguan, harian, dll. , fungsi ini sangat berguna. Fungsi ini tersedia di perpustakaan Pandas. Untuk tujuan demonstrasi, dataset UCI digunakan, i. e. , https. //arsip. ics. uci. edu/ml/set data/Parkir+Birmingham Membaca Data Dalam data deret waktu, tipe data variabel tanggal adalah objek ketika kita membaca data dari a. file csv. Oleh karena itu untuk membaca kolom tanggal dalam format datetime, kami menggunakan argumen parse_dates. Dalam data studi, LastUpdated adalah variabel tanggal dan argumen parse_dates=["LastUpdated"] membaca format tanggal dengan benar, sedangkan ketika argumen parse_dates tidak menggunakan tipe variabel "LastUpdated" adalah objek Gambar oleh PenulisDateTimeIndex Karena fungsi resample menggunakan DatetimeIndex, PeriodIndex, atau TimedeltaIndex, maka sekarang kita perlu mengubah variabel “LastUpdated” menjadi datetimeindex sebagai berikut Pengambilan sampel ulang Resampling adalah untuk konversi frekuensi dan resampling deret waktu. Jadi, jika seseorang perlu mengubah data, bukan harian menjadi bulanan atau mingguan, dll. atau sebaliknya. Untuk ini, kami memiliki opsi resample di pandas library[2]. Pada fungsi resampling, jika kita perlu mengubah tanggal menjadi datetimeindex ada juga opsi parameter "on" tetapi kolomnya harus seperti datetime Gambar oleh PenulisDi bawah resampling dengan opsi “D”, data diubah menjadi data harian, mis. e. , semua tanggal akan diperhitungkan. 375717 rekaman diturunkan sampelnya menjadi 77 rekaman Opsi Aturan Lainnya Opsi yang paling banyak digunakan untuk aturan (mewakili target konversi) adalah seperti di bawah ini dan opsi lain juga dapat ditemukan di referensi [1] Gambar oleh PenulisOpsi sampel ulang digunakan untuk dua opsi, yaitu. e. , upsampling dan downsampling Upsampling. Dalam hal ini, kami mengubah sampel ke kerangka waktu yang lebih singkat, misalnya data bulanan menjadi mingguan/dua mingguan/harian, dll. Karena itu, banyak tempat sampah dibuat dengan nilai NaN dan untuk mengisinya ada metode berbeda yang dapat digunakan sebagai metode pad dan metode bfill. Misalnya mengubah data mingguan menjadi data harian dan menggunakan metode bfill hasil berikut diperoleh, jadi bfill mengisi mundur nilai baru yang hilang pada data yang disampling ulang Metode lainnya adalah metode pad, itu meneruskan mengisi nilai-nilai seperti di bawah ini Gambar oleh PenulisKita juga bisa menggunakan metode asfreq() atau fillna() dalam upsamling Pengurangan sampel. Dalam hal ini kami mengubah sampel ke kerangka waktu yang lebih luas, misalnya mengubah sampel data harian menjadi mingguan/dua mingguan/bulanan, dll. Untuk ini kami memiliki opsi seperti sum(), mean(), max() dll. Misalnya, data harian diambil sampelnya kembali ke data awal bulan dan fungsi rata-rata digunakan seperti di bawah ini Gambar oleh PenulisRepresentasi grafis dari Resampling Setelah melakukan resampling data dengan empat aturan berbeda, yaitu. e. , per jam, harian, mingguan, dan bulanan, grafik berikut diperoleh. Kami dapat dengan jelas melihat perbedaan dalam kerangka waktu yang lebih pendek dan lebih luas. Dalam plot per jam, lebih banyak noise dan berkurang dari harian ke mingguan ke bulanan. Sesuai tujuan studi, kita dapat memutuskan opsi mana untuk aturan yang terbaik Bagaimana Anda mengonversi data bulanan menjadi mingguan dengan Python?Petunjuk . Buat bulanan_dates menggunakan pd. date_range dengan start , end dan alias frekuensi 'M' Membuat dan mencetak pd. Seri monthly , meneruskan daftar [1, 2] sebagai argumen data, dan menggunakan monthly_dates sebagai index Buat tanggal_mingguan menggunakan pd. date_range dengan start , end dan alias frekuensi 'W' Berlaku Bagaimana Anda mengubah data harian menjadi data mingguan dengan Python?Metode 1. menggunakan for-loop Python . Fungsi new_case_count() mengambil objek DataFrame, mengulanginya dan mengonversi indeks, yang merupakan tanggal dalam format string, ke format Pandas Datetime. Berdasarkan tanggal hari dalam seminggu, jumlah kasus baru setiap minggu dihitung dan disimpan dalam daftar.
Bagaimana cara mendapatkan data bulanan dengan Python?Untuk mendapatkan nomor bulan dari objek datetime dengan Python, yang perlu Anda lakukan hanyalah menggunakan. metode bulan .
Bagaimana Anda mengonversi data ke deret waktu dengan Python?Rentang tanggal diubah menjadi bingkai data dengan bantuan pd. DataFrame() metode. Kolom diubah menjadi DateTime menggunakan metode to_datetime() . metode info() memberikan informasi tentang kerangka data jika ada nilai nol dan tipe data kolom. |