PySUS icon indicating copy to clipboard operation
PySUS copied to clipboard

No module named 'pysus.utilities.readdbc'

Open VieiraJardel opened this issue 1 year ago • 3 comments

Parece que o PySUS não contém mais o módulo utilities.readdbc. Estou tentando converter um arquivo .dbc para csv do datasus e ao tentar importar essa função surge essa mensagem de erro. Estou usando o colab.

VieiraJardel avatar Aug 04 '24 14:08 VieiraJardel

Olá @VieiraJardel, poderias tentar o novo método de conversão de DBC para parquet? Após a conversão para Parquet, você pode usar o método to_dataframe(), depois consegues exportar para CSV com o pandas. Creio que a documentação dos ParquetSets ainda não tenha sido incluida

In [5]: from pysus.data.local import Data

In [6]: file = Data("/home/bida/pysus/ABMG1112.dbc")

In [7]: file # converte para Parquet
Out[7]: /home/bida/pysus/ABMG1112.parquet

In [8]: file.to_dataframe()
Out[8]:
    AP_MVM AP_CONDIC AP_GESTAO AP_CODUNI  ... AB_ANOACOM AB_PONTBAR AB_TABBARR AP_NATJUR
0   201112        PG    310620   0027049  ...       2             0          2
1   201112        PG    310620   0027049  ...                     1          3
2   201112        PG    310620   0027049  ...       05            1          3
3   201112        PG    310620   0027014  ...       04            1          4
4   201112        PG    310620   0027014  ...                     0          2
5   201112        PG    310620   0027049  ...                     1          3
6   201112        PG    310620   0027049  ...       02            1          3
7   201112        PG    310620   0027014  ...       01            1          4
8   201112        PG    310620   0027014  ...                     1          3
9   201112        PG    310620   0027014  ...                     1          4
10  201112        PG    310620   0027049  ...                     1          3
11  201112        PG    310620   0027014  ...                     1          4
12  201112        PG    310620   0027014  ...       03            1          2
13  201112        PG    310620   0027049  ...                     1          3
14  201112        PG    310620   0027014  ...                     0          3
15  201112        PG    310620   0027049  ...                     1          3
16  201112        PG    310620   0027014  ...                     1          3
17  201112        PG    310620   0027049  ...                     1          3
18  201112        PG    310620   0027049  ...       08            1          3
19  201112        PG    310620   0027014  ...                     1          4
20  201112        PG    310620   0027014  ...                     1          2
21  201112        PG    310620   0027049  ...       03            1          3
22  201112        PG    310620   0027014  ...                     1          4
23  201112        PG    310620   0027014  ...                     1          4
24  201112        PG    310620   0027049  ...       02            0          1
25  201112        PG    310620   0027049  ...                     1          3

[26 rows x 58 columns]

In [9]: file.to_dataframe().to_csv("ABMG1112.csv")


luabida avatar Aug 06 '24 14:08 luabida

Olá, luabida!

Eu possuo alguns arquivos armazenados localmente que foram lidos com o módulo antigo utilities.readdbc utilizando um readdbc(file, encoding="cp437") com a versao pysus==0.9.4.

Essa nova versão mais atual do pysus, utilizando o módulo from pysus.data.local import Data, não está mais permitidno que eu passe o parâmetro encoding desejado. Alguma sugestão ou possibilidade de o parâmetro encoding ser aplicável novamente?

Obrigado

vinmaga avatar Aug 16 '24 02:08 vinmaga

Hey @vinmaga

O pyreaddbc é outro pacote que também é mantido pelo projeto, se quiser podes continuar utilizando o mesmo pacote para leitura de DBC sem problemas

luabida avatar Aug 17 '24 02:08 luabida

Existe uma maneira de apenas ler em memória (DataFrame) o conteúdo do dbf, sem gerar automaticamente um .parquet e sem apagar o arquivo .dbc original?

douglasArantes avatar Jan 24 '25 18:01 douglasArantes

@douglasArantes Atualmente com o Pysus não é possível baixar o DBF sem converter para parquet no processo. Podemos discutir a implementação da possibilidade de download sem converter para parquet com o @fccoelho

luabida avatar Jan 27 '25 11:01 luabida

@douglasArantes, Precisamos lembrar que o DBF é um formato intermediário na extração dos dados a partir do DBC que o DataSUS disponibiliza. O DBC Original pode ser acessado no FTP do DataSUS. O formato parquet é utilizado, por ser um formato mais moderno e compactado, usando apenas cerca de 10% do espaço em disco usado pelo DBF com os mesmos dados. Os arquivos parquet também podem ser utilizados diretamente por bancos analíticos com o DuckDB.

fccoelho avatar Jan 27 '25 12:01 fccoelho