From 1f3fa863b7aa531283faa286e2a14cfa6648fb15 Mon Sep 17 00:00:00 2001 From: Akalanka Date: Thu, 21 Jun 2018 11:56:28 +0530 Subject: [PATCH 1/6] create the script --- data_integration.py | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 data_integration.py diff --git a/data_integration.py b/data_integration.py new file mode 100644 index 0000000..6211afe --- /dev/null +++ b/data_integration.py @@ -0,0 +1,52 @@ + +# coding: utf-8 + +# Script to integrate the rainfall data from CUrW and attenuation data from Dialog Axiata + +# IMPORTANT : This script is hard coded to this specific task. it is heavily dependent on some requirements. So please make sure to follow the exact steps metioned below. + +# In[1]: + + +import pandas as pd +from os import listdir +from os.path import isfile, join +from datetime import datetime, timedelta +import time + + +# IMPORTANT : please comment out the reduce_to_single_file() method if you have run it once or already have the file with all weather stations + +# In[2]: + + +# folder_path : Path to CML data file. +# edited_file_path : Path to folder which contained station wise weather data. +# csv_file_rainfall_data_all : Path to file all rainfall data +# integrated_file_loc : location of the final integrated file +def get_all_files(folder_path, edited_file_path, csv_file_rainfall_data_all, integrated_file_loc): +# Read the file names in a folder path + onlyfiles = [f for f in listdir(edited_file_path) if (isfile(join(edited_file_path, f)) and (not f.startswith(".")))] + print(onlyfiles) + + for i in onlyfiles: + reduce_to_single_file(edited_file_path,i, csv_file_rainfall_data_all) + data_integration(folder_path, csv_file_rainfall_data_all, integrated_file_loc) + + +# Below method reduce all the files in to a single file. +# IMPORTATNT : This method must run only once. otherwise it will keep appending the same file over and over. You will get an completely wrong precipitation. because if you append the same file twice you get twice the percipitation as correct one. + +# In[3]: + + +global count +def reduce_to_single_file(edited_file_path, i, csv_file_rainfall_data_all): + df = pd.read_csv(edited_file_path + i) + df["PrecipStation"] = i[0:-4] + # if file does not exist write header + if not isfile(csv_file_rainfall_data_all): + df.to_csv(csv_file_rainfall_data_all, index =False) + else: # else it exists so append without writing the header + df.to_csv(csv_file_rainfall_data_all, index=False, mode='a', header=False) + From 89189df203148cf5d19f42d55dba2a21eb48f368 Mon Sep 17 00:00:00 2001 From: Akalanka Date: Thu, 21 Jun 2018 11:56:44 +0530 Subject: [PATCH 2/6] jupyter notebook file --- data_integration.ipynb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 data_integration.ipynb diff --git a/data_integration.ipynb b/data_integration.ipynb new file mode 100644 index 0000000..caea616 --- /dev/null +++ b/data_integration.ipynb @@ -0,0 +1,34 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From d5bf57db05c9694cf7096e94b3c49d4a2771518d Mon Sep 17 00:00:00 2001 From: Akalanka Date: Thu, 21 Jun 2018 11:57:32 +0530 Subject: [PATCH 3/6] jupyter notebook file - 2 --- .../data_integration-checkpoint.ipynb | 358 ++++++++++++ .ipynb_checkpoints/test-checkpoint.ipynb | 511 ++++++++++++++++++ 2 files changed, 869 insertions(+) create mode 100644 .ipynb_checkpoints/data_integration-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/test-checkpoint.ipynb diff --git a/.ipynb_checkpoints/data_integration-checkpoint.ipynb b/.ipynb_checkpoints/data_integration-checkpoint.ipynb new file mode 100644 index 0000000..4c27b92 --- /dev/null +++ b/.ipynb_checkpoints/data_integration-checkpoint.ipynb @@ -0,0 +1,358 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Script to integrate the rainfall data from CUrW and attenuation data from Dialog Axiata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IMPORTANT : This script is hard coded to this specific task. it is heavily dependent on some requirements. So please make sure to follow the exact steps metioned below." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from os import listdir\n", + "from os.path import isfile, join\n", + "from datetime import datetime, timedelta\n", + "import time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IMPORTANT : please comment out the reduce_to_single_file() method if you have run it once or already have the file with all weather stations" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# folder_path : Path to CML data file.\n", + "# edited_file_path : Path to folder which contained station wise weather data. \n", + "# csv_file_rainfall_data_all : Path to file all rainfall data \n", + "# integrated_file_loc : location of the final integrated file\n", + "def get_all_files(folder_path, edited_file_path, csv_file_rainfall_data_all, integrated_file_loc):\n", + "# Read the file names in a folder path\n", + " onlyfiles = [f for f in listdir(edited_file_path) if (isfile(join(edited_file_path, f)) and (not f.startswith(\".\")))]\n", + " print(onlyfiles)\n", + "\n", + " for i in onlyfiles:\n", + " reduce_to_single_file(edited_file_path,i, csv_file_rainfall_data_all)\n", + " data_integration(folder_path, csv_file_rainfall_data_all, integrated_file_loc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below method reduce all the files in to a single file. \n", + "IMPORTATNT : This method must run only once. otherwise it will keep appending the same file over and over. You will get an completely wrong precipitation. because if you append the same file twice you get twice the percipitation as correct one." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "global count\n", + "def reduce_to_single_file(edited_file_path, i, csv_file_rainfall_data_all):\n", + " df = pd.read_csv(edited_file_path + i)\n", + " df[\"PrecipStation\"] = i[0:-4]\n", + " # if file does not exist write header \n", + " if not isfile(csv_file_rainfall_data_all):\n", + " df.to_csv(csv_file_rainfall_data_all, index =False)\n", + " else: # else it exists so append without writing the header\n", + " df.to_csv(csv_file_rainfall_data_all, index=False, mode='a', header=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the CML data, if the label says 00:00 then that means it contains data for next 15 minutes. we have \n", + "calculated the attenuation for the time period 00:00 -00:15\n", + "\n", + "we used that convention here as well.\n", + "if the data says 11:15 then,\n", + "that means the sum of the readings at 11:20,11:25,11:30" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IMPORTANT : this code require the file name to be same as the weather station name used in the CML data file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please Uncomment as the weather stations you have" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def data_integration(csv_path_cml, csv_path_rainfall, integrated_file_loc):\n", + " \n", + " cml_data_frame = pd.read_csv(csv_path_cml, index_col=[2,1])\n", + " \n", + " currently_using_stns = [\"Ibattara 2\", \"Orugodawatta\", \"Kottawa North Dharmapala School\", \"Waga\"]\n", + " \n", + "# # creating different dataframes for each weather station\n", + "# ambewela_cml_df = cml_data_frame.loc[\"Ambewela\"]\n", + "# dickOya_cml_df = cml_data_frame.loc[\"Dick oya\"]\n", + "# hingurana_cml_df = cml_data_frame.loc[\"Hingurana\"]\n", + "# jaffna_cml_df = cml_data_frame.loc[\"Jaffna\"]\n", + "# mahapallegama_cml_df = cml_data_frame.loc[\"Mahapallegama\"]\n", + "# malabe_cml_df = cml_data_frame.loc[\"Malabe\"]\n", + "# mulleriyawa_cml_df = cml_data_frame.loc[\"Mulleriyawa\"]\n", + "# mutwal_cml_df = cml_data_frame.loc[\"Mutwal\"]\n", + " ibattara_cml_df = cml_data_frame.loc[\"Ibattara 2\"]\n", + " orugodawatta_cml_df = cml_data_frame.loc[\"Orugodawatta\"]\n", + "# thurstan_college_cml_df = cml_data_frame.loc[\"Thurstan College\"]\n", + "# uduwawala_cml_df = cml_data_frame.loc[\"Uduwawala\"]\n", + "# urumewella_cml_df = cml_data_frame.loc[\"Urumewella\"]\n", + " dhrmapala_scl_cml_df = cml_data_frame.loc[\"Kottawa North Dharmapala School\"]\n", + " waga_cml_df = cml_data_frame.loc[\"Waga\"]\n", + " \n", + " \n", + " weather_stations =['ambewela.csv', 'dick oya.csv', 'hingurana.csv', 'ibattara 2.csv', 'jaffna.csv', \n", + " 'kottawa north dharmapala school.csv', 'mahapallegama.csv', 'malabe.csv',\n", + " 'mulleriyawa.csv', 'mutwal.csv',\n", + " 'orugodawatta.csv', 'thurstan college.csv', 'uduwawala.csv', \n", + " 'urumewella.csv', 'waga.csv']\n", + " \n", + " \n", + " rainfall_data_frame = pd.read_csv(csv_path_rainfall, parse_dates=[\"date_time\"], index_col=[2,0])\n", + " \n", + " #creating different dataframes for each weather station rainfall data\n", + "# ambewela_rainfall_df = rainfall_data_frame.loc[\"Ambewela\"]\n", + "# dickOya_rainfall_df = rainfall_data_frame.loc[\"Dick oya\"]\n", + "# hingurana_rainfall_df = rainfall_data_frame.loc[\"Hingurana\"]\n", + "# jaffna_rainfall_df = rainfall_data_frame.loc[\"Jaffna\"]\n", + "# mahapallegama_rainfall_df = rainfall_data_frame.loc[\"Mahapallegama\"]\n", + "# malabe_rainfall_df = rainfall_data_frame.loc[\"Malabe\"]\n", + "# mulleriyawa_rainfall_df = rainfall_data_frame.loc[\"Mulleriyawa\"]\n", + "# mutwal_rainfall_df = rainfall_data_frame.loc[\"Mutwal\"]\n", + " ibattara_rainfall_df = rainfall_data_frame.loc[\"Ibattara 2\"]\n", + " orugodawatta_rainfall_df = rainfall_data_frame.loc[\"Orugodawatta\"]\n", + "# thurstan_college_rainfall_df = rainfall_data_frame.loc[\"Thurstan College\"]\n", + "# uduwawala_rainfall_df = rainfall_data_frame.loc[\"Uduwawala\"]\n", + "# urumewella_rainfall_df = rainfall_data_frame.loc[\"Urumewella\"]\n", + " dhrmapala_scl_rainfall_df = rainfall_data_frame.loc[\"Kottawa North Dharmapala School\"]\n", + " waga_rainfall_df = rainfall_data_frame.loc[\"Waga\"]\n", + " \n", + "# ambewela_rainfall_df[\"precipitation(mm)\"] = ambewela_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# ambewela_rainfall_df = ambewela_rainfall_df.dropna()\n", + "# ambewela_cml_df = ambewela_cml_df.merge(ambewela_rainfall_df, left_index=True, right_index=True)\n", + " \n", + " \n", + "# dickOya_rainfall_df[\"precipitation(mm)\"] = dickOya_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# dickOya_rainfall_df = dickOya_rainfall_df.dropna()\n", + "# dickOya_cml_df = dickOya_cml_df.merge(dickOya_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# hingurana_rainfall_df[\"precipitation(mm)\"] = hingurana_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# hingurana_rainfall_df = hingurana_rainfall_df.dropna()\n", + "# hingurana_cml_df = hingurana_cml_df.merge(hingurana_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# jaffna_rainfall_df[\"precipitation(mm)\"] = jaffna_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# jaffna_rainfall_df = jaffna_rainfall_df.dropna()\n", + "# jaffna_cml_df = jaffna_cml_df.merge(jaffna_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# mahapallegama_rainfall_df[\"precipitation(mm)\"] = mahapallegama_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# mahapallegama_rainfall_df = mahapallegama_rainfall_df.dropna()\n", + "# mahapallegama_cml_df = mahapallegama_cml_df.merge(mahapallegama_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# malabe_rainfall_df[\"precipitation(mm)\"] = malabe_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# malabe_rainfall_df = malabe_rainfall_df.dropna()\n", + "# malabe_cml_df = malabe_cml_df.merge(malabe_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# mulleriyawa_rainfall_df[\"precipitation(mm)\"] = mulleriyawa_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# mulleriyawa_rainfall_df = mulleriyawa_rainfall_df.dropna()\n", + "# mulleriyawa_cml_df = mulleriyawa_cml_df.merge(mulleriyawa_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# mutwal_rainfall_df[\"precipitation(mm)\"] = mutwal_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# mutwal_rainfall_df = mutwal_rainfall_df.dropna()\n", + "# mutwal_cml_df = mutwal_cml_df.merge(mutwal_rainfall_df, left_index=True, right_index=True)\n", + " \n", + " ibattara_rainfall_df[\"precipitation(mm)\"] = ibattara_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " ibattara_rainfall_df = ibattara_rainfall_df.dropna()\n", + " ibattara_cml_df = ibattara_cml_df.merge(ibattara_rainfall_df, left_index=True, right_index=True)\n", + " ibattara_cml_df.insert(1,\"PrecipStation\", \"Ibattara 2\")\n", + "\n", + " orugodawatta_rainfall_df[\"precipitation(mm)\"] = orugodawatta_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " orugodawatta_rainfall_df = orugodawatta_rainfall_df.dropna()\n", + " orugodawatta_cml_df = orugodawatta_cml_df.merge(orugodawatta_rainfall_df, left_index=True, right_index=True)\n", + " orugodawatta_cml_df.insert(1,\"PrecipStation\", \"Orugodawatta\")\n", + " \n", + "# thurstan_college_rainfall_df[\"precipitation(mm)\"] = thurstan_college_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# thurstan_college_rainfall_df = thurstan_college_rainfall_df.dropna()\n", + "# thurstan_college_cml_df = thurstan_college_cml_df.merge(thurstan_college_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# uduwawala_rainfall_df[\"precipitation(mm)\"] = uduwawala_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# uduwawala_rainfall_df = uduwawala_rainfall_df.dropna()\n", + "# uduwawala_cml_df = uduwawala_cml_df.merge(uduwawala_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# urumewella_rainfall_df[\"precipitation(mm)\"] = urumewella_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# urumewella_rainfall_df = urumewella_rainfall_df.dropna()\n", + "# urumewella_cml_df = urumewella_cml_df.merge(urumewella_rainfall_df, left_index=True, right_index=True)\n", + " \n", + " dhrmapala_scl_rainfall_df[\"precipitation(mm)\"] = dhrmapala_scl_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " dhrmapala_scl_rainfall_df = dhrmapala_scl_rainfall_df.dropna()\n", + " dhrmapala_scl_cml_df = dhrmapala_scl_cml_df.merge(dhrmapala_scl_rainfall_df, left_index=True, right_index=True)\n", + " dhrmapala_scl_cml_df.insert(1,\"PrecipStation\", \"Kottawa North Dharmapala School\")\n", + " \n", + " waga_rainfall_df[\"precipitation(mm)\"] = waga_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " waga_rainfall_df = waga_rainfall_df.dropna()\n", + " waga_cml_df = waga_cml_df.merge(waga_rainfall_df, left_index=True, right_index=True)\n", + " dhrmapala_scl_cml_df\n", + " waga_cml_df.insert(1,\"PrecipStation\", \"Waga\")\n", + " \n", + " all_data_frames = [ibattara_cml_df,orugodawatta_cml_df,\n", + "# ambewela_cml_df, dickOya_cml_df, hingurana_cml_df, \n", + "# jaffna_cml_df,\n", + "# mahapallegama_cml_df, \n", + "# malabe_cml_df, mulleriyawa_cml_df, mutwal_cml_df, \n", + "# thurstan_college_cml_df,\n", + "# uduwawala_cml_df, urumewella_cml_df, \n", + " dhrmapala_scl_cml_df,waga_cml_df]\n", + " \n", + " final_data_frame = pd.concat(all_data_frames)\n", + " \n", + "# for df in all_data_frames:\n", + "# if not isfile(integrated_file_loc):\n", + "# df.to_csv(integrated_file_loc)\n", + "# else: # else it exists so append without writing the header\n", + "# df.to_csv(integrated_file_loc, mode='a', header=False)\n", + " \n", + " final_data_frame.to_csv(integrated_file_loc, index_label= \"date_time\")\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Ambewela.csv', 'Dick oya.csv', 'Hingurana.csv', 'Ibattara 2.csv', 'Jaffna.csv', 'Kottawa North Dharmapala School.csv', 'Mahapallegama.csv', 'Malabe.csv', 'Mulleriyawa.csv', 'Mutwal.csv', 'Orugodawatta.csv', 'Thurstan College.csv', 'Uduwawala.csv', 'Urumewella.csv', 'Waga.csv']\n" + ] + } + ], + "source": [ + "get_all_files(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08 to 2018-05-15.csv\",\n", + " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/\", \n", + " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/rainfall_data_all.csv\",\n", + " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "below method is to create the classified data.\n", + "\n", + "in here, \n", + "\n", + "* 0 < A < 0.5 \n", + "* 0.5 <= B < 1.0 \n", + "* 1.0 <= C < 2.5 \n", + "* 2.5 <= D < 5.0 \n", + "* 5.0 <= E \n", + "\n", + "\n", + "* A = small rain\n", + "* B = Average Rain\n", + "* C = Above average\n", + "* D = Heavy rain\n", + "* E = Very Heavy rain" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "def classify_data(file_path):\n", + " \n", + " classify_data_frame = pd.read_csv(file_path, index_col=[0])\n", + " \n", + "# define bins 0-0.5, 0.6-1.0, 1.1-2.5, 2.6-5.0, 5.1-infinty\n", + " bins = [-1.0, 0.5, 1.0, 2.5, 5.0, 1000.0]\n", + " \n", + " group_names = [\"A\", \"B\", \"C\", \"D\", \"E\"]\n", + " \n", + " classify_data_frame[\"class\"] = pd.cut(classify_data_frame[\"precipitation(mm)\"], bins, labels=group_names)\n", + " new_file = file_path[0:-4] + \"_classified.csv\"\n", + " classify_data_frame.to_csv(new_file)\n", + " \n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "classify_data(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" + ] + }, + { + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/.ipynb_checkpoints/test-checkpoint.ipynb b/.ipynb_checkpoints/test-checkpoint.ipynb new file mode 100644 index 0000000..4d7d936 --- /dev/null +++ b/.ipynb_checkpoints/test-checkpoint.ipynb @@ -0,0 +1,511 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "cml_data_frame = pd.read_csv(\"/media/akalanka/Engineering/test/testcml.csv\", index_col=[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "rainfall_data = pd.read_csv(\"/media/akalanka/Engineering/test/Ambewela.csv\",parse_dates=[\"date_time\"], index_col=[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "rainfall_data[\"precipitation(mm)\"] = rainfall_data[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\").sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# rainfall_data = rainfall_data.dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ambewela\n" + ] + } + ], + "source": [ + "# rainfall_data[\"PrecipStation\"] = \"Orugodawatta\"" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "# rainfall_data = rainfall_data.reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "# rainfall_data = rainfall_data.set_index([\"date_time\", \"PrecipStation\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "new = cml_data_frame.merge(rainfall_data, left_index=True, right_index=True)\n", + "# cml_data_frame" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDPrecipStationPRmaxPRminPTminPTmaxPRAvgPTAvgPAttAvgXStart...RSL_AVGTSL_MINTSL_MAXTSL_AVGXEndYEndPathLengthdistanceFrequencyprecipitation(mm)
2018-05-05 00:00:002901Orugodawatta6.025596e-075.495409e-070.0398110.0407385.754399e-070.0398110.0398106.952500...-32.41616.116.06.95958079.8625000.9083492.45122835100.0
2018-05-05 00:00:00807Orugodawatta1.122018e-061.000000e-060.0100000.0102331.071519e-060.0100000.0099996.922500...-29.71010.110.06.92063079.8623000.3044693.12879635100.0
2018-05-05 00:00:00406Orugodawatta6.165950e-075.888437e-070.0125890.0128826.025596e-070.0128820.0128826.911030...-32.21111.111.16.91555679.8838890.8584803.48633335100.0
2018-05-05 00:00:00407Orugodawatta6.918310e-076.456542e-070.0125890.0128826.760830e-070.0128820.0128826.911030...-31.71111.111.16.91555679.8838890.8584803.48633335100.0
2018-05-05 00:00:002274Orugodawatta6.760830e-076.309573e-070.0100000.0102336.606934e-070.0100000.0099996.931970...-31.81010.110.06.93677079.8725001.0885901.56983135100.0
2018-05-05 00:15:002570Orugodawatta6.760830e-075.370318e-070.0398110.0398116.606934e-070.0398110.0398106.969120...-31.81616.016.06.98694479.8800001.9756233.792714350.0
2018-05-05 00:15:002571Orugodawatta6.918310e-076.456542e-070.0398110.0407386.760830e-070.0398110.0398106.969120...-31.71616.116.06.98694479.8800001.9756233.792714350.0
2018-05-05 00:15:00564Orugodawatta1.071519e-061.023293e-060.0012590.0012881.047129e-060.0012880.0012876.911667...-29.811.11.16.90972279.8530560.3040934.703116350.0
2018-05-05 00:15:001393Orugodawatta4.786301e-064.168694e-060.0100000.0100004.365158e-060.0100000.0099966.953333...-23.61010.010.06.95016079.8641000.4613931.989798350.0
2018-05-05 00:15:001394Orugodawatta3.630781e-063.311311e-060.0100000.0102333.467369e-060.0100000.0099966.953333...-24.61010.110.06.95016079.8641000.4613931.989798350.0
2018-05-05 00:15:0069Orugodawatta4.570882e-074.265795e-070.0063100.0064574.365158e-070.0063100.0063096.946080...-33.688.18.06.94584079.8651000.5311011.280218350.0
\n", + "

11 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " ID PrecipStation PRmax PRmin PTmin \\\n", + "2018-05-05 00:00:00 2901 Orugodawatta 6.025596e-07 5.495409e-07 0.039811 \n", + "2018-05-05 00:00:00 807 Orugodawatta 1.122018e-06 1.000000e-06 0.010000 \n", + "2018-05-05 00:00:00 406 Orugodawatta 6.165950e-07 5.888437e-07 0.012589 \n", + "2018-05-05 00:00:00 407 Orugodawatta 6.918310e-07 6.456542e-07 0.012589 \n", + "2018-05-05 00:00:00 2274 Orugodawatta 6.760830e-07 6.309573e-07 0.010000 \n", + "2018-05-05 00:15:00 2570 Orugodawatta 6.760830e-07 5.370318e-07 0.039811 \n", + "2018-05-05 00:15:00 2571 Orugodawatta 6.918310e-07 6.456542e-07 0.039811 \n", + "2018-05-05 00:15:00 564 Orugodawatta 1.071519e-06 1.023293e-06 0.001259 \n", + "2018-05-05 00:15:00 1393 Orugodawatta 4.786301e-06 4.168694e-06 0.010000 \n", + "2018-05-05 00:15:00 1394 Orugodawatta 3.630781e-06 3.311311e-06 0.010000 \n", + "2018-05-05 00:15:00 69 Orugodawatta 4.570882e-07 4.265795e-07 0.006310 \n", + "\n", + " PTmax PRAvg PTAvg PAttAvg XStart \\\n", + "2018-05-05 00:00:00 0.040738 5.754399e-07 0.039811 0.039810 6.952500 \n", + "2018-05-05 00:00:00 0.010233 1.071519e-06 0.010000 0.009999 6.922500 \n", + "2018-05-05 00:00:00 0.012882 6.025596e-07 0.012882 0.012882 6.911030 \n", + "2018-05-05 00:00:00 0.012882 6.760830e-07 0.012882 0.012882 6.911030 \n", + "2018-05-05 00:00:00 0.010233 6.606934e-07 0.010000 0.009999 6.931970 \n", + "2018-05-05 00:15:00 0.039811 6.606934e-07 0.039811 0.039810 6.969120 \n", + "2018-05-05 00:15:00 0.040738 6.760830e-07 0.039811 0.039810 6.969120 \n", + "2018-05-05 00:15:00 0.001288 1.047129e-06 0.001288 0.001287 6.911667 \n", + "2018-05-05 00:15:00 0.010000 4.365158e-06 0.010000 0.009996 6.953333 \n", + "2018-05-05 00:15:00 0.010233 3.467369e-06 0.010000 0.009996 6.953333 \n", + "2018-05-05 00:15:00 0.006457 4.365158e-07 0.006310 0.006309 6.946080 \n", + "\n", + " ... RSL_AVG TSL_MIN TSL_MAX TSL_AVG \\\n", + "2018-05-05 00:00:00 ... -32.4 16 16.1 16.0 \n", + "2018-05-05 00:00:00 ... -29.7 10 10.1 10.0 \n", + "2018-05-05 00:00:00 ... -32.2 11 11.1 11.1 \n", + "2018-05-05 00:00:00 ... -31.7 11 11.1 11.1 \n", + "2018-05-05 00:00:00 ... -31.8 10 10.1 10.0 \n", + "2018-05-05 00:15:00 ... -31.8 16 16.0 16.0 \n", + "2018-05-05 00:15:00 ... -31.7 16 16.1 16.0 \n", + "2018-05-05 00:15:00 ... -29.8 1 1.1 1.1 \n", + "2018-05-05 00:15:00 ... -23.6 10 10.0 10.0 \n", + "2018-05-05 00:15:00 ... -24.6 10 10.1 10.0 \n", + "2018-05-05 00:15:00 ... -33.6 8 8.1 8.0 \n", + "\n", + " XEnd YEnd PathLength distance Frequency \\\n", + "2018-05-05 00:00:00 6.959580 79.862500 0.908349 2.451228 35 \n", + "2018-05-05 00:00:00 6.920630 79.862300 0.304469 3.128796 35 \n", + "2018-05-05 00:00:00 6.915556 79.883889 0.858480 3.486333 35 \n", + "2018-05-05 00:00:00 6.915556 79.883889 0.858480 3.486333 35 \n", + "2018-05-05 00:00:00 6.936770 79.872500 1.088590 1.569831 35 \n", + "2018-05-05 00:15:00 6.986944 79.880000 1.975623 3.792714 35 \n", + "2018-05-05 00:15:00 6.986944 79.880000 1.975623 3.792714 35 \n", + "2018-05-05 00:15:00 6.909722 79.853056 0.304093 4.703116 35 \n", + "2018-05-05 00:15:00 6.950160 79.864100 0.461393 1.989798 35 \n", + "2018-05-05 00:15:00 6.950160 79.864100 0.461393 1.989798 35 \n", + "2018-05-05 00:15:00 6.945840 79.865100 0.531101 1.280218 35 \n", + "\n", + " precipitation(mm) \n", + "2018-05-05 00:00:00 100.0 \n", + "2018-05-05 00:00:00 100.0 \n", + "2018-05-05 00:00:00 100.0 \n", + "2018-05-05 00:00:00 100.0 \n", + "2018-05-05 00:00:00 100.0 \n", + "2018-05-05 00:15:00 0.0 \n", + "2018-05-05 00:15:00 0.0 \n", + "2018-05-05 00:15:00 0.0 \n", + "2018-05-05 00:15:00 0.0 \n", + "2018-05-05 00:15:00 0.0 \n", + "2018-05-05 00:15:00 0.0 \n", + "\n", + "[11 rows x 23 columns]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new" + ] + }, + { + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 43608d6e9eb50eab78c2d376ad9c03d5a58787b9 Mon Sep 17 00:00:00 2001 From: Akalanka Date: Thu, 21 Jun 2018 12:01:50 +0530 Subject: [PATCH 4/6] deleted unwanted file PerpendicularDist.py --- PerpendicularDist.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 PerpendicularDist.py diff --git a/PerpendicularDist.py b/PerpendicularDist.py deleted file mode 100644 index e69de29..0000000 From 4f5f1cdf67a8d940aac7c743cd49f48519d04e6e Mon Sep 17 00:00:00 2001 From: Akalanka Date: Thu, 21 Jun 2018 15:37:56 +0530 Subject: [PATCH 5/6] completed files --- data_integration.ipynb | 326 +++++++++++++++++++++++++++++++++ data_integration.py | 203 ++++++++++++++++++++ graphs_to_visualize_data.ipynb | 166 +++++++++++++++++ 3 files changed, 695 insertions(+) create mode 100644 graphs_to_visualize_data.ipynb diff --git a/data_integration.ipynb b/data_integration.ipynb index caea616..71546bd 100644 --- a/data_integration.ipynb +++ b/data_integration.ipynb @@ -1,5 +1,331 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Script to integrate the rainfall data from CUrW and attenuation data from Dialog Axiata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IMPORTANT : This script is hard coded to this specific task. it is heavily dependent on some requirements. So please make sure to follow the exact steps metioned below." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from os import listdir\n", + "from os.path import isfile, join\n", + "from datetime import datetime, timedelta\n", + "import time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IMPORTANT : please comment out the reduce_to_single_file() method if you have run it once or already have the file with all weather stations" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# folder_path : Path to CML data file.\n", + "# edited_file_path : Path to folder which contained station wise weather data. \n", + "# csv_file_rainfall_data_all : Path to file all rainfall data \n", + "# integrated_file_loc : location of the final integrated file\n", + "def get_all_files(folder_path, edited_file_path, csv_file_rainfall_data_all, integrated_file_loc):\n", + "# Read the file names in a folder path\n", + " onlyfiles = [f for f in listdir(edited_file_path) if (isfile(join(edited_file_path, f)) and (not f.startswith(\".\")))]\n", + " print(onlyfiles)\n", + "\n", + " for i in onlyfiles:\n", + " reduce_to_single_file(edited_file_path,i, csv_file_rainfall_data_all)\n", + " data_integration(folder_path, csv_file_rainfall_data_all, integrated_file_loc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below method reduce all the files in to a single file. \n", + "IMPORTATNT : This method must run only once. otherwise it will keep appending the same file over and over. You will get an completely wrong precipitation. because if you append the same file twice you get twice the percipitation as correct one." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "global count\n", + "def reduce_to_single_file(edited_file_path, i, csv_file_rainfall_data_all):\n", + " df = pd.read_csv(edited_file_path + i)\n", + " df[\"PrecipStation\"] = i[0:-4]\n", + " # if file does not exist write header \n", + " if not isfile(csv_file_rainfall_data_all):\n", + " df.to_csv(csv_file_rainfall_data_all, index =False)\n", + " else: # else it exists so append without writing the header\n", + " df.to_csv(csv_file_rainfall_data_all, index=False, mode='a', header=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the CML data, if the label says 00:00 then that means it contains data for next 15 minutes. we have \n", + "calculated the attenuation for the time period 00:00 -00:15\n", + "\n", + "we used that convention here as well.\n", + "if the data says 11:15 then,\n", + "that means the sum of the readings at 11:20,11:25,11:30" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IMPORTANT : this code require the file name to be same as the weather station name used in the CML data file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please Uncomment as the weather stations you have" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def data_integration(csv_path_cml, csv_path_rainfall, integrated_file_loc):\n", + " \n", + " cml_data_frame = pd.read_csv(csv_path_cml, index_col=[2,1])\n", + " \n", + " currently_using_stns = [\"Ibattara 2\", \"Orugodawatta\", \"Kottawa North Dharmapala School\", \"Waga\"]\n", + " \n", + "# # creating different dataframes for each weather station\n", + "# ambewela_cml_df = cml_data_frame.loc[\"Ambewela\"]\n", + "# dickOya_cml_df = cml_data_frame.loc[\"Dick oya\"]\n", + "# hingurana_cml_df = cml_data_frame.loc[\"Hingurana\"]\n", + "# jaffna_cml_df = cml_data_frame.loc[\"Jaffna\"]\n", + "# mahapallegama_cml_df = cml_data_frame.loc[\"Mahapallegama\"]\n", + "# malabe_cml_df = cml_data_frame.loc[\"Malabe\"]\n", + "# mulleriyawa_cml_df = cml_data_frame.loc[\"Mulleriyawa\"]\n", + "# mutwal_cml_df = cml_data_frame.loc[\"Mutwal\"]\n", + " ibattara_cml_df = cml_data_frame.loc[\"Ibattara 2\"]\n", + " orugodawatta_cml_df = cml_data_frame.loc[\"Orugodawatta\"]\n", + "# thurstan_college_cml_df = cml_data_frame.loc[\"Thurstan College\"]\n", + "# uduwawala_cml_df = cml_data_frame.loc[\"Uduwawala\"]\n", + "# urumewella_cml_df = cml_data_frame.loc[\"Urumewella\"]\n", + " dhrmapala_scl_cml_df = cml_data_frame.loc[\"Kottawa North Dharmapala School\"]\n", + " waga_cml_df = cml_data_frame.loc[\"Waga\"]\n", + " \n", + " \n", + " weather_stations =['ambewela.csv', 'dick oya.csv', 'hingurana.csv', 'ibattara 2.csv', 'jaffna.csv', \n", + " 'kottawa north dharmapala school.csv', 'mahapallegama.csv', 'malabe.csv',\n", + " 'mulleriyawa.csv', 'mutwal.csv',\n", + " 'orugodawatta.csv', 'thurstan college.csv', 'uduwawala.csv', \n", + " 'urumewella.csv', 'waga.csv']\n", + " \n", + " \n", + " rainfall_data_frame = pd.read_csv(csv_path_rainfall, parse_dates=[\"date_time\"], index_col=[2,0])\n", + " \n", + " #creating different dataframes for each weather station rainfall data\n", + "# ambewela_rainfall_df = rainfall_data_frame.loc[\"Ambewela\"]\n", + "# dickOya_rainfall_df = rainfall_data_frame.loc[\"Dick oya\"]\n", + "# hingurana_rainfall_df = rainfall_data_frame.loc[\"Hingurana\"]\n", + "# jaffna_rainfall_df = rainfall_data_frame.loc[\"Jaffna\"]\n", + "# mahapallegama_rainfall_df = rainfall_data_frame.loc[\"Mahapallegama\"]\n", + "# malabe_rainfall_df = rainfall_data_frame.loc[\"Malabe\"]\n", + "# mulleriyawa_rainfall_df = rainfall_data_frame.loc[\"Mulleriyawa\"]\n", + "# mutwal_rainfall_df = rainfall_data_frame.loc[\"Mutwal\"]\n", + " ibattara_rainfall_df = rainfall_data_frame.loc[\"Ibattara 2\"]\n", + " orugodawatta_rainfall_df = rainfall_data_frame.loc[\"Orugodawatta\"]\n", + "# thurstan_college_rainfall_df = rainfall_data_frame.loc[\"Thurstan College\"]\n", + "# uduwawala_rainfall_df = rainfall_data_frame.loc[\"Uduwawala\"]\n", + "# urumewella_rainfall_df = rainfall_data_frame.loc[\"Urumewella\"]\n", + " dhrmapala_scl_rainfall_df = rainfall_data_frame.loc[\"Kottawa North Dharmapala School\"]\n", + " waga_rainfall_df = rainfall_data_frame.loc[\"Waga\"]\n", + " \n", + "# ambewela_rainfall_df[\"precipitation(mm)\"] = ambewela_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# ambewela_rainfall_df = ambewela_rainfall_df.dropna()\n", + "# ambewela_cml_df = ambewela_cml_df.merge(ambewela_rainfall_df, left_index=True, right_index=True)\n", + " \n", + " \n", + "# dickOya_rainfall_df[\"precipitation(mm)\"] = dickOya_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# dickOya_rainfall_df = dickOya_rainfall_df.dropna()\n", + "# dickOya_cml_df = dickOya_cml_df.merge(dickOya_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# hingurana_rainfall_df[\"precipitation(mm)\"] = hingurana_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# hingurana_rainfall_df = hingurana_rainfall_df.dropna()\n", + "# hingurana_cml_df = hingurana_cml_df.merge(hingurana_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# jaffna_rainfall_df[\"precipitation(mm)\"] = jaffna_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# jaffna_rainfall_df = jaffna_rainfall_df.dropna()\n", + "# jaffna_cml_df = jaffna_cml_df.merge(jaffna_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# mahapallegama_rainfall_df[\"precipitation(mm)\"] = mahapallegama_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# mahapallegama_rainfall_df = mahapallegama_rainfall_df.dropna()\n", + "# mahapallegama_cml_df = mahapallegama_cml_df.merge(mahapallegama_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# malabe_rainfall_df[\"precipitation(mm)\"] = malabe_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# malabe_rainfall_df = malabe_rainfall_df.dropna()\n", + "# malabe_cml_df = malabe_cml_df.merge(malabe_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# mulleriyawa_rainfall_df[\"precipitation(mm)\"] = mulleriyawa_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# mulleriyawa_rainfall_df = mulleriyawa_rainfall_df.dropna()\n", + "# mulleriyawa_cml_df = mulleriyawa_cml_df.merge(mulleriyawa_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# mutwal_rainfall_df[\"precipitation(mm)\"] = mutwal_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# mutwal_rainfall_df = mutwal_rainfall_df.dropna()\n", + "# mutwal_cml_df = mutwal_cml_df.merge(mutwal_rainfall_df, left_index=True, right_index=True)\n", + " \n", + " ibattara_rainfall_df[\"precipitation(mm)\"] = ibattara_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " ibattara_rainfall_df = ibattara_rainfall_df.dropna()\n", + " ibattara_cml_df = ibattara_cml_df.merge(ibattara_rainfall_df, left_index=True, right_index=True)\n", + " ibattara_cml_df.insert(1,\"PrecipStation\", \"Ibattara 2\")\n", + "\n", + " orugodawatta_rainfall_df[\"precipitation(mm)\"] = orugodawatta_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " orugodawatta_rainfall_df = orugodawatta_rainfall_df.dropna()\n", + " orugodawatta_cml_df = orugodawatta_cml_df.merge(orugodawatta_rainfall_df, left_index=True, right_index=True)\n", + " orugodawatta_cml_df.insert(1,\"PrecipStation\", \"Orugodawatta\")\n", + " \n", + "# thurstan_college_rainfall_df[\"precipitation(mm)\"] = thurstan_college_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# thurstan_college_rainfall_df = thurstan_college_rainfall_df.dropna()\n", + "# thurstan_college_cml_df = thurstan_college_cml_df.merge(thurstan_college_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# uduwawala_rainfall_df[\"precipitation(mm)\"] = uduwawala_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# uduwawala_rainfall_df = uduwawala_rainfall_df.dropna()\n", + "# uduwawala_cml_df = uduwawala_cml_df.merge(uduwawala_rainfall_df, left_index=True, right_index=True)\n", + " \n", + "# urumewella_rainfall_df[\"precipitation(mm)\"] = urumewella_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + "# urumewella_rainfall_df = urumewella_rainfall_df.dropna()\n", + "# urumewella_cml_df = urumewella_cml_df.merge(urumewella_rainfall_df, left_index=True, right_index=True)\n", + " \n", + " dhrmapala_scl_rainfall_df[\"precipitation(mm)\"] = dhrmapala_scl_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " dhrmapala_scl_rainfall_df = dhrmapala_scl_rainfall_df.dropna()\n", + " dhrmapala_scl_cml_df = dhrmapala_scl_cml_df.merge(dhrmapala_scl_rainfall_df, left_index=True, right_index=True)\n", + " dhrmapala_scl_cml_df.insert(1,\"PrecipStation\", \"Kottawa North Dharmapala School\")\n", + " \n", + " waga_rainfall_df[\"precipitation(mm)\"] = waga_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", + " waga_rainfall_df = waga_rainfall_df.dropna()\n", + " waga_cml_df = waga_cml_df.merge(waga_rainfall_df, left_index=True, right_index=True)\n", + " dhrmapala_scl_cml_df\n", + " waga_cml_df.insert(1,\"PrecipStation\", \"Waga\")\n", + " \n", + " all_data_frames = [ibattara_cml_df,orugodawatta_cml_df,\n", + "# ambewela_cml_df, dickOya_cml_df, hingurana_cml_df, \n", + "# jaffna_cml_df,\n", + "# mahapallegama_cml_df, \n", + "# malabe_cml_df, mulleriyawa_cml_df, mutwal_cml_df, \n", + "# thurstan_college_cml_df,\n", + "# uduwawala_cml_df, urumewella_cml_df, \n", + " dhrmapala_scl_cml_df,waga_cml_df]\n", + " \n", + " final_data_frame = pd.concat(all_data_frames)\n", + " \n", + "# for df in all_data_frames:\n", + "# if not isfile(integrated_file_loc):\n", + "# df.to_csv(integrated_file_loc)\n", + "# else: # else it exists so append without writing the header\n", + "# df.to_csv(integrated_file_loc, mode='a', header=False)\n", + " \n", + " final_data_frame.to_csv(integrated_file_loc, index_label= \"date_time\")\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Ambewela.csv', 'Dick oya.csv', 'Hingurana.csv', 'Ibattara 2.csv', 'Jaffna.csv', 'Kottawa North Dharmapala School.csv', 'Mahapallegama.csv', 'Malabe.csv', 'Mulleriyawa.csv', 'Mutwal.csv', 'Orugodawatta.csv', 'Thurstan College.csv', 'Uduwawala.csv', 'Urumewella.csv', 'Waga.csv']\n" + ] + } + ], + "source": [ + "get_all_files(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08 to 2018-05-15.csv\",\n", + " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/\", \n", + " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/rainfall_data_all.csv\",\n", + " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "below method is to create the classified data.\n", + "\n", + "in here, \n", + "\n", + "* 0 < A < 0.5 \n", + "* 0.5 <= B < 1.0 \n", + "* 1.0 <= C < 2.5 \n", + "* 2.5 <= D < 5.0 \n", + "* 5.0 <= E \n", + "\n", + "\n", + "* A = small rain\n", + "* B = Average Rain\n", + "* C = Above average\n", + "* D = Heavy rain\n", + "* E = Very Heavy rain" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "def classify_data(file_path):\n", + " \n", + " classify_data_frame = pd.read_csv(file_path, index_col=[0])\n", + " \n", + "# define bins 0-0.5, 0.6-1.0, 1.1-2.5, 2.6-5.0, 5.1-infinty\n", + " bins = [-1.0, 0.5, 1.0, 2.5, 5.0, 1000.0]\n", + " \n", + " group_names = [\"A\", \"B\", \"C\", \"D\", \"E\"]\n", + " \n", + " classify_data_frame[\"class\"] = pd.cut(classify_data_frame[\"precipitation(mm)\"], bins, labels=group_names)\n", + " new_file = file_path[0:-4] + \"_classified.csv\"\n", + " classify_data_frame.to_csv(new_file)\n", + " \n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "classify_data(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/data_integration.py b/data_integration.py index 6211afe..82a2216 100644 --- a/data_integration.py +++ b/data_integration.py @@ -50,3 +50,206 @@ def reduce_to_single_file(edited_file_path, i, csv_file_rainfall_data_all): else: # else it exists so append without writing the header df.to_csv(csv_file_rainfall_data_all, index=False, mode='a', header=False) + +# In the CML data, if the label says 00:00 then that means it contains data for next 15 minutes. we have +# calculated the attenuation for the time period 00:00 -00:15 +# +# we used that convention here as well. +# if the data says 11:15 then, +# that means the sum of the readings at 11:20,11:25,11:30 + +# IMPORTANT : this code require the file name to be same as the weather station name used in the CML data file + +# Please Uncomment as the weather stations you have + +# In[4]: + + +def data_integration(csv_path_cml, csv_path_rainfall, integrated_file_loc): + + cml_data_frame = pd.read_csv(csv_path_cml, index_col=[2,1]) + + currently_using_stns = ["Ibattara 2", "Orugodawatta", "Kottawa North Dharmapala School", "Waga"] + +# # creating different dataframes for each weather station +# ambewela_cml_df = cml_data_frame.loc["Ambewela"] +# dickOya_cml_df = cml_data_frame.loc["Dick oya"] +# hingurana_cml_df = cml_data_frame.loc["Hingurana"] +# jaffna_cml_df = cml_data_frame.loc["Jaffna"] +# mahapallegama_cml_df = cml_data_frame.loc["Mahapallegama"] +# malabe_cml_df = cml_data_frame.loc["Malabe"] +# mulleriyawa_cml_df = cml_data_frame.loc["Mulleriyawa"] +# mutwal_cml_df = cml_data_frame.loc["Mutwal"] + ibattara_cml_df = cml_data_frame.loc["Ibattara 2"] + orugodawatta_cml_df = cml_data_frame.loc["Orugodawatta"] +# thurstan_college_cml_df = cml_data_frame.loc["Thurstan College"] +# uduwawala_cml_df = cml_data_frame.loc["Uduwawala"] +# urumewella_cml_df = cml_data_frame.loc["Urumewella"] + dhrmapala_scl_cml_df = cml_data_frame.loc["Kottawa North Dharmapala School"] + waga_cml_df = cml_data_frame.loc["Waga"] + + + weather_stations =['ambewela.csv', 'dick oya.csv', 'hingurana.csv', 'ibattara 2.csv', 'jaffna.csv', + 'kottawa north dharmapala school.csv', 'mahapallegama.csv', 'malabe.csv', + 'mulleriyawa.csv', 'mutwal.csv', + 'orugodawatta.csv', 'thurstan college.csv', 'uduwawala.csv', + 'urumewella.csv', 'waga.csv'] + + + rainfall_data_frame = pd.read_csv(csv_path_rainfall, parse_dates=["date_time"], index_col=[2,0]) + + #creating different dataframes for each weather station rainfall data +# ambewela_rainfall_df = rainfall_data_frame.loc["Ambewela"] +# dickOya_rainfall_df = rainfall_data_frame.loc["Dick oya"] +# hingurana_rainfall_df = rainfall_data_frame.loc["Hingurana"] +# jaffna_rainfall_df = rainfall_data_frame.loc["Jaffna"] +# mahapallegama_rainfall_df = rainfall_data_frame.loc["Mahapallegama"] +# malabe_rainfall_df = rainfall_data_frame.loc["Malabe"] +# mulleriyawa_rainfall_df = rainfall_data_frame.loc["Mulleriyawa"] +# mutwal_rainfall_df = rainfall_data_frame.loc["Mutwal"] + ibattara_rainfall_df = rainfall_data_frame.loc["Ibattara 2"] + orugodawatta_rainfall_df = rainfall_data_frame.loc["Orugodawatta"] +# thurstan_college_rainfall_df = rainfall_data_frame.loc["Thurstan College"] +# uduwawala_rainfall_df = rainfall_data_frame.loc["Uduwawala"] +# urumewella_rainfall_df = rainfall_data_frame.loc["Urumewella"] + dhrmapala_scl_rainfall_df = rainfall_data_frame.loc["Kottawa North Dharmapala School"] + waga_rainfall_df = rainfall_data_frame.loc["Waga"] + +# ambewela_rainfall_df["precipitation(mm)"] = ambewela_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# ambewela_rainfall_df = ambewela_rainfall_df.dropna() +# ambewela_cml_df = ambewela_cml_df.merge(ambewela_rainfall_df, left_index=True, right_index=True) + + +# dickOya_rainfall_df["precipitation(mm)"] = dickOya_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# dickOya_rainfall_df = dickOya_rainfall_df.dropna() +# dickOya_cml_df = dickOya_cml_df.merge(dickOya_rainfall_df, left_index=True, right_index=True) + +# hingurana_rainfall_df["precipitation(mm)"] = hingurana_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# hingurana_rainfall_df = hingurana_rainfall_df.dropna() +# hingurana_cml_df = hingurana_cml_df.merge(hingurana_rainfall_df, left_index=True, right_index=True) + +# jaffna_rainfall_df["precipitation(mm)"] = jaffna_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# jaffna_rainfall_df = jaffna_rainfall_df.dropna() +# jaffna_cml_df = jaffna_cml_df.merge(jaffna_rainfall_df, left_index=True, right_index=True) + +# mahapallegama_rainfall_df["precipitation(mm)"] = mahapallegama_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# mahapallegama_rainfall_df = mahapallegama_rainfall_df.dropna() +# mahapallegama_cml_df = mahapallegama_cml_df.merge(mahapallegama_rainfall_df, left_index=True, right_index=True) + +# malabe_rainfall_df["precipitation(mm)"] = malabe_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# malabe_rainfall_df = malabe_rainfall_df.dropna() +# malabe_cml_df = malabe_cml_df.merge(malabe_rainfall_df, left_index=True, right_index=True) + +# mulleriyawa_rainfall_df["precipitation(mm)"] = mulleriyawa_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# mulleriyawa_rainfall_df = mulleriyawa_rainfall_df.dropna() +# mulleriyawa_cml_df = mulleriyawa_cml_df.merge(mulleriyawa_rainfall_df, left_index=True, right_index=True) + +# mutwal_rainfall_df["precipitation(mm)"] = mutwal_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# mutwal_rainfall_df = mutwal_rainfall_df.dropna() +# mutwal_cml_df = mutwal_cml_df.merge(mutwal_rainfall_df, left_index=True, right_index=True) + + ibattara_rainfall_df["precipitation(mm)"] = ibattara_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) + ibattara_rainfall_df = ibattara_rainfall_df.dropna() + ibattara_cml_df = ibattara_cml_df.merge(ibattara_rainfall_df, left_index=True, right_index=True) + ibattara_cml_df.insert(1,"PrecipStation", "Ibattara 2") + + orugodawatta_rainfall_df["precipitation(mm)"] = orugodawatta_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) + orugodawatta_rainfall_df = orugodawatta_rainfall_df.dropna() + orugodawatta_cml_df = orugodawatta_cml_df.merge(orugodawatta_rainfall_df, left_index=True, right_index=True) + orugodawatta_cml_df.insert(1,"PrecipStation", "Orugodawatta") + +# thurstan_college_rainfall_df["precipitation(mm)"] = thurstan_college_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# thurstan_college_rainfall_df = thurstan_college_rainfall_df.dropna() +# thurstan_college_cml_df = thurstan_college_cml_df.merge(thurstan_college_rainfall_df, left_index=True, right_index=True) + +# uduwawala_rainfall_df["precipitation(mm)"] = uduwawala_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# uduwawala_rainfall_df = uduwawala_rainfall_df.dropna() +# uduwawala_cml_df = uduwawala_cml_df.merge(uduwawala_rainfall_df, left_index=True, right_index=True) + +# urumewella_rainfall_df["precipitation(mm)"] = urumewella_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) +# urumewella_rainfall_df = urumewella_rainfall_df.dropna() +# urumewella_cml_df = urumewella_cml_df.merge(urumewella_rainfall_df, left_index=True, right_index=True) + + dhrmapala_scl_rainfall_df["precipitation(mm)"] = dhrmapala_scl_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) + dhrmapala_scl_rainfall_df = dhrmapala_scl_rainfall_df.dropna() + dhrmapala_scl_cml_df = dhrmapala_scl_cml_df.merge(dhrmapala_scl_rainfall_df, left_index=True, right_index=True) + dhrmapala_scl_cml_df.insert(1,"PrecipStation", "Kottawa North Dharmapala School") + + waga_rainfall_df["precipitation(mm)"] = waga_rainfall_df["precipitation(mm)"].resample("15Min", closed="right", label="right").sum(min_count=3) + waga_rainfall_df = waga_rainfall_df.dropna() + waga_cml_df = waga_cml_df.merge(waga_rainfall_df, left_index=True, right_index=True) + dhrmapala_scl_cml_df + waga_cml_df.insert(1,"PrecipStation", "Waga") + + all_data_frames = [ibattara_cml_df,orugodawatta_cml_df, +# ambewela_cml_df, dickOya_cml_df, hingurana_cml_df, +# jaffna_cml_df, +# mahapallegama_cml_df, +# malabe_cml_df, mulleriyawa_cml_df, mutwal_cml_df, +# thurstan_college_cml_df, +# uduwawala_cml_df, urumewella_cml_df, + dhrmapala_scl_cml_df,waga_cml_df] + + final_data_frame = pd.concat(all_data_frames) + +# for df in all_data_frames: +# if not isfile(integrated_file_loc): +# df.to_csv(integrated_file_loc) +# else: # else it exists so append without writing the header +# df.to_csv(integrated_file_loc, mode='a', header=False) + + final_data_frame.to_csv(integrated_file_loc, index_label= "date_time") + + + +# In[5]: + + +get_all_files("/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08 to 2018-05-15.csv", + "/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/", + "/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/rainfall_data_all.csv", + "/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv") + + +# below method is to create the classified data. +# +# in here, +# +# * 0 < A < 0.5 +# * 0.5 <= B < 1.0 +# * 1.0 <= C < 2.5 +# * 2.5 <= D < 5.0 +# * 5.0 <= E +# +# +# * A = small rain +# * B = Average Rain +# * C = Above average +# * D = Heavy rain +# * E = Very Heavy rain + +# In[30]: + + +def classify_data(file_path): + + classify_data_frame = pd.read_csv(file_path, index_col=[0]) + +# define bins 0-0.5, 0.6-1.0, 1.1-2.5, 2.6-5.0, 5.1-infinty + bins = [-1.0, 0.5, 1.0, 2.5, 5.0, 1000.0] + + group_names = ["A", "B", "C", "D", "E"] + + classify_data_frame["class"] = pd.cut(classify_data_frame["precipitation(mm)"], bins, labels=group_names) + new_file = file_path[0:-4] + "_classified.csv" + classify_data_frame.to_csv(new_file) + + + + + +# In[31]: + + +classify_data("/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv") + diff --git a/graphs_to_visualize_data.ipynb b/graphs_to_visualize_data.ipynb new file mode 100644 index 0000000..a92688f --- /dev/null +++ b/graphs_to_visualize_data.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plot\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below function will create maps for a particular link. Map will include,\n", + "* rainfall for the particular time period\n", + "* attenuation" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "file_loc =\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\"\n", + "weather_station = \"Ibattara 2\"\n", + "link_id = 557\n", + "link_id_list = [557, 1726, 1727, 1204]\n", + "df = pd.read_csv(file_loc, index_col=[2,1,0])\n", + "df_for_stn = df.loc[weather_station]\n", + "df_for_stn_link = df_for_stn.loc[link_id]\n", + "\n", + "# df_for_stn_link[\"PAttAvg\"] = df_for_stn_link[\"PAttAvg\"].apply(lambda x: x + 0.8)\n", + "# df_for_stn_link[\"precipitation(mm)\"] = df_for_stn_link[\"precipitation(mm)\"].apply(lambda x: x*(8.1282/10000) + 0.88)\n", + "\n", + "df_for_stn_link[\"precipitation(mm)\"].plot() \n", + "# df_for_stn_link[\"PAttAvg\"].plot()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_for_stn_link[\"PAttAvg\"].plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/akalanka/.local/lib/python3.6/site-packages/ipykernel_launcher.py:9: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " if __name__ == '__main__':\n", + "/home/akalanka/.local/lib/python3.6/site-packages/ipykernel_launcher.py:10: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " # Remove the CWD from sys.path while we load stuff.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# create_maps(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 1aee97b1a60f323102fc43c4da5387223baaa238 Mon Sep 17 00:00:00 2001 From: Akalanka Date: Thu, 21 Jun 2018 15:46:45 +0530 Subject: [PATCH 6/6] Revert "jupyter notebook file - 2" This reverts commit d5bf57d --- .../data_integration-checkpoint.ipynb | 358 ------------ .ipynb_checkpoints/test-checkpoint.ipynb | 511 ------------------ 2 files changed, 869 deletions(-) delete mode 100644 .ipynb_checkpoints/data_integration-checkpoint.ipynb delete mode 100644 .ipynb_checkpoints/test-checkpoint.ipynb diff --git a/.ipynb_checkpoints/data_integration-checkpoint.ipynb b/.ipynb_checkpoints/data_integration-checkpoint.ipynb deleted file mode 100644 index 4c27b92..0000000 --- a/.ipynb_checkpoints/data_integration-checkpoint.ipynb +++ /dev/null @@ -1,358 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Script to integrate the rainfall data from CUrW and attenuation data from Dialog Axiata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IMPORTANT : This script is hard coded to this specific task. it is heavily dependent on some requirements. So please make sure to follow the exact steps metioned below." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from os import listdir\n", - "from os.path import isfile, join\n", - "from datetime import datetime, timedelta\n", - "import time" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IMPORTANT : please comment out the reduce_to_single_file() method if you have run it once or already have the file with all weather stations" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# folder_path : Path to CML data file.\n", - "# edited_file_path : Path to folder which contained station wise weather data. \n", - "# csv_file_rainfall_data_all : Path to file all rainfall data \n", - "# integrated_file_loc : location of the final integrated file\n", - "def get_all_files(folder_path, edited_file_path, csv_file_rainfall_data_all, integrated_file_loc):\n", - "# Read the file names in a folder path\n", - " onlyfiles = [f for f in listdir(edited_file_path) if (isfile(join(edited_file_path, f)) and (not f.startswith(\".\")))]\n", - " print(onlyfiles)\n", - "\n", - " for i in onlyfiles:\n", - " reduce_to_single_file(edited_file_path,i, csv_file_rainfall_data_all)\n", - " data_integration(folder_path, csv_file_rainfall_data_all, integrated_file_loc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below method reduce all the files in to a single file. \n", - "IMPORTATNT : This method must run only once. otherwise it will keep appending the same file over and over. You will get an completely wrong precipitation. because if you append the same file twice you get twice the percipitation as correct one." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "global count\n", - "def reduce_to_single_file(edited_file_path, i, csv_file_rainfall_data_all):\n", - " df = pd.read_csv(edited_file_path + i)\n", - " df[\"PrecipStation\"] = i[0:-4]\n", - " # if file does not exist write header \n", - " if not isfile(csv_file_rainfall_data_all):\n", - " df.to_csv(csv_file_rainfall_data_all, index =False)\n", - " else: # else it exists so append without writing the header\n", - " df.to_csv(csv_file_rainfall_data_all, index=False, mode='a', header=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the CML data, if the label says 00:00 then that means it contains data for next 15 minutes. we have \n", - "calculated the attenuation for the time period 00:00 -00:15\n", - "\n", - "we used that convention here as well.\n", - "if the data says 11:15 then,\n", - "that means the sum of the readings at 11:20,11:25,11:30" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "IMPORTANT : this code require the file name to be same as the weather station name used in the CML data file" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Please Uncomment as the weather stations you have" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "def data_integration(csv_path_cml, csv_path_rainfall, integrated_file_loc):\n", - " \n", - " cml_data_frame = pd.read_csv(csv_path_cml, index_col=[2,1])\n", - " \n", - " currently_using_stns = [\"Ibattara 2\", \"Orugodawatta\", \"Kottawa North Dharmapala School\", \"Waga\"]\n", - " \n", - "# # creating different dataframes for each weather station\n", - "# ambewela_cml_df = cml_data_frame.loc[\"Ambewela\"]\n", - "# dickOya_cml_df = cml_data_frame.loc[\"Dick oya\"]\n", - "# hingurana_cml_df = cml_data_frame.loc[\"Hingurana\"]\n", - "# jaffna_cml_df = cml_data_frame.loc[\"Jaffna\"]\n", - "# mahapallegama_cml_df = cml_data_frame.loc[\"Mahapallegama\"]\n", - "# malabe_cml_df = cml_data_frame.loc[\"Malabe\"]\n", - "# mulleriyawa_cml_df = cml_data_frame.loc[\"Mulleriyawa\"]\n", - "# mutwal_cml_df = cml_data_frame.loc[\"Mutwal\"]\n", - " ibattara_cml_df = cml_data_frame.loc[\"Ibattara 2\"]\n", - " orugodawatta_cml_df = cml_data_frame.loc[\"Orugodawatta\"]\n", - "# thurstan_college_cml_df = cml_data_frame.loc[\"Thurstan College\"]\n", - "# uduwawala_cml_df = cml_data_frame.loc[\"Uduwawala\"]\n", - "# urumewella_cml_df = cml_data_frame.loc[\"Urumewella\"]\n", - " dhrmapala_scl_cml_df = cml_data_frame.loc[\"Kottawa North Dharmapala School\"]\n", - " waga_cml_df = cml_data_frame.loc[\"Waga\"]\n", - " \n", - " \n", - " weather_stations =['ambewela.csv', 'dick oya.csv', 'hingurana.csv', 'ibattara 2.csv', 'jaffna.csv', \n", - " 'kottawa north dharmapala school.csv', 'mahapallegama.csv', 'malabe.csv',\n", - " 'mulleriyawa.csv', 'mutwal.csv',\n", - " 'orugodawatta.csv', 'thurstan college.csv', 'uduwawala.csv', \n", - " 'urumewella.csv', 'waga.csv']\n", - " \n", - " \n", - " rainfall_data_frame = pd.read_csv(csv_path_rainfall, parse_dates=[\"date_time\"], index_col=[2,0])\n", - " \n", - " #creating different dataframes for each weather station rainfall data\n", - "# ambewela_rainfall_df = rainfall_data_frame.loc[\"Ambewela\"]\n", - "# dickOya_rainfall_df = rainfall_data_frame.loc[\"Dick oya\"]\n", - "# hingurana_rainfall_df = rainfall_data_frame.loc[\"Hingurana\"]\n", - "# jaffna_rainfall_df = rainfall_data_frame.loc[\"Jaffna\"]\n", - "# mahapallegama_rainfall_df = rainfall_data_frame.loc[\"Mahapallegama\"]\n", - "# malabe_rainfall_df = rainfall_data_frame.loc[\"Malabe\"]\n", - "# mulleriyawa_rainfall_df = rainfall_data_frame.loc[\"Mulleriyawa\"]\n", - "# mutwal_rainfall_df = rainfall_data_frame.loc[\"Mutwal\"]\n", - " ibattara_rainfall_df = rainfall_data_frame.loc[\"Ibattara 2\"]\n", - " orugodawatta_rainfall_df = rainfall_data_frame.loc[\"Orugodawatta\"]\n", - "# thurstan_college_rainfall_df = rainfall_data_frame.loc[\"Thurstan College\"]\n", - "# uduwawala_rainfall_df = rainfall_data_frame.loc[\"Uduwawala\"]\n", - "# urumewella_rainfall_df = rainfall_data_frame.loc[\"Urumewella\"]\n", - " dhrmapala_scl_rainfall_df = rainfall_data_frame.loc[\"Kottawa North Dharmapala School\"]\n", - " waga_rainfall_df = rainfall_data_frame.loc[\"Waga\"]\n", - " \n", - "# ambewela_rainfall_df[\"precipitation(mm)\"] = ambewela_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# ambewela_rainfall_df = ambewela_rainfall_df.dropna()\n", - "# ambewela_cml_df = ambewela_cml_df.merge(ambewela_rainfall_df, left_index=True, right_index=True)\n", - " \n", - " \n", - "# dickOya_rainfall_df[\"precipitation(mm)\"] = dickOya_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# dickOya_rainfall_df = dickOya_rainfall_df.dropna()\n", - "# dickOya_cml_df = dickOya_cml_df.merge(dickOya_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# hingurana_rainfall_df[\"precipitation(mm)\"] = hingurana_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# hingurana_rainfall_df = hingurana_rainfall_df.dropna()\n", - "# hingurana_cml_df = hingurana_cml_df.merge(hingurana_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# jaffna_rainfall_df[\"precipitation(mm)\"] = jaffna_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# jaffna_rainfall_df = jaffna_rainfall_df.dropna()\n", - "# jaffna_cml_df = jaffna_cml_df.merge(jaffna_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# mahapallegama_rainfall_df[\"precipitation(mm)\"] = mahapallegama_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# mahapallegama_rainfall_df = mahapallegama_rainfall_df.dropna()\n", - "# mahapallegama_cml_df = mahapallegama_cml_df.merge(mahapallegama_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# malabe_rainfall_df[\"precipitation(mm)\"] = malabe_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# malabe_rainfall_df = malabe_rainfall_df.dropna()\n", - "# malabe_cml_df = malabe_cml_df.merge(malabe_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# mulleriyawa_rainfall_df[\"precipitation(mm)\"] = mulleriyawa_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# mulleriyawa_rainfall_df = mulleriyawa_rainfall_df.dropna()\n", - "# mulleriyawa_cml_df = mulleriyawa_cml_df.merge(mulleriyawa_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# mutwal_rainfall_df[\"precipitation(mm)\"] = mutwal_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# mutwal_rainfall_df = mutwal_rainfall_df.dropna()\n", - "# mutwal_cml_df = mutwal_cml_df.merge(mutwal_rainfall_df, left_index=True, right_index=True)\n", - " \n", - " ibattara_rainfall_df[\"precipitation(mm)\"] = ibattara_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - " ibattara_rainfall_df = ibattara_rainfall_df.dropna()\n", - " ibattara_cml_df = ibattara_cml_df.merge(ibattara_rainfall_df, left_index=True, right_index=True)\n", - " ibattara_cml_df.insert(1,\"PrecipStation\", \"Ibattara 2\")\n", - "\n", - " orugodawatta_rainfall_df[\"precipitation(mm)\"] = orugodawatta_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - " orugodawatta_rainfall_df = orugodawatta_rainfall_df.dropna()\n", - " orugodawatta_cml_df = orugodawatta_cml_df.merge(orugodawatta_rainfall_df, left_index=True, right_index=True)\n", - " orugodawatta_cml_df.insert(1,\"PrecipStation\", \"Orugodawatta\")\n", - " \n", - "# thurstan_college_rainfall_df[\"precipitation(mm)\"] = thurstan_college_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# thurstan_college_rainfall_df = thurstan_college_rainfall_df.dropna()\n", - "# thurstan_college_cml_df = thurstan_college_cml_df.merge(thurstan_college_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# uduwawala_rainfall_df[\"precipitation(mm)\"] = uduwawala_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# uduwawala_rainfall_df = uduwawala_rainfall_df.dropna()\n", - "# uduwawala_cml_df = uduwawala_cml_df.merge(uduwawala_rainfall_df, left_index=True, right_index=True)\n", - " \n", - "# urumewella_rainfall_df[\"precipitation(mm)\"] = urumewella_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - "# urumewella_rainfall_df = urumewella_rainfall_df.dropna()\n", - "# urumewella_cml_df = urumewella_cml_df.merge(urumewella_rainfall_df, left_index=True, right_index=True)\n", - " \n", - " dhrmapala_scl_rainfall_df[\"precipitation(mm)\"] = dhrmapala_scl_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - " dhrmapala_scl_rainfall_df = dhrmapala_scl_rainfall_df.dropna()\n", - " dhrmapala_scl_cml_df = dhrmapala_scl_cml_df.merge(dhrmapala_scl_rainfall_df, left_index=True, right_index=True)\n", - " dhrmapala_scl_cml_df.insert(1,\"PrecipStation\", \"Kottawa North Dharmapala School\")\n", - " \n", - " waga_rainfall_df[\"precipitation(mm)\"] = waga_rainfall_df[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\", label=\"right\").sum(min_count=3)\n", - " waga_rainfall_df = waga_rainfall_df.dropna()\n", - " waga_cml_df = waga_cml_df.merge(waga_rainfall_df, left_index=True, right_index=True)\n", - " dhrmapala_scl_cml_df\n", - " waga_cml_df.insert(1,\"PrecipStation\", \"Waga\")\n", - " \n", - " all_data_frames = [ibattara_cml_df,orugodawatta_cml_df,\n", - "# ambewela_cml_df, dickOya_cml_df, hingurana_cml_df, \n", - "# jaffna_cml_df,\n", - "# mahapallegama_cml_df, \n", - "# malabe_cml_df, mulleriyawa_cml_df, mutwal_cml_df, \n", - "# thurstan_college_cml_df,\n", - "# uduwawala_cml_df, urumewella_cml_df, \n", - " dhrmapala_scl_cml_df,waga_cml_df]\n", - " \n", - " final_data_frame = pd.concat(all_data_frames)\n", - " \n", - "# for df in all_data_frames:\n", - "# if not isfile(integrated_file_loc):\n", - "# df.to_csv(integrated_file_loc)\n", - "# else: # else it exists so append without writing the header\n", - "# df.to_csv(integrated_file_loc, mode='a', header=False)\n", - " \n", - " final_data_frame.to_csv(integrated_file_loc, index_label= \"date_time\")\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Ambewela.csv', 'Dick oya.csv', 'Hingurana.csv', 'Ibattara 2.csv', 'Jaffna.csv', 'Kottawa North Dharmapala School.csv', 'Mahapallegama.csv', 'Malabe.csv', 'Mulleriyawa.csv', 'Mutwal.csv', 'Orugodawatta.csv', 'Thurstan College.csv', 'Uduwawala.csv', 'Urumewella.csv', 'Waga.csv']\n" - ] - } - ], - "source": [ - "get_all_files(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08 to 2018-05-15.csv\",\n", - " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/\", \n", - " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/RAIN/curw/rainfall_data_all.csv\",\n", - " \"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "below method is to create the classified data.\n", - "\n", - "in here, \n", - "\n", - "* 0 < A < 0.5 \n", - "* 0.5 <= B < 1.0 \n", - "* 1.0 <= C < 2.5 \n", - "* 2.5 <= D < 5.0 \n", - "* 5.0 <= E \n", - "\n", - "\n", - "* A = small rain\n", - "* B = Average Rain\n", - "* C = Above average\n", - "* D = Heavy rain\n", - "* E = Very Heavy rain" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "def classify_data(file_path):\n", - " \n", - " classify_data_frame = pd.read_csv(file_path, index_col=[0])\n", - " \n", - "# define bins 0-0.5, 0.6-1.0, 1.1-2.5, 2.6-5.0, 5.1-infinty\n", - " bins = [-1.0, 0.5, 1.0, 2.5, 5.0, 1000.0]\n", - " \n", - " group_names = [\"A\", \"B\", \"C\", \"D\", \"E\"]\n", - " \n", - " classify_data_frame[\"class\"] = pd.cut(classify_data_frame[\"precipitation(mm)\"], bins, labels=group_names)\n", - " new_file = file_path[0:-4] + \"_classified.csv\"\n", - " classify_data_frame.to_csv(new_file)\n", - " \n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "classify_data(\"/media/akalanka/Engineering/Final_Year_Project/1_DATA/CML/Proccessed/Gayan/2018-05-08_to_2018-05-15_integrated.csv\")" - ] - }, - { - "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.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/.ipynb_checkpoints/test-checkpoint.ipynb b/.ipynb_checkpoints/test-checkpoint.ipynb deleted file mode 100644 index 4d7d936..0000000 --- a/.ipynb_checkpoints/test-checkpoint.ipynb +++ /dev/null @@ -1,511 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "cml_data_frame = pd.read_csv(\"/media/akalanka/Engineering/test/testcml.csv\", index_col=[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "rainfall_data = pd.read_csv(\"/media/akalanka/Engineering/test/Ambewela.csv\",parse_dates=[\"date_time\"], index_col=[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "rainfall_data[\"precipitation(mm)\"] = rainfall_data[\"precipitation(mm)\"].resample(\"15Min\", closed=\"right\").sum()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# rainfall_data = rainfall_data.dropna()" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ambewela\n" - ] - } - ], - "source": [ - "# rainfall_data[\"PrecipStation\"] = \"Orugodawatta\"" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [], - "source": [ - "# rainfall_data = rainfall_data.reset_index()" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "# rainfall_data = rainfall_data.set_index([\"date_time\", \"PrecipStation\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - "new = cml_data_frame.merge(rainfall_data, left_index=True, right_index=True)\n", - "# cml_data_frame" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDPrecipStationPRmaxPRminPTminPTmaxPRAvgPTAvgPAttAvgXStart...RSL_AVGTSL_MINTSL_MAXTSL_AVGXEndYEndPathLengthdistanceFrequencyprecipitation(mm)
2018-05-05 00:00:002901Orugodawatta6.025596e-075.495409e-070.0398110.0407385.754399e-070.0398110.0398106.952500...-32.41616.116.06.95958079.8625000.9083492.45122835100.0
2018-05-05 00:00:00807Orugodawatta1.122018e-061.000000e-060.0100000.0102331.071519e-060.0100000.0099996.922500...-29.71010.110.06.92063079.8623000.3044693.12879635100.0
2018-05-05 00:00:00406Orugodawatta6.165950e-075.888437e-070.0125890.0128826.025596e-070.0128820.0128826.911030...-32.21111.111.16.91555679.8838890.8584803.48633335100.0
2018-05-05 00:00:00407Orugodawatta6.918310e-076.456542e-070.0125890.0128826.760830e-070.0128820.0128826.911030...-31.71111.111.16.91555679.8838890.8584803.48633335100.0
2018-05-05 00:00:002274Orugodawatta6.760830e-076.309573e-070.0100000.0102336.606934e-070.0100000.0099996.931970...-31.81010.110.06.93677079.8725001.0885901.56983135100.0
2018-05-05 00:15:002570Orugodawatta6.760830e-075.370318e-070.0398110.0398116.606934e-070.0398110.0398106.969120...-31.81616.016.06.98694479.8800001.9756233.792714350.0
2018-05-05 00:15:002571Orugodawatta6.918310e-076.456542e-070.0398110.0407386.760830e-070.0398110.0398106.969120...-31.71616.116.06.98694479.8800001.9756233.792714350.0
2018-05-05 00:15:00564Orugodawatta1.071519e-061.023293e-060.0012590.0012881.047129e-060.0012880.0012876.911667...-29.811.11.16.90972279.8530560.3040934.703116350.0
2018-05-05 00:15:001393Orugodawatta4.786301e-064.168694e-060.0100000.0100004.365158e-060.0100000.0099966.953333...-23.61010.010.06.95016079.8641000.4613931.989798350.0
2018-05-05 00:15:001394Orugodawatta3.630781e-063.311311e-060.0100000.0102333.467369e-060.0100000.0099966.953333...-24.61010.110.06.95016079.8641000.4613931.989798350.0
2018-05-05 00:15:0069Orugodawatta4.570882e-074.265795e-070.0063100.0064574.365158e-070.0063100.0063096.946080...-33.688.18.06.94584079.8651000.5311011.280218350.0
\n", - "

11 rows × 23 columns

\n", - "
" - ], - "text/plain": [ - " ID PrecipStation PRmax PRmin PTmin \\\n", - "2018-05-05 00:00:00 2901 Orugodawatta 6.025596e-07 5.495409e-07 0.039811 \n", - "2018-05-05 00:00:00 807 Orugodawatta 1.122018e-06 1.000000e-06 0.010000 \n", - "2018-05-05 00:00:00 406 Orugodawatta 6.165950e-07 5.888437e-07 0.012589 \n", - "2018-05-05 00:00:00 407 Orugodawatta 6.918310e-07 6.456542e-07 0.012589 \n", - "2018-05-05 00:00:00 2274 Orugodawatta 6.760830e-07 6.309573e-07 0.010000 \n", - "2018-05-05 00:15:00 2570 Orugodawatta 6.760830e-07 5.370318e-07 0.039811 \n", - "2018-05-05 00:15:00 2571 Orugodawatta 6.918310e-07 6.456542e-07 0.039811 \n", - "2018-05-05 00:15:00 564 Orugodawatta 1.071519e-06 1.023293e-06 0.001259 \n", - "2018-05-05 00:15:00 1393 Orugodawatta 4.786301e-06 4.168694e-06 0.010000 \n", - "2018-05-05 00:15:00 1394 Orugodawatta 3.630781e-06 3.311311e-06 0.010000 \n", - "2018-05-05 00:15:00 69 Orugodawatta 4.570882e-07 4.265795e-07 0.006310 \n", - "\n", - " PTmax PRAvg PTAvg PAttAvg XStart \\\n", - "2018-05-05 00:00:00 0.040738 5.754399e-07 0.039811 0.039810 6.952500 \n", - "2018-05-05 00:00:00 0.010233 1.071519e-06 0.010000 0.009999 6.922500 \n", - "2018-05-05 00:00:00 0.012882 6.025596e-07 0.012882 0.012882 6.911030 \n", - "2018-05-05 00:00:00 0.012882 6.760830e-07 0.012882 0.012882 6.911030 \n", - "2018-05-05 00:00:00 0.010233 6.606934e-07 0.010000 0.009999 6.931970 \n", - "2018-05-05 00:15:00 0.039811 6.606934e-07 0.039811 0.039810 6.969120 \n", - "2018-05-05 00:15:00 0.040738 6.760830e-07 0.039811 0.039810 6.969120 \n", - "2018-05-05 00:15:00 0.001288 1.047129e-06 0.001288 0.001287 6.911667 \n", - "2018-05-05 00:15:00 0.010000 4.365158e-06 0.010000 0.009996 6.953333 \n", - "2018-05-05 00:15:00 0.010233 3.467369e-06 0.010000 0.009996 6.953333 \n", - "2018-05-05 00:15:00 0.006457 4.365158e-07 0.006310 0.006309 6.946080 \n", - "\n", - " ... RSL_AVG TSL_MIN TSL_MAX TSL_AVG \\\n", - "2018-05-05 00:00:00 ... -32.4 16 16.1 16.0 \n", - "2018-05-05 00:00:00 ... -29.7 10 10.1 10.0 \n", - "2018-05-05 00:00:00 ... -32.2 11 11.1 11.1 \n", - "2018-05-05 00:00:00 ... -31.7 11 11.1 11.1 \n", - "2018-05-05 00:00:00 ... -31.8 10 10.1 10.0 \n", - "2018-05-05 00:15:00 ... -31.8 16 16.0 16.0 \n", - "2018-05-05 00:15:00 ... -31.7 16 16.1 16.0 \n", - "2018-05-05 00:15:00 ... -29.8 1 1.1 1.1 \n", - "2018-05-05 00:15:00 ... -23.6 10 10.0 10.0 \n", - "2018-05-05 00:15:00 ... -24.6 10 10.1 10.0 \n", - "2018-05-05 00:15:00 ... -33.6 8 8.1 8.0 \n", - "\n", - " XEnd YEnd PathLength distance Frequency \\\n", - "2018-05-05 00:00:00 6.959580 79.862500 0.908349 2.451228 35 \n", - "2018-05-05 00:00:00 6.920630 79.862300 0.304469 3.128796 35 \n", - "2018-05-05 00:00:00 6.915556 79.883889 0.858480 3.486333 35 \n", - "2018-05-05 00:00:00 6.915556 79.883889 0.858480 3.486333 35 \n", - "2018-05-05 00:00:00 6.936770 79.872500 1.088590 1.569831 35 \n", - "2018-05-05 00:15:00 6.986944 79.880000 1.975623 3.792714 35 \n", - "2018-05-05 00:15:00 6.986944 79.880000 1.975623 3.792714 35 \n", - "2018-05-05 00:15:00 6.909722 79.853056 0.304093 4.703116 35 \n", - "2018-05-05 00:15:00 6.950160 79.864100 0.461393 1.989798 35 \n", - "2018-05-05 00:15:00 6.950160 79.864100 0.461393 1.989798 35 \n", - "2018-05-05 00:15:00 6.945840 79.865100 0.531101 1.280218 35 \n", - "\n", - " precipitation(mm) \n", - "2018-05-05 00:00:00 100.0 \n", - "2018-05-05 00:00:00 100.0 \n", - "2018-05-05 00:00:00 100.0 \n", - "2018-05-05 00:00:00 100.0 \n", - "2018-05-05 00:00:00 100.0 \n", - "2018-05-05 00:15:00 0.0 \n", - "2018-05-05 00:15:00 0.0 \n", - "2018-05-05 00:15:00 0.0 \n", - "2018-05-05 00:15:00 0.0 \n", - "2018-05-05 00:15:00 0.0 \n", - "2018-05-05 00:15:00 0.0 \n", - "\n", - "[11 rows x 23 columns]" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new" - ] - }, - { - "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.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}