圣诞快乐!我对Python和Pandas还很陌生,所以任何帮助都很感激。我试图读入一个netCDF文件,我可以这样做,然后将其导入到Pandas Dataframe中。netCDF文件是2D的,所以我只是想“转储”。我已经尝试了DataFrame方法,但它不识别对象。大概我需要将netCDF对象转换为2D numpy数组?再次感谢任何关于最佳方法的想法。
ogq8wdun1#
xarray库处理任意维的netCDF数据,并保留元数据。Xarray提供了一种打开netCDF文件并将其转换为pandas框架的简单方法:
import xarray as xr ds = xr.open_dataset('/path/to/netcdf') df = ds.to_dataframe()
字符串这将创建一个包含所有维度的多索引的框架。不幸的是,Pandas不支持任意元数据,因此在转换过程中会丢失,但您可以保留ds,并使用其中的元数据。
ds
soat7uwm2#
如果你的NetCDF文件(或OPeNDAP数据集)遵循CF元数据约定,你可以通过使用NetCDF4-Python package来利用它们,这使得在Pandas中访问它们非常容易。(我使用的是Enthought Python Distribution,其中包括Pandas和NetCDF 4-Python)。在下面的示例中,NetCDF文件是通过OPeNDAP提供的,NetCDF 4-Python库允许您打开和处理远程OPeNDAP数据集,就像它是一个本地NetCDF文件一样,这非常灵活。如果您想查看NetCDF 4文件的属性,请将浏览器指向此链接http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc.html您应该能够在不进行更改的情况下运行此命令:
OPeNDAP
NetCDF4-Python package
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)
字符串结果可以在Ipython Notebook中看到:http://nbviewer.ipython.org/4615153/
iq0todco3#
你可以使用像PyNIO这样的库将你的文件读入p.e. numpy数组,并将它们提供给pandas。PyNIO允许阅读多种文件格式,包括经典的netCDF 3和netCDF 4。netcdf4-python也可以读取这些netCDF格式,并且与py3.3兼容
3条答案
按热度按时间ogq8wdun1#
xarray库处理任意维的netCDF数据,并保留元数据。Xarray提供了一种打开netCDF文件并将其转换为pandas框架的简单方法:
字符串
这将创建一个包含所有维度的多索引的框架。不幸的是,Pandas不支持任意元数据,因此在转换过程中会丢失,但您可以保留
ds
,并使用其中的元数据。soat7uwm2#
如果你的NetCDF文件(或
OPeNDAP
数据集)遵循CF元数据约定,你可以通过使用NetCDF4-Python package
来利用它们,这使得在Pandas中访问它们非常容易。(我使用的是Enthought Python Distribution,其中包括Pandas和NetCDF 4-Python)。在下面的示例中,NetCDF文件是通过OPeNDAP提供的,NetCDF 4-Python库允许您打开和处理远程OPeNDAP数据集,就像它是一个本地NetCDF文件一样,这非常灵活。如果您想查看NetCDF 4文件的属性,请将浏览器指向此链接http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc.html
您应该能够在不进行更改的情况下运行此命令:
字符串
结果可以在Ipython Notebook中看到:http://nbviewer.ipython.org/4615153/
iq0todco3#
你可以使用像PyNIO这样的库将你的文件读入p.e. numpy数组,并将它们提供给pandas。
PyNIO允许阅读多种文件格式,包括经典的netCDF 3和netCDF 4。
netcdf4-python也可以读取这些netCDF格式,并且与py3.3兼容