In [1]:
import datetime
import pandas as pd
import sqlalchemy as sa
from sqlalchemy import *
import pandas as pd
import os
import numpy as np
import operator
import math
import random
from pylab import *
import ast
In [2]:
import json
import matplotlib
import matplotlib.pyplot as pyplt
%matplotlib inline
In [2]:
look_up_ids =
In [3]:
#homes in intersection of all four months
def get_json_data(folder, filename):
dir_path = os.path.join(os.getcwd(),folder)
with open(os.path.join(dir_path, filename)) as outfile:
return json.load(outfile)
In [62]:
def init_dict(month):
global homes
homes= get_json_data('cars/{}/'.format(month),'cars_{}.json'.format(month))
global home_ids
home_ids= homes.keys()
In [102]:
all_home_ids = {}
for month in ['January','February','March','April']:
init_dict(month)
all_home_ids[month] = home_ids
In [104]:
homes_with_all_months = list(set(all_home_ids['January'])&set(all_home_ids['February'])&set(all_home_ids['March'])&set(all_home_ids['April']))
In [120]:
homes_with_all_months[0] in all_home_ids['April']
Out[120]:
In [5]:
init_dict()
In [174]:
def plot_a_home(home,col_name,time_frame,d,name):
y = home[col_name]
y_values=[]
x_ticks = []
if time_frame == 'day':
#update to be random
y_values = y[:1441]
locs = list(range(0,len(y_values),len(y_values)/4))
x_ticks = ['00:00','6:00','12:00','6:00','00:00']
if time_frame == 'week':
y_values = y[:10081]
locs = list(range(0,len(y_values),len(y_values)/6))
x_ticks = [str(i) for i in range(1,8)]
#pyplt.xlabel(time)
pyplt.ylabel('Avg power (kW)')
pyplt.xticks(locs,x_ticks)
if d:
pyplt.plot(y_values,'bo',alpha = .1)
else:
pyplt.plot(y_values)
pyplt.savefig('day_ev_charge_{}.png'.format(name))
In [51]:
'''
def plot_all_homes(start, end,time_frame_num):
time_frame_len = (60*24*time_frame_num)
ev = np.zeros(time_frame_len)
for (hid,h) in homes.iteritems():
home_vec = h['car1'][:time_frame_len]
if not hid in ['1728','9937','8046']:
for i in range(len(home_vec)):
if home_vec[i]<.5:
home_vec[i]=0.0
ev = np.add(ev,home_vec)
if time_frame_num == 1:
locs = list(range(0,len(ev),len(ev)/4))
x_ticks = ['00:00','6:00','12:00','6:00','00:00']
if time_frame_num ==7:
locs = list(range(0,len(ev),len(ev)/6))
x_ticks = [str(i) for i in range(1,8)]
ev= np.divide(ev,45)
pyplt.xticks(locs,x_ticks)
pyplt.plot(ev)
pyplt.ylabel('Power')
pyplt.xlabel('Time')
pyplt.title('EV April')
pyplt.show()
'''
Out[51]:
In [177]:
plot_a_home(homes[home_ids[6]],'car1','day',True,6)
In [52]:
#plot_all_homes(1,1,1)
####Averaging is terrible!
In [129]:
##find max
def look_at_distribution():
df = pd.DataFrame.from_dict(homes.values(),orient = homes.keys())
return df
In [130]:
homes_df = look_at_distribution()
In [9]:
max((homes_df['car1']).max())
Out[9]:
In [13]:
len(homes_df['localminute'][0])
Out[13]:
In [23]:
def get_continuous(this_home):
continuous_times = []
i=0
if len(homes_df['car1'][this_home])!=43200 or len(homes_df['localminute'][this_home])!=43200 :
return []
while i<43200:
this_time = []
while i<43200 and homes_df['car1'][this_home][i]>0.5 :
this_time.append(([homes_df['car1'][this_home][i],homes_df['localminute'][this_home][i]]))
i=i+1
if len(this_time)>0:
continuous_times.append(this_time)
this_time=[]
i = i +1
return continuous_times
In [24]:
##for home calculate minutes avg time period
avg_con = []
avgs = []
for i in range(48):
c = get_continuous(i)
avg = 0
for e in c:
avg = avg + len(e)
if len(c)!=0:
avgs.append(c)
avg_con.append(avg/len(c))
else:
print i
In [12]:
avg = 0
for e in (avg_con):
avg = avg + (e)
print avg/len(avg_con)
In [137]:
def get_plot_points_for_phil(house,month):
all_ys = []
all_xs= []
month_days = {'January':31,'February':28,'March':31,'April':30}
for month in ['January','February','March','April']:
init_dict(month)
#homes_df = look_at_distribution()
car_vec = homes[house]['car1']
##partition by day
step_sizes_too_sick_to_do_math = [i for i in range(0,43200,1440)]
for i in range(len(step_sizes_too_sick_to_do_math)):
yhere = car_vec[step_sizes_too_sick_to_do_math[i]:step_sizes_too_sick_to_do_math[i]+1440]
all_ys.append(yhere)
all_xs.append([i for i in range(len(yhere))])
return ([all_xs,all_ys])
In [138]:
([x,y])=get_plot_points_for_phil(homes_with_all_months[0],'January')
In [144]:
def plot_points(x,y,house):
locs = list(range(0,len(y[0]),len(y[0])/4))
x_ticks = ['00:00','6:00','12:00','6:00','00:00']
pyplt.xticks(locs,x_ticks)
pyplt.title('House {}'.format(house))
pyplt.xlabel('power')
pyplt.ylabel('time')
for i in range(len(y)):
pyplt.plot(x[i],y[i],'bo',alpha = .15)
In [145]:
plot_points(x,y,homes_with_all_months[0])
In [164]:
def plot_master_coords():
house = homes_with_all_months[0]
master = [ ]
for month in ['January','February','March','April']:
#([x,y]) = get_plot_points_for_phil(house,month)
master.append(get_plot_points_for_phil(house,month))
locs = list(range(0,len(y[0]),len(y[0])/4))
x_ticks = ['00:00','6:00','12:00','6:00','00:00']
pyplt.xticks(locs,x_ticks)
pyplt.title('House {}'.format(house))
pyplt.xlabel('time')
pyplt.ylabel('power')
for ii in master:
for i in range(len(ii[1])):
pyplt.plot(ii[0][i],ii[1][i],'bo',alpha = .15)
pyplt.savefig('2014-EV.png')
In [93]:
'''
x = []
y = []
step_sizes_too_sick_to_do_math = [i for i in range(0,43200,1440)]
for i in range(len(step_sizes_too_sick_to_do_math)):
yhere = car_test[step_sizes_too_sick_to_do_math[i]:step_sizes_too_sick_to_do_math[i]+1440]
y.append(yhere)
'''
In [90]:
step_sizes_too_sick_to_do_math = [i for i in range(0,43200,1440)]
In [165]:
plot_master_coords()
In [159]:
d_test = {'car':1,'bat':1,'cat':1}
strings = ['car','taze','tzar','cat']
count = []
for s in strings:
if s in d_test:
count.append(s)
elif s!='bat':
count.append(s)
In [160]:
count
Out[160]:
In [ ]: