EVDS paketi EVDS-API üzerinden Türkiye Cumhuriyet Merkez Bankası (TCMB) tarafından Elektronik Veri Dağıtım Sistemi (EVDS) aracılığıyla yayımlanan tüm istatistiki verilere python aracılığıyla erişmenize imkan sağlar.
EVDS paketi resmi bir paket olmayıp açık kaynak kodlu olarak geliştirilmektedir.
evds paketini pip paket yöneticisi aracılığıyla kurabilirsiniz:
pip install evds --upgrade
0.3 sürümü ile aşağıdaki değişiklikler yapıldı:
- SSL hatalarının giderilmesi için legacySSL parametresi eklendi. PR #8
- Kod içerisinde düzeltmeler yapıldı. PR #6 PR #4
- request session'un açık kalması nedeniyle ortaya çıkan ResourceWarning uyarısı giderildi. PR #4
- Pandas DataFrame numeric tiplere cast ederken ortaya çıkan FutureWarning uyarıları çıkıyordu. Bu sorun giderildi. PR #9
0.2 sürümü ile birlikte aşağıdaki özellikler eklenmiştir:
get_data
,get_sub_categories
veget_series
fonksiyonlarına,raw
parametresi eklendi. Bu parametreTrue
olarak tanımlandığında ilgili verilere dictionary formatında erişebilirsiniz.- Çeşitli hatalar giderildi.
0.1.1 sürümü ile birlikte aşağıdaki özellikler eklenmiştir:
- formulas parametresindeki hata giderildi.
0.1.0 sürümü ile birlikte aşağıdaki özellikler eklenmiştir:
- API üzerinden erişilemeyen serilere ilişkin EVDS'de yapılan güncellemeye paralel olarak tüm serilere erişim olanağı sağlanmıştır.
- Proxy desteği eklenmiştir.
- Küçük hatalar giderildi
Örnek kullanım, 01-01-2019 - 01-01-2020 arası USD ve EUR alış kurlarına aşağıdaki şekilde erişilebilir.
from evds import evdsAPI
evds = evdsAPI('EVDS_API_ANAHTARI')
evds.get_data(['TP.DK.USD.A.YTL','TP.DK.EUR.A.YTL'], startdate="01-01-2019", enddate="01-01-2020")
get_data fonksiyonu DataFrame return edecektir. İstenmesi halinde raw=True
parametresi ile dictionary formatında ham veriye ulaşılabilir.
evds paketini kullanmak için öncelikle EVDS sistemi üzerinden API Anahtarı almanız gerekmektedir. API Anahtarı almak için aşağıdaki adımları izleyiniz:
- EVDS sayfasına giriş yaptıktan sonra Giriş Yap ve Kayıt Ol bağlantılarını izleyerek bir EVDS hesabı oluşturun.
- Ardından kullanıcı adınızın altında yer alan profil bağlantısına tıklayınız.
- Profil sayfanızın alt kısmında yer alan "API Anahtarı" butonuna tıklayınız ve açılan kutucukta yer alan değeri kopyalayınız.
get_data
fonksiyonu aşağıdaki parametreleri alır:
Bu parametre liste olarak tanımlanmalıdır. Ayrıca birden fazla seri bu liste içerisinde tanımlanabilir. Tanımlanması zorunludur.
Seride yer alan verilerin hangi tarihten itibaren seçileceği bu parametre ile belirlenir. Tanımlanması zorunludur.
Eğer seri üzerinde bir aralık seçimi yapılmak isteniyorsa aralığın bitiş tarihi bu parametre ile belirtilir. Tanımlanması ihtiyaridir. Tanımlanmadığı durumda startdate
değerine eşit olarak tanımlanır.
True
olması halinde fonksiyon talep edilen veriyi DataFrame yerine dictionary return eder.
Örnek kullanım:
...
evds.get_data(['TP.DK.USD.A.YTL','TP.DK.EUR.A.YTL'], startdate="01-01-2019", enddate="01-01-2020", raw=True)
Seri içindeki verilerin getirilmesi esnasında kullanılacak olan toplululaştırma yöntemini ifade eder. Tanımlanması ihtiyaridir. Eğer tanımlanmamışsa seri için tanımlanan öntanımlı yöntem kullanılır. Ayrıca değer olarak string veya liste alabilir. String alması durumunda tüm seriler için aynı yöntem uygulanır. Liste olarak tanımlanırsa series
parametresinde tanımlanan serilere sırasıyla belirtilen yöntemler uygulanır.
Kullanılabilecek yöntemler aşağıdaki gibidir:
Yöntem | Parametre Değeri |
---|---|
Ortalama | avg |
En düşük | min |
En yüksek | max |
Başlangıç | first |
Bitiş | last |
Kümülatif | sum |
Seri içindeki verilerin getirilmesi esnasında uygulanacak formülü ifade eder. Tanımlanması ihtiyaridir. Eğer tanımlanmamışsa seri için tanımlanan öntanımlı formül kullanılır. Ayrıca değer olarak string veya liste alabilir. String alması durumunda tüm seriler için aynı formül uygulanır. Liste olarak tanımlanırsa series
parametresinde tanımlanan serilere sırasıyla belirtilen formüller uygulanır.
Kullanılabilecek yöntemler aşağıdaki gibidir:
Formül | Değer |
---|---|
Düzey (Öntanımlı) | 0 |
Yüzde Değişim | 1 |
Fark | 2 |
Yıllık Yüzde Değişim | 3 |
Yıllık Fark | 4 |
Bir Önceki Yılın Sonuna Göre Yüzde Değişim | 5 |
Bir Önceki Yılın Sonuna Göre Fark | 6 |
Hareketli Ortalama | 7 |
Hareketli Toplam | 8 |
API formula parametresi uygulandığında orijinal değerleri None
olarak yanıtladığı için, formula parametresi tanımladığınız serinin orijinal değerlere ulaşmak için aynı seriyi tekrar ekleyiniz ve formula parametresini 0 olarak tanımlayınız. Örneğin
evds.get_data(['TP.DK.USD.A.YTL','TP.DK.USD.A.YTL'],
startdate="01-01-2019",
enddate="01-01-2020",
formulas=[1,0],
)
USD için yüzde değişim ve orijinal değerlere aynı anda yukarıdaki gibi ulaşabilirsiniz.
Seri içerisinde yer alan verilerin hangi sıklıkla getireceğini ifade eder. Tanımlanması ihtiyaridir. Eğer tanımlanmamışsa seri için tanımlanan öntanımlı yayımlanma sıklığı kullanılır.Aşağıdaki değerleri alabilir.
Sıklık | Değer |
---|---|
Günlük | 1 |
İşgünü | 2 |
Haftalık | 3 |
Ayda 2 Kez | 4 |
Aylık | 5 |
3 Aylık | 6 |
6 Aylık | 7 |
Yıllık | 8 |
EVDS üzerinde veri serileri sırasıyla Ana Kategori, Alt Kategori ve Seri hiyerarşisinde sunulmaktadır.
get_data
fonksiyonun kullanılması için aşağıda yer alan işlemlerin gerçekleştirilmesine gerek yoktur. Veri serisine ait kodun bilinmesi durumunda doğrudanget_data
fonksiyonu kullanılabilir.
main_categories
değişkeni ile ana kategorileri listeleyebilirsiniz.
...
evds.main_categories
komut ile ana kategorileri listeleyebilirsiniz.
CATEGORY_ID | TOPIC_TITLE_TR |
---|---|
1 | PİYASA VERİLERİ |
2 | KURLAR |
3 | FAİZ İSTATİSTİKLERİ |
4 | PARA VE BANKA İSTATİSTİKLERİ |
... | ... |
Ana kategori altında yer alan alt kategorilere aşağıdaki şekilde ulaşabilirsiniz. Ayrıca raw=True
parametresi ile DataFrame yerine dictionary formatında alt kategorileri ulaşılabilir.
evds.get_sub_categories('Ana kategori ID'si veya Adı')
Örnek kulllanım;
...
evds.get_sub_categories(6)
CATEGORY_ID | DATAGROUP_CODE | DATAGROUP_NAME |
---|---|---|
6 | bie_dbafod | Dış Borç Anapara ve Faiz Ödemeleri ile Diğer T... |
6 | bie_dbdborc | Dış Borçlar-Brüt (Hazine ve Maliye Bakanlığı) |
6 | bie_kvdbs | Kısa Vadeli Dış Borç Stoku (milyon ABD doları) |
6 | bie_yssk | Özel Sektörün Yurt Dışından Sağladığı Uzun Vad... |
Yukarıda yer alan örnekte 6'nolu kategori altında yer alan alt kategoriler listelenmiştir. Ayrıca get_sub_categories
fonksiyonunda CATEGORY_ID yerine doğrudan ana kategori adı ile kullanabilirsiniz. Örneğin
...
evds.get_sub_categories("KURLAR")
Alt kategori altında yer alan veri serilerine aşağıdaki şekilde ulaşabilirsiniz. Ayrıca raw=True
parametresi ile DataFrame yerine dictionary formatında serilere ulaşılabilir.
evds.get_series('Alt kategori adı')
Örnek kulllanım;
...
evds.get_series('bie_dbdborc')
SERIE_CODE | SERIE_NAME | START_DATE |
---|---|---|
TP.DB.B01 | 1:TÜRKİYE BRÜT DIŞ BORÇ STOKU | 01-10-1989 |
TP.DB.B02 | 2:KISA VADELİ BORÇLAR (Borçluya Göre) | 01-10-1989 |
TP.DB.B03 | 2A:KAMU (Borçluya Göre) | 01-10-1989 |
TP.DB.B04 | 2A1:GENEL YÖNETİM (Borçluya Göre) | 01-10-1989 |
TP.DB.B05 | 2A1a:Merkezi Yönetim | 01-10-1989 |
get_data()
fonksiyonu aracılığıyla SERIE_CODE'u kullanarak serilere ait verilere ulaşabilirsiniz.
Proxy adresinizi aşağıdaki gibi proxies
parametresi ile tanımlayabilirsiniz. Ayrıca httpsVerify
parametresi ile https kontrolünü devre dışı bırakabilirsiniz.
proxies = { "https" : "HTTPS_PROXY_URL"}
evds = evdsAPI('EVDS_API_ANAHTARI', proxies=proxies, httpsVerify=False)
Sunucu sertifikası ve kullanılan python paketlerinden kaynaklı olarak SSL hatası alınabilmektedir. Bu hata durumunda legacySSL parametresi kullanılabilir:
evds = evdsAPI('EVDS_API_ANAHTARI', legacySSL=True)