obs_lon = [sta for sta in obs_loc_df["longitude (degree)"]] obs_lat = [sta for sta in obs_loc_df["latitude (degree)"]] # <headingcell level=3> # Request CSV response from collector and convert to Pandas DataFrames # <codecell> obs_df = [] current_speed_df = [] sta_names = [] sta_failed = [] for sta in stations: try: df = coops2df(collector, sta, sos_name, iso_start, iso_end) except Exception as e: print "Error" + str(e) continue name = df.name sta_names.append(name) # if df.empty: # sta_failed.append(name) # df = DataFrame(np.arange(len(ts)) * np.NaN, index=ts.index, columns=['Observed Data']) # df.name = name obs_df.append(df) obs_df[-1].name = name # Create a separate dataframe for only sea water speed current_speed_df.append(pd.DataFrame(df["sea_water_speed (cm/s)"]))
import iris from pandas import DataFrame from owslib.ows import ExceptionReport from utilities import coops2df, save_timeseries iris.FUTURE.netcdf_promote = True log.info(fmt(' Observations (station data) ')) fname = '{:%Y-%m-%d}-OBS_DATA.nc'.format(stop) log.info(fmt(' Downloading to file {} '.format(fname))) data = dict() bad_datum = [] for station in observations.station: try: df = coops2df(collector, station) col = 'water_surface_height_above_reference_datum (m)' data.update({station: df[col]}) except ExceptionReport as e: bad_datum.append(station) name = get_coops_longname(station) log.warning("[{}] {}:\n{}".format(station, name, e)) obs_data = DataFrame.from_dict(data) # Split good and bad vertical datum stations. pattern = '|'.join(bad_datum) if pattern: non_navd = observations.station.str.contains(pattern) bad_datum = observations[non_navd] observations = observations[~non_navd]
ts_rng = date_range(start=jd_start, end=jd_stop, freq='6Min') ts = DataFrame(index=ts_rng) print(jd_start, jd_stop) print(len(ts)) # <markdowncell> # Create a list of obs dataframes, one for each station: # <codecell> obs_df = [] sta_names = [] sta_failed = [] for sta in stations: b = coops2df(collector, sta, sos_name) name = b.name sta_names.append(name) print(name) if b.empty: sta_failed.append(name) b = DataFrame(np.arange(len(ts)) * np.NaN, index=ts.index, columns=['Observed Data']) b.name = name # Limit interpolation to 10 points (10 @ 6min = 1 hour). col = 'Observed Data' concatenated = concat([b, ts], axis=1).interpolate(limit=10)[col] obs_df.append(DataFrame(concatenated)) obs_df[-1].name = b.name # <codecell>
# <headingcell level=3> # Request CSV response from collector and convert to Pandas DataFrames # <codecell> ts_rng = pd.date_range(start=jd_start, end=jd_stop, freq='6Min') ts = pd.DataFrame(index=ts_rng) obs_df = [] wind_speed_df = [] sta_names = [] sta_failed = [] for sta in stations: try: df = coops2df(collector, sta, sos_name) except Exception as e: print "Error" + str(e) continue name = df.name sta_names.append(name) if df.empty: sta_failed.append(name) df = pd.DataFrame(np.arange(len(ts)) * np.NaN, index=ts.index, columns=['Observed Data']) df.name = name # Limit interpolation to 10 points (10 @ 6min = 1 hour). # col = 'Observed Data' # concatenated = pd.concat([df, ts], axis=1).interpolate(limit=10)[col]
obs_lon = [sta for sta in obs_loc_df['longitude (degree)']] obs_lat = [sta for sta in obs_loc_df['latitude (degree)']] # <headingcell level=3> # Request CSV response from collector and convert to Pandas DataFrames # <codecell> obs_df = [] current_speed_df = [] sta_names = [] sta_failed = [] for sta in stations: try: df = coops2df(collector, sta, sos_name, iso_start, iso_end) except Exception as e: print "Error" + str(e) continue name = df.name sta_names.append(name) # if df.empty: # sta_failed.append(name) # df = DataFrame(np.arange(len(ts)) * np.NaN, index=ts.index, columns=['Observed Data']) # df.name = name obs_df.append(df) obs_df[-1].name = name # Create a separate dataframe for only sea water speed current_speed_df.append(pd.DataFrame(df['sea_water_speed (cm/s)']))