Introdução ao Pandas: Manipulação e Análise de Dados com Python usando Dados do INMET

1. O que é Pandas?

Pandas é uma biblioteca de código aberto para Python, amplamente utilizada para a análise e manipulação de dados. É especialmente poderosa para trabalhar com grandes volumes de dados, facilitando a limpeza, transformação, agregação e visualização. Neste artigo, vamos usar dados climáticos históricos do Instituto Nacional de Meteorologia (INMET) como exemplo prático. Esses dados podem ser acessados diretamente pelo link: Dados Históricos do INMET.

2. Por que usar Pandas?

Pandas é fundamental para cientistas de dados, analistas e desenvolvedores porque:

  • Manipulação Eficiente de Dados: Manipula dados tabulares com facilidade, seja em tabelas simples ou operações complexas.
  • Estruturas de Dados Robustas: DataFrames e Series permitem trabalhar com dados unidimensionais e bidimensionais de forma simples.
  • Ferramentas de Limpeza e Transformação: Ferramentas robustas para lidar com dados ausentes, transformar, agrupar e agregar dados.
  • Integração com Outras Bibliotecas: Compatível com bibliotecas como NumPy, Matplotlib e Seaborn para análise e visualização.

3. Instalação do Pandas

Para começar a usar o Pandas, é necessário instalá-lo. Você pode instalar usando o comando pip:

pip install pandas

Ou, se você estiver usando o Anaconda:

conda install pandas

4. Estruturas de Dados Principais: Series e DataFrames

Vamos introduzir as principais estruturas de dados do Pandas usando exemplos reais:

  • Series: Um array unidimensional com um índice. Ideal para trabalhar com uma coluna de dados.
  import pandas as pd

  # Criando uma Series a partir de uma lista
  series = pd.Series([23.5, 24.0, 22.1, 21.8], index=['Dia 1', 'Dia 2', 'Dia 3', 'Dia 4'])
  print(series)
  • DataFrame: Uma estrutura bidimensional que se parece com uma tabela, com linhas e colunas.
  # Criando um DataFrame com dados climáticos simulados
  data = {
      'Data': ['2024-09-15', '2024-09-16', '2024-09-17'],
      'Temperatura_Media': [23.5, 25.0, 22.1],
      'Precipitacao': [5.0, 0.0, 12.3]
  }

  df = pd.DataFrame(data)
  print(df)

5. Leitura dos Dados Climáticos do INMET

Para análise, vamos fazer o download dos dados históricos do INMET (CSV) e importar com o Pandas:

# Lendo os dados do arquivo CSV baixado do INMET
# Ajuste o caminho para o arquivo correto em seu sistema
df = pd.read_csv('dados_inmet.csv', sep=';', encoding='latin1')  # Verifique o encoding específico do arquivo
print(df.head())  # Mostra as primeiras 5 linhas do DataFrame

6. Selecionando e Fatiando Dados (Slicing)

  • Selecionando Colunas Específicas:
  # Selecionando colunas de interesse
  temperaturas = df[['Data', 'TemperaturaMedia']]
  print(temperaturas.head())
  • Fatiando Linhas por Índices:
  # Selecionando as primeiras 10 linhas
  primeiras_linhas = df.iloc[:10]
  print(primeiras_linhas)
  • Filtrando Linhas com Condições:
  # Filtrando dias com precipitação acima de 10 mm
  dias_chuvosos = df[df['Precipitacao'] > 10]
  print(dias_chuvosos)

7. Limpeza e Transformação dos Dados

Antes da análise, os dados frequentemente precisam ser limpos e ajustados:

  • Tratamento de Valores Ausentes:
  # Removendo linhas com valores ausentes
  df = df.dropna(subset=['TemperaturaMedia', 'Precipitacao'])
  • Conversão de Tipos de Dados:
  # Convertendo a coluna de data para o tipo datetime
  df['Data'] = pd.to_datetime(df['Data'], format='%d/%m/%Y')

8. Agregação e Agrupamento de Dados

Vamos explorar agregações mais complexas usando os dados climáticos:

  • Agrupando por Mês e Calculando Médias:
  # Extraindo o mês para agregação
  df['Mes'] = df['Data'].dt.month

  # Calculando a média de temperatura e precipitação por mês
  medias_mensais = df.groupby('Mes').agg({
      'TemperaturaMedia': 'mean',
      'Precipitacao': 'sum'
  }).reset_index()

  print(medias_mensais)
  • Agregando Dados por Ano e Obtendo Estatísticas:
  # Extraindo o ano para agregação
  df['Ano'] = df['Data'].dt.year

  # Calculando estatísticas anuais
  estatisticas_anuais = df.groupby('Ano').agg({
      'TemperaturaMedia': ['mean', 'max', 'min'],
      'Precipitacao': ['sum']
  })

  print(estatisticas_anuais)
  • Filtrando Anos Específicos:
  # Filtrando dados do ano de 2023
  dados_2023 = df[df['Ano'] == 2023]
  print(dados_2023.head())

9. Extração Automática de Links de Arquivos ZIP do INMET

Para facilitar o download de dados, você pode automatizar a extração de links dos arquivos ZIP com o script abaixo, que usa requests e BeautifulSoup para coletar os links diretamente da página do INMET:

import requests
from bs4 import BeautifulSoup

# URL da página do INMET
url = "https://portal.inmet.gov.br/dadoshistoricos"

# Requisitando a página
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Encontrando todos os links para arquivos ZIP
links = soup.find_all('a', href=True)
zip_links = [link['href'] for link in links if link['href'].endswith('.zip')]

# Exibindo os links encontrados
for link in zip_links:
    print(link)

10. Visualização de Dados

Com Pandas e Matplotlib, você pode criar gráficos para visualizar as tendências dos dados.

import matplotlib.pyplot as plt

# Plotando a média de temperatura por mês
plt.plot(medias_mensais['Mes'], medias_mensais['TemperaturaMedia'], marker='o')
plt.title('Temperatura Média Mensal')
plt.xlabel('Mês')
plt.ylabel('Temperatura Média (°C)')
plt.grid(True)
plt.show()

11. Conclusão

O Pandas facilita o trabalho com dados climáticos complexos, como os disponibilizados pelo INMET, permitindo uma análise rápida e poderosa. Desde a importação até a visualização, Pandas se mostra uma ferramenta essencial para análise de dados. Explore os dados históricos do INMET aqui e utilize Pandas para suas próprias análises.

Edvaldo Guimrães Filho Avatar

Published by

Categories: ,

Leave a comment