Article image
Kauã Fabricio
Kauã Fabricio28/01/2024 19:44
Compartilhe

Explorando a biblioteca Pandas para Análise Exploratória de Dados

  • #Python

Nos últimos tempos, estou explorando a diversidade das ferramentas do Python, que facilitam a resolução de diversos problemas da vida real. Uma dessas ferramentas é a biblioteca Pandas, muito utilizada para analisar conjuntos de dados, manipulá-los, conseguir insights, além de ser integrada com outras bibliotecas de visualização de dados, como o Matplotlib e Seaborn. Estou sempre buscando aprimorar meus conhecimentos, e escrever sobre eles me ajuda bastante.

Dessa forma, gostaria de explorar essas ferramentas, tanto Pandas, quanto Matplotlib, ambas do Python, mostrando a minha primeira Análise Exploratória de Dados de um conjunto de dados que encontrei no Kaggle, sobre a saúde do sono e estilo de vida de um conjunto de pessoas, composto por 12 colunas (gênero, idade, profissão, duração do sono, qualidade do sono, nível de atividade física, nível de estresse, imc, pressão sanguínea, frequência cardíaca, passos diários, e distúrbio do sono) e 374 linhas correspondentes a indivíduos.

Biblioteca Pandas

Pandas é uma biblioteca do Python, como já falei, muito utilizada para Análise de Dados. Mas, o que faz ela ser tão útil? Esta biblioteca oferece estruturas de dados poderosas, e ferramentas para trabalhar com conjuntos de dados tabulares e séries temporais. Mas, o que é séries? Séries temporais? Dados tabulares?

Estruturas de Dados

image

Suas principais estruturas de dados, são DataFrames, e Séries.

DataFrame(ou tabela): é uma estrutura de dados bidimensional, semelhante à dados tabulares em banco de dados, ou planilha. É constituída por linhas e colunas (colunas = séries), onde cada coluna possui um tipo de dado diferente (string, int, float, datas...). Você pode pensar o DataFrame como um conjunto de Séries que compartilham o mesmo índice.

Séries(ou colunas): é uma estrutura de dados unidimensional, semelhante a uma lista, que possui um tipo de dado, e índices para identificar cada elemento da coluna.

Mas, como assim o Pandas oferece ferramentas para trabalhar com séries temporais?

Uma série temporal seria uma coluna que possui datas, logo, esta biblioteca oferece suporte para trabalhar com esse tipo de dado de maneira abstraída, para organizá-las em ano, trimestre, mês, semanas, ou em ordem cronológica, o que pode ser muito útil em diversos contextos.

Além disso, a biblioteca oferece suporte para:

Carregar dados tabulares de diversos formatos, como Excel, csv, banco de dados SQL, entre outros.

Limpeza e transformação de dados, incluindo remoção de dados nulos, ordenação, filtração, agregação e pivoteamento.

Operações matemáticas e estatísticas em dados, como média, mediana, desvios de padrão, contagem, entre outros.

Visualizar dados em gráficos utilizando integração com outras bibliotecas como, Matplotlib e Seaborn.

Poderia me estender mais, porém acho importante a prática para aprender de fato, com a ajuda de alguma inteligência artificial para retirar dúvidas e acelerar o aprendizado, como o ChatGPT.

Análise Exploratória de Dados

Resumidamente, a EDA (Exploratory Data Analysis) é uma técnica de análise de dados utilizada para entender os dados, o que eles estão nos falando. Eu amo a expressão "os dados que falam", e isso faz referência a conseguir extrair conhecimentos de um conjunto de dados, ou seja, insights. Para isso, utiliza-se estatística para entender a distribuição e natureza dos dados, visualização dos dados em gráficos para identificar padrões, tendências, outliers, e relacionamentos entre variáveis, tratamento de dados ausentes ou inconsistentes, entre outros aspectos para tomar decisões inteligentes. Eu entendo a Análise Exploratória de Dados como uma série de perguntas ao dados.

E aí, vamos para prática?

Como falei, irei compartilhar minha primeira análise exploratória de dados para melhor entendimento. Realizei a análise pelo Google Colab, recomendo muito, pois como é possível executar células de código separadamente, acaba sendo muito útil para analisar dados. No final do artigo, tem o link para meu repositório do GitHub com a análise e o dataset.

 
  import pandas as pd  # 'pd' é uma convenção da comunidade pandas
  import matplotlib.pyplot as plt # 'plt' também é uma convenção
  
  df = pd.read_csv('Sleep_health_and_lifestyle_dataset.csv', enconding='utf-8',
                                                index_col= 0)
  # o método read_* ler o conjunto de dados tabulares, o '*' é o formato, neste caso, o csv.

  df.head()  #leitura das primeiras linhas do DataFrame, por padrão é as 5 primeiras.

Essa foi a saída da célula:

image

 
  df.info()
  # esse método informa sobre o DataFrame, resumindo a quantidade de linhas
  # colunas, tipos de dados, valores nulos, e uso de memória pelo DataFrame.
 

image


  # De acordo com o dataset, como está qualidade de sono por profissões?
  
  
  df.groupby('Occupation')['Quality of Sleep'].mean().plot(kind='barh',
                                       color='darkblue', figsize=(7, 5))

  # o método groupby forma grupos de acordo com os valores únicos dentro da coluna, neste exemplo
  # a coluna 'Occupation' armazena as profissões, então, cada profissão terá um grupo,
  # como o DataFrame compartilham índices entre as Series, então cada grupo estará conectado
  # com as outras Series que compartilham o mesmo índice. ficou confuso? vamos simplificar!
  # cada linha do dataframe é um índice, então, no grupo software engineer, os índices
  # identificam as linhas que o valor software engineer aparece, sendo assim, as outras colunas
  # que possuem os mesmos índices, estão na mesma linha.

  # sabendo disso, então agrupamos a coluna 'Occupation', e queremos a média da qualidade
  # de sono de cada profissão, em seguida, plot (demonstração em gráfico - matplotlib), kind(tipo)
  # (gráfico em barras horizontal = barh), da cor azul escuro, e figsize(tamanho da figura).
 
  plt.title('Média de qualidade de sono por profissões')
  plt.ylabel('Profissões')
  plt.xlabel('Média de qualidade de sono')

  # costumize a figura, gerando um título, nomeando o eixo Y, e eixo X.
    

Essa foi a saída da célula:

image

  
  # Insights por idade
  # Qual a média exploratória de pessoas com menos de 30 anos e com mais de 30?
  
  peoplemenos30 = df.loc[df['Age'] < 30, ['Sleep Duration', 'Quality of Sleep',
                          'Physical Activity Level', 'Stress Level',
                          'Heart Rate']]
  media_menor_30 = peoplemenos30.mean()
  
  # o método loc filtra os dados de acordo com uma condição, neste caso, especifiquei
  # a coluna 'Age' os valores < 30 e as outras colunas que compartilham os mesmos índices.
  # em seguida, tirei a média dos valores das colunas.

  peoplemais30 = df.loc[df['Age'] > 30, ['Sleep Duration', 'Quality of Sleep',
                          'Physical Activity Level', 'Stress Level',
                          'Heart Rate']]
  media_maior_30 = peoplemais30.mean()

  # mesma coisa fiz para filtrar a coluna 'Age' para valores > 30.

  media_df = pd.DataFrame({'Menos de 30': media_menor_30,
                           'Mais de 30': media_maior_30})

  # agora, criei um DataFrame que possui duas colunas 'Menos de 30' e 'Mais de 30'
  # organizando os dados para visualização.

  media_df.plot(kind='barh', color=('yellowgreen', 'darkolivegreen'), figsize=(7, 5))
  
  # gerando gráfico do tipo barra horizontal

  plt.title('Média exploratória de pessoas com menos de 30 e mais de 30 anos')
  plt.xlabel('Média')

Essa foi a saída da célula:

image

Através desse gráfico, conseguimos entender o que esse conjunto de dados está falando em relação às idades. Percebe-se que, as pessoas acima de 30 anos de idade, em média possui um nível de atividade física maior, qualidade de sono maior, duração de sono um pouco maior, nível de stress menor, e frequência cardíaca menor.

Esses foram apenas alguns exemplos da utilização da biblioteca Pandas, na minha análise, eu respondi diversas perguntas. Deixarei o link no final deste artigo.

Conclusão

Em síntese, exploramos brevemente sobre as bibliotecas pandas e matplotlib, para Análise Exploratória de Dados, obviamente o que foi apresentado no artigo é apenas um pouco sobre essas ferramentas riquíssimas do Python. Recomendo a leitura da documentação Pandas para quem tiver interesse, e não ter receio de consultar o chatGPT para auxiliar nos estudos. Meu objetivo com este artigo, foi escrever meu conhecimento adquirido de forma acessível e não cansativa.

Link para meu repositório: kauafabricio/data-analysis-projects (github.com)
Link para a documentação do Pandas: pandas documentation — pandas 2.2.0 documentation (pydata.org)
Compartilhe
Comentários (3)
Ronaldo Schmidt
Ronaldo Schmidt - 29/01/2024 12:05

Parabéns amigo. Otimo artigo. E como disse descrever seu aprendizado ajuda muito a fixar seu conhecimento.

Kauã Fabricio
Kauã Fabricio - 29/01/2024 10:04

Fico feliz que gostou, Regilene! Análise de Dados é muito importante tanto para o mercado de trabalho, quanto para pesquisa acadêmica, estou louco para começar minha iniciação científica.

Regilene Silva
Regilene Silva - 29/01/2024 00:26

Adorei teu artigo Kauã! Parabéns pela apresentação. AMEI o dataset e já vou examinar ele e quem sabe fazer um 'Exploring the Pandas Library 2' kkk! Minha primeira análise exploratória foi com o Dataset do 'Titanic Challenge' da Kaggle e a segunda, um 'problema da vida real' como tu disseste, tema da minha pesquisa na universidade: Indice de autismo por etnia e raça em 11 estados americanos. Parabéns novamente, gostei muito do teu artigo.