Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Fri Sep 21 16:56:52 2018
- @author: Ranged
- """
- import numpy as np
- import matplotlib.pyplot as plt
- import pandas as pd
- plt.close('all')
- pandatafel = pd.read_table('KNMI_20180828.txt', comment='#', delimiter=',', header = None).values
- #temps = pd.DataFrame(data=pandatafel[:, [2]]) / 10
- temps = pandatafel[:, 2] / 10 #180 > 18.0
- datums = pandatafel[:, 1] #geef een niewe array met de datums
- aantaldagen = len(temps)
- days = np.linspace(1, aantaldagen, aantaldagen) #Omdat plot() een list wil hebben...
- tmin = np.amin(temps)
- tmax = np.amax(temps)
- tmindex = np.where(temps==tmin) #index van koudste dag
- tmaxdex = np.where(temps==tmax) #index van warmste dag
- datumkoud = np.array2string(datums[tmindex]) #vind koudste en warmste datum
- datumkoud = datumkoud.replace("[", "")
- datumkoud = datumkoud.replace("]", "")
- datumwarm = np.array2string(datums[tmaxdex])
- datumwarm = datumwarm.replace("[", "")
- datumwarm = datumwarm.replace("]", "")
- print("De laagste temperatuur is {} op datum {}. De hoogste temperatuur is {} op datum {}.".format(tmin, datumkoud, tmax, datumwarm))
- N = 365 #len voortschr. gem.
- beidekanten = int((N-1)/2)
- leeg1 = np.zeros(aantaldagen)
- leeg2 = np.zeros(aantaldagen)
- i = 0
- rightside = aantaldagen - beidekanten - 1
- stap = beidekanten - 1
- for dag in temps: # moving average loop
- if i > rightside: #rechterkantprobleem
- movavg = np.average(temps[(i - stap):(aantaldagen)])
- stdev = np.std(temps[(i - stap):(aantaldagen)])
- leeg1[i] = movavg
- leeg2[i] = stdev
- stap = stap - 1
- elif i >= beidekanten:
- movavg = np.average(temps[(i-beidekanten):(i+beidekanten+1)])
- stdev = np.std(temps[(i-beidekanten):(i+beidekanten+1)])
- leeg1[i] = movavg
- leeg2[i] = stdev
- elif i < beidekanten: #linkerkantprobleem
- movavg = np.average(temps[0:(2 * i + 1)])
- stdev = np.std(temps[0:(2 * i + 1)])
- leeg1[i] = movavg
- leeg2[i] = stdev
- i = i + 1
- np.savetxt('answer1.dat', leeg1)
- np.savetxt('answer2.dat', leeg2)
- r3000 = aantaldagen - 3000
- # debug loop
- """Ntest = 7
- testtemps = [1,2,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,2,1]
- lengte = len(testtemps)
- bktest = int((Ntest-1)/2)
- rechterkant = lengte - bktest - 1
- step = bktest - 1
- for dag in testtemps: #De moving average loop
- if i > rechterkant: #rechterkantprobleem
- print(step)
- step1 = step * 2
- movavg = np.average(testtemps[(i - step):(lengte)])
- stdev = np.std(testtemps[(1):(lengte - 1)])
- leeg1[i] = movavg
- leeg2[i] = stdev
- step = step - 1
- elif i >= bktest:
- movavg = np.average(testtemps[(i-bktest):(i+bktest+1)])
- stdev = np.std(testtemps[(i-bktest):(i+bktest+1)])
- leeg1[i] = movavg
- leeg2[i] = stdev
- elif i < bktest: #linkerkantprobleem
- movavg = np.average(testtemps[0:(2 * i + 1)])
- stdev = np.std(testtemps[0:(2 * i + 1)])
- leeg1[i] = movavg
- leeg2[i] = stdev
- i = i + 1
- N = 365
- beidekanten = int((N-1)/2)
- """
- # plot 1
- plt.subplot(2,1,1)
- plt.xlabel('Dag')
- plt.ylabel('Temperatuur (celcius)')
- plt.plot(days, temps, label='Temperatuur', alpha=.2) #temp
- plt.plot(days, leeg1, 'g',label='Moving average Temperatuur') #movavg
- plt.fill_between(days, leeg1 + leeg2, leeg1 - leeg2, label='Standaarddeviatie', alpha=.2, color='red')
- plt.grid(True)
- plt.xlim(1, aantaldagen)
- plt.plot(tmindex, tmin, 'bo', label='koudste dag')
- plt.plot(tmaxdex, tmax, 'ro', label='warmste dag')
- plt.legend()
- plt.title('Temperatuur 1901-2018')
- plt.subplot(2,2,3) #subplot 2
- plt.xlim(r3000, aantaldagen)
- plt.plot(days, temps, label='Temperatuur', alpha=.2) #temp
- plt.plot(days, leeg1, 'g',label='Moving average Temperatuur') #movavg
- plt.fill_between(days, leeg1 + leeg2, leeg1 - leeg2, label='Standaarddeviatie', alpha=.2, color='red')
- plt.grid(True)
- plt.title('Temperatuur laatste 3000 dagen')
- plt.subplot(2,2,4)
- plt.plot(days, leeg1, 'g',label='Moving average Temperatuur')
- plt.xlim(1, aantaldagen)
- plt.grid(True)
- plt.title('Moving average 1901-2018')
- plt.savefig('answer1.png')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement