Mengonversi data bulanan menjadi python harian

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


Posting ini ditulis oleh Pravin

Tag

Tinggalkan komentar

Kirim

Untuk 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

Mengonversi data bulanan menjadi python harian

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 Penulis

DateTimeIndex

Karena fungsi resample menggunakan DatetimeIndex, PeriodIndex, atau TimedeltaIndex, maka sekarang kita perlu mengubah variabel “LastUpdated” menjadi datetimeindex sebagai berikut

Gambar oleh Penulis

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 Penulis

Di bawah resampling dengan opsi “D”, data diubah menjadi data harian, mis. e. , semua tanggal akan diperhitungkan. 375717 rekaman diturunkan sampelnya menjadi 77 rekaman

Gambar oleh Penulis

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 Penulis

Opsi 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

Gambar oleh Penulis

Metode lainnya adalah metode pad, itu meneruskan mengisi nilai-nilai seperti di bawah ini

Gambar oleh Penulis

Kita 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 Penulis

Representasi 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.