示例#1
0
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
示例#2
0
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)
示例#3
0
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
示例#4
0
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')