Pandas’ta Tarih Verisi ile Çalışmak

Zaman serisi verisiyle çalışırken tarih bilgisi istediğimiz formatta olmayabilir ya da elimizdeki zaman bilgisinden modelimizi daha iyi hale getirebilecek yeni değişkenler üretmek isteyebiliriz. Şimdi bunu Pandas’ ta nasıl yapabileceğimize bakalım.

Bu yazıda örnek için Epiaş Şeffaflık Platformu  içinde bulunan 2015 Ocak-2020 Haziran arasındaki elektrik tüketim verilerini kullanacağız. Veriye buradan ulaşabilirsiniz. Gerekli kütüphaneleri ve veriyi yükleyerek başlayalım.

Figure-1-Pandas-Output-1

Figure-2-Pandas-Output-2

Görüldüğü gibi tüketim miktarını belirten sütunun adı, miktarı gösteren sayının bizim kullandığımız formatta olması (virgül içermesi) gibi bazı problemler göze çarpıyor. Ayrıca saat bilgisi de ayrı bir sütunda tutuluyor. Bu sütunu daha sonra kendimiz elde edeceğimiz için şimdilik tarih sütununa ekleyebiliriz. Son olarak kategorik değişken olarak görünen tarih değişkenini tarih formatına çevirip saat sütununu silebiliriz. Şimdi bu dediklerimizi uygulayalım.

Figure-3-Pandas-Output-3

1-Hafta, Ay ve Yıl Bilgisini Almak

Bu bilgilere erişmek , Pandas serisiyle kullanılan dt accessor’ı ile oldukça kolay. Yılın kaçıncı haftası olduğuna erişmek için dt.week, kaçıncı ay olduğuna erişmek için dt.month, yıla erişmek için dt.year kullanabiliriz.

Figure-4-Pandas-Output-4

2-Sömestr ve Yılın Dörtte Birlik Dönemi Bilgisini Almak

Benzer şekilde dt.quarter ile tarihin hangi üç aylık dönemde olduğu bilgisine ulaşabiliriz. Aşağıdaki kod yardımıyla da hangi altı aylık dönemde olduğu bilgisine erişebiliriz.

Figure-5-Pandas-Output-5

3-Gün,Haftanın Günü ve Gün Adlarını Almak

Bu bilgilere de daha önce yaptığımız gibi erişebiliriz. Haftanın günleri 0’dan başlayarak adlandırılır. Örneğin pazartesi için 0 ve Pazar için 6 olacaktır.

Figure-6-Pandas-Output-6

4- Hafta Sonu Bilgisini Almak

Hafta sonu bilgisini almak istiyorsak “day_name” sütununu yani gün adlarının olduğu sütunu kullanabiliriz. Değerimiz, gün cumartesi ya da pazar ise 1, değilse 0 olacaktır.

İkinci bir yol olarak “daysofweek” yani haftanın günlerini belirten sütunu kullanabiliriz. Bu durumda haftanın günü 5 ya da 6 ise yani 4’ten büyükse hafta sonudur.

Figure-7-Pandas-Output-7

Eğer Numpy hakkında bilgi sahibi değilseniz Gülay Ekren’in  NumPy’a Giriş  yazısına göz atabilirsiniz.

5-date_range() Fonksiyonu

date_range() ile istediğimiz zaman aralığında zaman verisi oluşturabiliriz. Örneğin 1 Ocak 2020 tarihi için saatlik veri oluşturalım. Frekansı saat olarak ifade etmek için H sembolünü kullanabiliriz. 24 saatlik bir zaman belirlediğimiz için periods parametresi için 24 girebiliriz.

Figure-8-Pandas-Output-8

Ocak ayı için günlük veri oluşturmak istersek bunu şöyle yazabiliriz :

Figure-9-Pandas-Output-9

Şimdi saniyelik veri oluşturmak isteyelim.

Figure-10-Pandas-Output-10

6-Saat,Dakika,Saniye ve Tarih Bilgisini Almak

Figure-11-Pandas-Output-11

7- resample() Fonksiyonu

Bu fonksiyon ile zaman serisi verisinin frekansını değiştirip yeniden örnekleyebiliriz. Bu fonksiyonu kullanabilmek için tarih verisini indekse atamak gerekiyor.

Figure-12-Pandas-Output-12

Figure-13-Pandas-Output-13

Şimdi yıllık ortalama tüketime bakalım. Bunun için rule parametresini “A” olarak belirlememiz gerekiyor.

Figure-14-Pandas-Output-14

Her ayın başındaki ortalama tüketim miktarını görmek için şu kodu yazabiliriz:

Figure-15-Pandas-Output-15
Figure-16-Pandas-Frekans-Kısaltmaları        https://pandas.pydata.org/pandas-docs/version/0.15/timeseries.html

8 – shift() Fonksiyonu

İsteğe göre bir zaman frekansı ile istenen periyoda göre değiştirme/kaydırma işlemi yapıyor. Başka bir parametre girmeden periods parametresini 1 yapalım ve ne olacağına bakalım.

Figure-17-Pandas-Output-17

Görüldüğü gibi ilk değer, bir alt satıra inmiş oldu ve ilk satır NaN değerini aldı.

Figure-18-Pandas-Output-18

Yukarıdaki örnekte ise indeksler iki gün sonraki indekslerle değişmiş oldu.

9 – rolling() Fonksiyonu

Belirlenen zaman penceresine göre kendinden önceki n tane veriyle işlem yapar. Hareketli ortalama hesabı için kullanılabilir. Bunun için bir window parametresi belirlenir. Örneğin, bu parametre 7 ise daha önceki 7 değerin ortalaması alınır. Ortalamaya 7. gün de dahil edilir.

Figure-19-Pandas-Output-19

10 – expanding() Fonksiyonu

Bu fonksiyon ise rolling() fonksiyonunun aksine belirlenen periyottan önceki tüm verileri işleme katar.

Figure-20-Pandas-Output-20

Diğer yazılarıma ulaşmak için :

SymPy ile Sembolik Matematik İşlemleri

Folium ile Harita Görselleştirme

Local Outlier Factor

Genetik Algoritma II – R ile Uygulama

Genetik Algoritma I

KAYNAKLAR
https://pandas.pydata.org/pandas-docs/stable/reference/frame.html

 

 

Data Science Earth

Data Science Earth ekibi, üst düzey Veri Bilim çözümleri üretmek amacı ile toplanmış akademisyenler ve uzmanlardan oluşmaktadır. Öncelikli olarak veri bilincini geliştirmeyi ve küreselleşen rekabet ortamında verinin gücünün doğru kullanılmasını sağlamayı amaçlamaktadır.

Sponsor

QuestionPro 35 farklı soru seçim özelliği ile anket çalışmalarımıza güç katmaktadır.