Skip to content

Commit ffc8ee1

Browse files
Kurt Forresterbashtage
authored andcommitted
added `freq` paramter `_BaseReader` and updated `def params` to accomodate monthly frequency data from the World Bank database.
1 parent 8d3e50f commit ffc8ee1

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

pandas_datareader/base.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,35 @@ class _BaseReader(object):
1919
"""
2020
Parameters
2121
----------
22-
sym : string with a single Single stock symbol (ticker).
22+
symbols : {str, List[str]}
23+
String symbol of like of symbols
2324
start : string, (defaults to '1/1/2010')
24-
Starting date, timestamp. Parses many different kind of date
25-
representations (e.g., 'JAN-01-2010', '1/1/10', 'Jan, 1, 1980')
25+
Starting date, timestamp. Parses many different kind of date
26+
representations (e.g., 'JAN-01-2010', '1/1/10', 'Jan, 1, 1980')
2627
end : string, (defaults to today)
27-
Ending date, timestamp. Same format as starting date.
28+
Ending date, timestamp. Same format as starting date.
2829
retry_count : int, default 3
29-
Number of times to retry query request.
30+
Number of times to retry query request.
3031
pause : float, default 0.1
31-
Time, in seconds, of the pause between retries.
32+
Time, in seconds, of the pause between retries.
3233
session : Session, default None
33-
requests.sessions.Session instance to be used
34+
requests.sessions.Session instance to be used
35+
freq : {str, None}
36+
Frequency to use in select readers
3437
"""
3538

3639
_chunk_size = 1024 * 1024
3740
_format = 'string'
3841

39-
def __init__(self, symbols, start=None, end=None,
40-
retry_count=3, pause=0.1, timeout=30, session=None):
42+
def __init__(self, symbols, start=None, end=None, retry_count=3,
43+
pause=0.1, timeout=30, session=None, freq=None):
44+
4145
self.symbols = symbols
4246

4347
start, end = _sanitize_dates(start, end)
4448
self.start = start
4549
self.end = end
50+
self.freq = freq
4651

4752
if not isinstance(retry_count, int) or retry_count < 0:
4853
raise ValueError("'retry_count' must be integer larger than 0")

pandas_datareader/wb.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class WorldBankReader(_BaseReader):
116116
_format = 'json'
117117

118118
def __init__(self, symbols=None, countries=None,
119-
start=None, end=None,
119+
start=None, end=None, freq=None,
120120
retry_count=3, pause=0.001, session=None, errors='warn'):
121121

122122
if symbols is None:
@@ -125,7 +125,7 @@ def __init__(self, symbols=None, countries=None,
125125
symbols = [symbols]
126126

127127
super(WorldBankReader, self).__init__(symbols=symbols,
128-
start=start, end=end,
128+
start=start, end=end, freq=freq,
129129
retry_count=retry_count,
130130
pause=pause, session=session)
131131

@@ -155,6 +155,10 @@ def url(self):
155155

156156
@property
157157
def params(self):
158+
if self.freq == 'M':
159+
return {'date': '{0}M{1:02d}:{2}M{3:02d}'.format(self.start.year,
160+
self.start.month, self.end.year, self.end.month),
161+
'per_page': 25000, 'format': 'json'}
158162
return {'date': '{0}:{1}'.format(self.start.year, self.end.year),
159163
'per_page': 25000, 'format': 'json'}
160164

0 commit comments

Comments
 (0)