Importe el archivo netCDF a los datos de Pandas

Feliz Navidad. Todavía soy muy nuevo en Python y Pandas, así que se agradece la ayuda.
Estoy tratando de leer un archivo netCDF, lo que puedo hacer y luego importarlo a Pandas Dataframe. El archivo netcDF es 2D, así que solo quiero ‘volcarlo’. He probado el método DataFrame pero no reconoce el objeto. ¿Supongo que necesito convertir el objeto netCDF a una matriz numpy 2D? Nuevamente gracias por cualquier idea sobre la mejor manera de hacer esto. Los mejores deseos Jason

La biblioteca xarray maneja datos netCDF de dimensiones arbitrarias y retiene metadatos. Xarray proporciona un método simple para abrir archivos netCDF y convertirlos en marcos de datos pandas:

import xarray as xr ds = xr.open_dataset('/path/to/netcdf') df = ds.to_dataframe() 

Esto creará un dataframe con un índice múltiple con todas las dimensiones en él. Desafortunadamente, Pandas no admite metadatos arbitrarios, por lo que se perderá en la conversión, pero puede mantener el ds alrededor y usar los metadatos para eso.

Si su archivo NetCDF (o conjunto de datos OPeNDAP ) sigue las convenciones de metadatos de CF, puede aprovecharlos utilizando el NetCDF4-Python package , lo que hace que acceder a ellos en Pandas sea realmente fácil. (Estoy usando la distribución de Python de Enthought, que incluye Pandas y NetCDF4-Python).

En el siguiente ejemplo, el archivo NetCDF se sirve a través de OPeNDAP, y la biblioteca NetCDF4-Python le permite abrir y trabajar con un conjunto de datos remoto OPeNDAP como si fuera un archivo NetCDF local, que es bastante resbaladizo. Si desea ver los atributos del archivo NetCDF4, apunte su navegador a este enlace http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc.html

Deberías poder ejecutar esto sin cambios:

 from matplotlib import pyplot as plt import pandas as pd import netCDF4 url='http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc' vname = 'Tx_1211' station = 0 nc = netCDF4.Dataset(url) h = nc.variables[vname] times = nc.variables['time'] jd = netCDF4.num2date(times[:],times.units) hs = pd.Series(h[:,station],index=jd) fig = plt.figure(figsize=(12,4)) ax = fig.add_subplot(111) hs.plot(ax=ax,title='%s at %s' % (h.long_name,nc.id)) ax.set_ylabel(h.units) 

El resultado puede verse aquí en el cuaderno de Ipython: http://nbviewer.ipython.org/4615153/

Puede usar una biblioteca como PyNIO para leer su archivo en matrices numéricas y enviarlas a pandas.
PyNIO permite leer varios formatos de archivo, incluyendo netCDF3 clásico y netCDF4.
netcdf4-python también puede leer estos formatos netCDF y es compatible con py3.3