{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd, numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "p='E:/Onedrive - Lancaster University/Datarepo/szekelydata/klima/'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "stations=pd.read_csv(p+'stations.csv')\n", "stations=stations.set_index('ID')\n", "stations.to_csv('data/stations.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "0: NoCloud\n", "1: Cloud\n", "4: Fog\n", "6: Rain\n", "7: Snow\n", "11: Hail" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "weather={\n", "2:1,\n", "3:7,\n", "5:6,\n", "8:6,\n", "9:6,\n", "100:0,\n", "101:0,\n", "102:0,\n", "103:0,\n", "104:0,\n", "105:0,\n", "106:0,\n", "107:0,\n", "108:0,\n", "109:0,\n", "110:4,\n", "111:4,\n", "112:4,\n", "113:1,\n", "114:6,\n", "115:6,\n", "116:6,\n", "117:6,\n", "118:6,\n", "119:1,\n", "120:7,\n", "121:6,\n", "122:7,\n", "123:6,\n", "124:11,\n", "125:6,\n", "126:7,\n", "127:11,\n", "128:4,\n", "129:6,\n", "130:1,\n", "131:1,\n", "132:1,\n", "133:1,\n", "134:1,\n", "135:1,\n", "136:7,\n", "137:7,\n", "138:7,\n", "139:7,\n", "140:4,\n", "141:4,\n", "142:4,\n", "143:4,\n", "144:4,\n", "145:4,\n", "146:4,\n", "147:4,\n", "148:4,\n", "149:4,\n", "150:6,\n", "151:6,\n", "152:6,\n", "153:6,\n", "154:6,\n", "155:6,\n", "156:6,\n", "157:6,\n", "158:6,\n", "159:6,\n", "160:6,\n", "161:6,\n", "162:6,\n", "163:6,\n", "164:6,\n", "165:6,\n", "166:11,\n", "167:11,\n", "168:6,\n", "169:6,\n", "170:7,\n", "171:7,\n", "172:7,\n", "173:7,\n", "174:7,\n", "175:7,\n", "176:7,\n", "177:7,\n", "178:7,\n", "179:7,\n", "180:6,\n", "181:6,\n", "182:6,\n", "183:7,\n", "184:7,\n", "185:7,\n", "186:7,\n", "187:7,\n", "188:7,\n", "189:11,\n", "190:11,\n", "191:6,\n", "192:6,\n", "193:7,\n", "194:7,\n", "195:6,\n", "196:11,\n", "197:6,\n", "198:1,\n", "199:11}" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "measures=['XTEMP','XSPD','XPCP','XSD','XVSB','YFOG','YPCP','YSNW','YHAL']\n", "ycolumns={1:'YCLD',4:'YFOG',6:'YPCP',7:'YSNW',10:'YCLR',11:'YHAL'}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def load_data(stn,d='high_res',p=p,stations=stations,verbose=True):\n", " if verbose:\n", " print('loading...',stn,stations.loc[int(stn)]['LOC'],d)\n", " df=pd.read_csv(p+'/'+d+'/export/'+stn+'.csv',dtype={' FRSHTT':str})\n", " df.columns=[i.strip() for i in df.columns]\n", " df['time']=pd.to_datetime(df['time'])\n", " df['XTEMP']=(pd.to_numeric(df['TEMP'], errors='coerce').replace(9999.9,np.nan)-32)*5/9 #Fahrenheit to Celsiu\n", " if d=='high_res':\n", " df['XSPD']=pd.to_numeric(df['SPD'], errors='coerce')*1.61 #MPH to Km/h\n", " df['XVSB']=(pd.to_numeric(df['VSB'], errors='coerce')*1.61).apply(lambda x: min(x,10)) #miles to Km, max VSB=20Km\n", " df['XPCP']=pd.to_numeric(df['PCP06'], errors='coerce')*25.4 #inch to mm\n", " df['XSD']=pd.to_numeric(df['SD'], errors='coerce')*25.4 #inch to mm\n", " \n", " df['PCP01']=pd.to_numeric(df['PCP01'], errors='coerce')\n", " df['PCP06']=pd.to_numeric(df['PCP06'], errors='coerce')\n", " df['PCP24']=pd.to_numeric(df['PCP24'], errors='coerce')\n", " df['PCPXX']=pd.to_numeric(df['PCPXX'], errors='coerce')\n", " df['PCP06'].loc[~df['PCP06'].isnull()] = 6\n", " df['PCPXX'].loc[~df['PCPXX'].isnull()] = 6\n", " df['PCP01'].loc[~df['PCP01'].isnull()] = 6\n", " df['PCP24'].loc[~df['PCP24'].isnull()] = 6\n", " df['AW']=pd.to_numeric(df['AW'], errors='coerce')+100\n", " df['MW']=pd.to_numeric(df['MW'], errors='coerce')+100\n", " df['W']=pd.to_numeric(df['W'], errors='coerce')\n", " dz=df[['PCP01','PCP06','PCP24','PCPXX','AW','MW','W']]\n", " df['W']=dz.ffill(axis=1)['W'].replace(weather).replace(0,10)\n", " dz=df.groupby(['time','W']).count()['TEMP'].unstack().fillna(0)\n", " dz.columns=[ycolumns[i] for i in dz.columns]\n", " df=df.set_index('time').join(dz).reset_index()\n", " else:\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['XSPD']=pd.to_numeric(df['WDSP'], errors='coerce').replace(999.9,np.nan)*1.85 #knots to Km/h\n", " df['XVSB']=(pd.to_numeric(df['VISIB'], errors='coerce').replace(999.9,np.nan)*1.61).apply(lambda x: min(x,10)) #miles to Km, max VSB=20Km\n", " df['XPCP']=pd.to_numeric(df['PRCP'].str[:-1], errors='coerce').replace(99.99,np.nan)*25.4 #inch to mm\n", " df['XSD']=pd.to_numeric(df['SNDP'], errors='coerce').replace(999.9,np.nan)*25.4 #inch to mm\n", " \n", " df['YFOG']=pd.to_numeric(df['FRSHTT'].str[0], errors='coerce')\n", " df['YPCP']=pd.to_numeric(df['FRSHTT'].str[1], errors='coerce')\n", " df['YSNW']=pd.to_numeric(df['FRSHTT'].str[2], errors='coerce')\n", " df['YHAL']=pd.to_numeric(df['FRSHTT'].str[3], errors='coerce')\n", " for m in measures:\n", " if m not in df.columns:\n", " df[m]=np.nan\n", " return df[['time','year','month','day','hour']+measures].set_index('time')" ] }, { "cell_type": "code", "execution_count": 353, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "loading... 151700 MIERCUREA CIUC daily\n", "loading... 151700 MIERCUREA CIUC high_res\n" ] } ], "source": [ "# stn='154200' #aurel vlaicu\n", "stn='151700' #mciuc\n", "# stn='128390' #bp\n", "# stn='128510' #kekes\n", "# stn='151200' #kv\n", "# stn='152800' #omu\n", "daily=load_data(stn,'daily')\n", "hires=load_data(stn,'high_res')" ] }, { "cell_type": "code", "execution_count": 354, "metadata": {}, "outputs": [], "source": [ "df=hires[hires['month']>8]\n", "dz=df[df['XSD']>20].reset_index().groupby('year').min()[['time']]\n", "dz=dz.T\n", "dz[2019]=pd.to_datetime('2019-10-31')\n", "dz=dz.T\n", "dz['month']=dz['time'].dt.month\n", "dz['day']=dz['time'].dt.day\n", "dz['d']=pd.to_datetime(dict(year='2019', month=dz['month'], day=dz['day'])).values\n", "dk2=dz['d']" ] }, { "cell_type": "code", "execution_count": 357, "metadata": {}, "outputs": [], "source": [ "df=daily[daily['month']>8]\n", "dz=df[df['XSD']>20].reset_index().groupby('year').min()[['time']]\n", "dz=dz.T\n", "dz[2019]=pd.to_datetime('2019-10-31')\n", "dz=dz.T\n", "dz['month']=dz['time'].dt.month\n", "dz['day']=dz['time'].dt.day\n", "dz['d']=pd.to_datetime(dict(year='2019', month=dz['month'], day=dz['day'])).values\n", "dk1=dz['d']" ] }, { "cell_type": "code", "execution_count": 358, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig,ax=plt.subplots(1,1)\n", "colors=['#cccccc','#8E94F2','#4BC0D9','#6457A6','#8E94F2','#4BC0D9','#6457A6','#8E94F2','#4BC0D9','#6457A6']\n", "dates=['2019-10','2019-11','2019-12','2020-01']\n", "months=['október','november','december']\n", "for i in range(1,len(dates)):\n", " a1=dk1[dk1dates[i-1]]\n", " ax.scatter(a1.values,a1.index,s=0,color=colors[i],alpha=0.3)\n", "# a1=dk2[dk2dates[i-1]]\n", "# ax.scatter(a1.values,a1.index,s=50,marker='x',color=colors[i],alpha=0.3)\n", " x=a1.values\n", " y=a1.index\n", " for j in range(len(x)):\n", " ax.text(x[j],y[j],'❄️',fontsize=20,color=colors[i],verticalalignment='center',horizontalalignment='center')\n", " if y[j] in [2000,2019,1980,1999,2007,2016]:\n", " ax.text(x[j],y[j],str(y[j])+' ',fontsize=10,color=colors[i],verticalalignment='center',horizontalalignment='right')\n", " if y[j] in [1986,1993,1978]:\n", "# if True:\n", " ax.text(x[j],y[j],' '+str(y[j]),fontsize=10,color=colors[i],verticalalignment='center',horizontalalignment='left')\n", "for a in dates:\n", " ax.axvline(a,ls='--',c=colors[0])\n", "ax.axis('off')\n", "plt.savefig(stn+'elsoho.png',dpi=300,transparent=True)\n", "plt.show()" ] }, { "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 }