rafpyprog/pySGS

Problema de SO (Linux/Windows)

marcelo-ventura opened this issue · 7 comments

Prezado, muito obrigado pela excelente contribuição com seu pacote para a comunidade.

Estou usando o módulo para obter a taxa Selic.

Para windows funciona perfeitamente, porém em linux o seguinte comando me retorna um dataframe com nomes de colunas diferentes:

sgs = SGS()
selic = sgs.get_valores_series(series.SELIC_META, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))

Em linux tenho as seguintes colunas: 432

                 432

2010-01-04 8,75
2010-01-05 8,75
2010-01-06 8,75
2010-01-07 8,75
2010-01-08 8,75

Em windows ele me retorna como colunas (data, valor)

Obrigado pela atenção.

Qual a versão do sgs que você tem instalada?

A versão é a 1.27.4

Mano, descobri aqui que a versão 1.30.2 é a que apresenta o problema.
A 1.27.4 funcionou perfeitamente no linux.

Olá Marcelo,

O problema está resolvido na última versão do pacote (2.0). Peço que atualize a sua instalação:

$ pip install sgs -U

import sgs
import datetime as dt
sgs.time_serie(432, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))

@rafpyprog , a versão foi atualizada. No linux mint agora a tabela vem sem o nome das colunas, e retorna um pandas series.

Eu consegui contornar isso da seguinte forma:

selic = sgs.time_serie(432, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
selic = pd.DataFrame({"DATA":selic.index, "VALOR": selic})

Caso eu use o pd.DataFrame no objeto selic sem especificar as colunas, ele diz que o nome da coluna é 432.

Vou fechar essa issue pois consegui resolver meu problema.

Mas talvez seja melhor que a consulta retorne um dataframe ao invés de um pandas series. Apenas uma sugestão.

Muito obrigado pela atenção.

@marcelo-ventura, você consegue obter um dataframe da seguinte forma:

>>> import sgs
>>> import datetime as dt
>>> df = sgs.dataframe(432, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
>>> type(df)
<class 'pandas.core.frame.DataFrame'>

Caso deseje gerar um dataframe com múltiplas séries basta passar uma lista com os códigos:

>>> import sgs
>>> import datetime as dt
>>> df = sgs.dataframe([432, 1], "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
>>> df.head()
             432     1  
2010-01-04  8.75  1.7240
2010-01-05  8.75  1.7227
2010-01-06  8.75  1.7337
2010-01-07  8.75  1.7413
2010-01-08  8.75  1.7390  

Após a versão 2.0 o nome das colunas retornado será o código da série.

Excelente @rafpyprog ! Muito obrigado pelo esclarecimento. Irei fazer dessa forma sugerida.