import requests
import json
from urllib.parse import urlencode
import pandas as pdGiriş
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'
series_code='TP.APIFON4' # TCMB Ağırlıklı Ortalama Fonlama Maliyeti
start_date='01-01-2011' # Başlangıç
end_date='30-04-2024' # Bitiş
frequency='5' # Aylık
aggregationType='avg' # Ortalama
params = {
'series': series_code,
'startDate': start_date,
'endDate': end_date,
'frequency': frequency,
'aggregationTypes': aggregationType,
'type': 'json'
}
url = f'https://evds2.tcmb.gov.tr/service/evds/{urlencode(params)}'
response = requests.get(url=url, headers={'key': api_key})
# print(response.request.headers)
formatted_response = json.loads(response.content)
data = formatted_response['items']
df = pd.DataFrame(data)
df['Tarih'] = pd.to_datetime(df['Tarih']) + pd.offsets.Day(0)
df = df.drop(columns=['UNIXTIME'])
df.columns = ['Tarih', 'AOFM']
df['AOFM'] = pd.to_numeric(df['AOFM'])Çok Serili Örnek
Eğer birden fazla seri ile çalışmak istiyorsak, seriler arasında - olacak şekilde giriş yapacağız.
series_code='TP.BISTTLREF.DUSUK-TP.BISTTLREF.YUKSEK-TP.BISTTLREF.KAPANIS' # Türk Lirası Gecelik Referans Faiz Oranı
start_date='14-06-2019' # Başlangıç
end_date='30-04-2024' # Bitiş
frequency='5' # Aylık
params = {
'series': series_code,
'startDate': start_date,
'endDate': end_date,
'frequency': frequency,
'type': 'json'
}
url = f'https://evds2.tcmb.gov.tr/service/evds/{urlencode(params)}'
response = requests.get(url=url, headers={'key': api_key})
# print(response.request.headers)
formatted_response = json.loads(response.content)
data = formatted_response['items']
df = pd.DataFrame(data)
df['Tarih'] = pd.to_datetime(df['Tarih']) + pd.offsets.Day(0)
df = df.drop(columns=['UNIXTIME'])
numeric_columns = df.columns[df.columns != 'Tarih']
df[numeric_columns] = df[numeric_columns].apply(pd.to_numeric)Gelecek içeriklerde görüşmek dileğiyle.