2017-06-04 1 views
0

J'essaie de convertir un fichier netCDF en un fichier CSV ou texte en utilisant Python. J'ai lu this post mais il me manque toujours une étape (je suis nouveau à Python). C'est un ensemble de données comprenant la latitude, la longitude, l'heure et les précipitations.Convertir le fichier NetCDF en CSV ou en texte en utilisant Python

Ceci est mon code à ce jour:

import netCDF4 
import pandas as pd 

precip_nc_file = 'file_path' 
nc = netCDF4.Dataset(precip_nc_file, mode='r') 

nc.variables.keys() 

lat = nc.variables['lat'][:] 
lon = nc.variables['lon'][:] 
time_var = nc.variables['time'] 
dtime = netCDF4.num2date(time_var[:],time_var.units) 
precip = nc.variables['precip'][:] 

Je ne sais pas comment procéder d'ici, même si je comprends que c'est une question de la création d'une trame de données avec pandas géants.

Répondre

1

En fonction de vos besoins, vous pourrez peut-être utiliser la méthode savetxt de Numpy:

import numpy as np 

np.savetxt('lat.csv', lat, delimiter=',') 
np.savetxt('lon.csv', lon, delimiter=',') 
np.savetxt('precip.csv', precip, delimiter=',') 

Affichera les données sans aucune rubriques ou colonne d'index, cependant.

Si vous avez besoin de ces fonctionnalités, vous pouvez construire une trame de données et l'enregistrer au format CSV comme suit:

df_lat = pd.DataFrame(data=lat, index=dtime) 
df_lat.to_csv('lat.csv') 

# and the same for `lon` and `precip`. 

Note: ici, je suppose que l'indice date/heure court le long de la première dimension de la Les données.

+0

Merci! Malheureusement, cela n'a pas fonctionné - j'ai décidé de simplement extraire toutes les latitudes et longitudes que j'utilisais dans mon autre ensemble de données, et j'ai bouclé cela pour obtenir la série chronologique de chaque endroit. Comme dans le lien que j'ai fourni ci-dessus. Cela prend du temps, mais ça marche! – aliki43

2

Je pense que pandas.Series devrait travailler pour vous de créer un fichier CSV avec le temps, lat, lon, precip.

import netCDF4 
import pandas as pd 

precip_nc_file = 'file_path' 
nc = netCDF4.Dataset(precip_nc_file, mode='r') 

nc.variables.keys() 

lat = nc.variables['lat'][:] 
lon = nc.variables['lon'][:] 
time_var = nc.variables['time'] 
dtime = netCDF4.num2date(time_var[:],time_var.units) 
precip = nc.variables['precip'][:] 

# a pandas.Series designed for time series of a 2D lat,lon grid 
precip_ts = pd.Series(precip, index=dtime) 

precip_ts.to_csv('precip.csv',index=True, header=True) 
+0

Merci! C'était parfait – aliki43

+0

De rien. Vous devriez accepter la réponse pour les futurs lecteurs. –