pip install -r requirements.txt
#Import libraries
import pandas as pd #https://pandas.pydata.org/
import matplotlib.pyplot as plt #https://matplotlib.org/
import matplotlib.dates as mdates #https://matplotlib.org/
import numpy as np #http://www.numpy.org/
#from datetime import date #https://docs.python.org/3/library/datetime.html
#Read csv file using pandas
#https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
ElectricityConsumption = pd.read_csv("cons.csv",dayfirst=True,sep=";",
header=0,decimal=b",",index_col=0,
parse_dates=True)
ElectricityConsumption.info()
#Checking the table
#ElectricityConsumption #Full table
ElectricityConsumption.head() #Just a sample from "head()"
#Creating a basic plot using matplotlib
plt.plot(ElectricityConsumption)
#Improving visualization
#####
#https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot
#####
#plot size
plt.figure(figsize=(16,6))
#plot, defining color, marker and line style
plt.plot(ElectricityConsumption,color='black', marker='.',linestyle='none')
plt.title("Electricity consumption from 20.12.2017 - 30.6.2018")
plt.ylabel("Energy in [kWh]") #y-axis label
plt.grid(True) #grid
plt.show() #show plot
#Information about specific periods
ElectricityConsumption['2018-3'].info() #one month
#ElectricityConsumption['2018-1':'2018-3'].info() #ranges months
#ElectricityConsumption['2018-1-1':'2018-1-14'].info() #ranges days
#ElectricityConsumption['2018-1-14 02:00:00':'2018-1-17 04:00:00'].info() #ranges hours
#Six months
plt.figure(figsize=(16,6))
plt.plot(ElectricityConsumption['2018-1':'2018-6'],color='green', marker='.',linestyle='')
plt.title("Electricity consumption from January to June, 2018")
plt.ylabel("Energy in [kWh]")
plt.grid(True)
plt.show()
#One month
plt.figure(figsize=(16,6))
plt.plot(ElectricityConsumption['2018-2'],color='black', marker='x',linestyle='')
plt.title("Electricity consumption in Feb, 2018")
plt.ylabel("Energy in [kWh]")
plt.grid(True)
plt.show()
#One day
fig, ax = plt.subplots(1,figsize=(16,6))
plt.plot(ElectricityConsumption['2018-3-31'],color='black', marker='o',linestyle='--')
plt.title("Electricity consumption in march 31, 2018")
plt.ylabel("Energy in [kWh]")
plt.grid(True)
plt.tight_layout()
#change x axis
xfmt = mdates.DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(xfmt)
plt.show()
#Plot two days
#Day1
day1 = '2018-04-29'
#Day2
day2 = '2018-05-01'
#Difference
delta = ElectricityConsumption[day2:].index[0].date() - ElectricityConsumption[day1:].index[0].date()
#
fig, ax = plt.subplots(1,figsize=(16,6))
#
plt.plot(ElectricityConsumption[day1:day1], label=day1, color='black',
marker='o',linestyle='--')
plt.plot(ElectricityConsumption[day2:day2].index - pd.offsets.Day(delta.days),
ElectricityConsumption[day2:day2].values, label=day2, color='blue', marker='x',linestyle='-')
plt.legend()
plt.ylim([0, 6])
plt.title("Electricity consumption")
plt.ylabel("Energy in [kWh]")
plt.grid(True)
plt.tight_layout()
#change x axis
xfmt = mdates.DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(xfmt)
#
plt.show()
#Uploading the temperature from this day in Lappeenranta
#http://en.ilmatieteenlaitos.fi/download-observations#!/
#Note parse_dates to combine the first columns, also note that the separator from
#decimal is "." and data separator is ","
Temperature = pd.read_csv("data-test.csv",dayfirst=True,sep=",",
header=0,decimal=b".",index_col=0,
parse_dates= [[0, 1, 2, 3]],usecols=[0,1,2,3,5])
Temperature.info()
#plotting
plt.figure(figsize=(16,6))
plt.plot(Temperature,color='blue', marker='x',linestyle=':')
plt.title("Air temperature in sep 7, 2013, at Lappeenranta airport station")
plt.ylabel("Temperature in [°C]")
plt.grid(True)
plt.show()
Temperature2 = pd.read_csv("temp-20180429-LPR-airport.csv",dayfirst=True,sep=",",
header=0,decimal=b".",index_col=0,
parse_dates= [[0, 1, 2, 3]],usecols=[0,1,2,3,5])
Temperature2.info()
#plotting
plt.figure(figsize=(16,6))
plt.plot(Temperature2['2018-4-29'],color='blue', marker='x',linestyle=':')
plt.plot(Temperature2['2018-4-29'] > 11,color='black', marker='o',linestyle='')
plt.title("Air temperature in April 29, 2018, at Lappeenranta airport station")
plt.ylabel("Temperature in [°C]")
plt.grid(True)
plt.show()
#subplot function
#https://matplotlib.org/2.0.1/examples/api/two_scales.html
####
fig, ax1 = plt.subplots(figsize=(16,6))
#left axis
ax1.set_ylabel("Energy in [kWh]", color='black')
ax1.plot(ElectricityConsumption['2018-4-29'],color='black', marker='o',linestyle='--')
ax1.plot(ElectricityConsumption['2018-4-29']>0.5,color='black', marker='o',linestyle='')
#right axis
ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis
ax2.set_ylabel("Temperature in [°C]", color='blue',rotation=270,va="bottom")
ax2.plot(Temperature2['2018-4-29'],color='blue', marker='x',linestyle=':')
ax2.plot(Temperature2['2018-4-29']>5,color='blue', marker='x',linestyle='')
#
ax1.grid(True)
plt.title("Electricity consumption and air temperature in April 29, 2018") #title
#change x axis
xfmt = mdates.DateFormatter('%H:%M')
ax1.xaxis.set_major_formatter(xfmt)
#
plt.show()
#NOTE the "1" is different in the different energy and the temperature plots (check scales)
#subplot function
#https://matplotlib.org/2.0.1/examples/api/two_scales.html
####
fig, ax1 = plt.subplots(figsize=(16,6))
#left axis
ax1.set_ylabel("Energy in [kWh]", color='black')
#ax1.plot(ElectricityConsumption['2018-4-29'],color='black', marker='o',linestyle='--')
ax1.plot(ElectricityConsumption['2018-4-29']>0.2,color='red', marker='o',linestyle='')
#right axis
ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis
ax2.set_ylabel("Temperature in [°C]", color='black',rotation=270,va="bottom")
#ax2.plot(Temperature2['2018-4-29'],color='blue', marker='x',linestyle=':')
ax2.plot(Temperature2['2018-4-29']>7,color='blue', marker='x',linestyle='')
#
ax1.grid(True)
plt.title("Electricity consumption and air temperature in April 29, 2018") #title
#change x axis
xfmt = mdates.DateFormatter('%H:%M')
ax1.xaxis.set_major_formatter(xfmt)
#
plt.show()
#plotting
aux=(Temperature2['2018-4-29'].values>7) & (ElectricityConsumption['2018-4-29'].values>0.2)
aux2=(Temperature2['2018-4-29'].values>7) | (ElectricityConsumption['2018-4-29'].values>0.2)
plt.figure(figsize=(16,6))
#plt.plot(ElectricityConsumption['2018-4-29'].index, aux,color='black', marker='o',linestyle='')
plt.plot(ElectricityConsumption['2018-4-29'].index, aux2, color='green', marker='s',linestyle='')
plt.grid(True)
plt.show()