1
resposta

[Projeto] Desafio

import pandas as pd

import chardet

with open ('dados_sus.csv', 'rb') as file:
  print (chardet.detect(file.read()))
  
  dados = pd.read_csv('dados_sus.csv', encoding='ISO-8859-1', sep= ';', skiprows=3, skipfooter=9, engine='python')
dados
1 resposta

Seu código está quase correto para detectar a codificação e ler o arquivo CSV do SUS com pandas. Vou dar uma explicação breve e algumas sugestões para garantir que funcione bem:

python
Copiar
Editar
import pandas as pd
import chardet

Detecta a codificação do arquivo

with open('dados_sus.csv', 'rb') as file:
rawdata = file.read()
result = chardet.detect(rawdata)
print(result)

Usa a codificação detectada para ler o CSV

Ajuste o encoding conforme o resultado do chardet (ex: 'ISO-8859-1')

dados = pd.read_csv(
'dados_sus.csv',
encoding='ISO-8859-1', # ou outra codificação detectada
sep=';',
skiprows=3,
skipfooter=9,
engine='python'
)

print(dados.head())
Algumas dicas:
O chardet.detect() lê todo o arquivo, então é melhor salvar esse resultado antes de tentar ler com pandas.

Use engine='python' quando usar skipfooter.

Garanta que o encoding passado para o read_csv seja exatamente o que o chardet retornar (result['encoding']).

Para grandes arquivos, pode ser melhor ler só parte do arquivo para detectar encoding.