Médias climatológicas INMET com python

O Instituto Nacional de Meteorologia (INMET) disponibiliza dados meteorológicos históricos em seu banco de dados de forma online e gratuita. Dados recentes podem ser consultados através de mapas, mas para Download de dados anuais de TODAS as estações automáticas separadas por ano, use o link de Dados Históricos. Todos os dados tem frequência horária.

Gráfico de dois anos de dados horários de temperatura da estação do INMET de Natal/RN, gerado com os scripts linkados no post
Gráfico de dois anos de dados horários de temperatura da estação do INMET de Natal/RN, gerado com os scripts linkados no post

Para o script aqui desenvolvido, foram baixados os dados do último link para dois anos e selecionados os arquivos da estação de Natal/RN. Esse tipo de arquivo costuma ter o seguinte cabeçalho:

REGIAO:;NE
UF:;RN
ESTACAO:;NATAL
CODIGO (WMO):;A304
LATITUDE:;-5,83722221
LONGITUDE:;-35,20805555
ALTITUDE:;47,46
DATA DE FUNDACAO:;24/02/03
Data;Hora UTC;PRECIPITAÇÃO TOTAL, HORÁRIO (mm);PRESSAO ATMOSFERICA AO NIVEL DA ESTACAO, HORARIA (mB);PRESSÃO ATMOSFERICA MAX.NA HORA ANT. (AUT) (mB);PRESSÃO ATMOSFERICA MIN. NA HORA ANT. (AUT) (mB);RADIACAO GLOBAL (Kj/m²);TEMPERATURA DO AR – BULBO SECO, HORARIA (°C);TEMPERATURA DO PONTO DE ORVALHO (°C);TEMPERATURA MÁXIMA NA HORA ANT. (AUT) (°C);TEMPERATURA MÍNIMA NA HORA ANT. (AUT) (°C);TEMPERATURA ORVALHO MAX. NA HORA ANT. (AUT) (°C);TEMPERATURA ORVALHO MIN. NA HORA ANT. (AUT) (°C);UMIDADE REL. MAX. NA HORA ANT. (AUT) (%);UMIDADE REL. MIN. NA HORA ANT. (AUT) (%);UMIDADE RELATIVA DO AR, HORARIA (%);VENTO, DIREÇÃO HORARIA (gr) (° (gr));VENTO, RAJADA MAXIMA (m/s);VENTO, VELOCIDADE HORARIA (m/s);

O formato do cabeçalho pode mudar um pouco de um arquivo para outro, então é interessante construir uma função (check_header) para uniformizar isso. Outras considerações importantes a respeito desses arquivos é quanto à codificação (provavelmente deve estar em ISO-8859-1 em vez do tradicional UTF-8), ao delimitador de campos (ponto e vírgula) e às linhas que devem ser puladas antes de começar o cabeçalho. Todas essas informações devem ser passadas como parâmetros ao método de leitura do arquivo.

Inicialmente, cria-se uma dataframe com as colunas a serem consideradas. A cada novo arquivo lido, as respectivas dataframes são adicionadas à original via comando “append”. Uma coluna com o código da estação é criada também, para o caso de trabalhar com mais estações. Um comando para salvar essa dataframe com todas as informações está comentado ao terminar o loop.

Outro ponto importante no código é a criação de uma única coluna com todas as informações de tempo e no formato “datetime”, para que o pandas possa realizar as operações envolvendo tempo. Essa coluna é chamada aqui de “Timestamp”, que posteriormente é utilizada como índica para cada linha.

Dessa forma, é possível calcular a média climatológica da variável em questão, que é a temperatura. Nesse tipo de cálculo, o objetivo é saber o comportamento média da variável sazonalmente, ou seja, calcula-se o valor médio dos meses de janeiro de todos os anos, depois dos fevereiros, e assim por diante. A princípio, esssas médias devem ter pelo menos 30 anos de dados, mas a forma de cálcular é a mesma.

Além de todas essas funções, os métodos implementados incluem seleção de horário, substituição de valores inválidos por NaN e retirada de valores muito espúrios. Os scripts disponíveis no Github (viniroger/climate_average) com dois arquivos de entrada para usar como exemplo. A partir deles, o script gera um gráfico com a série temporal utilizada e um arquivo CSV com as médias mensais. Outro repositório (viniroger/ts_means) contém mais códigos para cálculo de médias (mensais e padrão diurno) e confecção de gráficos.

Compartilhe :)

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.