|
4 | 4 |
|
5 | 5 | from requests import Response |
6 | 6 |
|
7 | | -URL_begin = "https://sdw-wsrest.ecb.europa.eu/service/data/" |
8 | | -URL_end = "/" |
| 7 | +URL_BASE = "https://sdw-wsrest.ecb.europa.eu/service/data/" |
| 8 | +URL_END = "/" |
9 | 9 |
|
10 | 10 |
|
11 | | -def get_data_frame(agency: str = 'FM', code: str = 'D.U2.EUR.4F.KR.MRR_FR.LEV', freq: str = 'D', |
12 | | - detail: str = "dataonly", format: str = "csvdata", |
13 | | - startperiod: str = '1900-01-01', endperiod: str = None) -> pd.Series: |
14 | | - request_url = URL_begin + agency + URL_end + code |
15 | | - params = {'detail': detail, |
16 | | - 'format': format, |
17 | | - 'startPeriod': startperiod, |
18 | | - 'endPeriod': endperiod |
19 | | - } |
20 | | - abc: Response = requests.get(request_url, params=params) |
| 11 | +def get_data_frame( |
| 12 | + agency: str = "FM", |
| 13 | + code: str = "D.U2.EUR.4F.KR.MRR_FR.LEV", |
| 14 | + freq: str = "D", |
| 15 | + detail: str = "dataonly", |
| 16 | + format: str = "csvdata", |
| 17 | + start_period: str = "1900-01-01", |
| 18 | + end_period: str = None, |
| 19 | +) -> pd.Series: |
| 20 | + request_url = URL_BASE + agency + URL_END + code |
| 21 | + params = { |
| 22 | + "detail": detail, |
| 23 | + "format": format, |
| 24 | + "start_period": start_period, |
| 25 | + "end_period": end_period, |
| 26 | + } |
| 27 | + try: |
| 28 | + abc: Response = requests.get(request_url, params=params) |
| 29 | + except requests.exceptions.HTTPError as err: |
| 30 | + raise requests.exceptions.HTTPError( |
| 31 | + f"HTTP error fetching data for {code}:", |
| 32 | + abc.status_code, |
| 33 | + abc.reason, |
| 34 | + URL_BASE, |
| 35 | + ) from err |
21 | 36 | jresp = abc.text |
22 | | - df = pd.read_csv(StringIO(jresp), |
23 | | - usecols=['TIME_PERIOD', 'OBS_VALUE'], |
24 | | - dtype={'OBS_VALUE': float}, |
25 | | - parse_dates=['TIME_PERIOD']) |
| 37 | + df = pd.read_csv( |
| 38 | + StringIO(jresp), |
| 39 | + usecols=["TIME_PERIOD", "OBS_VALUE"], |
| 40 | + dtype={"OBS_VALUE": float}, |
| 41 | + parse_dates=["TIME_PERIOD"], |
| 42 | + ) |
26 | 43 | df.rename(columns={df.columns[0]: "date"}, inplace=True) |
27 | | - df.set_index('date', inplace=True) |
| 44 | + df.set_index("date", inplace=True) |
28 | 45 | df.index = df.index.to_period(freq=freq) |
29 | 46 | return df.squeeze() |
0 commit comments