#!/usr/bin/env python # coding: utf-8 # In[1]: import matplotlib.pyplot as plt import pandas as pd import seaborn as sns import datetime import math #lees bestand in (zet download uit app.weathercloud.net klaar in onderstaande map) print("GEEF DE BESTANDSNAAM INCL HET PAD, bijvoorbeeld: '/weer/maandoverzicht/2023/04/Weathercloud P41_Ermelo 2023-04.csv' \n") print("zonder de aanhalingstekens invoeren, vanaf /weer/....") file = input('Hoe heet het bestand (csv-formaat)? ') print("De naam van het bestand is: ", file) # In[2]: #index o.b.v. datum-string, delimiter is ; en decimaal moet punt zijn df = pd.read_csv(file, delimiter=';', on_bad_lines='skip', header=0, parse_dates=True, infer_datetime_format=True, dayfirst=True, encoding='utf-16-le', decimal=',', thousands='.') df # In[3]: df.rename({'Datum (Europe/Amsterdam)': 'datum', 'Temperatuur binnen (°C)': 'tempin', 'Temperatuur (°C)':'tempuit','Wind chill (°C)':'chill','Dauwpunt binnen (°C)':'dauwin', 'Dauwpunt (°C)':'dauwuit','Hitte index binnen (°C)':'Hitte index (°C)','Heat (°C)':'warmteuit','Vochtgehalte binnen (%)':'vochtin', 'Rel. vochtigheid (%)':'vochtuit', 'Windvlaag (km/h)':'windvlaag', 'Gemiddelde windsnelheid (km/h)': 'windgem', 'Gemiddelde windrichting (°)':'windrichting', 'Atmosferische druk (hPa)': 'druk', 'Regen (mm)':'regen24u', 'Et (mm)':'et', 'Mate van regen (mm/h)':'regenval', 'Zon-instraling (W/m²)':'zon', 'UV index':'uvi', 'Unnamed: 19':'ntb'}, axis=1, inplace=True) df # In[4]: df['dag'] = pd.DatetimeIndex(df['datum']).day print("TOON GELEZEN DATAFRAME") print(df.head()) print(df.tail()) # In[5]: #maak nieuwe variabele (kolom) aan voor delta_temp en delta df['delta_temp'] = df['tempuit'] - df['dauwuit'] df['delta'] = (df['delta_temp'] / df['vochtuit']).round(decimals=3) #maak een selectie van de gezochte variabelen df = df.loc[:,['datum', 'dag', 'tempin','tempuit', 'chill', 'dauwuit', 'vochtin', 'vochtuit', 'windvlaag', 'windgem', 'windrichting', 'druk', 'regen24u', 'regenval', 'delta']] df.set_index('datum',inplace=True) #maak de kolom datum tot index en vervang deze in het dataframe df.fillna(method='ffill', inplace=True) # vul lege cellen in met de voorgaande waarde df['het_regent'] = (df['regen24u'] > 0) # bepaal de windkracht in beaufort def beaufort(w): if w > 117: b = 12 elif w > 102 and w <= 117: b = 11 elif w > 88 and w <= 102: b = 10 elif w > 74 and w <= 88: b = 9 elif w > 61 and w <= 74: b = 8 elif w > 49 and w <= 61: b = 7 elif w > 38 and w <= 49: b = 6 elif w > 28 and w <= 38: b = 5 elif w > 19 and w <= 28: b = 4 elif w > 11 and w <= 19: b = 3 elif w > 5 and w <= 11: b = 2 elif w > 1 and w <= 5: b = 1 else: b = 0 return b #voeg windkolommen toe df['vlaag_bft'] = df['windvlaag'].apply(beaufort) df['windgem_bft'] = df['windgem'].apply(beaufort) print("TOON DATATFRAME MET EXTRA WINDKOLOMMEN") df # In[6]: #haal de datum als index eruit en maak er een aparte kolom van df.reset_index(inplace=True) df = df.rename(columns = {'index':'datum'}) print("TOON DATATFRAME ZONDER INDEX") print(df) # In[7]: #functie om de data string te schonen def schoning(utc): if utc != "": utc = str(utc) utc = utc.replace("+00:00","") utc = utc.replace("+0100","") utc = utc.replace("+0200","") utc = utc.replace(":00 ",":00") return utc #reeks met de nieuwe geschoonde data s = [] #haal data string op, cel voor cel, uit kolom 'datum' en zet geschoonde datum in reeks s for i in df['datum']: i = schoning(i) s.append(i) #maak een nieuwe Series aan met de nieuwe datums datum_nieuw_weer = pd.Series(s, name='datum_nieuw_weer', dtype='object') print("TOON NIEUWE DATUMKOLOM WEER") print(datum_nieuw_weer) # In[8]: #voeg de kolom datum_nieuw_weer toe aan het dataframe weer = pd.concat([df, datum_nieuw_weer], axis=1) print("GEEF INDRUK VAN WEER DATAFRAME") print(weer) #zet het formaat om in jaar-maand-dag formaat weer.datum_nieuw_weer = pd.to_datetime(weer.datum_nieuw_weer, format="%Y-%m-%d") print("TOON NIEUWE DATUMKOLOM WEER MET GESCHOONDE DATUMFORMAAT") print(weer.datum_nieuw_weer) #zet het formaat om in datetime int64 formaat weer["datum_nieuw_weer"] = weer["datum_nieuw_weer"].astype('datetime64[ns]') print("GEEF INDRUK VAN WEER DATAFRAME") print(weer) # In[10]: #lees bestand in (zet download VOOR DE BETREFFENDE MAAND via aenlighten enphase klaar in onderstaande map) print("GEEF DE BESTANDSNAAM INCL HET PAD, bijvoorbeeld: '/weer/maandoverzicht/2023/08/168660_site_energy_production_report.csv' \n") file = input('Hoe heet het bestand (csv-formaat)? ') dfzon = pd.read_csv(file, header=0, parse_dates=False, infer_datetime_format=True, dayfirst=True, decimal=',') print("GEEF INDRUK VAN ZON DATAFRAME") dfzon # In[11]: #index o.b.v. datum-string, delimiter is ; en decimaal moet punt zijn dfzon.rename({'Datum/tijd': 'datum', 'Geproduceerde energie (kWh)': 'energie'}, axis=1, inplace=True) dfzon = dfzon.iloc[:-1,:] print("GEEF INDRUK VAN ZON DATAFRAME met nette kolomnamen") print(dfzon.head()) print(dfzon.tail()) # In[12]: #functie om het datum format op te schonen def converteren(i): i = str(i) i = i.replace("/","-") print(i) return i #reeks met de nieuwe geschoonde data d = [] #haal data string op, cel voor cel, uit kolom 'datum' en zet geschoonde datum in reeks s for j in dfzon['datum']: j = converteren(j) d.append(j) print(d) # In[13]: #Zet de lijst om in een PD series datum_conv_zon = pd.Series(d, name='datum_conv_zon', dtype='object') print("TOON OPGESCHOONDE DATUMKOLOM ZON") print(datum_conv_zon) # In[14]: #Voeg Series toe aan dataframe dfzonnieuw dfzonnieuw = pd.concat([dfzon, datum_conv_zon], axis=1) print("het nieuwe zon dataframe met geconverteerde datum") print(dfzonnieuw) print(datum_conv_zon) # In[15]: #zet het formaat om in jaar-maand-dag formaat dfzonnieuw.datum_conv_zon = pd.to_datetime(dfzonnieuw.datum_conv_zon, infer_datetime_format=False, format="%d-%m-%Y") print(dfzonnieuw) # In[16]: #converteer het format naar een geschikt herkenbaar dataformat en zet dit in de tabel timestamp dfzonnieuw['timestamp'] = '' y = 0 for ui in dfzonnieuw.datum: e = datetime.datetime.strptime(ui, "%d/%m/%Y") dfzonnieuw.timestamp[y] = e y = y + 1 print(dfzonnieuw) # In[17]: #maak een nieuwe kolom aan tp_value aan en plak hierin de timestamp_waarde dfzonnieuw['tp_value'] = '' print(dfzonnieuw) v = 0 for a in dfzonnieuw.timestamp: native = a.timestamp() print (native) dfzonnieuw.tp_value[v] = native v = v + 1 print(dfzonnieuw) # In[18]: #maak een nieuwe kolom met tp_value in de weer dataframe weer['tp_value'] = '' print(weer) #plak in de kolom tp_value de timestamp_waarde w = 0 for wtp in weer.datum_nieuw_weer: a = pd.to_datetime(wtp) nativeweer = int(float(a.timestamp())) weer.tp_value[v] = nativeweer v = v + 1 print(weer) #weer.tp_value = weer.tp_value.astype(int) print(weer.dtypes) # In[19]: #bepaal de gelijke datumvelden in beide dataframes weer en zon #zodat energie waarde uit df zon kan worden gematcht met #de datum uit df weer #maak een lijst van de corresponderende datumvelden: dit zijn de indexen #om de energie waarde op de juiste plek uit df zon te halen en naar df weer te verplaatsen check = [] for m in dfzonnieuw.tp_value: for l in weer.tp_value: m = int(m) if m == l: check.append(m) print("overeenkomst op ", m) #print('geen gelijkenis gevonden, volgende element in zon') print(check) # In[20]: #haal de energie waarde uit df zon op #plaats deze waarde in de kolom 'energie' van df weer for elem in check: a = dfzonnieuw.index[dfzonnieuw.tp_value == elem] index_zon = a[0] e = dfzonnieuw["energie"][index_zon] b = weer.index[weer.tp_value == elem] index_data = b[0] weer.loc[index_data,['energie']] = e print(weer["energie"]) print("controleren of de energie voor de eerste dag in de juiste kolom is geplaatst") print(weer.loc[0:30,["tp_value","energie"]]) print("controleer nogmaals op een andere plek in het dataframe") print(weer.loc[320:340,['tp_value',"energie"]]) # In[21]: #hernoem dataframe df = weer df # In[22]: # vul lege cellen in met de voorgaande waarde (dit gebeurt wanneer) # router is uitgevallen of batterij leeg is van weerstation: dan kunnen bepaalde dagen niet gematcht worden # waardoor de energie-data ontbreken df.fillna(method='ffill', inplace=True) df['energie'] = df['energie'].fillna(0) df['energie'] = df['energie'].astype(float) print(df.loc[320:360,['tp_value',"energie"]]) print("controleer de maximumwaarde voor de energie in de maand") print(df.max()) print(df.dtypes) # In[23]: #maak kolommen aan voor jaar en maand om te kunnen groeperen df['jaar'] = pd.DatetimeIndex(df['datum_nieuw_weer']).year df['maand'] = pd.DatetimeIndex(df['datum_nieuw_weer']).month df['dag'] = pd.DatetimeIndex(df['datum_nieuw_weer']).day print(df) # In[24]: #schrijf het dataframe weg in onderstaande map print("SLA HET DATAFRAME OP INCL HET PAD, bijvoorbeeld: '/weer/maandoverzicht/2023/07/df_maandoverzicht_2023_07.csv' \n") df_file = input('Onder welke naam sla je het dataframe op (csv-formaat)? ') df.to_csv(df_file, sep=';', decimal=',', float_format='%g') print(df.head()) # In[25]: #STATISTIEK print("STATISTIEK VAN DE DATA", sep='\n') print("SOM", df.sum(), sep='\n') print("GEMIDDELDE", df.mean(), sep='\n') print("MEDIAAN", df.median(), sep='\n') print("MODUS", df.mode(), sep='\n') print("STANDAARDDEVIATIE", df.std(), sep='\n') print("MINIMUM", df.min(), sep='\n') print("MAXIMUM", df.max(), sep='\n') # In[26]: #bouw reeks voor maximum waarden #LET OP: index nummers begint voor GEMIDDELDE EN STANDAARDDEVIATIE één index eerder #dag verkrijgen van de max waarde, kan via df.tempuit.idxmax() of nog beter via argmax of argmin etc. max_reeks = [] maximum = list(df.max()) max_reeks.append(maximum[3]) max_reeks.append(maximum[5]) max_reeks.append(maximum[7]) max_reeks.append(maximum[8]) max_reeks.append(maximum[9]) max_reeks.append(maximum[11]) max_reeks.append(maximum[12]) max_reeks.append(maximum[16]) max_reeks.append(maximum[17]) max_reeks.append(maximum[19]) maxima = pd.Series(max_reeks, index=['tempuit', 'dauwuit', 'vochtuit', 'windvlaag', 'windgem', 'druk', 'regen24u', 'vlaag_bft', 'windgem_bft', 'energie'], name='Maxima') print(maxima) #maxima.to_csv('D:/SynologyDrive/OneDrive/Bart_Actueel/Interesse/Python/weer/maand/maxima.csv') #bouw reeks voor minimum waarden min_reeks = [] minimum = list(df.min()) min_reeks.append(minimum[3]) min_reeks.append(minimum[5]) min_reeks.append(minimum[7]) min_reeks.append(minimum[8]) min_reeks.append(minimum[9]) min_reeks.append(minimum[11]) min_reeks.append(minimum[12]) min_reeks.append(minimum[16]) min_reeks.append(minimum[17]) min_reeks.append(minimum[19]) minima = pd.Series(min_reeks, index=['tempuit', 'dauwuit', 'vochtuit', 'windvlaag', 'windgem', 'druk', 'regen24u', 'vlaag_bft', 'windgem_bft', 'energie'], name='Minima') print(minima) #minima.to_csv('D:/SynologyDrive/OneDrive/Bart_Actueel/Interesse/Python/weer/maand/minima.csv') #bouw reeks voor gemiddelde waarden gem_reeks = [] gemiddelde = list(df.mean().round(decimals=1)) gem_reeks.append(gemiddelde[2]) gem_reeks.append(gemiddelde[4]) gem_reeks.append(gemiddelde[6]) gem_reeks.append(gemiddelde[7]) gem_reeks.append(gemiddelde[8]) gem_reeks.append(gemiddelde[10]) gem_reeks.append(gemiddelde[11]) gem_reeks.append(gemiddelde[15]) gem_reeks.append(gemiddelde[16]) gem_reeks.append(gemiddelde[17]) gemiddelden = pd.Series(gem_reeks, index=['tempuit', 'dauwuit', 'vochtuit', 'windvlaag', 'windgem', 'druk', 'regen24u', 'vlaag_bft', 'windgem_bft', 'energie'], name='Gemiddelden') print(gemiddelden) #gemiddelden.to_csv('D:/SynologyDrive/OneDrive/Bart_Actueel/Interesse/Python/weer/maand/gemiddelden.csv') #bouw reeks voor standaarddeviatie waarden std_reeks = [] std = list(df.std()) std_reeks.append(std[2]) std_reeks.append(std[4]) std_reeks.append(std[6]) std_reeks.append(std[7]) std_reeks.append(std[8]) std_reeks.append(std[10]) std_reeks.append(std[11]) std_reeks.append(std[15]) std_reeks.append(std[16]) std_reeks.append(std[18]) standaarddeviaties = pd.Series(std_reeks, index=['tempuit', 'dauwuit', 'vochtuit', 'windvlaag', 'windgem', 'druk', 'regen24u', 'vlaag_bft', 'windgem_bft', 'energie'], name='Standaarddeviaties') print(standaarddeviaties) #std.to_csv('D:/SynologyDrive/OneDrive/Bart_Actueel/Interesse/Python/weer/maand/std.csv') # In[27]: #COMBINEER PD SERIES IN PD DATAFRAME #converteer pd series in pd dataframe df_maxima = pd.DataFrame(maxima) df_minima = pd.DataFrame(minima) df_gemiddelden = pd.DataFrame(gemiddelden) df_std = pd.DataFrame(standaarddeviaties) df_statistiek = pd.concat([df_maxima, df_minima, df_gemiddelden, df_std], axis=1) df_statistiek.columns = ['max', 'min', 'gem', 'std'] # toon het dataframe print("Eigenschappen van dataframe") print(df_statistiek) print(df_statistiek.shape) print(df_statistiek.columns) print(df_statistiek.dtypes) print(type(df_statistiek)) print("SLA DE STATISTIEKEN VAN HET DATAFRAME OP inclusief het pad (bijvoorbeeld: '/weer/maandoverzicht/2023/07/df_statistiek_2023_07.csv'") df_stat = input('Onder welke naam sla je de statistiek op (csv-formaat)? ') df_statistiek.to_csv(df_stat, sep=';', decimal=',', float_format='%g') # In[28]: #GRAFIEKEN #temperatuurverloop / lijndiagram plt.figure(figsize=(12,10)) plt.title("temperatuurverloop") sns.set_style("whitegrid") ax = sns.lineplot(data=df, y='tempuit', x='datum', color="red", linewidth=0.5) ax.xaxis.set_major_locator(plt.MaxNLocator(48)) ax.tick_params(axis = 'x', labelsize = 6) plt.xticks(rotation=90) plt.ylabel("Temperatuur (°C)") plt.xlabel(None) plt.savefig('/weer/plaatjes/figuur 1 temperatuur.png', dpi=400) #plt.show() plt.clf() #temperatuur / dichtheidsdiagram plt.title("heersende temperaturen") sns.kdeplot(data=df['tempuit'], fill=True) plt.xlabel("Temperatuur(°C)") plt.ylabel("Dichtheid") plt.savefig('/weer/plaatjes/figuur 2 heersende_temperaturen.png', dpi=400) #plt.show() plt.clf() #neerslag / lijndiagram plt.title("neerslag gedurende de maand") sns.lineplot(data=df, y="regen24u", x="dag", color="blue", linewidth=1) plt.xlabel("Dag") plt.ylabel("Neerslag (mm)") plt.savefig('/weer/plaatjes/figuur 3 neerslag.png', dpi=400) #plt.show() plt.clf() #windsnelheid / lijndiagram plt.figure(figsize=(12,8)) plt.title("windsnelheid gedurende de maand") sns.set_style("whitegrid") ax = sns.lineplot(data=df, y='windgem', x='datum', color="green", linewidth=0.2) ax.xaxis.set_major_locator(plt.MaxNLocator(48)) ax.tick_params(axis = 'x', labelsize = 6) plt.xticks(rotation=90) plt.xlabel(None) plt.ylabel("Wind (km/h)") plt.savefig('/weer/plaatjes/figuur 6 windsnelheid.png', dpi=400) #plt.show() plt.clf() #windrichting / dichtheidsdiagram plt.title("heersende windrichtingen") sns.kdeplot(data=df['windrichting'], fill=True) plt.xlabel("Windrichting(°)") plt.ylabel("Dichtheid") plt.savefig('/weer/plaatjes/figuur 7 windrichting.png', dpi=400) #plt.show() plt.clf() #luchtvochtigheid / lijndiagram plt.title("luchtvochtigheid gedurende de maand") sns.lineplot(data=df, y="vochtuit", x='dag', color="blue", linewidth=0.5) plt.xlabel("Dag") plt.ylabel("Luchtvochtigheid (%)") plt.savefig('/weer/plaatjes/figuur 4 luchtvochtigheid.png', dpi=400) #plt.show() plt.clf() #druk / lijndiagram plt.title("luchtdruk gedurende de maand") sns.lineplot(data=df, y="druk", x='dag', color='yellow') plt.xlabel("Dag") plt.ylabel("Luchtdruk (hPa)") plt.savefig('/weer/plaatjes/figuur 5 luchtdruk.png', dpi=400) #plt.show() plt.clf() #cirkeldiagram windrichting / windsnelheid ax = plt.subplot(111, polar=True) ax.scatter(x=[math.radians(x) for x in df['windrichting'].values], y=df['windgem'].values) ax.set_theta_zero_location('N') ax.set_theta_direction(-1) ax.set_title("Windrichting (N=0°, Z=180°) en windsnelheid(km/h)") #plt.show() fig = ax.get_figure() fig.savefig('/weer/plaatjes/figuur 8 windrichting_windsnelheid.png') plt.clf() #regressieplot met regressie plt.title("temperatuur versus luchtvochtigheid") sns.regplot(x=df['vochtuit'], y=df['tempuit'], scatter_kws = {'color': 'b', 'alpha':0.3}, line_kws = {'color': 'r', 'alpha':0.3, 'lw':3}, ci = None) plt.ylabel("Temperatuur (°C)") plt.xlabel("Luchtvochtigheid (%)") plt.savefig('/weer/plaatjes/figuur 10 temp_vs_vocht.png', dpi=400) #plt.show() plt.clf() #temperatuur versus windrichting, scatterplot met regressie plt.title("temperatuur versus windrichting") sns.scatterplot(x=df['tempuit'], y=df['windrichting'], hue=df['regen24u']) plt.xlabel("Temperatuur (°C)") plt.ylabel("Windrichting (O=90°,Z=180°,W=270°,N=360°") plt.savefig('/weer/plaatjes/figuur 9 temp_vs_windrichting.png', dpi=400) #plt.show() plt.clf() #druk versus luchtdruk/ jointplotdiagram, jointplot regressie #plt.title("temperatuur versus luchtdruk") #plt.xlabel("Temperatuur (°C)") #plt.ylabel("Luchtdruk") #sns.jointplot(data=df, x="tempuit", y="druk", kind="reg", color='blue') #plt.savefig('/weer/plaatjes/temp_vs_druk_reg.png', dpi=400) #plt.show() #plt.clf() #temperatuur versus druk, jointplot kde plt.title("Temperatuur versus luchtdruk") h = sns.jointplot(data=df, x="tempuit", y="druk", kind="kde", color='blue', hue="het_regent") h.set_axis_labels('Temperatuur (°C)', 'Luchtdruk') plt.savefig('/weer/plaatjes/figuur 12 temp_vs_druk_vs_hetregent_kde.png', dpi=400) #plt.show() plt.clf() #temperatuur versus druk, jointplot hexagonaal plt.title("Temperatuur (°C) versus luchtdruk (hPa)") g = sns.jointplot(data=df, x="tempuit", y="druk", kind="hex", color='blue') g.set_axis_labels('temperatuur', 'luchtdruk') plt.savefig('/weer/plaatjes/figuur 11 temp_vs_druk_vs_hex.png', dpi=400) #plt.show() plt.clf() #geef de correlatiecoëfficiënte weer tussen de dataframe variabelen plt.title("correlatie tussen luchtdruk en temperatuur", fontsize = 7) corrMatrix = df.corr() print(corrMatrix) sns.set(font_scale=0.8) res = sns.heatmap(corrMatrix, annot=True, fmt='.1g', cmap= 'coolwarm', linewidths=3, linecolor='black', cbar=False, square=True) res.set_yticklabels(res.get_ymajorticklabels(), fontsize = 7) res.set_xticklabels(res.get_ymajorticklabels(), fontsize = 7) plt.title('Correlatiecoëfficiënten') plt.savefig('/weer/plaatjes/figuur 13 heatmap_correlatie.png') #plt.show() plt.clf() #correlatie- en determinatiecoëfficiënt tussen temperatuur en luchtvochtigheid correlatie = df["tempuit"].corr(df["vochtuit"]) print('CORRELATIEMATRIX') print('correlatiecoëfficiënt temperatuur en luchtvochtigheid: \n', correlatie) print('determinatiecoëfficiënt R2 temperatuur en luchtvochtigheid: \n', correlatie**2) #correlatie- en determinatiecoëfficiënt tussen temperatuur en luchtdruk correlatie = df["tempuit"].corr(df["druk"]) print('correlatiecoëfficiënt temperatuur en luchtdruk: \n', correlatie) print('determinatiecoëfficiënt R2 temperatuur en luchtdruk: \n', correlatie**2) #correlatie- en determinatiecoëfficiënt tussen temperatuur en windrichting correlatie = df["tempuit"].corr(df["windrichting"]) print('correlatiecoëfficiënt temperatuur en windrichting: \n', correlatie) print('determinatiecoëfficiënt R2 temperatuur en windrichting: \n', correlatie**2) #correlatie- en determinatiecoëfficiënt tussen temperatuur en windsnelheid correlatie = df["tempuit"].corr(df["windgem"]) print('correlatiecoëfficiënt temperatuur en windsnelheid: \n', correlatie) print('determinatiecoëfficiënt R2 temperatuur en windsnelheid: \n', correlatie**2) # Maandsom neerslag neerslag = df.groupby(['dag'])['tempuit', 'regen24u'].max() print('Dagoverzicht temperatuur en neerslag: \n', neerslag) print('De neerslagsom over de maand bedraagt: \n', neerslag['regen24u'].sum(), " mm") # In[29]: # GRAFIEKEN MET ENERGIE #T.b.v. de grafieken: beperk de kolommen voor x, y en z-assen. zonenergie = df.groupby(['jaar', 'maand', 'dag'])['tempuit', 'energie', 'druk', 'regen24u'].max() print(zonenergie) print("") print("De maandsom van de neerslag bedraagt", zonenergie['regen24u'].sum(), " mm.") print("sla het verkorte zonenergie csv bestand op, bijvoorbeeld:") print("'/weer/maandoverzicht/2023/06/zonenergie.csv' \n") naam = input('Hoe heet het bestand (csv-formaat)? ') zonenergie.to_csv(naam, sep=';', decimal=',', float_format='%g') # energieverloop / lijndiagram plt.figure(figsize=(12,10)) plt.title("opgewekte energie") sns.set_style("whitegrid") ax = sns.lineplot(data=df, y='energie', x='datum', color="red", linewidth=0.5) ax.xaxis.set_major_locator(plt.MaxNLocator(48)) ax.tick_params(axis = 'x', labelsize = 6) plt.xticks(rotation=90) plt.ylabel("Opgewekte energie (Wh)") plt.xlabel(None) plt.savefig('/weer/plaatjes/figuur 14 energie.png', dpi=400) #plt.show() plt.clf() #sns.lineplot(data=zonenergie, y='energie', x='dag', color="red", linewidth=1) #plt.title("opgewekte zonne-energie gedurende de maand") #plt.xlabel("Dag") #plt.ylabel("Energie (Wh)") #plt.savefig('/weer/plaatjes/energie_verloop.png', dpi=400) #plt.show() #plt.clf() #sns.lineplot(data=zonenergie, y='energie', x='dag', color="red", linewidth=1) #plt.title("opgewekte zonne-energie gedurende de maand") #plt.xlabel("Dag") #plt.ylabel("Energie (Wh)") #plt.savefig('/weer/plaatjes/energie_verloop.png', dpi=400) #plt.show() #plt.clf() g = sns.jointplot(data=zonenergie, x="tempuit", y="energie", kind="reg", color='red') g.set_axis_labels('Temperatuur (°C)', 'Energie (Wh)') plt.savefig('/weer/plaatjes/figuur 16 temp_vs_energie_reg.png', dpi=400) #plt.show() plt.clf() g = sns.pairplot(zonenergie, diag_kind="kde") g.map_lower(sns.kdeplot, levels=4, color=".3") plt.savefig('/weer/plaatjes/figuur 17 pairplot.png', dpi=400) #plt.show() plt.clf() g = sns.jointplot(data=zonenergie, x="tempuit", y="energie", kind='hist', color='green') g.set_axis_labels('Temperatuur (°C)', 'Energie (Wh)') plt.savefig('/weer/plaatjes/figuur 15 temp_vs_energie_hist.png', dpi=400) #plt.show() plt.clf() #g = sns.jointplot(data=zonenergie, x="tempuit", y="energie", kind="kde", color='purple') #g.set_axis_labels('Temperatuur (°C)', 'Energie (Wh)') #plt.savefig('/weer/plaatjes/temp_vs_energie_kde.png', dpi=400) #plt.show() #plt.clf() g = sns.jointplot(data=zonenergie, x="tempuit", y="druk", hue='energie') g.set_axis_labels('Temperatuur', 'Luchtdruk') plt.savefig('/weer/plaatjes/figuur 18 temp_vs_druk_hue_energie.png', dpi=400) #plt.show() plt.clf() g = sns.jointplot(data=zonenergie, x="tempuit", y="druk", kind='hist') g.set_axis_labels('Temperatuur', 'Luchtdruk') plt.savefig('/weer/plaatjes/figuur 19 temp_vs_druk_hist.png', dpi=400) #plt.show() plt.clf()