Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Sep 21 16:56:52 2018
  4.  
  5. @author: Ranged
  6. """
  7. import numpy as np
  8. import matplotlib.pyplot as plt
  9. import pandas as pd
  10.  
  11. plt.close('all')
  12. pandatafel = pd.read_table('KNMI_20180828.txt', comment='#', delimiter=',', header = None).values
  13. #temps = pd.DataFrame(data=pandatafel[:, [2]]) / 10
  14. temps = pandatafel[:, 2] / 10 #180 > 18.0
  15. datums = pandatafel[:, 1] #geef een niewe array met de datums
  16.  
  17. aantaldagen = len(temps)
  18. days = np.linspace(1, aantaldagen, aantaldagen) #Omdat plot() een list wil hebben...
  19.  
  20. tmin = np.amin(temps)
  21. tmax = np.amax(temps)
  22. tmindex = np.where(temps==tmin) #index van koudste dag
  23. tmaxdex = np.where(temps==tmax) #index van warmste dag
  24.  
  25. datumkoud = np.array2string(datums[tmindex]) #vind koudste en warmste datum
  26. datumkoud = datumkoud.replace("[", "")
  27. datumkoud = datumkoud.replace("]", "")
  28. datumwarm = np.array2string(datums[tmaxdex])
  29. datumwarm = datumwarm.replace("[", "")
  30. datumwarm = datumwarm.replace("]", "")
  31.  
  32.  
  33. print("De laagste temperatuur is {} op datum {}. De hoogste temperatuur is {} op datum {}.".format(tmin, datumkoud, tmax, datumwarm))
  34.  
  35.  
  36. N = 365 #len voortschr. gem.
  37. beidekanten = int((N-1)/2)
  38. leeg1 = np.zeros(aantaldagen)
  39. leeg2 = np.zeros(aantaldagen)
  40. i = 0
  41. rightside = aantaldagen - beidekanten - 1
  42. stap = beidekanten - 1
  43.  
  44. for dag in temps: # moving average loop
  45. if i > rightside: #rechterkantprobleem
  46. movavg = np.average(temps[(i - stap):(aantaldagen)])
  47. stdev = np.std(temps[(i - stap):(aantaldagen)])
  48. leeg1[i] = movavg
  49. leeg2[i] = stdev
  50. stap = stap - 1
  51. elif i >= beidekanten:
  52. movavg = np.average(temps[(i-beidekanten):(i+beidekanten+1)])
  53. stdev = np.std(temps[(i-beidekanten):(i+beidekanten+1)])
  54. leeg1[i] = movavg
  55. leeg2[i] = stdev
  56. elif i < beidekanten: #linkerkantprobleem
  57. movavg = np.average(temps[0:(2 * i + 1)])
  58. stdev = np.std(temps[0:(2 * i + 1)])
  59. leeg1[i] = movavg
  60. leeg2[i] = stdev
  61. i = i + 1
  62.  
  63. np.savetxt('answer1.dat', leeg1)
  64. np.savetxt('answer2.dat', leeg2)
  65. r3000 = aantaldagen - 3000
  66.  
  67. # debug loop
  68. """Ntest = 7
  69. testtemps = [1,2,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,2,1]
  70. lengte = len(testtemps)
  71. bktest = int((Ntest-1)/2)
  72. rechterkant = lengte - bktest - 1
  73. step = bktest - 1
  74.  
  75. for dag in testtemps: #De moving average loop
  76. if i > rechterkant: #rechterkantprobleem
  77. print(step)
  78. step1 = step * 2
  79. movavg = np.average(testtemps[(i - step):(lengte)])
  80. stdev = np.std(testtemps[(1):(lengte - 1)])
  81. leeg1[i] = movavg
  82. leeg2[i] = stdev
  83. step = step - 1
  84. elif i >= bktest:
  85. movavg = np.average(testtemps[(i-bktest):(i+bktest+1)])
  86. stdev = np.std(testtemps[(i-bktest):(i+bktest+1)])
  87. leeg1[i] = movavg
  88. leeg2[i] = stdev
  89. elif i < bktest: #linkerkantprobleem
  90. movavg = np.average(testtemps[0:(2 * i + 1)])
  91. stdev = np.std(testtemps[0:(2 * i + 1)])
  92. leeg1[i] = movavg
  93. leeg2[i] = stdev
  94. i = i + 1
  95. N = 365
  96. beidekanten = int((N-1)/2)
  97. """
  98.  
  99. # plot 1
  100. plt.subplot(2,1,1)
  101. plt.xlabel('Dag')
  102. plt.ylabel('Temperatuur (celcius)')
  103. plt.plot(days, temps, label='Temperatuur', alpha=.2) #temp
  104. plt.plot(days, leeg1, 'g',label='Moving average Temperatuur') #movavg
  105. plt.fill_between(days, leeg1 + leeg2, leeg1 - leeg2, label='Standaarddeviatie', alpha=.2, color='red')
  106. plt.grid(True)
  107. plt.xlim(1, aantaldagen)
  108. plt.plot(tmindex, tmin, 'bo', label='koudste dag')
  109. plt.plot(tmaxdex, tmax, 'ro', label='warmste dag')
  110. plt.legend()
  111. plt.title('Temperatuur 1901-2018')
  112.  
  113. plt.subplot(2,2,3) #subplot 2
  114. plt.xlim(r3000, aantaldagen)
  115. plt.plot(days, temps, label='Temperatuur', alpha=.2) #temp
  116. plt.plot(days, leeg1, 'g',label='Moving average Temperatuur') #movavg
  117. plt.fill_between(days, leeg1 + leeg2, leeg1 - leeg2, label='Standaarddeviatie', alpha=.2, color='red')
  118. plt.grid(True)
  119. plt.title('Temperatuur laatste 3000 dagen')
  120.  
  121. plt.subplot(2,2,4)
  122. plt.plot(days, leeg1, 'g',label='Moving average Temperatuur')
  123. plt.xlim(1, aantaldagen)
  124. plt.grid(True)
  125. plt.title('Moving average 1901-2018')
  126.  
  127. plt.savefig('answer1.png')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement