{ "cells": [ { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import pandas as pd, numpy as np\n", "from scipy import stats\n", "import random" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "stations=pd.read_csv('data/stations.csv').set_index('ID')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Setup plot params" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from matplotlib.collections import PolyCollection\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import matplotlib as mpl\n", "import matplotlib.font_manager as font_manager\n", "path = 'KulimPark-Regular.ttf'\n", "path2 = 'Symbola.ttf'\n", "prop = font_manager.FontProperties(fname=path)\n", "prop2 = font_manager.FontProperties(fname=path2)" ] }, { "cell_type": "code", "execution_count": 269, "metadata": {}, "outputs": [], "source": [ "color_ax='#B6B6B6'\n", "color_bg='#ECACAC'\n", "color_obs_right0='#F2B880'\n", "color_obs_left0='#E7CFBC'\n", "color_pred_right0='#BB8B8B'\n", "color_pred_left0='#966B9D'\n", "color_pred_talalt0='#59c687'\n", "color_pred_nem_talalt0='#c95498'\n", "font_size=12\n", "s=40\n", "obs_talalt_glyph0='★'\n", "obs_nem_talalt_glyph0='☆'\n", "pred_talalt_glyph0='✔️'\n", "pred_nem_talalt_glyph0='✖️'\n", "title_icon_right={'Temp':'☼','Wind':'🌀','Hail':'⭕️','Snow':'☃️','Snow Depth':'⛄️','Rain':'☔️','Visib':'☀️'}\n", "title_icon_left={'Temp':'✨️','Wind':'☘','Hail':'⚪️','Snow':'⚪️','Snow Depth':'⚪️','Rain':'🌂','Visib':'⛈️'}\n", "title_icon={'Temp':'♨️','Rain':'☂️','Hail':'✴️','Snow':'❄️','Snow Depth':'⛷️','Wind':'⛵️','Cloud':'☁️','Visib':'⛅️'}" ] }, { "cell_type": "code", "execution_count": 270, "metadata": {}, "outputs": [], "source": [ "def get_data(data,th):\n", " a1=pd.DataFrame(data[data<=th])\n", " a1['g']='left'\n", " a2=pd.DataFrame(data[data>th])\n", " a2['g']='right'\n", " a3=pd.concat([a1,a2])\n", " a3['x']='x'\n", " return a1,a2,a3" ] }, { "cell_type": "code", "execution_count": 271, "metadata": {}, "outputs": [], "source": [ "def violin_plot(data,th,ax,color_left,color_right):\n", " a=0.3\n", " a1,a2,a3=get_data(data,th)\n", " a1_augment=True\n", " a2_augment=True\n", " if len(a1)==0:\n", " a1=a3.loc[[a3.index[0]]]\n", " a1['g']='left'\n", " a1[a1.columns[0]]=5\n", " if len(a2)==0:\n", " a2=a3.loc[[a3.index[0]]]\n", " a2['g']='right'\n", " a2[a2.columns[0]]=5\n", " if len(a1)>1: a1_augment=False\n", " if not a1_augment:\n", " if a1.nunique()[a1.columns[0]]==1: \n", " a1_augment=True\n", " if a1_augment:\n", " a11=a1.copy().loc[[a1.index[0]]]\n", " a11[a11.columns[0]]+=random.random()*0.1*th\n", " a11['x']='x'\n", " a12=a1.copy().loc[[a1.index[0]]]\n", " a12[a12.columns[0]]-=random.random()*0.1*th\n", " a12['x']='x'\n", " a3=pd.concat([a3,a11,a12])\n", " if len(a2)>1: a2_augment=False\n", " if not a2_augment:\n", " if a2.nunique()[a2.columns[0]]==1: \n", " a2_augment=True\n", " if a2_augment:\n", " a21=a2.copy().loc[[a2.index[0]]]\n", " a21[a21.columns[0]]+=random.random()*0.1*th\n", " a21['x']='x'\n", " a22=a2.copy().loc[[a2.index[0]]]\n", " a22[a22.columns[0]]-=random.random()*0.1*th\n", " a22['x']='x'\n", " a3=pd.concat([a3,a21,a22])\n", " a3=a3.sort_values('g')\n", " ax.axvline(0,color=color_ax)\n", " if a3.nunique()['g']>1:\n", " sns.violinplot(y=a1.columns[0], x='x',hue='g', data=a3, split=True, ax=ax,\n", " inner=None,linewidth=1, scale=\"count\", saturation=1)\n", "\n", " ax.get_children()[0].set_color(mpl.colors.colorConverter.to_rgba(color_left, alpha=a))\n", " ax.get_children()[0].set_edgecolor(color_left)\n", " ax.get_children()[1].set_color(mpl.colors.colorConverter.to_rgba(color_right, alpha=a))\n", " ax.get_children()[1].set_edgecolor(color_right)\n", " ax.legend().remove()\n", " else:\n", " if len(a1)>0: \n", " w=a1\n", " c=color_left\n", " else: \n", " w=a2\n", " c=color_right\n", " sns.violinplot(y=w.columns[0], data=w, ax=ax, \n", " inner=None,linewidth=1, scale=\"count\", saturation=1)\n", " ax.set_xlim([-1,0])\n", " ax.get_children()[0].set_color(mpl.colors.colorConverter.to_rgba(c, alpha=a))\n", " ax.get_children()[0].set_edgecolor(c)" ] }, { "cell_type": "code", "execution_count": 272, "metadata": {}, "outputs": [], "source": [ "def setup_axes():\n", " fig,axes=plt.subplots(1,3,figsize=(8,10),gridspec_kw={'width_ratios': [1, 3, 1]})\n", " axi_top= axes[2].inset_axes([0.1, 0.65, 1, 0.3])\n", " axi_top.axis('off')\n", " axi_bottom= axes[2].inset_axes([0.1, 0, 1, 0.5])\n", " axi_bottom.axis('off')\n", " axes[0].axis('off')\n", " axes[1].axis('off')\n", " axes[2].axis('off')\n", " axes[0]=axes[0].inset_axes([0, 0.15, 1, 0.85])\n", " axes[1]=axes[1].inset_axes([0, 0.15, 1, 0.85])\n", " axes[0].axis('off')\n", " axes[1].axis('off')\n", " return fig, axes, axi_top, axi_bottom" ] }, { "cell_type": "code", "execution_count": 273, "metadata": {}, "outputs": [], "source": [ "def stem_plot(data,ax,color,s=s):\n", " data=pd.DataFrame(data)\n", " x=data.index\n", " y=data[data.columns[0]].values\n", " for i,e in enumerate(y):\n", " ax.plot([0,e],[x[i],x[i]],color=color)\n", " ax.scatter(y,x,s,color=color,zorder=10)" ] }, { "cell_type": "code", "execution_count": 274, "metadata": {}, "outputs": [], "source": [ "def stem2_plot(data,th,ax,color_left,color_right,s=s,axv_color=None):\n", " if axv_color==None:axv_color=color_right\n", " a1,a2,a3=get_data(data,th)\n", " stem_plot(a1,ax,color_left,s)\n", " stem_plot(a2,ax,color_right,s)\n", " ax.axvline(0,color=color_ax)\n", " #if th!=0:\n", " if True:\n", " ax.axvline(th,color=axv_color,ls='--',zorder=5)" ] }, { "cell_type": "code", "execution_count": 275, "metadata": {}, "outputs": [], "source": [ "def icons_plot(axes,kondicio,mennyiseg,observation_th,prediction_th):\n", " ylim=axes[0].get_ylim()\n", " xlim=axes[1].get_xlim()\n", " y_max_coord=ylim[0]+(ylim[1]-ylim[0])*1.05\n", " y_max_coord2=ylim[0]+(ylim[1]-ylim[0])*1.05 #1.04\n", " x_icon_coord_shift=(xlim[1]-xlim[0])*0.1\n", " axes[0].text(observation_th, y_max_coord, title_icon[kondicio], \n", " horizontalalignment='center', color=color_obs_right0, fontproperties=prop2, fontsize=font_size*1.5)\n", " axes[1].text(prediction_th, y_max_coord, title_icon[mennyiseg], \n", " horizontalalignment='center', color=color_ax, fontproperties=prop2, fontsize=font_size*1.5)\n", " axes[1].text(prediction_th+x_icon_coord_shift, y_max_coord2, title_icon_right[mennyiseg], \n", " horizontalalignment='center', color=color_pred_right, fontproperties=prop2, fontsize=font_size*1.5)\n", " axes[1].text(prediction_th-x_icon_coord_shift, y_max_coord2, title_icon_left[mennyiseg], \n", " horizontalalignment='center', color=color_pred_left, fontproperties=prop2, fontsize=font_size*1.5)" ] }, { "cell_type": "code", "execution_count": 276, "metadata": {}, "outputs": [], "source": [ "def talalat_plot_line(axes,n_prediction_ts_good,n_prediction_ts_bad,\n", " n_prediction_ts_good_talalt,n_prediction_ts_good_nem_talalt,\n", " observation_th,prediction_th):\n", " ylim=axes[0].get_ylim()\n", " xlim=axes[0].get_xlim()\n", " y_max_coord=ylim[0]+(ylim[1]-ylim[0])*(-0.07)\n", " x_icon_coord_shift=(xlim[1]-xlim[0])*0.1\n", " x_icon_coord_shift2=(xlim[1]-xlim[0])*0.27\n", " axes[0].text(observation_th+x_icon_coord_shift, y_max_coord, obs_talalt_glyph, \n", " horizontalalignment='center', color=color_obs_right, fontproperties=prop2)\n", " axes[0].text(observation_th-x_icon_coord_shift, y_max_coord, obs_nem_talalt_glyph, \n", " horizontalalignment='center', color=color_obs_left, fontproperties=prop2)\n", " axes[0].text(observation_th+x_icon_coord_shift2, y_max_coord, n_prediction_ts_good, \n", " horizontalalignment='center', color=color_obs_right, fontproperties=prop)\n", " axes[0].text(observation_th-x_icon_coord_shift2, y_max_coord, n_prediction_ts_bad, \n", " horizontalalignment='center', color=color_obs_left, fontproperties=prop)\n", " axes[0].text(observation_th, y_max_coord, '|', \n", " horizontalalignment='center', color=color_obs_right0, fontproperties=prop,fontsize=19)\n", "\n", " xlim=axes[1].get_xlim()\n", " x_icon_coord_shift=(xlim[1]-xlim[0])*0.04\n", " x_icon_coord_shift2=(xlim[1]-xlim[0])*0.1\n", " axes[1].text(prediction_th+x_icon_coord_shift, y_max_coord, pred_talalt_glyph, \n", " horizontalalignment='center', color=color_pred_talalt, fontproperties=prop2)\n", " axes[1].text(prediction_th-x_icon_coord_shift, y_max_coord, pred_nem_talalt_glyph, \n", " horizontalalignment='center', color=color_pred_nem_talalt, fontproperties=prop2)\n", " axes[1].text(prediction_th+x_icon_coord_shift2, y_max_coord, n_prediction_ts_good_talalt, \n", " horizontalalignment='center', color=color_pred_talalt, fontproperties=prop)\n", " axes[1].text(prediction_th-x_icon_coord_shift2, y_max_coord, n_prediction_ts_good_nem_talalt, \n", " horizontalalignment='center', color=color_pred_nem_talalt, fontproperties=prop)\n", " axes[1].text(prediction_th, y_max_coord, '|', \n", " horizontalalignment='center', color=color_pred_right, fontproperties=prop,fontsize=19)\n", " \n", " y_max_coord=ylim[0]+(ylim[1]-ylim[0])*(-0.14)\n", " axes[0].text(observation_th, y_max_coord, 'feltétel', \n", " horizontalalignment='center', color=color_obs_right0, fontproperties=prop)\n", " axes[1].text(prediction_th, y_max_coord, 'jóslat', \n", " horizontalalignment='center', color=color_pred_right, fontproperties=prop)\n", " y_max_coord=ylim[0]+(ylim[1]-ylim[0])*(-0.13)\n", " x_coord_shift=prediction_th+(prediction_th-xlim[0])*(-0.4)\n", " axes[1].annotate('', xy=(x_coord_shift, y_max_coord),xycoords='data',annotation_clip=False,\n", " xytext=(xlim[0], y_max_coord),arrowprops=dict(arrowstyle= '->',color=color_obs_right0))" ] }, { "cell_type": "code", "execution_count": 277, "metadata": {}, "outputs": [], "source": [ "def talalat_plot_violin(axes,n_prediction_ts_good,n_prediction_ts_bad,n_prediction_ts_good_talalt,n_prediction_ts_good_nem_talalt):\n", " y_icon_obs=0.65\n", " y_icon_pred=0.5\n", " if color_obs_right==color_obs_right0: x=0.72\n", " else: x=0.47\n", " axes[2].text(0.72, y_icon_obs, obs_talalt_glyph, \n", " horizontalalignment='center', color=color_obs_right, fontproperties=prop2)\n", " axes[2].text(0.9, y_icon_obs,n_prediction_ts_good, \n", " horizontalalignment='center', color=color_obs_right, fontproperties=prop)\n", " axes[2].text(0.47, y_icon_obs, obs_nem_talalt_glyph, \n", " horizontalalignment='center', color=color_obs_left, fontproperties=prop2)\n", " axes[2].text(0.29, y_icon_obs, n_prediction_ts_bad, \n", " horizontalalignment='center', color=color_obs_left, fontproperties=prop)\n", " \n", " axes[2].text(0.72, y_icon_pred, pred_talalt_glyph,\n", " horizontalalignment='center', color=color_pred_talalt, fontproperties=prop2)\n", " axes[2].text(0.9, y_icon_pred, n_prediction_ts_good_talalt, \n", " horizontalalignment='center', color=color_pred_talalt, fontproperties=prop)\n", " axes[2].text(0.47, y_icon_pred, pred_nem_talalt_glyph, \n", " horizontalalignment='center', color=color_pred_nem_talalt, fontproperties=prop2)\n", " axes[2].text(0.29, y_icon_pred, n_prediction_ts_good_nem_talalt,\n", " horizontalalignment='center', color=color_pred_nem_talalt, fontproperties=prop)\n", " \n", " axes[2].annotate('', xy=(0.59, y_icon_pred*1.04),xycoords='data',\n", " xytext=(x, y_icon_obs*0.98),arrowprops=dict(arrowstyle= '->',color=color_obs_right0))" ] }, { "cell_type": "code", "execution_count": 278, "metadata": {}, "outputs": [], "source": [ "def talalat_plot(axes,ns,observation_th,prediction_th):\n", " n_prediction_ts_good,n_prediction_ts_bad,n_prediction_ts_good_talalt,n_prediction_ts_good_nem_talalt=ns\n", " talalat_plot_line(axes,n_prediction_ts_good,n_prediction_ts_bad,\n", " n_prediction_ts_good_talalt,n_prediction_ts_good_nem_talalt,\n", " observation_th,prediction_th)\n", " talalat_plot_violin(axes,n_prediction_ts_good,n_prediction_ts_bad,\n", " n_prediction_ts_good_talalt,n_prediction_ts_good_nem_talalt)" ] }, { "cell_type": "code", "execution_count": 279, "metadata": {}, "outputs": [], "source": [ "def year_plot(data,ax,k):\n", " y=data.values\n", " x=data.index\n", " ex=max(y)-min(y)\n", " text_off=abs(ex*k)\n", " text_align='left'\n", " if y[0]<0:\n", " text_off=-text_off\n", " text_align='right'\n", " ax.text(y[0]+text_off, x[0], str(int(x[0])), \n", " horizontalalignment=text_align, verticalalignment='center', \n", " color=color_ax, fontproperties=prop)\n", " text_off=abs(text_off)\n", " text_align='left'\n", " if y[-1]<0:\n", " text_off=-text_off\n", " text_align='right'\n", " ax.text(y[-1]+text_off, x[-1], str(int(x[-1])), \n", " horizontalalignment=text_align, verticalalignment='center', \n", " color=color_ax, fontproperties=prop)" ] }, { "cell_type": "code", "execution_count": 291, "metadata": {}, "outputs": [], "source": [ "def spine_plot(datum,title,mondas,jelentes,kondicio,mennyiseg,\n", " observation_ts,observation_th,prediction_ts,prediction_th,c):\n", " \n", " #data\n", " prediction_ts_good=prediction_ts.loc[observation_ts[observation_ts>observation_th].index]\n", " prediction_ts_bad=prediction_ts.loc[observation_ts[observation_ts<=observation_th].index]\n", " n_prediction_ts_good=len(prediction_ts_good)\n", " n_prediction_ts_bad=len(prediction_ts_bad)\n", " \n", " if color_obs_right0!=color_obs_right:\n", " prediction_ts_good,prediction_ts_bad=prediction_ts_bad,prediction_ts_good\n", " prediction_ts_good_nem_talalt,prediction_ts_good_talalt,\\\n", " prediction_ts_good_joined=get_data(prediction_ts_good,prediction_th)\n", " n_prediction_ts_good_talalt=len(prediction_ts_good_talalt)\n", " n_prediction_ts_good_nem_talalt=len(prediction_ts_good_nem_talalt)\n", " ns=[n_prediction_ts_good,n_prediction_ts_bad,n_prediction_ts_good_talalt,n_prediction_ts_good_nem_talalt]\n", " \n", " #plots\n", " fig, axes, axi_top, axi_bottom=setup_axes()\n", " \n", " #stem2_plot(observation_ts,observation_th,axes[0],color_obs_left,color_obs_right,s/2,color_obs_right0)\n", " stem2_plot(prediction_ts_good,prediction_th,axes[1],color_pred_left,color_pred_right)\n", " stem_plot(prediction_ts_bad,axes[1],color_ax)\n", " \n", " #violin_plot(observation_ts,observation_th,axi_top,color_obs_left,color_obs_right)\n", " #violin_plot(prediction_ts_good,prediction_th,axi_bottom,color_pred_left,color_pred_right)\n", " \n", " #icons\n", " #icons_plot(axes,kondicio,mennyiseg,observation_th,prediction_th)\n", " \n", " #talalat\n", " #talalat_plot(axes,ns,observation_th,prediction_th)\n", " \n", " #years\n", " obs_year_index=observation_data[[obs_key,'pyear']].dropna().groupby('pyear').mean().index\n", " pred_year_index=prediction_data[[pred_key,'pyear']].dropna().groupby('pyear').mean().index\n", " pred_year_index_filt=prediction_ts.loc[pred_year_index].dropna().index\n", " obs_year_index_filt=observation_ts.loc[obs_year_index].dropna().index\n", " pred_year_index2=max(min(pred_year_index_filt),min(obs_year_index_filt))\n", " pred_year_index=range(pred_year_index2,max(pred_year_index_filt)+1)\n", " #year_plot(observation_ts.loc[obs_year_index].dropna(),axes[0],0.09)\n", " year_plot(prediction_ts.loc[pred_year_index].dropna(),axes[1],0.03)\n", " \n", " #titles\n", " len_ratio=0.15*(-1+(len(jelentes.split(',')[0])/len(jelentes.split(',')[1])))\n", " #fig.text(0.5+len_ratio,0.04,jelentes.split(',')[0]+',',color=color_obs_right0,\n", " # fontproperties=prop,fontsize=font_size*0.7,horizontalalignment='right')\n", " if color_pred_talalt==color_pred_talalt0: color_pred_side=color_pred_right\n", " else: color_pred_side=color_pred_left\n", " #fig.text(0.5+len_ratio,0.04,jelentes.split(',')[1],color=color_pred_side,\n", " # fontproperties=prop,fontsize=font_size*0.7,horizontalalignment='left')\n", " if n_prediction_ts_good_nem_talalt>=n_prediction_ts_good_talalt:\n", " color_title=color_pred_nem_talalt\n", " else: \n", " color_title=color_pred_talalt\n", " verdict=int(100*n_prediction_ts_good_talalt/(n_prediction_ts_good_talalt+n_prediction_ts_good_nem_talalt))\n", " if color_pred_talalt!=color_pred_talalt0: verdict=100-verdict\n", " return_verdict=int(verdict)\n", " verdict=str(verdict)+'%'\n", " #plt.suptitle(title,y=0.11,color=color_title,fontproperties=prop,fontsize=font_size)\n", " #fig.text(0.97,0.04,verdict, fontproperties=prop,\n", " # horizontalalignment='right', color=color_title, fontsize=font_size*2, )\n", " #fig.text(0.03,0.04, datum, fontproperties=prop,\n", " # horizontalalignment='left', color=color_obs_right0, fontsize=font_size*2, )\n", " \n", " plt.savefig(c+'/'+str(mondas)+'_banner.png',dpi=1500, facecolor='#E6E6E6')\n", " plt.show()\n", " return return_verdict" ] }, { "cell_type": "code", "execution_count": 292, "metadata": {}, "outputs": [], "source": [ "def filter_data(dz,observation_range,prediction_range):\n", " dgs=[]\n", " dhs=[]\n", " for year in range(int(dz.min()['year']),int(dz.max()['year'])):\n", " k=0\n", " from_date=pd.to_datetime(str(year)+'-'+str(observation_range[k].month)+'-'+str(observation_range[k].day))\n", " from_pred=pd.to_datetime(str(year)+'-'+str(prediction_range[k].month)+'-'+str(prediction_range[k].day))\n", " k=1\n", " to_date=pd.to_datetime(str(year)+'-'+str(observation_range[k].month)+'-'+str(observation_range[k].day))\n", " to_pred=pd.to_datetime(str(year)+'-'+str(prediction_range[k].month)+'-'+str(prediction_range[k].day))\n", " if to_pred' in sign)):\n", " if '<' in sign:\n", " positive=False\n", " elif '>' in sign:\n", " positive=True\n", " return positive" ] }, { "cell_type": "code", "execution_count": 295, "metadata": {}, "outputs": [], "source": [ "universal_normalize=['XTEMP','XVSB','XSPD']\n", "\n", "def get_ts_data(data,key,sign):\n", " ts=data.groupby('year').mean()[key]\n", " if (('-' in sign) or ('+' in sign)):\n", " th=ts.mean()\n", " else:\n", " th=float(sign[1:])\n", " if key in universal_normalize:\n", " th-=ts.mean() \n", " ts-=ts.mean()\n", " return ts,th" ] }, { "cell_type": "code", "execution_count": 296, "metadata": {}, "outputs": [], "source": [ "def get_comp_data(observation_data,obs_key,obs_sign,prediction_data,pred_key,pred_sign):\n", " ertek_sign=True\n", " irany_sign=True\n", " observation_ts=observation_data.groupby('year').mean()[obs_key]\n", " prediction_ts=prediction_data.groupby('year').mean()[pred_key]\n", " prediction_th=observation_ts.mean()\n", " observation_ts-=observation_ts.mean()\n", " observation_th=observation_ts.min()*1.01\n", " prediction_th-=prediction_ts.mean()\n", " prediction_ts-=prediction_ts.mean() \n", " if obs_sign=='A':\n", " if pred_sign=='A':\n", " observation_th=0\n", " prediction_th=0\n", " else:\n", " irany_sign=False\n", " return observation_ts,observation_th,prediction_ts,prediction_th,ertek_sign,irany_sign" ] }, { "cell_type": "code", "execution_count": 297, "metadata": {}, "outputs": [], "source": [ "mennyiseg_key={'Temp':'XTEMP','Snow Depth':'XSD','Wind':'XSPD','Rain':'YPCP','Visib':'XVSB',\n", " 'Snow':'YSNW','Hail':'YHAL'}" ] }, { "cell_type": "code", "execution_count": 298, "metadata": {}, "outputs": [], "source": [ "stations_to_include={'ro':[150040,151700,151450,152600,152470,150800,152300,150100,151200,152000],\n", " 'hu':[128820,128120,127720,128600,128390,128920,128430,128250,128220,128050,\n", " 129150,129420,129600,129700,129820,129920,129350,129100]}\n", "stations_to_include['huro']=stations_to_include['hu']+stations_to_include['ro']" ] }, { "cell_type": "code", "execution_count": 299, "metadata": {}, "outputs": [], "source": [ "def get_country(c,h='ds',plot=False):\n", " if c=='huro':\n", " hu=pd.read_csv('data/'+'hu'+'_'+h+'.csv') #daily data\n", " ro=pd.read_csv('data/'+'ro'+'_'+h+'.csv') #daily data\n", " df=pd.concat([hu,ro])\n", " else:\n", " df=pd.read_csv('data/'+c+'_'+h+'.csv') #daily data\n", " # df=pd.read_csv('data/'+c+'_hs.csv') #high_res data\n", " df=df[df['ID'].isin(stations_to_include[c])]\n", " df['time']=pd.to_datetime(df['time'])\n", " df['year']=df['time'].dt.year\n", " df['month']=df['time'].dt.month\n", " df['day']=df['time'].dt.day\n", " df['hour']=df['time'].dt.hour\n", " df=df.set_index('time')\n", " df=df.sort_index()\n", " if plot: df.groupby('year').nunique()['ID'].plot()\n", " nepi=pd.read_excel(c+'/idojaras_'+c+'.xlsx')\n", " return df,nepi" ] }, { "cell_type": "code", "execution_count": 300, "metadata": {}, "outputs": [], "source": [ "c='ro'\n", "df,nepi=get_country(c)\n", "dz=df.groupby(['time']).mean()" ] }, { "cell_type": "code", "execution_count": 301, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ts 14\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:42: FutureWarning: \n", "Passing list-likes to .loc or [] with any missing label will raise\n", "KeyError in the future, you can use .reindex() as an alternative.\n", "\n", "See the documentation here:\n", "https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike\n" ] }, { "data": { "image/png": "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8ICCCgCABxRUAAA8oKACAOABBRUAAA8oqAAAeEBBBQDAAwoqAAAeUFABAPCAggoAgAcUVAAAPKCgAgDgAQUVAAAPKKgAAHhAQQUAwAMKKgAAHlBQAQDwgIIKAIAHFFQAADygoAIA4AEFFQAADyioAAB4QEEFAMADCioAAB5QUAEA8ICCCgCABxRUAAA8oKACAOABBRUAAA8oqAAAeEBBBQDAAwoqAAAeUFABAPCAggoAgAcUVAAAPKCgAgDgAQUVAAAPKKgAAHhAQQUAwAMKKgAAHlBQAQDwgIIKAIAHFFQAADygoAIA4AEFFQAADyioAAB4QEEFAMADCioAAB5QUAEA8ICCCgCABxRUAAA8oKACAOABBRUAAA8oqAAAeEBBBQDAAwoqAAAeUFABAPCAggoAgAcUVAAAPKCgAgDgAQUVAAAPKKgAAHhAQQUAwAMKKgAAHlBQAQDwgIIKAIAHFFQAADygoAIA4AEFFQAADyioAAB4QEEFAMADCioAAB5QUAEA8ICCCgCABxRUAAA8oKACAOABBRUAAA8oqAAAeEBBBQDAAwoqAAAeUFABAPCAggoAgAcUVAAAPKCgAgDgwf8H2VkFx2Veq94AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "72.0\n" ] } ], "source": [ "color_pred_left=color_pred_left0\n", "color_pred_right=color_pred_right0\n", "mondasok=nepi['ID'].values\n", "shares=[]\n", "mondasok=[14]\n", "for mondas in mondasok:\n", " nep=nepi.loc[mondas]\n", " if str(nep['Mennyiség'])!='nan':\n", " obs_key=mennyiseg_key[nep['Kondíció']]\n", " pred_key=mennyiseg_key[nep['Mennyiség']]\n", " observation_range=[nep['Dátum:mettől']+pd.to_timedelta('-1D'),nep['Dátum:meddig']+pd.to_timedelta('+2D')]\n", " prediction_range=[nep['Periódus:mettől'],nep['Periódus:meddig']+pd.to_timedelta('+1D')]\n", " observation_data,prediction_data=filter_data(dz,observation_range,prediction_range)\n", "\n", " #comparison\n", " if str(nep['Érték']) in ['A','B']:\n", " print('comp',mondas)\n", " observation_ts,observation_th,prediction_ts,prediction_th,ertek_sign,irany_sign=\\\n", " get_comp_data(observation_data,obs_key,nep['Érték'],\\\n", " prediction_data,pred_key,nep['Irány'])\n", " #time series\n", " else:\n", " print('ts',mondas)\n", " ertek_sign=get_sign(nep['Érték'],obs_key)\n", " irany_sign=get_sign(nep['Irány'],pred_key)\n", " observation_ts,observation_th=get_ts_data(observation_data,obs_key,nep['Érték'])\n", " prediction_ts,prediction_th=get_ts_data(prediction_data,pred_key,nep['Irány'])\n", "\n", " color_obs_right,color_obs_left,obs_talalt_glyph,obs_nem_talalt_glyph,\\\n", " color_pred_talalt,color_pred_nem_talalt,pred_talalt_glyph,pred_nem_talalt_glyph=\\\n", " set_direction(ertek_sign, irany_sign)\n", "\n", " #datum=str(nep['Dátums'])[:3]+'. '+str(nep['Dátum:mettől'].day)\n", " datum=nep['DS']\n", " shares.append(spine_plot(datum,nep['Mondás'].strip(),mondas,nep['Jelentés'].strip(),nep['Kondíció'],nep['Mennyiség'],\n", " observation_ts,observation_th,prediction_ts,prediction_th,c))\n", "print(np.mean(shares))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }