Manipulação de Dados com Pandas, Numpy, Dicionários de Dados e Funções a partir de um Arquivo CSV

Introdução

Neste artigo, vamos demonstrar como utilizar as bibliotecas pandas e numpy do Python para manipular dados a partir de um arquivo CSV. O arquivo CSV está codificado em ‘latin1’, pula as primeiras 8 linhas, utiliza ‘;’ como separador de campos e ‘,’ como separador decimal. Além disso, vamos introduzir o uso de dicionários de dados e funções para organizar e manipular os dados de forma mais eficiente.

Carregando o Arquivo CSV

Primeiro, vamos carregar o arquivo CSV utilizando pandas:

import pandas as pd

# Carregar o arquivo CSV com as especificações fornecidas
df = pd.read_csv('exercicio2024.CSV', encoding='latin1', skiprows=8, sep=';', decimal=',')

Visualizando os Dados

Vamos visualizar as primeiras linhas do DataFrame para entender a estrutura dos dados:

# Mostrar as primeiras linhas do DataFrame
print("Primeiras linhas do DataFrame:")
print(df.head())

Funções para Manipulação de Dados

As funções são blocos de código reutilizáveis que realizam tarefas específicas. Elas ajudam a organizar o código, tornando-o mais legível e fácil de manter. Vamos definir algumas funções para manipular os dados de forma mais eficiente:

def converter_data(df, coluna_data):
    df[coluna_data] = pd.to_datetime(df[coluna_data])
    return df

def adicionar_coluna_hora(df, coluna_hora):
    df['HORA_DO_DIA'] = pd.to_datetime(df[coluna_hora], format='%H:%M').dt.hour
    return df

def adicionar_coluna_semana(df, coluna_data):
    df['SEMANA_DO_ANO'] = df[coluna_data].dt.isocalendar().week
    return df

Aplicando as Funções

Vamos aplicar as funções definidas para converter a coluna de data, adicionar a coluna de hora do dia e a coluna de semana do ano:

df = converter_data(df, 'DATA (YYYY-MM-DD)')
df = adicionar_coluna_hora(df, 'HORA (UTC)')
df = adicionar_coluna_semana(df, 'DATA (YYYY-MM-DD)')

Uso de Dicionários de Dados

Os dicionários de dados são uma ferramenta poderosa para organizar e manipular dados de forma eficiente. Eles permitem armazenar e acessar informações de maneira estruturada e rápida. Vamos criar um dicionário de dados para armazenar as colunas do DataFrame e suas descrições:

dicionario_dados = {
    'DATA (YYYY-MM-DD)': 'Data da medição',
    'HORA (UTC)': 'Hora da medição em UTC',
    'TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)': 'Temperatura do ar medida em °C',
    'UMIDADE RELATIVA DO AR, HORARIA (%)': 'Umidade relativa do ar medida em %',
    'HORA_DO_DIA': 'Hora do dia extraída da coluna HORA (UTC)',
    'SEMANA_DO_ANO': 'Semana do ano extraída da coluna DATA (YYYY-MM-DD)'
}

# Exibir o dicionário de dados
for coluna, descricao in dicionario_dados.items():
    print(f"{coluna}: {descricao}")

Visualizando Dados com Gráficos de Linha

Gráfico de Linha – Distribuição da Temperatura ao longo de um Dia

Vamos criar um gráfico de linha para mostrar a distribuição da temperatura ao longo de um dia:

import matplotlib.pyplot as plt
import numpy as np

def grafico_linha_dia(df):
    plt.figure(figsize=(15, 5))
    for data in df['DATA (YYYY-MM-DD)'].unique():
        plt.plot(df[df['DATA (YYYY-MM-DD)'] == data]['HORA_DO_DIA'], 
                 df[df['DATA (YYYY-MM-DD)'] == data]['TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)'], 
                 label=f'Data {data.date()}')
    plt.xlabel('Hora do Dia')
    plt.ylabel('Temperatura (°C)')
    plt.title('Distribuição da Temperatura ao longo de um Dia')
    plt.legend(loc='upper right')
    plt.tight_layout()
    plt.show()

grafico_linha_dia(df)

Gráfico de Linha – Distribuição da Temperatura ao longo do Ano

Vamos criar um gráfico de linha para mostrar a distribuição da temperatura ao longo do ano:

def grafico_linha_ano(df):
    plt.figure(figsize=(15, 5))
    for semana in df['SEMANA_DO_ANO'].unique():
        plt.plot(df[df['SEMANA_DO_ANO'] == semana]['DATA (YYYY-MM-DD)'], 
                 df[df['SEMANA_DO_ANO'] == semana]['TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)'], 
                 label=f'Semana {semana}')
    plt.xlabel('Data')
    plt.ylabel('Temperatura (°C)')
    plt.title('Distribuição da Temperatura ao longo do Ano')
    plt.legend(loc='upper right')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.show()

grafico_linha_ano(df)

Calculando Estatísticas

Média e Desvio Padrão da Temperatura

Para calcular a média e o desvio padrão da temperatura, podemos usar:

def calcular_estatisticas(df, coluna):
    media = df[coluna].mean()
    desvio_padrao = df[coluna].std()
    return media, desvio_padrao

media_temperatura, desvio_padrao_temperatura = calcular_estatisticas(df, 'TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)')
print(f"\nMédia da temperatura: {media_temperatura:.2f}°C")
print(f"Desvio padrão da temperatura: {desvio_padrao_temperatura:.2f}°C")

Média e Desvio Padrão da Umidade Relativa do Ar

Para calcular a média e o desvio padrão da umidade relativa do ar, podemos usar:

media_umidade, desvio_padrao_umidade = calcular_estatisticas(df, 'UMIDADE RELATIVA DO AR, HORARIA (%)')
print(f"\nMédia da umidade relativa do ar: {media_umidade:.2f}%")
print(f"Desvio padrão da umidade relativa do ar: {desvio_padrao_umidade:.2f}%")

Conclusão

Neste artigo, demonstramos como carregar e manipular dados de um arquivo CSV utilizando as bibliotecas pandas e numpy do Python. Mostramos como criar gráficos de linha para visualizar a distribuição da temperatura ao longo de um dia e ao longo do ano. Adicionalmente, calculamos a média e o desvio padrão de variáveis importantes como temperatura e umidade relativa do ar, utilizando funções e dicionários de dados para organizar e manipular os dados de forma mais eficiente.

Links Úteis

  • Documentação Oficial do Python
  • Documentação Oficial do Pandas
  • Documentação Oficial do Numpy
  • Documentação Oficial do Matplotlib
  • W3Schools – Python

Edvaldo Guimrães Filho Avatar

Published by

Categories: ,

Leave a comment