title: Reading Time Series from netCDF with python
body: <p>I'm trying to create time series from a netCDF file (accessed via Thredds server) with python. The code I use seems correct, but the values of the variable amb reading are 'masked'. I'm new into python and I'm not familiar with the formats. Any idea of how can I read the data?</p>
  
  <p>This is the code I use:</p>
  
  <pre><code>import netCDF4
  import pandas as pd
  import datetime as dt
  import matplotlib.pyplot as plt
  from datetime import datetime, timedelta # 
  
  dayFile = datetime.now() - timedelta(days=1)
  dayFile  = dayFile.strftime("%Y%m%d")
  
  url='http://nomads.ncep.noaa.gov:9090/dods/nam/nam%s/nam1hr_00z' %(dayFile)
  
  # NetCDF4-Python can open OPeNDAP dataset just like a local NetCDF file
  nc = netCDF4.Dataset(url)
  varsInFile = nc.variables.keys()
  
  lat = nc.variables['lat'][:]
  lon = nc.variables['lon'][:]
  time_var = nc.variables['time']
  dtime = netCDF4.num2date(time_var[:],time_var.units)
  
  first = netCDF4.num2date(time_var[0],time_var.units)
  last = netCDF4.num2date(time_var[-1],time_var.units)
  print first.strftime('%Y-%b-%d %H:%M')
  print last.strftime('%Y-%b-%d %H:%M')
  
  # determine what longitude convention is being used
  print lon.min(),lon.max()
  
  # Specify desired station time series location
  # note we add 360 because of the lon convention in this dataset
  #lati = 36.605; loni = -121.85899 + 360.  # west of Pacific Grove, CA
  lati = 41.4; loni = -100.8 +360.0  # Georges Bank
  
  # Function to find index to nearest point
  def near(array,value):
  idx=(abs(array-value)).argmin()
  return idx
  
  # Find nearest point to desired location (no interpolation)
  ix = near(lon, loni)
  iy = near(lat, lati)
  print ix,iy
  
  # Extract desired times.  
  
  # 1. Select -+some days around the current time:
  start = netCDF4.num2date(time_var[0],time_var.units)
  stop = netCDF4.num2date(time_var[-1],time_var.units)
  time_var = nc.variables['time']
  datetime = netCDF4.num2date(time_var[:],time_var.units)
  
  istart = netCDF4.date2index(start,time_var,select='nearest')
  istop = netCDF4.date2index(stop,time_var,select='nearest')
  print istart,istop
  
  # Get all time records of variable [vname] at indices [iy,ix]
  vname = 'dswrfsfc'
  
  var = nc.variables[vname]
  
  hs = var[istart:istop,iy,ix]
  
  tim = dtime[istart:istop]
  
  # Create Pandas time series object
  ts = pd.Series(hs,index=tim,name=vname)
  </code></pre>
  
  <p>The var data are not read as I expected, apparently because data is masked:</p>
  
  <pre><code>&gt;&gt;&gt; hs
  masked_array(data = [-- -- -- ..., -- -- --],
               mask = [ True  True  True ...,  True  True  True],
         fill_value = 9.999e+20)
  </code></pre>
  
  <p>The var name, and the time series are correct, as well of the rest of the script. The only thing that doesn't work is the var data retrieved. This is the time serie I get:</p>
  
  <pre><code>&gt;&gt;&gt; ts
  2016-10-25 00:00:00.000000   NaN
  2016-10-25 01:00:00.000000   NaN
  2016-10-25 02:00:00.000006   NaN
  2016-10-25 03:00:00.000000   NaN
  2016-10-25 04:00:00.000000   NaN
  ...   ...    ...   ...   ... 
  2016-10-26 10:00:00.000000   NaN
  2016-10-26 11:00:00.000006   NaN
  Name: dswrfsfc, dtype: float32
  </code></pre>
  
  <p>Any help will be appreciated!</p>