Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 35
Kernel: Python 2 (SageMath)

Inside ETC Temp 2016

In this section, we graph the inside temperature of the ETC. The data is taken every hour for a year. We will need to use this data to find degree days.

import pandas as pd
etctemp = pd.read_csv('temp2016.csv', parse_dates=True, index_col=0)
etctemp.columns
Index([u'Timestamp', u'Inside Temp (C)', u'Outside Temp (C)', u'Humidity', u'CO2', u'Noise', u'Pressure'], dtype='object')

Outside ETC Temp 2016

%matplotlib inline etctemp['Outside Temp (C)'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f4424aef990>
Image in a Jupyter notebook

Inside and Outside Temperature

In this section, we place the hourly data for both inside and outside temperature on the same graph. This highlights how the ETC performs during the major fluctuations of outs

%matplotlib inline etctemp['Inside Temp (C)'].plot() etctemp['Outside Temp (C)'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f44244b01d0>
Image in a Jupyter notebook

Mean Inside and Outside Temperature

In order to show the inside and outside temperature more clearly, we resampled the data to take an average for each day. This gives a clearer line and allows for clearer comparison between inside and outside temperatures.

meansi = etctemp['Inside Temp (C)'].resample('1D').mean()

Mean Inside Temperature:

%matplotlib inline meansi.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f442b2bac50>
Image in a Jupyter notebook

Mean Outside Temperature:

meanso = etctemp['Outside Temp (C)'].resample('1D').mean()
%matplotlib inline meanso.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f44243fc6d0>
Image in a Jupyter notebook

Plotting both daily mean for inside and outside temperatures:

%matplotlib inline meanso.plot() meansi.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f442412c590>
Image in a Jupyter notebook

The graph above shows the means of the inside and outside temperature so it is easier to clearly see the temperature difference throughout the year.

Degree Days

etctemp['deltaT'] = etctemp['Inside Temp (C)'] - etctemp['Outside Temp (C)'] etctemp['deltaT'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f4423f3f190>
Image in a Jupyter notebook

A degree day is bascially the amount of degrees were required to either heat or cool the ETC to meat our "comfortable" level of 70 degrees over a period of time. The equation for this graph is "Inside Temperature - Outside Temperature x Days".

Heating Degree Days

(etctemp['deltaT']['2016-07-01':'2016-08-01'].cumsum()/24).plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f4423b9afd0>
Image in a Jupyter notebook

(etctemp['deltaT']['2016-02-01':'2017-01-01'].cumsum()/24).plot(legend = False, figsize=(16, 8)) (etctemp['deltaT'][etctemp['deltaT']<0].cumsum()/24).plot(legend = False, figsize=(16, 8))
<matplotlib.axes._subplots.AxesSubplot at 0x7f44239f6350>
Image in a Jupyter notebook

Cooling Degree Days

(etctemp['deltaT'][etctemp['deltaT']<0].cumsum()/24).plot(legend = False, figsize=(16, 8))
<matplotlib.axes._subplots.AxesSubplot at 0x7f4423a607d0>
Image in a Jupyter notebook

Natural Gas in ETC:

etcdata = pd.read_csv('etc_data.csv', parse_dates=True, index_col=0)
etcdata.diff(1)
House (kWH) Solar (kWH) Gas (C/Ft X 100)
Date
Jan-16 NaN NaN NaN
Feb-16 9.0 251.0 26.0
Mar-16 45.0 194.0 63.0
Apr-16 142.0 173.0 41.0
May-16 170.0 0.0 28.0
Jun-16 227.0 0.0 30.0
Jul-16 149.0 0.0 10.0
Aug-16 382.0 0.0 32.0
Sep-16 233.0 0.0 12.0
Oct-16 346.0 0.0 21.0
Nov-16 NaN NaN NaN
Dec-16 NaN NaN NaN
Jan-17 NaN NaN NaN
Feb-17 NaN NaN NaN
%matplotlib inline etcdata['Gas (C/Ft X 100)'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f44237a6490>
Image in a Jupyter notebook
naturalgas = pd.read_csv('naturalgas_difference.csv', parse_dates=True, index_col=0)
naturalgas
Gas (C/Ft X 100) Natural Gas (C/Ft X 100)
Date
2016-01-31 3379.0 NaN
2016-02-28 3405.0 26.0
2016-03-30 3468.0 63.0
2016-04-30 3509.0 41.0
2016-05-31 3537.0 28.0
2016-06-30 3567.0 30.0
2016-07-31 3577.0 10.0
2016-08-31 3609.0 32.0
2016-09-30 3621.0 12.0
2016-10-31 3642.0 21.0
2016-11-30 NaN 0.0
2016-12-31 NaN 0.0
2017-01-31 NaN 0.0
2017-02-28 3975.0 333.0
%matplotlib inline naturalgas['Natural Gas (C/Ft X 100)'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f4423b7d0d0>
Image in a Jupyter notebook
%matplotlib inline etcdata['Gas (C/Ft X 100)'].plot(legend = False, figsize=(16, 8))
<matplotlib.axes._subplots.AxesSubplot at 0x7f4423663190>
Image in a Jupyter notebook

Occupancy Data

occupancy = pd.read_csv('occupancy_spring2016.csv', parse_dates=True, index_col=0)
occupancy
Time Occupancy
Day
Monday 9:00:00 AM 0
Monday 10:00:00 AM 0
Monday 11:00:00 AM 19
Monday 12:00:00 PM 19
Monday 1:00:00 PM 0
Monday 2:00:00 PM 0
Monday 3:00:00 PM 0
Monday 4:00:00 PM 23
Monday 5:00:00 PM 23
Monday 6:00:00 PM 23
Monday 7:00:00 PM 0
Tuesday 9:00:00 AM 0
Tuesday 10:00:00 AM 46
Tuesday 11:00:00 AM 46
Tuesday 12:00:00 PM 46
Tuesday 1:00:00 PM 0
Tuesday 2:00:00 PM 0
Tuesday 3:00:00 PM 0
Tuesday 4:00:00 PM 0
Tuesday 5:00:00 PM 0
Tuesday 6:00:00 PM 0
Tuesday 7:00:00 PM 0
Wednesday 9:00:00 AM 0
Wednesday 10:00:00 AM 0
Wednesday 11:00:00 AM 19
Wednesday 12:00:00 PM 19
Wednesday 1:00:00 PM 0
Wednesday 2:00:00 PM 0
Wednesday 3:00:00 PM 39
Wednesday 4:00:00 PM 39
Wednesday 5:00:00 PM 0
Wednesday 6:00:00 PM 0
Wednesday 7:00:00 PM 0
Thursday 9:00:00 AM 0
Thursday 10:00:00 AM 46
Thursday 11:00:00 AM 46
Thursday 12:00:00 PM 46
Thursday 1:00:00 PM 0
Thursday 2:00:00 PM 0
Thursday 3:00:00 PM 21
Thursday 4:00:00 PM 21
Thursday 5:00:00 PM 21
Thursday 6:00:00 PM 0
Thursday 7:00:00 PM 0
Friday 9:00:00 AM 0
Friday 10:00:00 AM 0
Friday 11:00:00 AM 0
Friday 12:00:00 PM 0
Friday 1:00:00 PM 0
Friday 2:00:00 PM 0
Friday 3:00:00 PM 0
Friday 4:00:00 PM 0
Friday 5:00:00 PM 0
Friday 6:00:00 PM 0
Friday 7:00:00 PM 0

The occupancy data is significant because each human produces around 100watts, so say we have 20 people in a room at one time, there would be 2000watts produced. This helps reduce the nessesary natural gas to heat the ETC.

%matplotlib inline occupancy['Occupancy'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f44235a9b50>
Image in a Jupyter notebook

UA Value

Here, we used the calculation below to find the UA value for each month. First we must convert ft^3 to BTU and then find the BTU per hour for the month. Then we will divide BTU/hr by .9 because we are assuming the water heater is only 90% efficient. Then we will divide by the temperature difference of the inside temperature and the average of all the temperatures in March that are below the balance point (55F). For instance, for March we would do the following calculation:

1 ft^3 = 1020 BTU

6300ft^3 = 6426000 BTU

6426000BTU/Month * (1 month/ 30 days) * (1 day/ 24 hrs) = 8925 BTU/hr

UA = (Q/efficiency)/(inside temp - avg outside temp below balance pt)

UA= (8925 BTU/hr / .9 ) / (70F - 48F) = 450.8 BTU/(hr * F)

So the UA for March is 450.8 BTU/(hr * F)

UA value tells us how much energy is needed to heat the building one degree Farenheit.

The calculation below is for March as well. For each month we just changed monthly gas and outside temperature and put it into a table that is on our final manuscript.

cubic_foot = 1020 monthly_gas = 6300 btu_month = cubic_foot * monthly_gas btu_month
6426000
hour = 0.001388889 q = btu_month * hour q
8925.000714
efficiency = 0.9 inside_temp = 70 outside_temp = 48
UA = (q/efficiency) / (inside_temp - outside_temp) UA
450.7576118181818

The UA value gives us an understanding on how well the ETC performs by mantaining the temperature we have set out for. The lower the UA product is, the better a building performs. This range typically stretches between 300 - 800. So for the month of march, it performed exceptionally well.