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 |