import requests
import json
from urllib.parse import urlencode
import pandas as pd
Giriş
Türkiye Cumhuriyet Merkez Bankası, yenievds@tcmb.gov.tr adresinden bir duyuru göndermişti. Mail almayanlar için bir kısmını aşağıda paylaşıyorum.
Önceki duyurumuzda EVDS nin web servis parametrelerinde güvenlik sebebiyle bir düzenleme yapılacağını belirtmiştik. URL adresinden giden “key” parametresinin artık http request header içinde gelmesi ve web servis kullanan uygulamalarınızda “key=xxxxxx” parametresini http request header olarak dönüştürmeniz gerektiği belirtilmişti. Bu düzenleme 05 Nisan 2024 Cuma saat 21:00 TSİ tarihinden itibaren geçerli olacaktır.
URL adresinden gönderdiğimiz key
parametresini artık headers
içinden göndereceğiz.
Kullanılacak Kütüphaneler
Verilerin Çekilmesi
Tek Serili Örnek
= 'api_key'
api_key
='TP.APIFON4' # TCMB Ağırlıklı Ortalama Fonlama Maliyeti
series_code='01-01-2011' # Başlangıç
start_date='30-04-2024' # Bitiş
end_date='5' # Aylık
frequency='avg' # Ortalama
aggregationType
= {
params 'series': series_code,
'startDate': start_date,
'endDate': end_date,
'frequency': frequency,
'aggregationTypes': aggregationType,
'type': 'json'
}
= f'https://evds2.tcmb.gov.tr/service/evds/{urlencode(params)}'
url
= requests.get(url=url, headers={'key': api_key})
response
# print(response.request.headers)
= json.loads(response.content)
formatted_response
= formatted_response['items']
data = pd.DataFrame(data)
df
'Tarih'] = pd.to_datetime(df['Tarih']) + pd.offsets.Day(0)
df[= df.drop(columns=['UNIXTIME'])
df = ['Tarih', 'AOFM']
df.columns 'AOFM'] = pd.to_numeric(df['AOFM']) df[
Çok Serili Örnek
Eğer birden fazla seri ile çalışmak istiyorsak, seriler arasında -
olacak şekilde giriş yapacağız.
='TP.BISTTLREF.DUSUK-TP.BISTTLREF.YUKSEK-TP.BISTTLREF.KAPANIS' # Türk Lirası Gecelik Referans Faiz Oranı
series_code='14-06-2019' # Başlangıç
start_date='30-04-2024' # Bitiş
end_date='5' # Aylık
frequency
= {
params 'series': series_code,
'startDate': start_date,
'endDate': end_date,
'frequency': frequency,
'type': 'json'
}
= f'https://evds2.tcmb.gov.tr/service/evds/{urlencode(params)}'
url
= requests.get(url=url, headers={'key': api_key})
response
# print(response.request.headers)
= json.loads(response.content)
formatted_response
= formatted_response['items']
data = pd.DataFrame(data)
df
'Tarih'] = pd.to_datetime(df['Tarih']) + pd.offsets.Day(0)
df[= df.drop(columns=['UNIXTIME'])
df = df.columns[df.columns != 'Tarih']
numeric_columns = df[numeric_columns].apply(pd.to_numeric) df[numeric_columns]
Gelecek içeriklerde görüşmek dileğiyle.