Guiando-se na Prática: Um Manual Hands-On para Análise de Dados com Python

Um guia prático para realizar sua primeira análise de dados usando Python.

Vanderson Amorim
comunidadeds
12 min readDec 9, 2023

--

Você acha que aprender a programar é coisa de outro mundo? Que só gênios conseguem utilizar esse tipo de ferramenta? Eu também achava isso.

Neste artigo vou te mostrar na prática como criar a sua primeira análise em Python, uma das linguagens de programação mais populares do momento, e tentar despertar em você uma curiosidade e vontade em se aprofundar nessa ferramenta magnífica!

Entretanto, antes de iniciarmos o artigo, quero trazer alguns combinados iniciais, especialmente se este for o seu primeiro contato com uma linguagem de programação.

1. Combinados Iniciais

Estes combinados foram de grande importância para mim, e me mostraram que qualquer pessoa é capaz de aprender a programar.

1.1 Boiar primeiro, para nadar depois

Você pode ficar um pouco perdido e não entender 100% do código que vou passar aqui, mas tudo bem. O importante é você ter a curiosidade e proatividade de buscar ajuda caso precise, seja me mandando mensagem (pode entrar em contato comigo pelo meu LinkedIn), seja procurando materiais na internet.

Com o tempo você começa a perceber o padrão dos códigos e entender a lógica por trás, ficando mais fácil tanto para fazer os códigos quanto entender o código dos outros.

1.2 Não decoramos código

Comandos, comandos e mais comandos. Como os programadores experientes decoraram tantos comandos? A resposta é simples e contraditória: eles não decoraram!

Uma linguagem de programação é como qualquer linguagem, é impossível decorarmos todas as palavras. Até na sua língua nativa há palavras que você não conhece. Você já experimentou ler algum livro do Machado de Assis? Exemplos de palavras que estavam em seus livros que eu não conhecia: “engendrar”, “mourejar ”, “pernicioso ”, etc. Portanto, não fique se cobrando para decorar os comandos.

Sempre que quisermos realizar alguma ação, devemos buscar na internet ou na documentação oficial da ferramenta em como realizar essa ação através de um comando. Se utilizarmos ele com frequência, por tanto repetir esse comando, vamos decorá-lo e nas próximas vezes não será mais necessário pesquisar.

Não adianta decorar comandos se não souber como utilizá-los na prática. É mais importante saber a lógica e pesquisar como transformar essa lógica para a linguagem da ferramenta.

1.3 Não se assuste com mensagem de erro

Quando começamos a aprender a programar, mensagens de erro espantam. Mas elas nos ajudam mais do que atrapalham. E fique tranquilo, elas vão te acompanhar por toda a sua carreira na programação, então uma hora você se acostuma.

Sempre que ela aparecer, respire fundo e leia o que a mensagem de erro está querendo transmitir, pode ser algo simples, como um simples erro de digitação, ou algo mais complexo. Neste segundo caso, copie a mensagem de erro e busque na internet, possivelmente alguém já teve o mesmo erro que você e outra pessoa ajudou a resolver. Isso é comum na internet, especialmente em fóruns online, como o Stack Overflow.

1.4 Aprender fazendo

Geralmente temos a tendência de querer aprender tudo sobre uma ferramenta antes de começarmos a utilizá-la. Conhecimento é sim muito importante, mas também devemos colocá-los em prática com exemplos mais próximos da realidade.

A teoria e prática devem andar juntas, de forma análoga às asas de uma ave, ambas devem estar em sincronia para o voo não perder a estabilidade.

Mas, para aprendermos na prática, devemos primeiro escolher uma linguagem para praticarmos. Diante de tantas opções, como escolher a linguagem de programação ideal para essa abordagem prática? Eu escolhi Python, e vou te explicar a seguir o motivo dessa escolha.

2. Por que Python?

Primeiramente, preciso responder uma pergunta que você pode estar se fazendo: “Por que vou aprender esse negócio se eu posso fazer minhas análises usando Excel ou Google Sheets?”

Concordo com você que estas são ferramentas extremamente poderosas e versáteis, além de que são mais fáceis de aprender. Entretanto, elas não são recomendadas para ambientes com um grande volume de dados; não são escaláveis no longo prazo; possuem integrações mais limitadas com outros programas; não permitem automações mais complexas (como automações que envolvem tarefas do sistema: criação de pastas, modificações de arquivos, etc); dentre outros motivos.

Atualmente, a linguagem python é uma das mais populares do mercado, ocasionado principalmente por sua sintaxe mais simples de entender quando comparado às outras linguagens de programação, além de sua grande versatilidade, podendo ser usada para análise de dados, aprendizado de máquina (machine learning), desenvolvimento mobile e de sites, etc.

Maravilha, escolhemos nossa ferramenta! Mas, qual o próximo passo?

Como disse anteriormente, devemos aprender fazendo. Então, vamos analisar qual problema de negócio iremos resolver neste artigo.

3. Nosso problema de negócio

Considere o seguinte contexto: você foi contratado como Analista de Dados em uma empresa de locação de veículos, e precisa gerar um relatório da frota para responder estas perguntas:

  • Quais os veículos com maior quilometragem?
  • Qual a média de quilometragem?
  • Qual a média de tempo parado?

A frota atual possui 40 veículos e você extrai o seguinte relatório no formato .csv (link para download):

Parece ser um relatório bem simples de se fazer em Excel ou Google Sheets, né?

Mas imagine se a empresa fosse uma multinacional, com mais de 500 mil veículos, que disponibilizasse as informações apenas por API, com mais informações (telemetria, condições ambientais, velocidade da via, etc), com taxa de atualização em minutos, gerando arquivos com mais de 1GB no formato csv a cada minuto. Nesse contexto, Excel e Google Sheets não dão conta do recado, e precisaríamos utilizar ferramentas mais robustas, como Python, Apache Spark, etc.

Trouxe esse exemplo para diminuir a complexidade do exercício, onde vamos transferir a lógica que utilizaríamos em uma planilha eletrônica para a lógica do Python. Portanto, antes de escrevermos qualquer código, vamos definir qual a lógica que iremos seguir.

4. Definindo a Lógica de Resolução

Para resolvermos esse problema, vamos considerar a seguinte lógica:

  1. Precisamos converter as colunas “Distância do percurso”, “Velocidade Média”, “Consumo”, “Duração Andando” e “Duração da parada” para o formato numérico. Como essas colunas possuem números e textos, a maioria dos programas vão identificá-las no formato de texto.
  2. Ordenar a tabela por ordem decrescente de distância e selecionar as 10 primeiras linhas, obtendo os 10 veículos com maior quilometragem.
  3. Calcular a média da coluna de distância, para obtermos a média de quilometragem da frota.
  4. Calcular a média da coluna de duração da parada, para obtermos a média de horas que a frota fica parada.

Com isso, INDEPENDENTE da ferramenta, conseguimos resolver o nosso problema de negócio, precisando apenas converter essas lógicas para uma linguagem que a ferramenta compreenda. Dentre várias ferramentas disponíveis, quais escolher?

5. Ferramentas

5.1 Python

Essa é a linguagem de programação que iremos utilizar, responsável por toda a “mágica”. Para efetuar o download da linguagem Python, basta ir no seu site oficial: python.org

5.2 VS Code

Para criar nossos códigos, iremos utilizar a IDE gratuita da Microsoft, o VS Code.

5.3 Pandas

Pandas é uma biblioteca da linguagem Python utilizada para fazer análise e manipulação de dados. De forma resumida, Pandas é o Excel do Python.

Comando para fazer a instalação:

pip install pandas

5.4 Plotly

Plotly é uma ferramenta para criação de gráficos interativos. Para conhecer um pouco mais dessa e de outras ferramentas de visualização, além de algumas técnicas para melhorar seus visuais, recomendo este outro artigo que fiz: Visualização de Dados com Python: Ferramentas e Técnicas.

Definida as ferramentas, vamos começar a parte prática!

6. Realização da Análise

Para começarmos, devemos criar uma pasta onde colocaremos o nosso arquivo .csv e criaremos um arquivo no formato .ipynb, onde escreveremos nosso código:

Abrindo o arquivo .ipynb, faremos a importação das bibliotecas necessárias e rodamos a célula:

Portanto, em todos os códigos onde utilizamos pd. e px., estamos utilizando o Pandas e o Plotly, respectivamente.

Exemplo:

pd.read_csv('caminho_arquivo')

Nesse código, estamos utilizando o Pandas para fazer a leitura de um arquivo CSV.

Estamos prontos para começarmos nossa análise!

6.1 Fazendo a Leitura do Arquivo

Para fazermos a leitura do arquivo e mostrarmos o resultado, rodamos o seguinte código:

IMPORTANTE: os dois arquivos sempre devem estar na mesma pasta. Caso o arquivo com a fonte dos dados seja movido, o Pandas não conseguirá mais localizá-lo! Se for necessário mover o arquivo, deve-se informar ao Pandas qual a nova localização do arquivo.

Como neste arquivo há muitas linhas, vamos usar um comando para mostrar apenas as 5 primeiras linhas do relatório, para facilitar nossa visualização:

Note que a saída não parece com uma tabela. Vamos analisar o arquivo dos dados para entender melhor o motivo.

Abrindo o arquivo no bloco de notas, percebemos que os dados estão separados por ponto e vírgula ;, ao contrário do padrão, onde os dados são separados por vírgula ,. O formato CSV significa Comma Separated Values, ou, em português, Dados Separados por Vírgula.

Por causa disso, devemos informar ao pandas qual o separador que o arquivo está usando:

Pronto, agora sim isso está mais parecido com o Excel!

6.2 Fazendo Tratamento dos Dados

Vamos analisar quais os tipos de dados que temos em cada coluna:

Em Pandas, dados do tipo object são equivalentes aos dados do tipo “Texto” em Excel. Conforme vimos, já esperávamos esse comportamento e precisamos fazer as devidas correções.

Primeiramente, as datas estão no formato brasileiro, e o Pandas não reconhece esse tipo de formato. Para corrigirmos isso, devemos informar qual o formato da data atual e o Pandas transforma-o no formato internacional, que ele consegue ler:

  • Formato antigo: 01/12/2023
  • Formato aceito pelo Pandas: 2023–12–01

As 2 primeiras colunas já foram corrigidas.

Este formato que eu informei para o Pandas descreve como a data da fonte de dados está escrita. Esses caracteres correspondem a:

A lista completa de caracteres pode ser lida nesse site: Python strftime reference cheatsheet.

Para as demais colunas, precisamos remover o texto e convertê-los para número inteiro (int):

Comandos usados:

  • .str: esse comando faz com que possamos acessar funções para manipular strings. Strings são os formatos do python para textos. Com isso, podemos deixar as letras em maiúsculo, retirar espaços vazios, etc.
  • .replace: como já utilizamos .str, podemos usar o método replace de strings para substituir um texto antigo por um novo. Nesse caso, estamos substituindo ‘ Km/h’ por ‘’, retirando esse caractere do texto.
  • .astype: Como todos os caracteres foram removidos, podemos converter os números restantes para o tipo de número inteiro (int).

Com isso, temos a nossa base de dados pronta para análise:

6.3 Quais os veículos com maior quilometragem?

Para responder essa pergunta vamos criar uma nova tabela, chamada top10. Nessa tabela vamos fazer as seguintes atividades:

  1. Ordenar os valores de forma descendente, a partir da coluna Distância: .sort_values('Distância do percurso', ascending = False).
  2. Selecionar os 10 primeiros: .head(10).
  3. Retirar os índices antigos: .reset_index(drop = True).

Primeira pergunta de negócio respondida!

6.4 Qual a média de quilometragem?

Para responder essa pergunta, basta calcularmos a média da coluna de distância, utilizando a função .mean():

Portanto, a média de quilometragem é de 587.2 km por semana.

Entretanto, não vamos nos contentar com apenas essa resposta, vamos agregar mais valor para nossa análise visualizando como está o comportamento geral da frota em relação à quilometragem.

Para isso, vamos criar um gráfico de barras, agrupando os veículos em grupos de quilometragem:

  • Até 300 km.
  • Entre 300 km e 500 km.
  • Entre 500 km e 1000 km.
  • Mais de 1000 km.

Vamos criar uma nova coluna chamada “Intervalo_km”, que informa em quais dos grupos de km cada veículo se encontra. Dessa forma, temos o seguinte código:

Para entender essa função, você pode ler a documentação oficial do pandas: pandas.cut — pandas 2.1.3 documentation. Lembre-se, a teoria deve andar junto com a prática. Caso não tenha entendido, não hesite em buscar ajuda na internet ou entrando em contato comigo.

Verificando as primeiras linhas, temos:

Por fim, criamos uma nova tabela fazendo a contagem de veículos para cada grupo de quilometragem e criamos o gráfico, fazendo algumas alterações em seu layout:

  • df.groupby: funciona de forma similar à tabela dinâmica do Excel, agrupando os valores por ‘Intervalo_km’ e fazendo a contagem (count) da quantidade de ‘Veiculos’. Por fim, utilizamos reset_index() para resetar os indices do novo dataframe, convertendo os índices em colunas. Para entender melhor, tente rodar esse código sem reset_index() e veja a diferença.
  • px.bar: construção do gráfico de barras, conforme exemplo que mostrei no meu outro artigo (Visualização de Dados com Python: Ferramentas e Técnicas).
  • fig.update_xaxes: retirei o título do eixo X, já que está explícito no título do gráfico o que o eixo X representa. Além disso, aumentei a fonte da legenda para 12.
  • fig.update_yaxes: apenas retirei o título do eixo Y.
  • fig.update_layout(width, height, bargap): alterei a altura e largura do gráfico, configurei a largura das barras para 0.4.
  • fig.update_traces: aumentei a fonte do rótulo de dados e o coloquei em negrito.
  • fig.update_layout(title, title_x, title_font): adicionei o título ao gráfico, centralizando-o em relação ao eixo x, com fonte no tamanho 20.

Gráfico final:

6.5 Qual a média de tempo parado?

De forma semelhante à pergunta antiga, calculamos a média da coluna de duração de parada:

Entretanto, essa média de horas é equivalente à semana inteira, e fica difícil de entendermos essa informação. Por causa disso, vamos dividir por 7, que é a quantidade de dias na semana:

Portanto, a média de horas paradas por dia são, aproximadamente, 14.17 horas.

Conforme a pergunta anterior, vamos analisar melhor como está o comportamento geral da frota.

Para isso, vamos criar uma nova coluna chamada ‘media_dias_parado’, onde dividimos cada valor da coluna de duração de parada por 7:

Feito isso, seguimos a mesma lógica da pergunta anterior e criamos um gráfico agrupando os veículos de acordo com a duração média diária de parada:

Obtendo o gráfico:

6.6 Código finalizado!

Parabéns, terminamos o nosso código de análise de dados com Python!

A grande vantagem de utilizar esse código ao invés do Excel é que agora podemos apenas abrir o nosso código e executar todas as células, ao invés de abrirmos o Excel e fazer cada fórmula manualmente. Essa é uma automação simples, mas já mostra o potencial de uso do Python.

E se fosse vários arquivos CSV ao invés de 1?

E se os relatórios fossem enviados automaticamente por email?

Acompanhe o meu perfil no Medium, pois na próxima semana vou trazer algo que fez eu me apaixonar por Python: AUTOMAÇÕES!

7. Conclusão

Neste artigo você realizou sua primeira análise no Python!

Espero ter te motivado a continuar estudando essa ferramenta, assim como eu me senti motivado quando fiz minha primeira análise com Python. Quando conseguimos usá-la pela primeira vez, percebemos que ela não é um bicho de 7 cabeças.

Recomendo você a reescrever o código que você viu nesse artigo, e procure outros códigos em repositórios online, como o Github, e reescreva-os, com o tempo você vai entender os padrões dos códigos.

Se você ficou empolgado com essa análise, saiba que essa é só a ponta do iceberg. Python consegue fazer muitas maravilhas.

Ficou com alguma dúvida ou tem alguma sugestão? Fique à vontade para deixar nos comentários ou entrar em contato comigo pelo meu LinkedIn: Vanderson Amorim | LinkedIn.

Referências e Links Úteis

The Top Programming Languages 2023 — IEEE Spectrum

--

--