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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *