Pandas: cara mengambil sampel ulang deret waktu dengan groupby()
Pengambilan sampel ulang data deret waktu berarti menggabungkan data dalam periode baru.
Jika Anda ingin mengambil sampel ulang rangkaian waktu di panda menggunakan operator groupby , Anda dapat menggunakan sintaks dasar berikut:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
Contoh khusus ini mengelompokkan baris kolom DataFrame menurut toko , lalu mengambil sampel ulang rangkaian waktu berdasarkan minggu ( freq=’W’ ), lalu menghitung jumlah nilai di kolom penjualan .
Perhatikan bahwa kami dapat mengambil sampel ulang data deret waktu ke periode waktu yang berbeda, termasuk:
- S : Detik
- menit : Menit
- H : Jam
- J : Hari
- W : Minggu
- G : Bulan
- T : Seperempat
- J : Tahun
Contoh berikut menunjukkan cara mengambil sampel ulang data deret waktu dengan operasi grup demi dalam praktiknya.
Contoh: Contoh ulang deret waktu dengan groupby di Pandas
Misalkan kita memiliki panda DataFrame berikut yang menunjukkan total penjualan yang dilakukan setiap hari di dua toko berbeda:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
Katakanlah kita ingin mengelompokkan baris berdasarkan store , lalu mengambil sampel ulang deret waktu berdasarkan minggu, lalu menghitung jumlah nilai di kolom penjualan .
Kita dapat menggunakan sintaks berikut untuk melakukan ini:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
Dari hasilnya kita dapat melihat:
- Jumlah penjualan untuk minggu yang berakhir 01/08/2023 di toko A adalah 14 .
- Jumlah penjualan untuk minggu yang berakhir 01/08/2023 di toko B adalah 0 .
Dan seterusnya.
Perhatikan bahwa dalam contoh ini kami memilih untuk menghitung jumlah nilai di kolom penjualan .
Namun, kita dapat memilih metrik lain seperti jumlah, rata-rata, median, min, maks, dll.
Cukup ganti sum() pada kode di atas dengan count() , Mean() , Median() , dll. untuk menghitung metrik pilihan Anda.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya dengan Python:
Cara memplot deret waktu di Matplotlib
Cara membuat plot deret waktu di Seaborn
Cara menghitung MAPE dari deret waktu dengan Python