Leia e analise arquivos netCDF4 com xarray em python

N etCDF (Network Common Data Form) é um conjunto de bibliotecas de software e formatos de dados independentes de máquina que suportam a criação, acesso e compartilhamento de dados científicos orientados a array. É também um padrão comunitário para compartilhamento de dados científicos. O Unidata Program Center suporta e mantém interfaces de programação netCDF para C, C ++, Java e Fortran. Interfaces de programação também estão disponíveis para Python, IDL, MATLAB, R, Ruby e Perl.

Esta é a definição de um arquivo netCDF (fonte unidata) e é usado em vários ambientes científicos m ents, acima de tudo, nas condições meteorológicas. Esses tipos de arquivos são considerados auto d escriturados, portáteis, escaláveis. Os arquivos NetCDF podem ser pesados ​​e leves, de fato, você pode dividi-los em vários blocos contendo informações parciais (e depois lê-los todos juntos) ou salvar todas as informações em um único arquivo. Existem muitos arquivos que possuem 5 GB + de tamanho contendo muitos detalhes em apenas um arquivo. Se você trabalha com esses arquivos, sabe que ler arquivos de até 200 GB juntos e realizar análises é uma tarefa diária.

O que é xarray?

xarray é uma biblioteca Python para processamento de dados. Ele é baseado nas bibliotecas numpy e pandas (e dask ) para que você esteja pronto para usar e processar os dados da maneira que desejar.

Por que xarray e não a biblioteca python netcdf4?

O Xarray apresenta rótulos na forma de dimensões, coordenadas e atributos em cima de matrizes multidimensionais semelhantes a NumPy, o que permite uma experiência de desenvolvedor mais intuitiva, concisa e menos sujeita a erros.

Esta citação vem da documentação do xarray e eu concordo com isso, se você quiser processar os dados que lê de arquivos netcdf será muito mais rápido fazê-lo com matrizes numpy, acessando-as como dataframe é uma opção para que os pandas ser mais fácil de ser usado. A propósito, a biblioteca netcdf4 é necessária se você quiser usar o xarray, então não podemos comparar essas 2 bibliotecas como se elas estivessem fazendo as mesmas coisas.

Por que um arquivo netcdf é autoexplicativo?

Cada arquivo NetCDF contém METADATA sobre os dados no arquivo:

Vamos começar com alguns exemplos, vamos ler um arquivo e obter suas informações:

A prática recomendada é abrir o arquivo em um “contexto”, então se algo falhar, você não precisa se preocupar em fechar o arquivo, liberar a memória e outras coisas, com que é o contexto gerente em python, fará isso por você. Usamos o método open_dataset () do xarray para abrir um único arquivo. (se você deseja abrir vários arquivos juntos, você precisa usar open_mfdataset () ). Existem mais métodos e parâmetros pelos quais você pode passar, basta olhar a documentação do xarray para obter mais detalhes. Agora vamos analisar o que temos em dimensões , variáveis ​​ e atributos :

O que há em dimensões ?

O que há em atributos ?

O que há em variáveis ​​?

Para acessar as variáveis, tudo que você precisa fazer é:

O que quer dizer que o VGRD é um array de 3 dimensões e para acessá-lo precisamos fornecer uma latitude, uma longitude e um tempo. Existem basicamente 3 métodos para “recuperar” os dados:

PS: use .values para obter a saída desejada.

Todos os 3 métodos devem ser usados ​​sempre que necessário e como devem ser usados, aqui estão algumas recomendações:

Nestes exemplos, usamos apenas uma latitude, uma longitude e um tempo específico, mas e se eu quiser “consultar” meu conjunto de dados com base em uma ÁREA e / ou um intervalo de tempo? É aqui que slice () se torna útil. Usando slice () , você pode fornecer um início e um final para latitude, longitude e hora:

Nesse caso, ao usar slice () , o parâmetro method = & # x27; mais próximo & # x27; não pode ser usado. Bem, faz sentido porque estamos recebendo uma gama de informações do início ao fim. A saída será uma matriz tridimensional que pode ser acessível passando o tempo, latitude e longitude.

PS: use .values.tolist() para obter a saída desejada.

<"Conclusões

xarray é realmente poderoso porque vem com numpy e pandas que é útil se você deseja realizar análises. É mais fácil usar bibliotecas como matplotlib (para representar graficamente os resultados) scipy (para recursos de interpolação). Espero que o artigo tenha sido exaustivo o suficiente, não hesite em perguntar mais detalhes!

Siga-me no:

GitHub @ github.com/pbuzulan

Linkedin @ linkedin.com/in/petru-buzulan

Muito obrigado!