Extração de dados (arquivo zip) via URL com Python

Gabi Fernandes
@gabifernandesc
Published in
4 min readNov 23, 2020

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!!!

--

--

Gabi Fernandes
@gabifernandesc

Data Science student | Entrepreneur | Business Intelligence | Developer