Skip to content

Instantly share code, notes, and snippets.

@ChristianTremblay
Created February 17, 2020 19:39
Show Gist options
  • Save ChristianTremblay/6c6419a4e02dfa98b89067851f23e97d to your computer and use it in GitHub Desktop.
Save ChristianTremblay/6c6419a4e02dfa98b89067851f23e97d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from datetime import datetime\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"#read CSV file\n",
"df = pd.read_csv('dataOrig.csv', index_col='Date', parse_dates=True)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#drop unwanted columns\n",
"df = df.drop(['OAT', 'P1VFDOutput', 'P2VFDOutput', 'ChWaterPrs'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"#filter data for just one day\n",
"dfDay = pd.DataFrame()\n",
"\n",
"dfDay['Demand'] = df['Demand'].loc['2018-2-20 00:00:00':'2018-2-21 00:00:00']\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"dfDay.plot()\n",
"\n",
"plt.axhline(dfDay.quantile(0.25)[0], linestyle=\"--\", color=\"g\") \n",
"plt.axhline(dfDay.quantile(0.975)[0], linestyle=\"--\", color=\"r\") \n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"30.0\n",
"150.0\n"
]
}
],
"source": [
"#print upper & lower percentiles of daily demand data\n",
"low = dfDay.quantile(0.25)[0]\n",
"print(low)\n",
"hi = dfDay.quantile(0.975)[0]\n",
"print(hi)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"#add helper columns for filtering data\n",
"dfDay['hour'] = dfDay.index.strftime('%H').astype('int')\n",
"dfDay['minute'] = dfDay.index.strftime('%M').astype('int')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"#create filter for AM hours\n",
"dfDayAM = dfDay[(dfDay['hour'] < 12) & (dfDay['Demand'] > low) & (dfDay['Demand'] < hi)]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AM time frame hours from base load to near peak = 6.42\n",
"AM start = 2018-02-20 05:30:00\n",
"AM stop = 2018-02-20 11:55:00\n"
]
}
],
"source": [
"t1HoursAM = dfDayAM.iloc[0].hour\n",
"t2HoursAM = dfDayAM.iloc[-1].hour\n",
"\n",
"t1MinsAM = (dfDayAM.iloc[0].minute)/60\n",
"t2MinsAM = (dfDayAM.iloc[-1].minute)/60\n",
"\n",
"t1TotalAM = t1HoursAM + t1MinsAM\n",
"t2TotalAM = t2HoursAM + t2MinsAM\n",
"\n",
"deltaTimeAM = round(t2TotalAM-t1TotalAM,2)\n",
"startAM = dfDayAM.index.min()\n",
"stopAM = dfDayAM.index.max()\n",
"\n",
"print('AM time frame hours from base load to near peak =', deltaTimeAM)\n",
"print('AM start =', startAM)\n",
"print('AM stop =', stopAM)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"dfDayPM = dfDay[(dfDay['hour'] > 12) & (dfDay['Demand'] > low) & (dfDay['Demand'] < hi)]\n",
"\n",
"#dfFebPM"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"PM time frame hours from near peak time back to base load = 10.33\n",
"PM start = 2018-02-20 13:00:00\n",
"PM stop = 2018-02-20 23:20:00\n"
]
}
],
"source": [
"t1HoursPM = dfDayPM.iloc[0].hour\n",
"t2HoursPM = dfDayPM.iloc[-1].hour\n",
"\n",
"t1MinsPM = (dfDayPM.iloc[0].minute)/60\n",
"t2MinsPM = (dfDayPM.iloc[-1].minute)/60\n",
"\n",
"t1TotalPM = t1HoursPM + t1MinsPM\n",
"t2TotalPM = t2HoursPM + t2MinsPM\n",
"\n",
"deltaTimePM = round(t2TotalPM-t1TotalPM,2)\n",
"startPM = dfDayPM.index.min()\n",
"stopPM = dfDayPM.index.max()\n",
"\n",
"print('PM time frame hours from near peak time back to base load =', deltaTimePM)\n",
"print('PM start =', startPM)\n",
"print('PM stop =', stopPM)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"dfFebPeek = dfDay[dfDay['Demand'] > hi]\n",
"\n",
"#dfFebPeek"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Daytime demand peeking timeframe in hours = 4.17\n",
"Peak start = 2018-02-20 08:30:00\n",
"Peak stop = 2018-02-20 12:40:00\n"
]
}
],
"source": [
"t1HoursPeek = dfFebPeek.iloc[0].hour\n",
"t2HoursPeek = dfFebPeek.iloc[-1].hour\n",
"\n",
"t1MinsPeek = (dfFebPeek.iloc[0].minute)/60\n",
"t2MinsPeek = (dfFebPeek.iloc[-1].minute)/60\n",
"\n",
"t1TotalPeek = t1HoursPeek + t1MinsPeek\n",
"t2TotalPeek = t2HoursPeek + t2MinsPeek\n",
"\n",
"deltaTimePeek = round(t2TotalPeek-t1TotalPeek,2)\n",
"PeekStart = dfFebPeek.index.min()\n",
"PeekStop = dfFebPeek.index.max()\n",
"\n",
"print('Daytime demand peeking timeframe in hours =', deltaTimePeek)\n",
"print('Peak start =', PeekStart)\n",
"print('Peak stop =', PeekStop)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment