DEV Community

vikttu
vikttu

Posted on

Como criar um projeto iniciante em análise de dados

Olá, hoje vamos criar um primeiro projeto para você, iniciante na área de dados, conseguir começar a criar um portfólio bacana e com todas as ferramentas necessárias para trabalhar com dados!

Esse projeto mostra que, mesmo que você seja um iniciante em python, sempre é possível encontrar bibliotecas para a execução de tarefas mais complexas que você ainda não saiba como fazer do zero (algumas coisas nem vale a pena fazer do zero também). Antes de tudo, é importante que você tenha um conhecimento inicial de python e SQL, além de um pouco de conhecimento de Tableau para a criação do dashboard. Não é necessário que você seja um expert, mas saber o básico destas ferramentas irá ajudá-lo a seguir o projeto com maior facilidade, mas você pode ler o artigo inteiro e tentar reproduzir ele também pois vou tentar explicar da forma mais simples possível para que você já saia criando o seu primeiro dashboard!

Vamos começar?

Primeiro passo é ter seu ambiente de desenvolvimento configurado na sua máquina, os requisitos para este projeto são:

  • Python 3
  • MySQL 9.1 (versão mais recente no site)
  • Tableau Public

Estou desenvolvendo este projeto em um ambiente com Windows 11, então algumas coisas podem variar dependendo do seu OS ou versão Windows, mas nada que fuja muito do que vou apresentar aqui.

Vamos começar com o Python. Vá até o site https://www.python.org/downloads/ e baixe a versão mais recente do instalador. Após a instalação, reinicie o seu PC para evitar bugs (como aconteceu comigo hahah) e conseguir usar a linguagem sem problemas na linha de comando.

Depois, com o MySQL, vá para o site https://dev.mysql.com/downloads/mysql/ e baixe o instalador do MySQL Community Server. Só seguir a instalação padrão e tudo irá correr perfeitamente.

Agora, com o Tableau Public, entre em https://www.tableau.com/pt-br/products/public/download e crie a sua conta para iniciar o download. A criação da conta também será necessária para a publicação do seu primeiro dashboard e também será muito importante para o seu portifólio!

Outra ferramenta que não é necessária, mas que é muito bom ter, é o git e uma conta no github. Eu coloquei meu código todo com commits e comentários aqui e é muito bom usar o github como um portfólio do seu código, mas se você não sabe git não tem problema e seu projeto vai funcionar da mesma forma.

Quando já estiver com tudo configurado, vá para o diretório aonde você colocará a sua aplicação, então, vamos fazer mais algumas configurações. Você precisará de algumas bibliotecas do Python para usar no projeto, vou explicar o que cada uma faz e como instalar elas.

A primeira biblioteca que vamos utilizar é a BeautifulSoup. Os dados que vamos precisar para este projeto estão na internet e vamos ter que fazer um processo chamado Web Scraping para coletá-los, BeautifulSoup nos ajudará com esse processo nos trazendo ferramentas que facilitam essa coleta.
Para instalá-lo, é só ir no terminal e digitar

pip install beautifulsoup4
Enter fullscreen mode Exit fullscreen mode

e... pronto! Instalar dependências em python é muito simples!

A segunda biblioteca que vamos utilizar é requests. Se vamos trabalhar com páginas web precisamos de algo que nos ajude a performar ações CRUD com APIs, então essa será a nossa escolha. De novo, só instalar no terminal com

pip install requests
Enter fullscreen mode Exit fullscreen mode

Vamos também implementar boas práticas e utilizar variáveis de ambiente (para que ninguém descubra nossas senhas, nomes de usuário e outras informações sensíveis no nosso código), então vamos precisar de os e dotenv. A os já deve estar instalada por padrão no python, já a dotenv não, então é o processo de sempre

pip install dotenv
Enter fullscreen mode Exit fullscreen mode

E, por último, mas não menos importante, precisamos de uma biblioteca para conectar ao nosso banco de dados MySQL, então vamos utilizar mysql.connector

pip install mysql-connector-python
Enter fullscreen mode Exit fullscreen mode

Uma vez que temos o ambiente de desenvolvimento configurado, é só partir para a parte mais divertida do processo, PROGRAMAR!!

Nós vamos fazer um projeto que será dividido em duas partes (em relação ao código), o web scraping e a manipulação do banco de dados, então vamos iniciar criando o arquivo do web scraping, que também será aonde o código principal irá ficar, e depois vamos criar um arquivo para colocar as nossas funções de manipulação de banco de dados. Isso nos ajuda não só na manutenção do código como também na sua reutilização.

Crie um arquivo chamado web_scrapper.py no diretório da aplicação.
Em seguida, vamos importar as nossas dependências que instalamos anteriormente.

from bs4 import BeautifulSoup
import requests
import db_manager
import os
from dotenv import load_dotenv
Enter fullscreen mode Exit fullscreen mode

Da dotenv nós só vamos precisar da função load_dotenv e por isso vamos importar só ela.

Primeiro vamos pensar na estrutura do nosso código e escrever o que queremos que cada coisa faça, etapa por etapa, assim fica mais organizado. Nós queremos que o nosso código faça as seguintes ações:

  1. Criar o web scraper e guardar os dados em variáveis
  2. Popular o banco de dados com os dados que pegamos
  3. Pegar os dados do banco e colocar em um arquivo csv para podermos analizá-los no Tableau Public

Vamos por partes, a primeira parte que queremos criar e testar é a da criação do web scraper, então o jeito é começar por ela!
Nós vamos usar um site feito para esse tipo de coisa, o https://www.scrapethissite.com/, lá você encontra vários tipos de páginas para praticar web scraping. Estamos interessados particularmente no modelo para iniciantes, então vamos fazer um request para essa página:

page_countries_area_population = requests.get(
    "https://www.scrapethissite.com/pages/simple/"
)
Enter fullscreen mode Exit fullscreen mode

Aqui utilizamos o método get do requests que seria equivalente ao read do CRUD, ele retorna a página web e armazena ela inteira na variável que criamos page_countries_area_population.
Depois, precisamos que o BeautifulSoup faça um parse do html da página para que ele consiga encontrar as informações que precisamos. Para isso, vamos criar uma variável chamada soup e chamar o BeaultifulSoup e passar o texto da variável que criamos para ele

soup = BeautifulSoup(page_countries_area_population.text, "html.parser")
Enter fullscreen mode Exit fullscreen mode

Isso vai retornar a página já com o parse e os métodos do BeautifulSoup atrelados a ela dentro da variável que criamos, assim facilitando o nosso trabalho.
Agora precisamos identificar as informações que queremos retirar da página, para isso precisamos inspecionar a página web e identificar os elementos e seus padrões dentro do documento html. Neste caso vemos que os nomes dos países estão dentro de uma tag h3 e com a classe country-name, então vamos usar isso para pegar os nomes dos países

country_names = soup.findAll("h3", attrs={"class": "country-name"})
Enter fullscreen mode Exit fullscreen mode

Aqui chamamos o soup que criamos anteriormente e chamamos a função findAll que vai buscar todas as instâncias de nomes de países para nós. O primeiro parâmetro é o elemento html que estamos procurando e o segundo seriam os seus atributos, já que podem ter outras tags h3 que não queremos que ele selecione, neste caso passamos a classe country-name para identificar os elementos que queremos.
Repetimos o processo para o número de habitantes e a área de cada país

country_populations = soup.findAll("span", attrs={"class": "country-population"})
country_areas = soup.findAll("span", attrs={"class": "country-area"})
Enter fullscreen mode Exit fullscreen mode

Antes de passar esses dados para o banco de dados, vamos limpá-los e deixar num formato que evite coisas indevidas entrem com eles. Para isso eu vou criar uma lista de tuplas para armazenar os dados antes de passarmos eles para o banco, pois isso facilitará o processo. Antes de adicioná-los, porém, precisamos tirar espaços em branco do nome dos países também.

populate_country = []

for country_name, country_population, country_area in zip(country_names, country_populations, country_areas):
    item = (country_name.text.strip(), country_population.text, country_area.text)
    populate_country.append(item)

Enter fullscreen mode Exit fullscreen mode

E com isso já temos os dados que precisamos! Podemos riscar essa primeira tarefa da nossa lista!

Na parte dois desse artigo eu vou ensinar como manipular um banco de dados usando python e terminar o nosso projeto 😉

Top comments (0)