1-
21from io import StringIO
32
43import requests
@@ -42,52 +41,48 @@ def _codes(codes):
4241
4342
4443def _get_url_and_payload (code , start_date , end_date , last ):
45- payload = {' formato' : ' json' }
44+ payload = {" formato" : " json" }
4645 if last == 0 :
4746 if start_date is not None or end_date is not None :
48- payload ['dataInicial' ] = Date (start_date ).date .strftime ('%d/%m/%Y' )
49- end_date = end_date if end_date else 'today'
50- payload ['dataFinal' ] = Date (end_date ).date .strftime ('%d/%m/%Y' )
51- url = 'http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados' \
52- .format (code )
47+ payload ["dataInicial" ] = Date (start_date ).date .strftime ("%d/%m/%Y" )
48+ end_date = end_date if end_date else "today"
49+ payload ["dataFinal" ] = Date (end_date ).date .strftime ("%d/%m/%Y" )
50+ url = "http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados" .format (code )
5351 else :
54- url = ('http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados'
55- '/ultimos/{}' ).format (code , last )
52+ url = (
53+ "http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados" "/ultimos/{}"
54+ ).format (code , last )
5655
57- return {
58- 'payload' : payload ,
59- 'url' : url
60- }
56+ return {"payload" : payload , "url" : url }
6157
6258
6359def _format_df (df , code , freq ):
64- cns = {' data' : ' Date' , ' valor' : code .name , ' datafim' : ' enddate' }
60+ cns = {" data" : " Date" , " valor" : code .name , " datafim" : " enddate" }
6561 df = df .rename (columns = cns )
66- if ' Date' in df :
67- df [' Date' ] = pd .to_datetime (df [' Date' ], format = ' %d/%m/%Y' )
68- if ' enddate' in df :
69- df [' enddate' ] = pd .to_datetime (df [' enddate' ], format = ' %d/%m/%Y' )
70- df = df .set_index (' Date' )
62+ if " Date" in df :
63+ df [" Date" ] = pd .to_datetime (df [" Date" ], format = " %d/%m/%Y" )
64+ if " enddate" in df :
65+ df [" enddate" ] = pd .to_datetime (df [" enddate" ], format = " %d/%m/%Y" )
66+ df = df .set_index (" Date" )
7167 if freq :
7268 df .index = df .index .to_period (freq )
7369 return df
7470
7571
7672def get (codes , start = None , end = None , last = 0 , multi = True , freq = None ):
77- '''
73+ """
7874 Retorna um DataFrame pandas com séries temporais obtidas do SGS.
7975
8076 Parameters
8177 ----------
8278
83- symbols : {int, List[int], List[str], Dict[str:int]}
79+ codes : {int, List[int], List[str], Dict[str:int]}
8480 Este argumento pode ser uma das opções:
8581
86- ``int`` : código da série temporal
87-
88- ``list`` ou ``tuple`` : lista ou tupla com pares ``('nome', código)``
89-
90- ``dict`` : dicionário com pares ``{'nome': código}``
82+ * ``int`` : código da série temporal
83+ * ``list`` ou ``tuple`` : lista ou tupla com códigos
84+ * ``list`` ou ``tuple`` : lista ou tupla com pares ``('nome', código)``
85+ * ``dict`` : dicionário com pares ``{'nome': código}``
9186
9287 Com códigos numéricos é interessante utilizar os nomes com os códigos
9388 para definir os nomes nas colunas das séries temporais.
@@ -112,18 +107,18 @@ def get(codes, start=None, end=None, last=0, multi=True, freq=None):
112107
113108 ``DataFrame`` :
114109 série temporal univariada ou multivariada,
115- quando solicitado mais de uma série.
110+ quando solicitado mais de uma série (parâmetro ``multi=True``) .
116111
117112 ``list`` :
118113 lista com séries temporais univariadas,
119- quando solicitado mais de uma série.
120- '''
114+ quando solicitado mais de uma série (parâmetro ``multi=False``) .
115+ """
121116 dfs = []
122117 for code in _codes (codes ):
123118 urd = _get_url_and_payload (code .value , start , end , last )
124- res = requests .get (urd [' url' ], params = urd [' payload' ])
119+ res = requests .get (urd [" url" ], params = urd [" payload" ])
125120 if res .status_code != 200 :
126- raise Exception (' Download error: code = {}' .format (code .value ))
121+ raise Exception (" Download error: code = {}" .format (code .value ))
127122 df = pd .read_json (StringIO (res .text ))
128123 df = _format_df (df , code , freq )
129124 dfs .append (df )
0 commit comments