2012-12-26 31 views
11

मेरी क्रिसमस पर नेटसीडीएफ फ़ाइल आयात करें। मैं अभी भी पाइथन और पांडों के लिए बहुत नया हूं इसलिए सहायता की सराहना की जाती है।
मैं एक नेटसीडीएफ फ़ाइल में पढ़ने की कोशिश कर रहा हूं, जिसे मैं कर सकता हूं और फिर इसे पांडस डेटाफ्रेम में आयात कर सकता हूं। नेटसीडीएफ फ़ाइल 2 डी है इसलिए मैं बस इसे 'डंप करना' चाहता हूं। मैंने डेटाफ्रेम विधि की कोशिश की है लेकिन यह ऑब्जेक्ट को पहचान नहीं पाती है। संभवतः मुझे netCDF ऑब्जेक्ट को 2 डी numpy सरणी में कनवर्ट करने की आवश्यकता है? ऐसा करने के सर्वोत्तम तरीके पर किसी भी विचार के लिए फिर से धन्यवाद। शुभकामनाएं जेसनपांडा डेटाफ्रेम

उत्तर

2

आप अपनी फ़ाइल को पी.ई. में पढ़ने के लिए पीएनएनआईओ जैसी लाइब्रेरी का उपयोग कर सकते हैं। numpy arrays और उन्हें पांडा को खिलाओ।
PyNIO क्लासिक नेटसीडीएफ 3 और नेटसीडीएफ 4 सहित कई फ़ाइल प्रारूपों को पढ़ने की अनुमति देता है।
netcdf4-python भी इन netCDF प्रारूपों पढ़ सकते हैं और py3.3 संगत है सकते हैं

11

अपने NetCDF फ़ाइल (या OPeNDAP डाटासेट) सीएफ मेटाडाटा सम्मेलनों का अनुसरण करती है आप NetCDF4-Python package का उपयोग कर, जो वास्तव में पांडा में उन तक बनाता करके उनमें से लाभ ले सकते हैं आसान। (मैं एंथॉट पायथन वितरण का उपयोग कर रहा हूं जिसमें पांडो और नेटसीडीएफ 4-पायथन दोनों शामिल हैं)।

नीचे दिए गए उदाहरण में, नेटसीडीएफ फ़ाइल OPENDAP के माध्यम से परोसा जा रहा है, और नेटसीडीएफ 4-पायथन लाइब्रेरी आपको रिमोट ओपेन्डैप डेटासेट के साथ खोलने और काम करने की सुविधा देती है जैसे कि यह एक स्थानीय नेटसीडीएफ फ़ाइल थी, जो कि बहुत चिकना है। आप 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 नोटबुक में यहां देखा जा सकता है : http://nbviewer.ipython.org/4615153/

13

xarray लाइब्रेरी मनमाने ढंग से-आयामी नेटसीडीएफ डेटा संभालती है, और मेटाडेटा को बरकरार रखती है।

import xarray as xr 

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

इससे फ़ोल्डर में सभी आयाम के साथ एक बहु सूचकांक के साथ एक dataframe पैदा करेगा: Xarray netCDF फ़ाइलों को खोलने, और उन्हें पांडा dataframes में परिवर्तित करने का एक सरल तरीका प्रदान करता है। दुर्भाग्यवश, पांडस मनमाने ढंग से मेटाडेटा का समर्थन नहीं करते हैं, इसलिए रूपांतरण में खो जाएगा, लेकिन आप ds को आस-पास रख सकते हैं, और उस से मेटाडेटा का उपयोग कर सकते हैं।

+1

xray अब xarray है: http://xarray.pydata.org/en/stable/ –

+2

धन्यवाद @ डेवएक्स, अपडेट किया गया। – naught101

संबंधित मुद्दे