Skip to content

Commit

Permalink
Merge pull request #523 from openeemeter/bugfix/nan_zeroes_for_electr…
Browse files Browse the repository at this point in the history
…icity

have HourlyBaselineData/HourlyReportingData where is_electricity=True NaN zero rows
  • Loading branch information
jason-recurve authored Jan 6, 2025
2 parents 1c35b05 + 5d8ec26 commit bec797d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Changelog
Development
-----------

* Fix bug where HourlyBaselineData and HourlyReportingData wasn't actually NaNning zero rows when `is_electricity=True`.
* Constrain eemeter daily model balance points to T_min_seg and T_max_seg rather than T_min and T_max.

4.0.7
Expand Down
4 changes: 2 additions & 2 deletions eemeter/eemeter/models/hourly/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def __init__(self, df: pd.DataFrame, is_electricity_data: bool):
df["observed"] = np.nan

if is_electricity_data:
df[df["observed"] == 0]["observed"] = np.nan
df.loc[df["observed"] == 0, "observed"] = np.nan

df = self._correct_frequency(df)

Expand Down Expand Up @@ -85,7 +85,7 @@ def from_series(
class HourlyBaselineData(HourlyReportingData):
def __init__(self, df: pd.DataFrame, is_electricity_data: bool):
if is_electricity_data:
df[df["observed"] == 0]["observed"] = np.nan
df.loc[df["observed"] == 0, "observed"] = np.nan

df = self._correct_frequency(df)

Expand Down
17 changes: 16 additions & 1 deletion tests/test_json_serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,21 @@ def test_json_billing():
assert total_metered_savings == total_metered_savings_loaded


def test_json_hourly_with_zeros():
meter_data, temperature_data, sample_metadata = load_sample(
"il-electricity-cdd-hdd-hourly"
)
meter_data["value"] = 0
baseline = HourlyBaselineData.from_series(
meter_data, temperature_data, is_electricity_data=True
)
assert baseline.df["observed"].isnull().all()
reporting = HourlyReportingData.from_series(
meter_data, temperature_data, is_electricity_data=True
)
assert reporting.df["observed"].isnull().all()


def test_json_hourly():
meter_data, temperature_data, sample_metadata = load_sample(
"il-electricity-cdd-hdd-hourly"
Expand Down Expand Up @@ -212,4 +227,4 @@ def test_legacy_deserialization_hourly(request):
metered_savings_dataframe["observed"] - metered_savings_dataframe["predicted"]
).sum()

assert round(total_metered_savings, 2) == -52893.66
assert round(total_metered_savings, 2) == -52454.02

0 comments on commit bec797d

Please sign in to comment.