Pandalar: groupby() ile zaman serileri nasıl yeniden örneklenir


Zaman serisi verilerinin yeniden örneklenmesi, verilerin yeni bir dönem boyunca toplanması anlamına gelir.

Groupby operatörünü kullanarak pandalarda bir zaman serisini yeniden örneklemek istiyorsanız aşağıdaki temel sözdizimini kullanabilirsiniz:

 group = df. groupby ([pd. Group (freq=' W '), ' store '])

result = group[' sales ']. sum (). unstack (' store '). fillna (0) 

Bu özel örnek, DataFrame satırlarını mağaza sütununa göre gruplandırır, ardından zaman serisini haftaya göre yeniden örnekler ( freq=’W’ ), ardından satış sütunundaki değerlerin toplamını hesaplar.

Zaman serisi verilerini aşağıdakiler dahil farklı zaman aralıklarına yeniden örnekleyebileceğimizi unutmayın:

  • S : Saniye
  • dakika : Dakika
  • H : Saat
  • J :Gün
  • K : Hafta
  • M : Ay
  • Soru : Çeyrek
  • C : Yıl

Aşağıdaki örnek, pratikte bir gruplama işlemiyle zaman serisi verilerinin nasıl yeniden örnekleneceğini gösterir.

Örnek: Pandas’ta groupby ile bir zaman serisini yeniden örnekleme

İki farklı mağazada her gün yapılan toplam satışları gösteren aşağıdaki panda DataFrame’e sahip olduğumuzu varsayalım:

 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

Diyelim ki satırları mağazaya göre gruplandırmak, ardından zaman serisini haftaya göre yeniden örneklemek, ardından satış sütunundaki değerlerin toplamını hesaplamak istiyoruz.

Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz:

 #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

Sonuçtan şunları görebiliriz:

  • A mağazasında 01/08/2023 tarihinde sona eren haftanın satış toplamı 14’tür .
  • B mağazasında 01/08/2023 tarihinde sona eren haftaya ait satışların toplamı 0’dır .

Ve benzeri.

Bu örnekte satış sütunundaki değerlerin toplamını hesaplamayı seçtiğimizi unutmayın.

Ancak sayı, ortalama, medyan, minimum, maksimum vb. gibi diğer ölçümleri de seçebiliriz.

Yukarıdaki koddaki sum() işlevini count() , Mean() , Median() vb. ile değiştirmeniz yeterlidir. Seçtiğiniz ölçümü hesaplamak için.

Ek kaynaklar

Aşağıdaki eğitimlerde Python’da diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:

Matplotlib’de bir zaman serisi nasıl çizilir
Seaborn’da bir zaman serisi nasıl çizilir
Python’da zaman serilerinden MAPE nasıl hesaplanır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir