def runeemetermodel(meta, temp, building, model): timezone = meta.T[building].timezone start = meta.T[building].datastart end = meta.T[building].dataend building_data = pd.DataFrame(temp[building].tz_convert(timezone).truncate(before=start,after=end)) weatherDataSet_directory = "C:/Users/behzad/Dropbox/3 Research Projects/2 Data for Building/BuildingDataGenomeProject/the-building-data-genome-project/data/external/weather/" weatherfilename = meta.T[building].newweatherfilename weatherfile_path = weatherDataSet_directory+weatherfilename weather = pd.read_csv(weatherfile_path,index_col='timestamp', parse_dates=True, na_values='-9999') weather = weather.tz_localize(timezone, ambiguous = 'infer') weatherdata = CustomDailyWeatherSource2(weather) # df_t = pd.Series(weatherdata.data) df_t = pd.Series(weatherdata.tempC) df_t.index = df_t.index.to_datetime() df_t = pd.DataFrame(df_t) df_t.columns = ["TempC"] to_load = building_data.resample('D').sum().tz_localize(None) to_load.columns = ['Consumption'] to_load['StartDateTime'] = to_load.index.format('%Y-%m-%d %H:%M:%S.%f')[1:] end=to_load.index+timedelta(days=1) to_load['EndDateTime'] = end.format('%Y-%m-%d %H:%M:%S.%f')[1:] to_load['UnitofMeasure'] = 'kWh' to_load['FuelType'] = 'electricity' to_load['ReadingType'] = 'actual' to_load = to_load.reset_index(drop=True) consumptions = import_pandas(to_load) param_optimization_meter = TemperatureSensitivityParameterOptimizationMeter("degC",model) annualized_usage_meter = AnnualizedUsageMeter("degC",model) params = param_optimization_meter.evaluate_raw( consumption_data=consumptions, weather_source=weatherdata, energy_unit_str="kWh")["temp_sensitivity_params"] names1 = ['Baseload', 'HeatBalPtF', 'HeatSlope','CoolBalPtF','CoolSlope'] df_par = pd.DataFrame(params.to_list()) df_par['Parameter'] = index=names1 df_par.columns = ['Value', 'Parameter'] df_par = df_par.set_index('Parameter') df_m = building_data.resample('D').sum().tz_localize(None).join(df_t.resample('1D').mean(), how='inner') params_list = params.to_list() df_m['model_Consumption'] = params_list[0] + params_list[2]*(np.where(df_m.TempC<params_list[1], params_list[1]-df_m.TempC, 0)) + params_list[4]*(np.where(df_m.TempC>params_list[3], df_m.TempC - params_list[3], 0)) df_m['modelbase'] = params_list[0] df_m['modelheating'] = params_list[2]*(np.where(df_m.TempC<params_list[1], params_list[1]-df_m.TempC, np.nan)) df_m['modelcooling'] = params_list[4]*(np.where(df_m.TempC>params_list[3], df_m.TempC - params_list[3], np.nan)) df_par.loc['totalNMBE'] = 100*((df_m[building] - df_m.model_Consumption).sum()/((df_m[building].count()-1) * df_m[building].mean())) df_par.loc['totalCVRMSE'] = 100*((((df_m[building] - df_m.model_Consumption)**2).sum()/(df_m[building].count()-1))**(0.5))/df_m[building].mean() return df_m, df_par
def test_import_pandas(): df = pd.DataFrame({"Consumption": [25,1000], "UnitofMeasure": ["therms","kWh"], "FuelType":["natural gas","electricity"], "StartDateTime":[datetime(2013,12,15),datetime(2013,11,10)], "EndDateTime":[datetime(2014,1,14),datetime(2013,12,15)], "ReadingType":["estimated","actual"]}) cd = import_pandas(df) assert_allclose(cd.data.values,[25,np.nan],rtol=RTOL,atol=ATOL) assert_allclose(cd.estimated.values,[True,False],rtol=RTOL,atol=ATOL)
def test_import_pandas(): df = pd.DataFrame({"Consumption": [25,1000], "UnitofMeasure": ["therms","kWh"], "FuelType":["natural gas","electricity"], "StartDateTime":[datetime(2013,12,15),datetime(2013,11,10)], "EndDateTime":[datetime(2014,1,14),datetime(2013,12,15)], "ReadingType":["estimated","actual"]}) ch = import_pandas(df) assert len(ch.natural_gas) == 1 assert len(ch.electricity) == 1 assert_allclose(ch.natural_gas[0].therms,25,rtol=RTOL,atol=ATOL) assert_allclose(ch.electricity[0].kWh,1000,rtol=RTOL,atol=ATOL) assert ch.natural_gas[0].estimated assert not ch.electricity[0].estimated assert ch.natural_gas[0].timedelta.days == 30 assert ch.electricity[0].timedelta.days == 35
ExtractedData_chosenBuilding = pd.DataFrame(ExtractedData_chosenBuilding) to_load = ExtractedData_chosenBuilding.resample('D').sum().tz_localize(None) to_load.columns = ['Consumption'] to_load['StartDateTime'] = to_load.index.format('%Y-%m-%d %H:%M:%S.%f')[1:] end=to_load.index+timedelta(days=1) to_load['EndDateTime'] = end.format('%Y-%m-%d %H:%M:%S.%f')[1:] to_load['UnitofMeasure'] = 'kWh' to_load['FuelType'] = 'electricity' to_load['ReadingType'] = 'actual' to_load = to_load.reset_index(drop=True) to_load.head() consumptions = import_pandas(to_load) param_optimization_meter = TemperatureSensitivityParameterOptimizationMeter("degC", model) annualized_usage_meter = AnnualizedUsageMeter("degC", model) params = param_optimization_meter.evaluate_raw(consumption_data=consumptions, weather_source=formattedWeatherData2,energy_unit_str="kWh")["temp_sensitivity_params"] params_list = params.to_list() names1 = ['Baseload', 'HeatBalPtF', 'HeatSlope','CoolBalPtF','CoolSlope'] df_par = pd.DataFrame(params.to_list()) df_par['Parameter'] = index=names1 df_par.columns = ['Value', 'Parameter'] df_par = df_par.set_index('Parameter')