def get_repetition_times_knmi(dates, pref=None): """Get repetition times from KNMI data. Calculates the repetition times for maximum peak wind and highest hourly wind peak. Parameters ---------- dates : list of dt.DateTime objects Dates of the storm pref : str or None (optional) Preference for a certain function. If None, returns optimal fit function. If 'gumbel', returns only the Gumbel one. If 'weibull', returns only the Weibull result. Returns ------- rtdf : pandas.DataFrame DataFrame with location and both types of return times. """ rtdf = pd.DataFrame( columns=['Station_', 'longitude', 'latitude', 'RT', 'RTH']) for station in knmi.stations.keys(): if station > 199: data = knmi.get_day_data_dataframe(stations=[station], start=dt.datetime(1963, 1, 1)) if len(data['FHX']) < 100: continue data['FHX'] = data['FHX'] * 0.1 data['FXX'] = data['FXX'] * 0.1 try: ecdfw = ECDF(data['FXX'][data['FXX'] >= 0]) ecdfh = ECDF(data['FHX'][data['FHX'] >= 0]) lastmax = np.nanmax([data['FXX'][date] for date in dates]) lastmaxh = np.nanmax([data['FHX'][date] for date in dates]) chance = optimal_function(ecdfw.x[1:], ecdfw.y[1:], lastmax, pref=pref) chanceh = optimal_function(ecdfh.x[1:], ecdfh.y[1:], lastmaxh, pref=pref) except: continue returntime = round(1 / (1 - chance)) returntimeh = round(1 / (1 - chanceh)) if returntime > 0 and returntime < 1000000 and len( data['FXX'][data['FXX'] >= 0]) > 10 * 365: if returntimeh > 0 and returntimeh < 1000000 and len( data['FHX'][data['FHX'] >= 0]) > 10 * 365: rtdf = rtdf.append( { 'Station_': int(station), 'longitude': knmi.stations[station].longitude, 'latitude': knmi.stations[station].latitude, 'RT': returntime, 'RTH': returntimeh }, ignore_index=True) rtdf['Station_'] = rtdf['Station_'].astype(int) rtdf['RT'] = rtdf['RT'].astype(int) rtdf['RTH'] = rtdf['RTH'].astype(int) return rtdf
# encoding: utf-8 """ Going to use some knwi weather stuff here.. https://github.com/EnergieID/KNMI-py """ import knmi df = knmi.get_day_data_dataframe(stations=[260]) print(df.disclaimer) print(df.stations)
import knmi df = knmi.get_day_data_dataframe( stations=[260], start="19570701", end="20190701", inseason=False, variables=["RH", "EV24"], ) df.loc[df["RH"] < 0, "RH"] = 0.5 df["RH"] /= 10 df["EV24"] /= 10 df["NOV"] = df["RH"] - df["EV24"] df["hydr_jaar"] = df.index.year df.loc[df.index.month < 4, "hydr_jaar"] -= 1 df.groupby("hydr_jaar")["NOV"].sum().to_csv("data/neerslagoverschot.csv", header=True)
#https://github.com/EnergieID/KNMI-py import knmi import metadata print(metadata.stations) # provides a list of all available stations print(metadata.variables) # provides a list of all variables and explanations station_de_bilt = 260 station_eelde = 280 print("Ophalen dagdata") disclaimer, stations, legend, df = knmi.get_day_data_dataframe( stations=[station_de_bilt, station_eelde], start="20200501", end="20200601") print(stations, legend) print(df) print("Ophalen uurdata") disclaimer, stations, legend, df = knmi.get_hour_data_dataframe( stations=[station_de_bilt, station_eelde], start="2020080101", end="2020080105") print(stations, legend) print(df) print("Ophalen uurdata alleen temp en zon") disclaimer, stations, legend, df = knmi.get_hour_data_dataframe( stations=[station_de_bilt, station_eelde], start="2020080101", end="2020080124", variables=['TEMP', 'SUNR']) print(stations, legend)