Como ler dados em csv de estação do INMET

Exemplo de dados de estação automática do INMET

    Um dos tipos mais comuns de dados que encontramos quando trabalhamos com meteorologia é o tipo de dado em csv (comma separated values), que basicamente é como o nome diz em inglês: valores separados por vírgula.

    Este tipo de dado é utilizado nas estações do INMET (Instituto Nacional de Meteorologia) e também da ANA (Agência Nacional de Águas). Então aqui vou usar um exemplo de como podemos ler esse tipo de dado em python e trabalhar com eles, largando o velho excel.

    Primeiramente pra conseguir ler este tipo de dado vamos precisar da biblioteca Pandas. O pandas é uma biblioteca muito muito pra se trabalhar com DataFrame, que fazendo um paralelo a este tipo seria como organizar os dados em tabelas.

    Uma dica importante pra quem migra do MATLAB, RStudio ou do próprio Excel (ou qualquer outro programa de suíte de planilhas) é utilizar o programa Spyder para fazer seus códigos. Ele possui uma aba pra escrever seus código, uma pro terminal e outra mostrando como seus dados estão sendo lidos. É bem interessante, muito melhor que só ficar lendo pelos prints do terminal, só que puxa um pouco da memória do seu computador.

    Seguindo com o post: um exemplo de dados que irei utilizar aqui é da estação automática de Macapá. Segue aqui algumas poucas linhas de dados que eu tinha aqui de 2016.

codigo_estacao,data,hora,temp_inst,temp_max,temp_min,umid_inst,umid_max,umid_min,pto_orvalho_inst,pto_orvalho_max,pto_orvalho_min,pressao,pressao_max,pressao_min,vento_vel,vento_direcao,vento_rajada,radiacao,precipitacao
A249,2016-09-19,00,28.7,29,28.6,65,68,64,21.5,22.3,21.3,1011,1011,1010.4,3.7,202,8.5,-3.54,0
A249,2016-09-19,01,28.3,28.7,28.3,70,70,65,22.4,22.4,21.5,1011.4,1011.5,1011,3.2,201,7.9,-3.54,0
A249,2016-09-19,02,28,28.3,28,74,74,70,23,23,22.4,1011.9,1012,1011.4,2.8,194,7.3,-3.54,0
A249,2016-09-19,03,27,28,26.9,79,79,74,23,23.2,23,1011.6,1011.9,1011.6,2.1,177,6.5,-3.54,0
     
    O que podemos ver neste dado? A primeira linha é o cabeçalho, com o nome de todas as colunas que estão os dados, e cada um deles é delimitado pelas vírgulas. Exemplo: 

codigo_estacao, data, hora

A249,2016-09-19,00

     

    Para essas 3 colunas, podemos ver que o código da estação é o A249, a data é YYYY-MM-DD (2016-09-19), e a hora em UTC, nesse caso as 00 UTC.

    Isso é bem confuso se ficarmos olhando, nao parece que está organizado. Quando o Pandas ler esses dados, ele vai organizar tudo pra gente. Então vamos começar com o código:

import pandas as pd

     

    Com o comando acima, nós estamos importando a biblioteca pandas e dando um apelido de pd para ser mais simples de usar dentro do código.

    Sendo assim, vamos executar uma linha pra ele ler esse dado e guardar em forma de DataFrame:

df = pd.read_csv('/home/user/dados/estacoes/inmet/macapa/2016.csv')

     

     Com este comando, nós requisitamos que o pandas (pd) use dentro do seu código o read_csv, e dentro do parenteses () colocamos o caminho de onde está o arquivo da estação Macapá, neste diretório fictício. (/home/user/...). Caso esteja rodando o python no terminal na mesma pasta do arquivo, é só colocar o nome dele entre aspas (") ou aspas simples (').

ATENÇÃO: Para usuários de Windows, o caminho fica um pouco diferente porque ele usa as barras em forma diferente.

     Depois de mandar o pandas ler o dado, agora esse dado está organizado com o nome de df que é um nome padrão para DataFrame, mas pode colocar o nome que quiser. Isso é só um exemplo e a criatividade é de quem está escrevendo o código.

    E agora?

    Vamos executar um comando para vermos como o python leu o dado:

>>> df.head()
  codigo_estacao        data  hora  ...  vento_rajada  radiacao  precipitacao
0           A249  2016-09-19     0  ...           8.5     -3.54           0.0
1           A249  2016-09-19     1  ...           7.9     -3.54           0.0
2           A249  2016-09-19     2  ...           7.3     -3.54           0.0
3           A249  2016-09-19     3  ...           6.5     -3.54           0.0
4           A249  2016-09-19     4  ...           4.5     -3.54           0.0

[5 rows x 20 columns]

   

     

    Ao executar o comando df.head(), pedimos para ele mostrar apenas o cabeçalho do nosso dado. Ele mostra organizado o em cada coluna onde cada valor está. 

    O python começa a ler a partir do número zero (0), lembrem-se disso. Então aqueles números a esquerda é chamado de índice (index). Então quando voce quiser o dado hora na linha 2, terá que pedir pela coluna hora no índice 1. Mas lembre-se, esse comando apenas mostra um exemplo das colunas. 

    No final do comando, aparece que temos 20 colunas de dados, ou seja, 20 variáveis pra ler.

    Esse post seria apenas pra mostrar como podemos ler, e ir trabalhando mais nesse arquivo mais pra frente em outras postagens, mas como bônus, segue algumas coisas que podemos fazer com o que já temos:

 

1. MÉDIA

    Podemos verificar a média da temperatura instantânea durante todo o período do dado. Pra isso executamos o seguinte comando:


>>> df['temp_inst'].mean()
27.046073889955935


Ps.: Esse >>> é do prompt de comando do Python, portanto não faz parte do código. É apenas pra mostrar como o código fica no console de comando.

Aqui ele pegou toda coluna temp_inst que é a variável da Temperatura Instantânea do INMET e tirou a média durante todo o dado, que no meu caso seria de 2016 a 2019 e ele retornou que a média da temperatura é de 27,06 °C.


2. SOMA

    A soma é o outro exemplo que pode ser útil pra gente, como saber o acumulado da chuva. Seguiremos o mesmo caminho anterior, apenas mudando o operador do pandas. Então vamos executar o comando:

>>> df['precipitacao'].sum()
5270.599999999

 

    Esse comando retornou que a soma de toda precipitação na estação de Macapá de 2016 a 2019 (não completos) do meu dado, foi de 5270,59 milímetros (mm).

DICA 1: Temos que lembrar que o decimal no Brasil é separado por vírgula (,), mas lá fora o padrão é ponto (.). Então sempre que for trabalhar com linguagens de programação, atente-se pra mudar seus dados com os decimais organizados por pontos. 

DICA 2: Lembre-se sempre de não usar espaços e caracteres especiais nos nomes e nem dentro dos arquivos. Isso vai facilitar muito a sua vida pra trabalhar com os dados.

    Espero que essa dica possa ajudar a começar a trabalhar com estes dados. Caso tenha alguma dúvida ou queira alguma dica pra ir mais adiante, comenta aqui ou manda mensagem.



Comentários

Postagens mais visitadas deste blog

Trabalhando com dados em NetCDF

Trabalhando com datas nos dados do INMET