29

メリークリスマス!私はまだPythonとPandasに非常に慣れていないので、助けていただければ幸いです。私は netCDF ファイルを読み込もうとしています。これを実行して、それを Pandas Dataframe にインポートできます。netcDF ファイルは 2D なので、「ダンプ」したいだけです。DataFrame メソッドを試しましたが、オブジェクトが認識されません。おそらく、netCDF オブジェクトを 2D numpy 配列に変換する必要がありますか? 繰り返しますが、これを行うための最良の方法についてのアイデアに感謝します。

4

3 に答える 3

17

NetCDF ファイル (またはOPeNDAPデータセット) が CF メタデータの規則に従っている場合は、 を使用してそれらを利用できますNetCDF4-Python package。これにより、Pandas でのアクセスが非常に簡単になります。(Pandas と NetCDF4-Python の両方を含む Enthought Python ディストリビューションを使用しています)。

以下の例では、NetCDF ファイルは OPeNDAP を介して提供されており、NetCDF4-Python ライブラリを使用すると、リモートの OPeNDAP データセットを開いて、まるでローカルの NetCDF ファイルであるかのように操作できます。これは非常に巧妙です。NetCDF4 ファイルの属性を確認したい場合は、ブラウザで次のリンクを参照してください: http://geoport-dev.whoi.edu/thredds/dodsC/HUDSON_SVALLEY/5951adc-a1h.nc.html

これを変更せずに実行できるはずです。

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/

于 2013-01-24T01:18:17.793 に答える