Simulação de Temperatura nas Capitais Brasileiras

Introdução

Neste artigo, vamos simular dados de temperatura para as principais capitais brasileiras nos últimos 10 anos utilizando as bibliotecas pandas e numpy do Python. Vamos demonstrar como criar gráficos de linha para visualizar a distribuição da temperatura ao longo dos anos e dos meses. Adicionalmente, vamos calcular a média e o desvio padrão de variáveis importantes como temperatura por cidade e ano/mês, utilizando funções e dicionários de dados para organizar e manipular os dados de forma mais eficiente.

Simulação de Dados

Primeiro, vamos simular os dados de temperatura:

import pandas as pd
import numpy as np

# Simular dados de temperatura para as principais capitais brasileiras nos últimos 10 anos
capitais = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Brasília', 'Salvador', 'Fortaleza', 'Curitiba', 'Manaus', 'Recife', 'Porto Alegre']
anos = pd.date_range(start='2012-01-01', end='2022-12-31', freq='D')

# Função para gerar temperaturas aleatórias
def gerar_temperaturas(capitais, anos):
    np.random.seed(42)
    dados = []
    for cidade in capitais:
        temperaturas = np.random.normal(loc=25, scale=5, size=len(anos))
        for data, temp in zip(anos, temperaturas):
            dados.append([cidade, data, temp])
    return pd.DataFrame(dados, columns=['Cidade', 'Data', 'Temperatura'])

# Gerar o DataFrame com os dados simulados
df = gerar_temperaturas(capitais, anos)

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_ano(df, coluna_data):
    df['ANO'] = df[coluna_data].dt.year
    return df

def adicionar_coluna_mes(df, coluna_data):
    df['MES'] = df[coluna_data].dt.month
    return df

Aplicando as Funções

Vamos aplicar as funções definidas para converter a coluna de data, adicionar a coluna de ano e a coluna de mês:

df = converter_data(df, 'Data')
df = adicionar_coluna_ano(df, 'Data')
df = adicionar_coluna_mes(df, 'Data')

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 = {
    'Cidade': 'Nome da cidade',
    'Data': 'Data da medição',
    'Temperatura': 'Temperatura medida em °C',
    'ANO': 'Ano da medição extraído da coluna Data',
    'MES': 'Mês da medição extraído da coluna Data'
}

# 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 dos Anos para cada Cidade

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

import matplotlib.pyplot as plt

def grafico_linha_anos(df):
    plt.figure(figsize=(15, 5))
    for cidade in df['Cidade'].unique():
        plt.plot(df[df['Cidade'] == cidade]['Data'], 
                 df[df['Cidade'] == cidade]['Temperatura'], 
                 label=cidade)
    plt.xlabel('Ano')
    plt.ylabel('Temperatura (°C)')
    plt.title('Distribuição da Temperatura ao longo dos Anos para cada Cidade')
    plt.legend(loc='upper right')
    plt.tight_layout()
    plt.show()

grafico_linha_anos(df)

!Gráfico de Linha – Distribuição da Temperatura ao longo dos Anos para cada Cidade

Gráfico de Linha – Distribuição da Temperatura ao longo dos Meses para cada Cidade

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

def grafico_linha_meses(df):
    plt.figure(figsize=(15, 5))
    for cidade in df['Cidade'].unique():
        plt.plot(df[df['Cidade'] == cidade]['MES'], 
                 df[df['Cidade'] == cidade]['Temperatura'], 
                 label=cidade)
    plt.xlabel('Mês')
    plt.ylabel('Temperatura (°C)')
    plt.title('Distribuição da Temperatura ao longo dos Meses para cada Cidade')
    plt.legend(loc='upper right')
    plt.tight_layout()
    plt.show()

grafico_linha_meses(df)

!Gráfico de Linha – Distribuição da Temperatura ao longo dos Meses para cada Cidade

Calculando Estatísticas

Média e Desvio Padrão da Temperatura por Cidade e Ano

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

def calcular_estatisticas(df, grupo_por, coluna):
    estatisticas = df.groupby(grupo_por)[coluna].agg(['mean', 'std']).reset_index()
    return estatisticas

estatisticas_ano = calcular_estatisticas(df, ['Cidade', 'ANO'], 'Temperatura')
print("\nEstatísticas da Temperatura por Cidade e Ano:")
print(estatisticas_ano)

Média e Desvio Padrão da Temperatura por Cidade e Mês

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

estatisticas_mes = calcular_estatisticas(df, ['Cidade', 'MES'], 'Temperatura')
print("\nEstatísticas da Temperatura por Cidade e Mês:")
print(estatisticas_mes)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Simular dados de temperatura para as principais capitais brasileiras nos últimos 10 anos

capitais = [‘São Paulo’, ‘Rio de Janeiro’, ‘Belo Horizonte’, ‘Brasília’, ‘Salvador’, ‘Fortaleza’, ‘Curitiba’, ‘Manaus’, ‘Recife’, ‘Porto Alegre’]
anos = pd.date_range(start=’2012-01-01′, end=’2022-12-31′, freq=’D’)

Função para gerar temperaturas aleatórias

def gerar_temperaturas(capitais, anos):
np.random.seed(42)
dados = []
for cidade in capitais:
temperaturas = np.random.normal(loc=25, scale=5, size=len(anos))
for data, temp in zip(anos, temperaturas):
dados.append([cidade, data, temp])
return pd.DataFrame(dados, columns=[‘Cidade’, ‘Data’, ‘Temperatura’])

Gerar o DataFrame com os dados simulados

df = gerar_temperaturas(capitais, anos)

Funções para Manipulação de Dados

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

def adicionar_coluna_ano(df, coluna_data):
df[‘ANO’] = df[coluna_data].dt.year
return df

def adicionar_coluna_mes(df, coluna_data):
df[‘MES’] = df[coluna_data].dt.month
return df

Aplicar as funções definidas

df = converter_data(df, ‘Data’)
df = adicionar_coluna_ano(df, ‘Data’)
df = adicionar_coluna_mes(df, ‘Data’)

Uso de Dicionários de Dados

dicionario_dados = {
‘Cidade’: ‘Nome da cidade’,
‘Data’: ‘Data da medição’,
‘Temperatura’: ‘Temperatura medida em °C’,
‘ANO’: ‘Ano da medição extraído da coluna Data’,
‘MES’: ‘Mês da medição extraído da coluna Data’
}

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 dos Anos para cada Cidade

def grafico_linha_anos(df):
plt.figure(figsize=(15, 5))
for cidade in df[‘Cidade’].unique():
plt.plot(df[df[‘Cidade’] == cidade][‘Data’],
df[df[‘Cidade’] == cidade][‘Temperatura’],
label=cidade)
plt.xlabel(‘Ano’)
plt.ylabel(‘Temperatura (°C)’)
plt.title(‘Distribuição da Temperatura ao longo dos Anos para cada Cidade’)
plt.legend(loc=’upper right’)
plt.tight_layout()
plt.show()

grafico_linha_anos(df)

Gráfico de Linha – Distribuição da Temperatura ao longo dos Meses para cada Cidade

def grafico_linha_meses(df):
plt.figure(figsize=(15, 5))
for cidade in df[‘Cidade’].unique():
plt.plot(df[df[‘Cidade’] == cidade][‘MES’],
df[df[‘Cidade’] == cidade][‘Temperatura’],
label=cidade)
plt.xlabel(‘Mês’)
plt.ylabel(‘Temperatura (°C)’)
plt.title(‘Distribuição da Temperatura ao longo dos Meses para cada Cidade’)
plt.legend(loc=’upper right’)
plt.tight_layout()
plt.show()

grafico_linha_meses(df)

Calculando Estatísticas

Média e Desvio Padrão da Temperatura por Cidade e Ano

def calcular_estatisticas(df, grupo_por, coluna):
estatisticas = df.groupby(grupo_por)[coluna].agg([‘mean’, ‘std’]).reset_index()
return estatisticas

estatisticas_ano = calcular_estatisticas(df, [‘Cidade’, ‘ANO’], ‘Temperatura’)
print(“\nEstatísticas da Temperatura por Cidade e Ano:”)
print(estatisticas_ano)

estatisticas_mes = calcular_estatisticas(df, [‘Cidade’, ‘MES’], ‘Temperatura’)
print(“\nEstatísticas da Temperatura por Cidade e Mês:”)
print(estatisticas_mes)

Conclusão

Neste artigo, demonstramos como simular dados de temperatura para as principais capitais brasileiras nos últimos 10 anos utilizando as bibliotecas pandas e numpy do Python. Mostramos como criar gráficos de linha para visualizar a distribuição da temperatura ao longo dos anos e dos meses. Adicionalmente, calculamos a média e o desvio padrão de variáveis importantes como temperatura por cidade e ano/mês, utilizando funções e dicionários de dados para organizar e manipular os dados de forma mais eficiente.

Links Úteis

Código


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Simular dados de temperatura para as principais capitais brasileiras nos últimos 10 anos
capitais = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Brasília', 'Salvador', 'Fortaleza', 'Curitiba', 'Manaus', 'Recife', 'Porto Alegre']
anos = pd.date_range(start='2012-01-01', end='2022-12-31', freq='D')

# Função para gerar temperaturas aleatórias
def gerar_temperaturas(capitais, anos):
    np.random.seed(42)
    dados = []
    for cidade in capitais:
        temperaturas = np.random.normal(loc=25, scale=5, size=len(anos))
        for data, temp in zip(anos, temperaturas):
            dados.append([cidade, data, temp])
    return pd.DataFrame(dados, columns=['Cidade', 'Data', 'Temperatura'])

# Gerar o DataFrame com os dados simulados
df = gerar_temperaturas(capitais, anos)

# Funções para Manipulação de Dados
def converter_data(df, coluna_data):
    df[coluna_data] = pd.to_datetime(df[coluna_data])
    return df

def adicionar_coluna_ano(df, coluna_data):
    df['ANO'] = df[coluna_data].dt.year
    return df

def adicionar_coluna_mes(df, coluna_data):
    df['MES'] = df[coluna_data].dt.month
    return df

# Aplicar as funções definidas
df = converter_data(df, 'Data')
df = adicionar_coluna_ano(df, 'Data')
df = adicionar_coluna_mes(df, 'Data')

# Uso de Dicionários de Dados
dicionario_dados = {
    'Cidade': 'Nome da cidade',
    'Data': 'Data da medição',
    'Temperatura': 'Temperatura medida em °C',
    'ANO': 'Ano da medição extraído da coluna Data',
    'MES': 'Mês da medição extraído da coluna Data'
}

# 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 dos Anos para cada Cidade
def grafico_linha_anos(df):
    plt.figure(figsize=(15, 5))
    for cidade in df['Cidade'].unique():
        plt.plot(df[df['Cidade'] == cidade]['Data'], 
                 df[df['Cidade'] == cidade]['Temperatura'], 
                 label=cidade)
    plt.xlabel('Ano')
    plt.ylabel('Temperatura (°C)')
    plt.title('Distribuição da Temperatura ao longo dos Anos para cada Cidade')
    plt.legend(loc='upper right')
    plt.tight_layout()
    plt.show()

grafico_linha_anos(df)

# Gráfico de Linha - Distribuição da Temperatura ao longo dos Meses para cada Cidade
def grafico_linha_meses(df):
    plt.figure(figsize=(15, 5))
    for cidade in df['Cidade'].unique():
        plt.plot(df[df['Cidade'] == cidade]['MES'], 
                 df[df['Cidade'] == cidade]['Temperatura'], 
                 label=cidade)
    plt.xlabel('Mês')
    plt.ylabel('Temperatura (°C)')
    plt.title('Distribuição da Temperatura ao longo dos Meses para cada Cidade')
    plt.legend(loc='upper right')
    plt.tight_layout()
    plt.show()

grafico_linha_meses(df)

# Calculando Estatísticas

# Média e Desvio Padrão da Temperatura por Cidade e Ano
def calcular_estatisticas(df, grupo_por, coluna):
    estatisticas = df.groupby(grupo_por)[coluna].agg(['mean', 'std']).reset_index()
    return estatisticas

estatisticas_ano = calcular_estatisticas(df, ['Cidade', 'ANO'], 'Temperatura')
print("\nEstatísticas da Temperatura por Cidade e Ano:")
print(estatisticas_ano)

estatisticas_mes = calcular_estatisticas(df, ['Cidade', 'MES'], 'Temperatura')
print("\nEstatísticas da Temperatura por Cidade e Mês:")
print(estatisticas_mes)

### Links Úteis

- [Documentação Oficial do Python](https://docs.python.org/3/)
- [Documentação Oficial do Pandas](https://pandas.pydata.org/pandas-docs/stable/)
- [Documentação Oficial do Numpy](https://numpy.org/doc/)
- [Documentação Oficial do Matplotlib](https://matplotlib.org/stable/contents.html)
- [W3Schools - Python](https://www.w3schools.com/python/)

Conclusão

Neste artigo, demonstramos como simular dados de temperatura para as principais capitais brasileiras nos últimos 10 anos utilizando as bibliotecas pandas e numpy do Python. Mostramos como criar gráficos de linha para visualizar a distribuição da temperatura ao longo dos anos e dos meses. Adicionalmente, calculamos a média e o desvio padrão de variáveis importantes como temperatura por cidade e ano/mês, utilizando funções e dicionários de dados para organizar e manipular os dados de forma mais eficiente.

Edvaldo Guimrães Filho Avatar

Published by

Categories: ,

Leave a comment