rafpyprog/pySGS

Erro ao tentar pegar metadata da serie 21554

PedroDaumas opened this issue · 1 comments

Boa Tarde, quando tento coletar a serie 21554 recebo os seguinte erro

codigo:

ts = sgs.time_serie(i, start=first_date_str, end=last_date_str)

Nesse caso i é o numero da serie, first_date_str e last_date_str são as datas do primeiro e ultimo dado da serie, que vem no metadata ( search_ts )

i = 21554
first_date_str = "31/12/1992"
last_date_str = "01/06/2019"

Erro:

Traceback (most recent call last): File ".\populate_db.py", line 41, in <module> ts = sgs.time_serie(i, start=first_date_str, end=last_date_str) File "C:\Users\U002875\AppData\Local\Continuum\anaconda3\lib\site-packages\sgs\ts.py", line 44, in time_serie return pd.Series(values, index, name=ts_code, dtype=np.float) File "C:\Users\U002875\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\series.py", line 314, in __init__ data = sanitize_array(data, index, dtype, copy, raise_cast_failure=True) File "C:\Users\U002875\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\internals\construction.py", line 679, in sanitize_array subarr = _try_cast(data, dtype, copy, raise_cast_failure) File "C:\Users\U002875\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\internals\construction.py", line 793, in _try_cast subarr = construct_1d_ndarray_preserving_na(subarr, dtype, copy=copy) File "C:\Users\U002875\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\dtypes\cast.py", line 1289, in construct_1d_ndarray_preserving_na subarr = np.array(values, dtype=dtype, copy=copy) ValueError: could not convert string to float:

Olá @PedroDaumas,

Esta séries tem valores nulos, que não eram esperados pelo pacote. Farei o tratamento deste caso e uma nova versão do pacote será publicada nos próximos dias. Enquanto isso, caso deseje, você pode improvisar com o código abaixo para trazer os dados

import pandas as pd
import numpy as np

data = sgs.api.get_data(i, first_date_str, last_date_str)
df = pd.DataFrame(data)
df.loc[df.valor == '', 'valor'] = np.nan
df.valor = df.valor.astype(np.float)
df.head()
  data valor
01/10/1992 143235.8
01/10/1993 153290.9
01/04/1994 NaN
01/10/1994 153572.2
01/04/1995 NaN