from IPython.display import HTML
import requests
import pandas as pd
import MySQLdb
import pandas.io.sql as psql
mysql_conn=MySQLdb.connect(user='root',passwd='password',db='jplug');
import datetime
import time
import pytz
import time
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
styles = requests.get("https://raw.github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/master/styles/custom.css")
HTML(styles.text)
import json
s = requests.get("https://raw.github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/master/styles/bmh_matplotlibrc.json").json()
matplotlib.rcParams.update(s)
figsize(10,7)
start_date=datetime.datetime(2013,5,28,0,0,0,tzinfo=pytz.timezone('Asia/Kolkata'))
jplug_ids=["001EC00CC4A0","001EC00CC4A1","001EC00CC4AD","001EC00CC49C","001EC00CC49F","001EC00D7A18","001EC00CC49D","001EC00D7A1D","001EC00D7A1C"]
#jplug_ids=["001EC00CC4A0"]
num_days=61
stats={}
for jplug in jplug_ids:
stats[jplug]={}
stats[jplug]['X']=[]
stats[jplug]['count']=[]
stats[jplug]['mean']=[]
stats[jplug]['max']=[]
stats[jplug]['min']=[]
for i in range(num_days):
start=start_date+datetime.timedelta(i)
end=start_date+datetime.timedelta(i+1)
start_timestamp=int(time.mktime(start.timetuple()))
end_timestamp=int(time.mktime(end.timetuple()))
query='select count(*) from jplug_data where mac="%s" and timestamp between %d and %d;' %(jplug,start_timestamp,end_timestamp)
result=psql.frame_query(query,mysql_conn)
stats[jplug]['count'].append(result.values[0][0])
stats[jplug]['X'].append(start)
query='select avg(active_power) from jplug_data where mac="%s" and timestamp between %d and %d;' %(jplug,start_timestamp,end_timestamp)
result=psql.frame_query(query,mysql_conn)
if result.values[0][0] is not None:
stats[jplug]['mean'].append(result.values[0][0])
else:
stats[jplug]['mean'].append(0)
plt.figure()
plt.subplot(2,1,1)
plt.bar(stats[jplug]['X'],stats[jplug]['count'])
plt.title("Number of points for %s" %jplug)
plt.subplot(2,1,2)
plt.bar(stats[jplug]['X'],stats[jplug]['mean'])
plt.title("Average active power for %s" %jplug)
plt.ylabel('Average Active Power (W)')
plt.tight_layout()