Extração de dados (arquivo zip) via URL com Python
Aqui apresento o passo a passo para extrair dados de um link url em formato zip com Python.
Vamos trabalhar com os microdados do dados do Enad de 2019.
Os dados são encontrados neste link: https://www.gov.br/inep/pt-br/acesso-a-informacao/dados-abertos/microdados
Clique com o botão direito sobre o link e copie o endereço http.
Lembrando que eu uso a distribuição do Python Anaconda e o Jupyter Lab.
Passo 1- Importar as bibliotecas
As bibliotecas podem variar de acordo com o seu objetivo e necessidades de transformação dos dados.
Aqui vou utilizar algumas que suprem a demanda do processamento destes dados para o meu trabalho.
As bibliotecas utilizadas são:
- Pandas: a principal e mais completa biblioteca para análise de dados. Fornece ferramentas e estruturas de dados de alta performance.
- Numpy: é usada principalmente para computação científica. Fornece um grande conjunto de funções e operações que ajudam a executar facilmente cálculos numéricos.
- Zipfile: fornece ferramentas para criar, ler, escrever, adicionar, e listar um arquivo ZIP.
- Requests: é uma biblioteca HTTP para Python simples
- IO - bytesIO: processamento da operação de E / S de vários tipos (como E / S de texto, E / S binária e E / S bruta), fluxo de dados (um objeto semelhante a um arquivo).
- Os: fornece uma maneira simples de criar pastas, verificar conteúdos de pastas, caminhar pelas pastas.
Veja o código:
Passo 2 - Criar uma pasta
Neste passo vamos criar uma pasta para receber os arquivos baixados.
Acionamos a biblioteca os e método makedirs, o segundo parâmetro é importante para quando precisar rodar a célula novamente, e a pasta já existindo não retornar erro ao executar.
Passo 3 - Chamada request e extração do zip
Neste passo vamos estruturar o código que irá fazer o download dos dados e irá descompactar o zip salvando o conteúdo na pasta criada no passo acima.
Primeiro, atribuímos o link copiado da página do inep a uma varíavel chamada url para facilitar a manipulação no código.
Em seguida usamos a BytesIO para configurar o imput dos dados e fazemos a requisição HTTP get com o requests chamando o conteúdo da url.
Nesta célula também faremos a extração do conteúdo zip para a pasta. Para tal, utilizamos a biblioteca zipfile e chamamos como parâmetro o filebytes criado acima e por fim, indico para extrair tudo e colocar na pasta enade2019.
Entendendo o conteúdo baixado
Após o download você verá 3 subpastas. O
Verificando os dados baixados
Vamos utilizar o pandas para ler e visualizar os dados baixados.
Importante ressaltar que um arquivo txt pode ser considerado como CSV já que o separados é ponto e vírgula em ambos.
Para saber os separadores e decimais verificamos a documentação dos dados. Todos os dados profissionais trazem essa informação.
É muito importante ler e entender os dados que está manipulando antes de iniciar qualquer transformação.
Na célula 4 de códigos, vamos ler os dados e definir o separador e o decimal. Por sua vez, a célula 5 faz a visualização dos dados.
Verificando as informações da tabela, quantidade de linhas, colunas, tipos de dados. Para verificar use o método info().
Para saber o tipo de dado de cada coluna, podemos usar o método .dtypes() só que ele irá retornar apenas as 5 primeiras e 5 últimas linhas.
A solução é criar um dicionário, veja no código abaixo.
Agora que vc já analisou todos os dados, pode iniciar a transformação!!!