{ "cells": [ { "cell_type": "markdown", "id": "b33f2ccc-3da3-4249-a66f-3c31112395bc", "metadata": { "tags": [] }, "source": [ "# Data Preparation\n", "- author: Hamid Ali Syed\n", "- email: hamidsyed37[at]gmail[dot]com" ] }, { "cell_type": "code", "execution_count": 1, "id": "db36b87f", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "import requests\n", "from bs4 import BeautifulSoup\n", "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "f7af8c06-aa6e-4624-aa8f-f4a47f005e6c", "metadata": {}, "source": [ "## Data collection\n", "### Let's do some Web Scrapping\n", "Let's do some Web Scrapping. We can scrap the radar site information from the website of the Indian Meteorological Department (IMD) and extract location information from the HTML using BeautifulSoup. Then, we can clean and transform the extracted data into a Pandas DataFrame, with longitude and latitude coordinates for each location. Finally, we can plot the DataFrame as a scatter plot using longitude and latitude as x and y axes, respectively." ] }, { "cell_type": "code", "execution_count": 2, "id": "63a3a1b8", "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", "
titlelatitudelongitude
2Bhopal23.25990077.412600
3Agartala23.83150091.286800
4Delhi28.56320077.191200
5Bhuj23.24200069.666900
6Chennai13.08270080.270700
7Panaji15.49090073.827800
8Gopalpur19.26470084.862000
9Hyderabad17.38500078.486700
10Jaipur26.91240075.787300
11Kolkata22.57260088.363900
12Kochi9.93120076.267300
13Karaikal10.92540079.838000
14Lucknow26.84670080.946200
15Machilipatnam16.19050081.136200
16Mumbai19.07600072.877700
17Nagpur21.14580079.088200
18Sohra25.27020091.732300
19Patiala30.33980076.386900
20Patna25.59410085.137600
21Srinagar34.08365674.797371
22Jammu32.92660074.857000
23Thiruvananthapuram8.52410076.936600
24Visakhapatnam17.68680083.218500
25Mohanbari27.47280094.912000
26Paradip20.31660086.611400
27Sriharikota13.72590080.226600
28Jot32.48680076.059300
29Murari30.78980078.917850
30Palam28.59010077.088800
31Mukteshwar29.46040079.655800
32Veravali19.73430072.876300
33Kufri31.09780077.267800
34Surkandaji30.41140078.288500
\n", "
" ], "text/plain": [ " title latitude longitude\n", "2 Bhopal 23.259900 77.412600\n", "3 Agartala 23.831500 91.286800\n", "4 Delhi 28.563200 77.191200\n", "5 Bhuj 23.242000 69.666900\n", "6 Chennai 13.082700 80.270700\n", "7 Panaji 15.490900 73.827800\n", "8 Gopalpur 19.264700 84.862000\n", "9 Hyderabad 17.385000 78.486700\n", "10 Jaipur 26.912400 75.787300\n", "11 Kolkata 22.572600 88.363900\n", "12 Kochi 9.931200 76.267300\n", "13 Karaikal 10.925400 79.838000\n", "14 Lucknow 26.846700 80.946200\n", "15 Machilipatnam 16.190500 81.136200\n", "16 Mumbai 19.076000 72.877700\n", "17 Nagpur 21.145800 79.088200\n", "18 Sohra 25.270200 91.732300\n", "19 Patiala 30.339800 76.386900\n", "20 Patna 25.594100 85.137600\n", "21 Srinagar 34.083656 74.797371\n", "22 Jammu 32.926600 74.857000\n", "23 Thiruvananthapuram 8.524100 76.936600\n", "24 Visakhapatnam 17.686800 83.218500\n", "25 Mohanbari 27.472800 94.912000\n", "26 Paradip 20.316600 86.611400\n", "27 Sriharikota 13.725900 80.226600\n", "28 Jot 32.486800 76.059300\n", "29 Murari 30.789800 78.917850\n", "30 Palam 28.590100 77.088800\n", "31 Mukteshwar 29.460400 79.655800\n", "32 Veravali 19.734300 72.876300\n", "33 Kufri 31.097800 77.267800\n", "34 Surkandaji 30.411400 78.288500" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ftervueee07Z2dme9319fVq5cqXns1atWqWBS9aZpqlnnnlGubm5io2N1cSJE/X73/8+OCcMwJARZgAE1eLFi3XgwAG9/fbb+stf/iLTNPX9739fX3/9tWef7u5u/fKXv9Qrr7yiiooKff7553r44Yc9259++mm99tprKisrU2Vlpdxut956663zfubWrVs1btw4PfHEEzp27JhXMLqQZ599Vv/+7/+uF198UXv27NHx48e1bds2r31++tOfqqysTJs2bdLhw4f14IMP6s4779Tu3bt9PzEAQobHTACCpqamRm+//bYqKys1depUSdJrr72mzMxMvfXWW/rBD34gSfr666/1/PPP6/LLL5ck3X///XriiSc8xyktLdUjjzyiW265RZK0ceNGvfvuu+f93KSkJMXExCghIUFpaWl+1fzcc8/pkUce0a233ipJev755/X+++97tnd1dWnDhg368MMPNWXKFElSbm6u9uzZoxdeeEHTp0/36/MABB9hBkDQfPbZZ7rooos0efJkT9uYMWN0xRVX6LPPPvO0xcXFeYKMJKWnp6u5uVmS1N7eri+//FKTJk3ybI+JidH3vvc99ff3B7Xe9vZ2HTt2zBNSJOmiiy7Stdde63nU9Omnn+qrr77S7NmzvX62t7dXBQUFQa0HQGAIMwCCZmBfkzPbT/djkeQ1CkmSDMM462fP3H+wYw9mxIgRZ/3cmY+7fHE6QL3zzju69NJLvbY5HA6/awIQfPSZARA0V111lU6dOqWPPvrI09ba2qq//e1vmjBhgk/HcDqdSk1N1ccff+xp6+vrU1VV1aA/N2rUKPX19Xm1paSkqKmpySvQVFdXe31Wenq69u3b52k7deqUDh486PVncjgc+vzzz5WXl+f1yszM9OnPBCC0uDMDIGjy8/M1b9483XPPPXrhhReUkJCgn/zkJ7r00ks1b948n4+zfPlyrVu3Tnl5ebryyitVWlqqEydOnHW35kzZ2dmqqKjQD3/4QzkcDiUnJ2vGjBlyuVx65pln9A//8A/avn273nvvPSUmJnp+7oEHHtD69euVn5+vCRMmaMOGDWpra/NsT0hI0MMPP6wHH3xQ/f39uuGGG+R2u7V3717Fx8dr0aJFAZ0rAMHDnRkAQVVWVqbvfe97+vu//3tNmTJFpmnq3XffPevR0mBWr16t4uJiLVy4UFOmTFF8fLxuvPFGXXzxxef9mSeeeEINDQ26/PLLlZKSIkmaMGGCfvOb3+jXv/61Jk6cqI8//thr1JQkPfTQQ1q4cKEWL16sKVOmKCEhwdPx+LQnn3xSP//5z7Vu3TpNmDBBN954o/7jP/5DOTk5fpwZAKFimIE8iAaAMOrv79eECRN022236cknn7S6HAARhsdMACJOY2OjPvjgA02fPl09PT3auHGj6uvrdccdd1hdGoAIxGMmABFnxIgReumll3Tddddp2rRpOnTokP70pz/53IkYwPDCYyYAAGBr3JkBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC2RpgBAAC29v8BbPnB2TQy+w0AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "url = \"https://mausam.imd.gov.in/imd_latest/contents/index_radar.php\"\n", "response = requests.get(url)\n", "soup = BeautifulSoup(response.text, \"html.parser\")\n", "\n", "# extract the relevant part of the HTML\n", "images_html = soup.find_all(\"script\")[-2].text.split(\"images: [\")[0].split(\"],\\n\")[0]\n", "\n", "# split the HTML into individual locations and extract the relevant information\n", "locations = []\n", "for image in soup.find_all(\"script\")[-2].text.split(\"images: [\")[0].split(\"],\\n\")[0].split(\"{\")[1:]:\n", " location_dict = {}\n", " for line in image.split(\"\\n\"):\n", " if \"title\" in line:\n", " location_dict[\"title\"] = line.split(\": \")[-1].strip(',')\n", " elif \"latitude\" in line:\n", " location_dict[\"latitude\"] = line.split(\": \")[-1].strip(',')\n", " elif \"longitude\" in line:\n", " location_dict[\"longitude\"] = line.split(\": \")[-1].strip(',')\n", " locations.append(location_dict)\n", "\n", "# create a DataFrame from the list of dictionaries\n", "df = pd.DataFrame(locations)\n", "df = df.dropna()\n", "df['title'] = df['title'].str.strip(\", \").str.strip('\"')\n", "df['longitude'] = df['longitude'].str.strip(\", \").str.strip('longitude\":')\n", "df['latitude'] = df['latitude'].astype(float)\n", "df['longitude'] = df['longitude'].astype(float)\n", "df['title'].replace(\"Goa\", \"Panaji\", inplace=True)\n", "df.plot(kind='scatter', x='longitude', y='latitude')\n", "df" ] }, { "cell_type": "markdown", "id": "9ae3dbcc-a3a8-4031-8b5d-1d4cff27c38b", "metadata": {}, "source": [ "We have procured the name, lat, & lon info of all the radar sites and is saved in `df`. Now, let's search for their frequency bands. I have found a webpage on the IMD website that contains this information for most of the radars. Let's make a request to a URL and create a BeautifulSoup object to parse the HTML content. It will find a table on the page, then we can extract the headers and rows of the table, and create a Pandas DataFrame `df2` from the table data.\n", "

Drop the \"S No\" column, clean up the \"Type of DWR\" and \"DWR Station\" columns by removing certain text, and replace some values in the \"DWR Station\" column.

" ] }, { "cell_type": "code", "execution_count": 3, "id": "0abe8be4", "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", "
DWR StationStateType of DWR
0AgartalaTripuraS
1BhopalMadhya PradeshS
2BhujGujaratS
3ChennaiTamil NaduS
4CherrapunjeeMeghalayaS
5PalamDelhiS
6PanajiGoaS
7GopalpurOdishaS
8HyderabadTelanganaS
9JaipurRajasthanC
10KolkataWest BengalS
11KochiKeralaS
12KaraikalTamil NaduS
13LucknowUttar PradeshS
14MachilipatnamAndhra PradeshS
15MohanbariAssamS
16MumbaiMaharashtraS
17NagpurMaharashtraS
18New DelhiDelhiC
19ParadipOdishaS
20PatialaPunjabS
21PatnaBiharS
22SrinagarJammu and KashmirX
23ThiruvananthapuramKeralaC
24VisakhapatnamAndhra PradeshS
\n", "
" ], "text/plain": [ " DWR Station State Type of DWR\n", "0 Agartala Tripura S\n", "1 Bhopal Madhya Pradesh S\n", "2 Bhuj Gujarat S\n", "3 Chennai Tamil Nadu S\n", "4 Cherrapunjee Meghalaya S\n", "5 Palam Delhi S\n", "6 Panaji Goa S\n", "7 Gopalpur Odisha S\n", "8 Hyderabad Telangana S\n", "9 Jaipur Rajasthan C\n", "10 Kolkata West Bengal S\n", "11 Kochi Kerala S\n", "12 Karaikal Tamil Nadu S\n", "13 Lucknow Uttar Pradesh S\n", "14 Machilipatnam Andhra Pradesh S\n", "15 Mohanbari Assam S\n", "16 Mumbai Maharashtra S\n", "17 Nagpur Maharashtra S\n", "18 New Delhi Delhi C\n", "19 Paradip Odisha S\n", "20 Patiala Punjab S\n", "21 Patna Bihar S\n", "22 Srinagar Jammu and Kashmir X\n", "23 Thiruvananthapuram Kerala C\n", "24 Visakhapatnam Andhra Pradesh S" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a request to the URL\n", "url = \"https://mausam.imd.gov.in/imd_latest/contents/imd-dwr-network.php\"\n", "response = requests.get(url)\n", "\n", "# create a BeautifulSoup object\n", "soup = BeautifulSoup(response.content, \"html.parser\")\n", "\n", "# find the table on the page\n", "table = soup.find(\"table\")\n", "\n", "# extract the table headers\n", "headers = [header.text.strip() for header in table.find_all(\"th\")]\n", "\n", "# extract the table rows\n", "rows = []\n", "for row in table.find_all(\"tr\")[1:]:\n", " cells = [cell.text.strip() for cell in row.find_all(\"td\")]\n", " rows.append(cells)\n", "\n", "# create a DataFrame from the table data\n", "df2 = pd.DataFrame(rows, columns=headers)\n", "df2.drop(\"S No\", axis=1, inplace=True)\n", "df2['Type of DWR'] = df2['Type of DWR'].str.replace(' - Band', '')\n", "df2['DWR Station'].replace('Delhi (Palam)', 'Palam', inplace=True)\n", "df2['DWR Station'] = df2['DWR Station'].str.replace('\\(ISRO\\)', '').str.replace('\\(Mausam Bhawan\\)', \n", " '').str.strip()\n", "df2" ] }, { "cell_type": "markdown", "id": "2cc3fa68-a30c-48a7-b828-c55cb3a2d87a", "metadata": {}, "source": [ "Let's merge two previously created Pandas DataFrames, `df` and `df2`, using the \"title\" and \"DWR Station\" columns as keys, respectively. It will drop the \"DWR Station\" column, rename the \"Type of DWR\" column as \"Band\", and replace some values in the \"title\" column. The code will count the number of NaN values in the \"Band\" column, print this count, and return the resulting merged DataFrame." ] }, { "cell_type": "code", "execution_count": 4, "id": "a54b7e89", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n" ] }, { "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", "
titlelatitudelongitudeStateBand
0Bhopal23.25990077.412600Madhya PradeshS
1Agartala23.83150091.286800TripuraS
2Delhi28.56320077.191200NaNNaN
3Bhuj23.24200069.666900GujaratS
4Chennai13.08270080.270700Tamil NaduS
5Panaji15.49090073.827800GoaS
6Gopalpur19.26470084.862000OdishaS
7Hyderabad17.38500078.486700TelanganaS
8Jaipur26.91240075.787300RajasthanC
9Kolkata22.57260088.363900West BengalS
10Kochi9.93120076.267300KeralaS
11Karaikal10.92540079.838000Tamil NaduS
12Lucknow26.84670080.946200Uttar PradeshS
13Machilipatnam16.19050081.136200Andhra PradeshS
14Mumbai19.07600072.877700MaharashtraS
15Nagpur21.14580079.088200MaharashtraS
16Sohra25.27020091.732300NaNNaN
17Patiala30.33980076.386900PunjabS
18Patna25.59410085.137600BiharS
19Srinagar34.08365674.797371Jammu and KashmirX
20Jammu32.92660074.857000NaNNaN
21Thiruvananthapuram8.52410076.936600KeralaC
22Visakhapatnam17.68680083.218500Andhra PradeshS
23Mohanbari27.47280094.912000AssamS
24Paradip20.31660086.611400OdishaS
25Sriharikota13.72590080.226600NaNNaN
26Jot32.48680076.059300NaNNaN
27Murari30.78980078.917850NaNNaN
28Palam28.59010077.088800DelhiS
29Mukteshwar29.46040079.655800NaNNaN
30Veravali19.73430072.876300NaNNaN
31Kufri31.09780077.267800NaNNaN
32Surkandaji30.41140078.288500NaNNaN
\n", "
" ], "text/plain": [ " title latitude longitude State Band\n", "0 Bhopal 23.259900 77.412600 Madhya Pradesh S\n", "1 Agartala 23.831500 91.286800 Tripura S\n", "2 Delhi 28.563200 77.191200 NaN NaN\n", "3 Bhuj 23.242000 69.666900 Gujarat S\n", "4 Chennai 13.082700 80.270700 Tamil Nadu S\n", "5 Panaji 15.490900 73.827800 Goa S\n", "6 Gopalpur 19.264700 84.862000 Odisha S\n", "7 Hyderabad 17.385000 78.486700 Telangana S\n", "8 Jaipur 26.912400 75.787300 Rajasthan C\n", "9 Kolkata 22.572600 88.363900 West Bengal S\n", "10 Kochi 9.931200 76.267300 Kerala S\n", "11 Karaikal 10.925400 79.838000 Tamil Nadu S\n", "12 Lucknow 26.846700 80.946200 Uttar Pradesh S\n", "13 Machilipatnam 16.190500 81.136200 Andhra Pradesh S\n", "14 Mumbai 19.076000 72.877700 Maharashtra S\n", "15 Nagpur 21.145800 79.088200 Maharashtra S\n", "16 Sohra 25.270200 91.732300 NaN NaN\n", "17 Patiala 30.339800 76.386900 Punjab S\n", "18 Patna 25.594100 85.137600 Bihar S\n", "19 Srinagar 34.083656 74.797371 Jammu and Kashmir X\n", "20 Jammu 32.926600 74.857000 NaN NaN\n", "21 Thiruvananthapuram 8.524100 76.936600 Kerala C\n", "22 Visakhapatnam 17.686800 83.218500 Andhra Pradesh S\n", "23 Mohanbari 27.472800 94.912000 Assam S\n", "24 Paradip 20.316600 86.611400 Odisha S\n", "25 Sriharikota 13.725900 80.226600 NaN NaN\n", "26 Jot 32.486800 76.059300 NaN NaN\n", "27 Murari 30.789800 78.917850 NaN NaN\n", "28 Palam 28.590100 77.088800 Delhi S\n", "29 Mukteshwar 29.460400 79.655800 NaN NaN\n", "30 Veravali 19.734300 72.876300 NaN NaN\n", "31 Kufri 31.097800 77.267800 NaN NaN\n", "32 Surkandaji 30.411400 78.288500 NaN NaN" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "merged_df = df.merge(df2, left_on='title', right_on='DWR Station', how='left')\n", "merged_df = merged_df.drop(columns=['DWR Station'])\n", "merged_df = merged_df.rename(columns={'Type of DWR': 'Band'})\n", "merged_df['title'].replace(\"Goa\", \"Panaji\", inplace=True)\n", "num_nans = merged_df['Band'].isna().sum()\n", "print(num_nans)\n", "merged_df" ] }, { "cell_type": "markdown", "id": "53cac177-70e8-46ed-9771-735a8de4eee0", "metadata": {}, "source": [ "Since there are NaN values in the \"State\" column, we can find the state names using lat and lon info. We can use the Cartopy library to create a map of India with state boundaries and labels. Then we will create a pandas DataFrame `gdf` containing the latitude and longitude coordinates of each state and union territory, and try to map the names of these places in the `merged_df`" ] }, { "cell_type": "code", "execution_count": 5, "id": "961bf3d5", "metadata": {}, "outputs": [], "source": [ "import cartopy.io.shapereader as shpreader\n", "import geopandas as gpd\n", "# Load the Natural Earth dataset\n", "states_shp = shpreader.natural_earth(resolution='10m',\n", " category='cultural',\n", " name='admin_1_states_provinces')" ] }, { "cell_type": "code", "execution_count": 6, "id": "2e5211f6", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import cartopy.crs as ccrs\n", "import cartopy.io.shapereader as shpreader\n", "import cartopy.feature as feat\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.patheffects as PathEffects\n", "\n", "# get the data\n", "fn = shpreader.natural_earth(\n", " resolution='10m', category='cultural', \n", " name='admin_1_states_provinces',\n", ")\n", "reader = shpreader.Reader(fn)\n", "states = [x for x in reader.records() if x.attributes[\"admin\"] == \"India\"]\n", "states_geom = feat.ShapelyFeature([x.geometry for x in states], ccrs.PlateCarree())\n", "\n", "data_proj = ccrs.PlateCarree()\n", "\n", "# create the plot\n", "fig, ax = plt.subplots(\n", " figsize=(10,10), dpi=70, facecolor=\"w\",\n", " subplot_kw=dict(projection=data_proj),\n", ")\n", "\n", "ax.add_feature(feat.BORDERS, color=\"k\", lw=0.1)\n", "# ax.add_feature(feat.COASTLINE, color=\"k\", lw=0.2)\n", "ax.set_extent([60, 100, 5, 35], crs=ccrs.Geodetic())\n", "\n", "ax.add_feature(states_geom, facecolor=\"none\", edgecolor=\"k\")\n", "\n", "# # add the names\n", "for state in states:\n", " lon = state.geometry.centroid.x\n", " lat = state.geometry.centroid.y\n", " name = state.attributes[\"name\"] \n", " \n", " ax.text(\n", " lon, lat, name, size=7, transform=data_proj, ha=\"center\", va=\"center\",\n", " path_effects=[PathEffects.withStroke(linewidth=5, foreground=\"w\")]\n", " )" ] }, { "cell_type": "code", "execution_count": 7, "id": "36ae9d88", "metadata": {}, "outputs": [], "source": [ "locs = {}\n", "for state in states:\n", " lon = state.geometry.centroid.x\n", " lat = state.geometry.centroid.y\n", " name = state.attributes[\"name\"]\n", " locs[name] = {\"lat\": lat, \"lon\": lon}\n", "gdf = pd.DataFrame(locs, ).T\n", "gdf.reset_index(inplace=True)\n", "gdf = gdf.rename({'index':'state'}, axis=1)\n", "gdf.index = np.arange(1, len(gdf) + 1)" ] }, { "cell_type": "code", "execution_count": 8, "id": "ef85534b", "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", "
statelatlon
1Ladakh33.88595777.634965
2Arunachal Pradesh28.03590094.660514
3Sikkim27.57202388.448173
4West Bengal23.80524987.972564
5Assam26.35693892.831287
6Uttarakhand30.16372179.196121
7Nagaland26.05982094.448403
8Manipur24.73038893.861591
9Mizoram23.29203192.819139
10Tripura23.75475391.728537
11Meghalaya25.53612291.287036
12Punjab30.84829375.404354
13Rajasthan26.59271473.834251
14Gujarat22.71282971.558165
15Himachal Pradesh31.93631077.220849
16Jammu and Kashmir33.55781375.079701
17Bihar25.66210285.604230
18Uttar Pradesh26.93473480.541922
19Andhra Pradesh15.72167279.924211
20Odisha20.51711384.414536
21Dadra and Nagar Haveli and Daman and Diu20.19938072.992494
22Maharashtra19.46045776.111348
23Goa15.35219574.045828
24Karnataka14.71982676.155168
25Kerala10.42381576.424882
26Puducherry11.96016278.885684
27Tamil Nadu11.01470578.402304
28Lakshadweep10.12094272.827601
29Andaman and Nicobar11.13377692.975529
30Jharkhand23.64201085.533387
31Delhi28.66086577.107946
32Chandigarh30.74353576.768380
33Madhya Pradesh23.53909278.292780
34Chhattisgarh21.25590182.033368
35Haryana29.20837076.336467
36Telangana17.79665079.050764
\n", "
" ], "text/plain": [ " state lat lon\n", "1 Ladakh 33.885957 77.634965\n", "2 Arunachal Pradesh 28.035900 94.660514\n", "3 Sikkim 27.572023 88.448173\n", "4 West Bengal 23.805249 87.972564\n", "5 Assam 26.356938 92.831287\n", "6 Uttarakhand 30.163721 79.196121\n", "7 Nagaland 26.059820 94.448403\n", "8 Manipur 24.730388 93.861591\n", "9 Mizoram 23.292031 92.819139\n", "10 Tripura 23.754753 91.728537\n", "11 Meghalaya 25.536122 91.287036\n", "12 Punjab 30.848293 75.404354\n", "13 Rajasthan 26.592714 73.834251\n", "14 Gujarat 22.712829 71.558165\n", "15 Himachal Pradesh 31.936310 77.220849\n", "16 Jammu and Kashmir 33.557813 75.079701\n", "17 Bihar 25.662102 85.604230\n", "18 Uttar Pradesh 26.934734 80.541922\n", "19 Andhra Pradesh 15.721672 79.924211\n", "20 Odisha 20.517113 84.414536\n", "21 Dadra and Nagar Haveli and Daman and Diu 20.199380 72.992494\n", "22 Maharashtra 19.460457 76.111348\n", "23 Goa 15.352195 74.045828\n", "24 Karnataka 14.719826 76.155168\n", "25 Kerala 10.423815 76.424882\n", "26 Puducherry 11.960162 78.885684\n", "27 Tamil Nadu 11.014705 78.402304\n", "28 Lakshadweep 10.120942 72.827601\n", "29 Andaman and Nicobar 11.133776 92.975529\n", "30 Jharkhand 23.642010 85.533387\n", "31 Delhi 28.660865 77.107946\n", "32 Chandigarh 30.743535 76.768380\n", "33 Madhya Pradesh 23.539092 78.292780\n", "34 Chhattisgarh 21.255901 82.033368\n", "35 Haryana 29.208370 76.336467\n", "36 Telangana 17.796650 79.050764" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf" ] }, { "cell_type": "code", "execution_count": 9, "id": "f30761a9", "metadata": {}, "outputs": [], "source": [ "# merged_df.sort_values(by=['latitude', 'longitude'], ascending=False)" ] }, { "cell_type": "code", "execution_count": 10, "id": "bf6a0511", "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", "
titlelatitudelongitudeStateBand
0Bhopal23.25990077.412600Madhya PradeshS
1Agartala23.83150091.286800TripuraS
2Delhi28.56320077.191200NaNNaN
3Bhuj23.24200069.666900GujaratS
4Chennai13.08270080.270700Tamil NaduS
5Panaji15.49090073.827800GoaS
6Gopalpur19.26470084.862000OdishaS
7Hyderabad17.38500078.486700TelanganaS
8Jaipur26.91240075.787300RajasthanC
9Kolkata22.57260088.363900West BengalS
10Kochi9.93120076.267300KeralaS
11Karaikal10.92540079.838000Tamil NaduS
12Lucknow26.84670080.946200Uttar PradeshS
13Machilipatnam16.19050081.136200Andhra PradeshS
14Mumbai19.07600072.877700MaharashtraS
15Nagpur21.14580079.088200MaharashtraS
16Sohra25.27020091.732300NaNNaN
17Patiala30.33980076.386900PunjabS
18Patna25.59410085.137600BiharS
19Srinagar34.08365674.797371Jammu and KashmirX
20Jammu32.92660074.857000NaNNaN
21Thiruvananthapuram8.52410076.936600KeralaC
22Visakhapatnam17.68680083.218500Andhra PradeshS
23Mohanbari27.47280094.912000AssamS
24Paradip20.31660086.611400OdishaS
25Sriharikota13.72590080.226600NaNNaN
26Jot32.48680076.059300NaNNaN
27Murari30.78980078.917850NaNNaN
28Palam28.59010077.088800DelhiS
29Mukteshwar29.46040079.655800NaNNaN
30Veravali19.73430072.876300NaNNaN
31Kufri31.09780077.267800NaNNaN
32Surkandaji30.41140078.288500NaNNaN
\n", "
" ], "text/plain": [ " title latitude longitude State Band\n", "0 Bhopal 23.259900 77.412600 Madhya Pradesh S\n", "1 Agartala 23.831500 91.286800 Tripura S\n", "2 Delhi 28.563200 77.191200 NaN NaN\n", "3 Bhuj 23.242000 69.666900 Gujarat S\n", "4 Chennai 13.082700 80.270700 Tamil Nadu S\n", "5 Panaji 15.490900 73.827800 Goa S\n", "6 Gopalpur 19.264700 84.862000 Odisha S\n", "7 Hyderabad 17.385000 78.486700 Telangana S\n", "8 Jaipur 26.912400 75.787300 Rajasthan C\n", "9 Kolkata 22.572600 88.363900 West Bengal S\n", "10 Kochi 9.931200 76.267300 Kerala S\n", "11 Karaikal 10.925400 79.838000 Tamil Nadu S\n", "12 Lucknow 26.846700 80.946200 Uttar Pradesh S\n", "13 Machilipatnam 16.190500 81.136200 Andhra Pradesh S\n", "14 Mumbai 19.076000 72.877700 Maharashtra S\n", "15 Nagpur 21.145800 79.088200 Maharashtra S\n", "16 Sohra 25.270200 91.732300 NaN NaN\n", "17 Patiala 30.339800 76.386900 Punjab S\n", "18 Patna 25.594100 85.137600 Bihar S\n", "19 Srinagar 34.083656 74.797371 Jammu and Kashmir X\n", "20 Jammu 32.926600 74.857000 NaN NaN\n", "21 Thiruvananthapuram 8.524100 76.936600 Kerala C\n", "22 Visakhapatnam 17.686800 83.218500 Andhra Pradesh S\n", "23 Mohanbari 27.472800 94.912000 Assam S\n", "24 Paradip 20.316600 86.611400 Odisha S\n", "25 Sriharikota 13.725900 80.226600 NaN NaN\n", "26 Jot 32.486800 76.059300 NaN NaN\n", "27 Murari 30.789800 78.917850 NaN NaN\n", "28 Palam 28.590100 77.088800 Delhi S\n", "29 Mukteshwar 29.460400 79.655800 NaN NaN\n", "30 Veravali 19.734300 72.876300 NaN NaN\n", "31 Kufri 31.097800 77.267800 NaN NaN\n", "32 Surkandaji 30.411400 78.288500 NaN NaN" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "merged_df = df.merge(df2, left_on='title', right_on='DWR Station', how='left')\n", "merged_df = merged_df.drop(columns=['DWR Station'])\n", "merged_df = merged_df.rename(columns={'Type of DWR': 'Band'})\n", "merged_df" ] }, { "cell_type": "code", "execution_count": 11, "id": "0d82e86b", "metadata": {}, "outputs": [], "source": [ "from math import radians, sin, cos, sqrt, asin\n", "\n", "# Function to calculate the haversine distance between two coordinates in km\n", "def haversine(lat1, lon1, lat2, lon2):\n", " R = 6371 # radius of Earth in km\n", " dLat = radians(lat2 - lat1)\n", " dLon = radians(lon2 - lon1)\n", " lat1 = radians(lat1)\n", " lat2 = radians(lat2)\n", " a = sin(dLat/2)**2 + cos(lat1)*cos(lat2)*sin(dLon/2)**2\n", " c = 2*asin(sqrt(a))\n", " return R*c\n", "\n", "# Loop through each row in merged_df\n", "for i, row in merged_df.iterrows():\n", " if pd.isna(row[\"State\"]):\n", " min_dist = float('inf')\n", " closest_state = \"\"\n", " # Loop through each row in gdf to find the closest one\n", " for j, gdf_row in gdf.iterrows():\n", " dist = haversine(row[\"latitude\"], row[\"longitude\"], gdf_row[\"lat\"], gdf_row[\"lon\"])\n", " if dist < min_dist:\n", " min_dist = dist\n", " closest_state = gdf_row[\"state\"]\n", " merged_df.at[i, \"State\"] = closest_state" ] }, { "cell_type": "code", "execution_count": 12, "id": "688e86be", "metadata": { "tags": [] }, "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", "
titlelatitudelongitudeStateBand
19Srinagar34.08365674.797371Jammu and KashmirX
20Jammu32.92660074.857000Jammu and KashmirNaN
26Jot32.48680076.059300Himachal PradeshNaN
31Kufri31.09780077.267800ChandigarhNaN
27Murari30.78980078.917850UttarakhandNaN
32Surkandaji30.41140078.288500UttarakhandNaN
17Patiala30.33980076.386900PunjabS
29Mukteshwar29.46040079.655800UttarakhandNaN
28Palam28.59010077.088800DelhiS
2Delhi28.56320077.191200DelhiNaN
23Mohanbari27.47280094.912000AssamS
8Jaipur26.91240075.787300RajasthanC
12Lucknow26.84670080.946200Uttar PradeshS
18Patna25.59410085.137600BiharS
16Sohra25.27020091.732300MeghalayaNaN
1Agartala23.83150091.286800TripuraS
0Bhopal23.25990077.412600Madhya PradeshS
3Bhuj23.24200069.666900GujaratS
9Kolkata22.57260088.363900West BengalS
15Nagpur21.14580079.088200MaharashtraS
24Paradip20.31660086.611400OdishaS
30Veravali19.73430072.876300Dadra and Nagar Haveli and Daman and DiuNaN
6Gopalpur19.26470084.862000OdishaS
14Mumbai19.07600072.877700MaharashtraS
22Visakhapatnam17.68680083.218500Andhra PradeshS
7Hyderabad17.38500078.486700TelanganaS
13Machilipatnam16.19050081.136200Andhra PradeshS
5Panaji15.49090073.827800GoaS
25Sriharikota13.72590080.226600Andhra PradeshNaN
4Chennai13.08270080.270700Tamil NaduS
11Karaikal10.92540079.838000Tamil NaduS
10Kochi9.93120076.267300KeralaS
21Thiruvananthapuram8.52410076.936600KeralaC
\n", "
" ], "text/plain": [ " title latitude longitude \\\n", "19 Srinagar 34.083656 74.797371 \n", "20 Jammu 32.926600 74.857000 \n", "26 Jot 32.486800 76.059300 \n", "31 Kufri 31.097800 77.267800 \n", "27 Murari 30.789800 78.917850 \n", "32 Surkandaji 30.411400 78.288500 \n", "17 Patiala 30.339800 76.386900 \n", "29 Mukteshwar 29.460400 79.655800 \n", "28 Palam 28.590100 77.088800 \n", "2 Delhi 28.563200 77.191200 \n", "23 Mohanbari 27.472800 94.912000 \n", "8 Jaipur 26.912400 75.787300 \n", "12 Lucknow 26.846700 80.946200 \n", "18 Patna 25.594100 85.137600 \n", "16 Sohra 25.270200 91.732300 \n", "1 Agartala 23.831500 91.286800 \n", "0 Bhopal 23.259900 77.412600 \n", "3 Bhuj 23.242000 69.666900 \n", "9 Kolkata 22.572600 88.363900 \n", "15 Nagpur 21.145800 79.088200 \n", "24 Paradip 20.316600 86.611400 \n", "30 Veravali 19.734300 72.876300 \n", "6 Gopalpur 19.264700 84.862000 \n", "14 Mumbai 19.076000 72.877700 \n", "22 Visakhapatnam 17.686800 83.218500 \n", "7 Hyderabad 17.385000 78.486700 \n", "13 Machilipatnam 16.190500 81.136200 \n", "5 Panaji 15.490900 73.827800 \n", "25 Sriharikota 13.725900 80.226600 \n", "4 Chennai 13.082700 80.270700 \n", "11 Karaikal 10.925400 79.838000 \n", "10 Kochi 9.931200 76.267300 \n", "21 Thiruvananthapuram 8.524100 76.936600 \n", "\n", " State Band \n", "19 Jammu and Kashmir X \n", "20 Jammu and Kashmir NaN \n", "26 Himachal Pradesh NaN \n", "31 Chandigarh NaN \n", "27 Uttarakhand NaN \n", "32 Uttarakhand NaN \n", "17 Punjab S \n", "29 Uttarakhand NaN \n", "28 Delhi S \n", "2 Delhi NaN \n", "23 Assam S \n", "8 Rajasthan C \n", "12 Uttar Pradesh S \n", "18 Bihar S \n", "16 Meghalaya NaN \n", "1 Tripura S \n", "0 Madhya Pradesh S \n", "3 Gujarat S \n", "9 West Bengal S \n", "15 Maharashtra S \n", "24 Odisha S \n", "30 Dadra and Nagar Haveli and Daman and Diu NaN \n", "6 Odisha S \n", "14 Maharashtra S \n", "22 Andhra Pradesh S \n", "7 Telangana S \n", "13 Andhra Pradesh S \n", "5 Goa S \n", "25 Andhra Pradesh NaN \n", "4 Tamil Nadu S \n", "11 Tamil Nadu S \n", "10 Kerala S \n", "21 Kerala C " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "merged_df.sort_values(by = \"latitude\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 13, "id": "b75743fc", "metadata": {}, "outputs": [], "source": [ "# Merge merged_df and df2 on the \"State\" column\n", "merged_df_with_band = pd.merge(merged_df, df2[['State', 'Type of DWR']], on='State', how='left')\n", "\n", "# Replace NaN values in the \"Band\" column with corresponding values from the \"Type of DWR\" column\n", "merged_df_with_band['Band'].fillna(merged_df_with_band['Type of DWR'], inplace=True)\n", "\n", "# Drop the \"Type of DWR\" column\n", "merged_df_with_band.drop('Type of DWR', axis=1, inplace=True)\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "384ed927", "metadata": {}, "outputs": [], "source": [ "merged_df_with_band.drop(2, inplace=True)" ] }, { "cell_type": "code", "execution_count": 15, "id": "6f5d7bd1", "metadata": {}, "outputs": [], "source": [ "merged_df_with_band.drop_duplicates(\"latitude\", inplace=True)\n", "merged_df_with_band.drop_duplicates(\"longitude\", inplace=True)\n", "merged_df_with_band.sort_values(by=\"latitude\", ascending=False, inplace=True)" ] }, { "cell_type": "code", "execution_count": 16, "id": "8613b0b4", "metadata": {}, "outputs": [], "source": [ "merged_df_with_band.index = np.arange(1, len(merged_df_with_band)+1, 1)" ] }, { "cell_type": "code", "execution_count": 17, "id": "4bba3bcd", "metadata": {}, "outputs": [], "source": [ "f_df = merged_df_with_band.copy()" ] }, { "cell_type": "code", "execution_count": 18, "id": "4382c67a", "metadata": {}, "outputs": [], "source": [ "f_df.loc[f_df['title'] == 'Veravali', 'Band'] = 'C'" ] }, { "cell_type": "code", "execution_count": 19, "id": "c3b65a74", "metadata": {}, "outputs": [], "source": [ "nan_mask = f_df['Band'].isna()\n", "nan_df = f_df[nan_mask]\n", "nan_df.loc[:, 'Band'] = nan_df['Band'].fillna('X')\n", "f_df.update(nan_df)" ] }, { "cell_type": "code", "execution_count": 20, "id": "8b3f85fe", "metadata": {}, "outputs": [], "source": [ "f_df.rename(columns={'title': 'Site',\n", " \"latitude\": \"Latitude\", \n", " \"longitude\":\"Longitude\"}, inplace=True)" ] }, { "cell_type": "code", "execution_count": 21, "id": "bb46f44d", "metadata": {}, "outputs": [], "source": [ "f_df.attrs[\"Range\"]={\"C\":250,\n", " \"X\":100,\n", " \"S\":250\n", " }" ] }, { "cell_type": "code", "execution_count": 22, "id": "349e5c7d", "metadata": {}, "outputs": [], "source": [ "f_df.to_csv(\"IMD_Radar_Sites_2022.csv\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }