{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploratory Statistics: Hurricane analysis, part 2/3\n", "> * 🔬 Data Science\n", "* 🖥️ Computation-intensive operation, requires GeoAnalytics\n", "* 👟 Ready To Run!\n", "\n", "This is the second part to a three part set of notebooks that process and analyze historic hurricane tracks. In the previous notebook we saw:\n", " 1. downloading historic hurricane datasets using Python\n", " 2. cleaning and merging hurricane observations using DASK\n", " 3. aggregating point observations into hurricane tracks using ArcGIS GeoAnalytics server\n", "\n", "In this notebook you will analyze the aggregated tracks to investigate the communities that are most affected by hurricanes, as well as as answer important questions about the prevalance of hurricanes, their seasonality, their density, and places where they make landfall." ] }, { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

**Table of Contents**

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import the libraries necessary for this notebook." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# import ArcGIS Libraries\n", "from arcgis.gis import GIS\n", "from arcgis.geometry import filters\n", "from arcgis.geocoding import geocode\n", "from arcgis.features.manage_data import overlay_layers\n", "from arcgis.geoenrichment import enrich\n", "\n", "# import Pandas for data exploration\n", "import pandas as pd\n", "import numpy as np\n", "from scipy import stats\n", "\n", "# import plotting libraries\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "%matplotlib inline\n", "\n", "# import display tools\n", "from pprint import pprint\n", "from IPython.display import display\n", "\n", "# import system libs\n", "from sys import getsizeof\n", "\n", "# Miscellaneous imports\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "gis = GIS('home')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Access aggregated hurricane data\n", "Below, we access the tracks aggregated using GeoAnalytics in the previous notebook." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "hurricane_tracks_item = gis.content.search('title:hurricane_tracks_aggregated_ga', item_type=\"feature layer\")[0]\n", "hurricane_fl = hurricane_tracks_item.layers[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **GeoAnalytics** step calculated summary statistics of all numeric fields. However, only a few of the columns are of interest to us." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['objectid', 'serial_num', 'count', 'count_col_1', 'sum_col_1', 'min_col_1',\n", " 'max_col_1', 'mean_col_1', 'range_col_1', 'sd_col_1', 'var_col_1',\n", " 'count_season', 'sum_season', 'min_season', 'max_season', 'mean_season',\n", " 'range_season', 'sd_season', 'var_season', 'count_num', 'sum_num', 'min_num',\n", " 'max_num', 'mean_num', 'range_num', 'sd_num', 'var_num', 'count_basin',\n", " 'any_basin', 'count_sub_basin', 'any_sub_basin', 'count_name', 'any_name',\n", " 'count_iso_time', 'any_iso_time', 'count_nature', 'any_nature', 'count_center',\n", " 'any_center', 'count_track_type', 'any_track_type', 'count_current_basin',\n", " 'any_current_basin', 'count_latitude_merged', 'sum_latitude_merged',\n", " 'min_latitude_merged', 'max_latitude_merged', 'mean_latitude_merged',\n", " 'range_latitude_merged', 'sd_latitude_merged', 'var_latitude_merged',\n", " 'count_longitude_merged', 'sum_longitude_merged', 'min_longitude_merged',\n", " 'max_longitude_merged', 'mean_longitude_merged', 'range_longitude_merged',\n", " 'sd_longitude_merged', 'var_longitude_merged', 'count_wind_merged',\n", " 'sum_wind_merged', 'min_wind_merged', 'max_wind_merged', 'mean_wind_merged',\n", " 'range_wind_merged', 'sd_wind_merged', 'var_wind_merged',\n", " 'count_pressure_merged', 'sum_pressure_merged', 'min_pressure_merged',\n", " 'max_pressure_merged', 'mean_pressure_merged', 'range_pressure_merged',\n", " 'sd_pressure_merged', 'var_pressure_merged', 'count_grade_merged',\n", " 'sum_grade_merged', 'min_grade_merged', 'max_grade_merged',\n", " 'mean_grade_merged', 'range_grade_merged', 'sd_grade_merged',\n", " 'var_grade_merged', 'count_eye_dia_merged', 'sum_eye_dia_merged',\n", " 'min_eye_dia_merged', 'max_eye_dia_merged', 'mean_eye_dia_merged',\n", " 'range_eye_dia_merged', 'sd_eye_dia_merged', 'var_eye_dia_merged',\n", " 'track_duration', 'end_datetime', 'start_datetime']\n" ] } ], "source": [ "pprint([f['name'] for f in hurricane_fl.properties.fields], compact=True, width=80)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we select the following fields for the rest of this analysis." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "fields_to_query = ['objectid', 'count', 'min_season', 'any_basin', 'any_sub_basin',\n", " 'any_name', 'mean_latitude_merged', 'mean_longitude_merged',\n", " 'max_wind_merged', 'range_wind_merged', 'min_pressure_merged',\n", " 'range_pressure_merged', 'max_eye_dia_merged', 'track_duration',\n", " 'end_datetime', 'start_datetime']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Query hurricane tracks into a Spatially Enabled `DataFrame`" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.12 s, sys: 318 ms, total: 1.43 s\n", "Wall time: 4.5 s\n" ] } ], "source": [ "all_hurricanes_df = hurricane_fl.query(out_fields=','.join(fields_to_query), as_df=True)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(12362, 17)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_hurricanes_df.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are **`12,362`** hurricanes identified by GeoAnalytics aggregate tracks tool. To get an idea about this aggregated dataset, call the `head()` method." ] }, { "cell_type": "code", "execution_count": 12, "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", "
SHAPEany_basinany_nameany_sub_basincountend_datetimemax_eye_dia_mergedmax_wind_mergedmean_latitude_mergedmean_longitude_mergedmin_pressure_mergedmin_seasonobjectidrange_pressure_mergedrange_wind_mergedstart_datetimetrack_duration
0{\"paths\": [[[59.60000000000002, -17.6000000000...SINOT NAMEDMM7.01854-02-10 18:00:00NaNNaN-19.31857160.639286NaN1854.01NaNNaN1854-02-08 06:00:001.296000e+08
1{\"paths\": [[[-23.5, 12.5], [-24.19999999999999...NANOT NAMEDNA9.01859-08-26 12:00:00NaN45.014.000000-26.222222NaN1859.02NaN10.01859-08-24 12:00:001.728000e+08
2{\"paths\": [[[-23.19999999999999, 12.1000000000...NAUNNAMEDNA50.01853-09-12 18:00:00NaN130.026.982000-51.776000924.01853.0353.090.01853-08-30 00:00:001.058400e+09
3{\"paths\": [[[59.80000000000001, -15.5], [59.49...SIXXXX856017MM13.01856-04-05 18:00:00NaNNaN-20.18538559.573077NaN1856.04NaNNaN1856-04-02 18:00:002.592000e+08
4{\"paths\": [[[99.60000000000002, -11.5], [98.30...SINOT NAMEDWA13.01861-03-15 18:00:00NaNNaN-12.94076994.183846NaN1861.05NaNNaN1861-03-12 18:00:002.592000e+08
\n", "
" ], "text/plain": [ " SHAPE any_basin any_name \\\n", "0 {\"paths\": [[[59.60000000000002, -17.6000000000... SI NOT NAMED \n", "1 {\"paths\": [[[-23.5, 12.5], [-24.19999999999999... NA NOT NAMED \n", "2 {\"paths\": [[[-23.19999999999999, 12.1000000000... NA UNNAMED \n", "3 {\"paths\": [[[59.80000000000001, -15.5], [59.49... SI XXXX856017 \n", "4 {\"paths\": [[[99.60000000000002, -11.5], [98.30... SI NOT NAMED \n", "\n", " any_sub_basin count end_datetime max_eye_dia_merged \\\n", "0 MM 7.0 1854-02-10 18:00:00 NaN \n", "1 NA 9.0 1859-08-26 12:00:00 NaN \n", "2 NA 50.0 1853-09-12 18:00:00 NaN \n", "3 MM 13.0 1856-04-05 18:00:00 NaN \n", "4 WA 13.0 1861-03-15 18:00:00 NaN \n", "\n", " max_wind_merged mean_latitude_merged mean_longitude_merged \\\n", "0 NaN -19.318571 60.639286 \n", "1 45.0 14.000000 -26.222222 \n", "2 130.0 26.982000 -51.776000 \n", "3 NaN -20.185385 59.573077 \n", "4 NaN -12.940769 94.183846 \n", "\n", " min_pressure_merged min_season objectid range_pressure_merged \\\n", "0 NaN 1854.0 1 NaN \n", "1 NaN 1859.0 2 NaN \n", "2 924.0 1853.0 3 53.0 \n", "3 NaN 1856.0 4 NaN \n", "4 NaN 1861.0 5 NaN \n", "\n", " range_wind_merged start_datetime track_duration \n", "0 NaN 1854-02-08 06:00:00 1.296000e+08 \n", "1 10.0 1859-08-24 12:00:00 1.728000e+08 \n", "2 90.0 1853-08-30 00:00:00 1.058400e+09 \n", "3 NaN 1856-04-02 18:00:00 2.592000e+08 \n", "4 NaN 1861-03-12 18:00:00 2.592000e+08 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_hurricanes_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To better analyze this data set, the date columns need to be changed to a format that Pandas understands better. This is accomplished by calling the `to_datetime()` method and passing the appropriate time columns." ] }, { "cell_type": "code", "execution_count": 14, "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", "
SHAPEany_basinany_nameany_sub_basincountend_datetimemax_eye_dia_mergedmax_wind_mergedmean_latitude_mergedmean_longitude_mergedmin_pressure_mergedmin_seasonobjectidrange_pressure_mergedrange_wind_mergedstart_datetimetrack_duration
start_datetime
1854-02-08 06:00:00{\"paths\": [[[59.60000000000002, -17.6000000000...SINOT NAMEDMM7.01854-02-10 18:00:00NaNNaN-19.31857160.639286NaN1854.01NaNNaN1854-02-08 06:00:001.296000e+08
1859-08-24 12:00:00{\"paths\": [[[-23.5, 12.5], [-24.19999999999999...NANOT NAMEDNA9.01859-08-26 12:00:00NaN45.014.000000-26.222222NaN1859.02NaN10.01859-08-24 12:00:001.728000e+08
1853-08-30 00:00:00{\"paths\": [[[-23.19999999999999, 12.1000000000...NAUNNAMEDNA50.01853-09-12 18:00:00NaN130.026.982000-51.776000924.01853.0353.090.01853-08-30 00:00:001.058400e+09
1856-04-02 18:00:00{\"paths\": [[[59.80000000000001, -15.5], [59.49...SIXXXX856017MM13.01856-04-05 18:00:00NaNNaN-20.18538559.573077NaN1856.04NaNNaN1856-04-02 18:00:002.592000e+08
1861-03-12 18:00:00{\"paths\": [[[99.60000000000002, -11.5], [98.30...SINOT NAMEDWA13.01861-03-15 18:00:00NaNNaN-12.94076994.183846NaN1861.05NaNNaN1861-03-12 18:00:002.592000e+08
\n", "
" ], "text/plain": [ " SHAPE \\\n", "start_datetime \n", "1854-02-08 06:00:00 {\"paths\": [[[59.60000000000002, -17.6000000000... \n", "1859-08-24 12:00:00 {\"paths\": [[[-23.5, 12.5], [-24.19999999999999... \n", "1853-08-30 00:00:00 {\"paths\": [[[-23.19999999999999, 12.1000000000... \n", "1856-04-02 18:00:00 {\"paths\": [[[59.80000000000001, -15.5], [59.49... \n", "1861-03-12 18:00:00 {\"paths\": [[[99.60000000000002, -11.5], [98.30... \n", "\n", " any_basin any_name any_sub_basin count \\\n", "start_datetime \n", "1854-02-08 06:00:00 SI NOT NAMED MM 7.0 \n", "1859-08-24 12:00:00 NA NOT NAMED NA 9.0 \n", "1853-08-30 00:00:00 NA UNNAMED NA 50.0 \n", "1856-04-02 18:00:00 SI XXXX856017 MM 13.0 \n", "1861-03-12 18:00:00 SI NOT NAMED WA 13.0 \n", "\n", " end_datetime max_eye_dia_merged max_wind_merged \\\n", "start_datetime \n", "1854-02-08 06:00:00 1854-02-10 18:00:00 NaN NaN \n", "1859-08-24 12:00:00 1859-08-26 12:00:00 NaN 45.0 \n", "1853-08-30 00:00:00 1853-09-12 18:00:00 NaN 130.0 \n", "1856-04-02 18:00:00 1856-04-05 18:00:00 NaN NaN \n", "1861-03-12 18:00:00 1861-03-15 18:00:00 NaN NaN \n", "\n", " mean_latitude_merged mean_longitude_merged \\\n", "start_datetime \n", "1854-02-08 06:00:00 -19.318571 60.639286 \n", "1859-08-24 12:00:00 14.000000 -26.222222 \n", "1853-08-30 00:00:00 26.982000 -51.776000 \n", "1856-04-02 18:00:00 -20.185385 59.573077 \n", "1861-03-12 18:00:00 -12.940769 94.183846 \n", "\n", " min_pressure_merged min_season objectid \\\n", "start_datetime \n", "1854-02-08 06:00:00 NaN 1854.0 1 \n", "1859-08-24 12:00:00 NaN 1859.0 2 \n", "1853-08-30 00:00:00 924.0 1853.0 3 \n", "1856-04-02 18:00:00 NaN 1856.0 4 \n", "1861-03-12 18:00:00 NaN 1861.0 5 \n", "\n", " range_pressure_merged range_wind_merged \\\n", "start_datetime \n", "1854-02-08 06:00:00 NaN NaN \n", "1859-08-24 12:00:00 NaN 10.0 \n", "1853-08-30 00:00:00 53.0 90.0 \n", "1856-04-02 18:00:00 NaN NaN \n", "1861-03-12 18:00:00 NaN NaN \n", "\n", " start_datetime track_duration \n", "start_datetime \n", "1854-02-08 06:00:00 1854-02-08 06:00:00 1.296000e+08 \n", "1859-08-24 12:00:00 1859-08-24 12:00:00 1.728000e+08 \n", "1853-08-30 00:00:00 1853-08-30 00:00:00 1.058400e+09 \n", "1856-04-02 18:00:00 1856-04-02 18:00:00 2.592000e+08 \n", "1861-03-12 18:00:00 1861-03-12 18:00:00 2.592000e+08 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_hurricanes_df['start_datetime'] = pd.to_datetime(all_hurricanes_df['start_datetime'])\n", "all_hurricanes_df['end_datetime'] = pd.to_datetime(all_hurricanes_df['end_datetime'])\n", "all_hurricanes_df.index = all_hurricanes_df['start_datetime']\n", "all_hurricanes_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The track duration and length columns need to be projected to units (days, hours, miles) that are meaningful for analysis." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "all_hurricanes_df['track_duration_hrs'] = all_hurricanes_df['track_duration'] / 3600000\n", "all_hurricanes_df['track_duration_days'] = all_hurricanes_df['track_duration'] / (3600000*24)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exploratory data analysis\n", "In this section we perform exploratory analysis of the dataset and answer some interesting questions." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map1 = gis.map('USA')\n", "map1" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_hurricanes_df.sample(n=500, random_state=2).spatial.plot(map1, \n", " renderer_type='u',\n", " col='any_basin',\n", " cmap='prism')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The map above draws a set of `500` hurricanes chosen at random. You can visualize the Spatially Enabled DataFrame object with different types of renderers. In the example above a unique value renderer is applied on the **basin** column. You can switch the map to 3D mode and view the same on a globe." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map2 = gis.map()\n", "map2.mode= '3D'\n", "map2" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "all_hurricanes_df.sample(n=500, random_state=2).spatial.plot(map2, \n", " renderer_type='u',\n", " col='any_basin',\n", " cmap='prism')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Does the number of hurricanes increase with time?\n", "To understand if number of hurricanes have increased over time, we will plot a histogram of the `MIN_Season` column." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,'Number of hurricanes recorded over time')" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sns.distplot(all_hurricanes_df['min_season'], kde=False, bins=50)\n", "ax.set_title('Number of hurricanes recorded over time')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number of hurricanes recorded increases steadily until `1970`. This could be due to advances in geospatial technologies allowing scientists to better monitor hurricanes. However, after `1970` we notice a reduction in the number of hurricanes. This is in line with what [scientists observe and predict](https://www.nytimes.com/2018/10/10/climate/hurricane-michael-climate-change.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How many hurricanes occure per basin and sub basin?\n", "Climate scientists have organized global hurricanes into `7` basins and a number of sub basins. The snippet below groups the data by basin and sub basin, counts the occurrences, and plots the frequency in bar charts." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig1, ax1 = plt.subplots(1,2, figsize=(12,5))\n", "\n", "basin_ax = all_hurricanes_df['any_basin'].value_counts().plot(kind='bar', ax=ax1[0])\n", "basin_ax.set_title('Number of hurricanes per basin')\n", "basin_ax.set_xticklabels(['Western Pacific', 'South Indian', 'North Atlantic',\n", " 'Eastern Pacicifc', 'North Indian','Southern Pacific',\n", " 'South Atlantic'])\n", "\n", "sub_basin_ax = all_hurricanes_df['any_sub_basin'].value_counts().plot(kind='bar', ax=ax1[1])\n", "sub_basin_ax.set_title('Number of hurricanes per sub basin')\n", "sub_basin_ax.set_xticklabels(['MM','North Atlantic','Bay of Bengal','Western Australia',\n", " 'Eastern Australia', 'Carribean Sea', 'Gulf of Mexico',\n", " 'Arabian Sea', 'Central Pacific'])\n", "sub_basin_ax.tick_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, most hurricanes occur in the **Western Pacific** basin. This is the region that is east of China, Phillipines and rest of South East Asia. This is followed by the **South Indian** basin which spans from west of Australia to east of Southern Africa. The **North Atlantic** basin which is the source of hurricanes in the continental United States ranks as the third busiest hurricane basin." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Are certain hurricane names more popular?\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas provides a handy function called `value_counts()` to count unique occurrences. We use that below to count the number of times each hurricane name has been used. We then print the top `25` most frequently used names." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NOT NAMED 4099\n", "UNNAMED 1408\n", "06B 31\n", "05B 30\n", "04B 30\n", "09B 30\n", "07B 29\n", "08B 29\n", "10B 29\n", "03B 28\n", "01B 27\n", "12B 26\n", "11B 23\n", "13B 23\n", "02B 22\n", "14B 17\n", "SUBTROP:UNNAMED 16\n", "IRMA 15\n", "FLORENCE 15\n", "02A 14\n", "JUNE 13\n", "ALICE 13\n", "OLGA 13\n", "SUSAN 13\n", "FREDA 13\n", "Name: any_name, dtype: int64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the number of occurrences of top 25 hurricane names\n", "all_hurricanes_df['any_name'].value_counts()[:25]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Names like `FLORENCE`, `IRMA`, `OLGA`.. appear to be more popular. Interestingly, all are of female gender. We can take this further to explore at what time periods have the name `FLORENCE` been used?" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['1953-09-23 12:00:00', '1954-09-10 12:00:00',\n", " '1963-07-14 12:00:00', '1967-01-03 06:00:00',\n", " '1964-09-05 18:00:00', '1965-09-08 00:00:00',\n", " '1973-07-25 00:00:00', '1960-09-17 06:00:00',\n", " '1994-11-02 00:00:00', '1969-09-02 00:00:00',\n", " '2012-08-03 06:00:00', '1977-09-20 12:00:00',\n", " '2000-09-10 18:00:00', '1988-09-07 06:00:00',\n", " '2006-09-03 18:00:00'],\n", " dtype='datetime64[ns]', name='start_datetime', freq=None)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_hurricanes_df[all_hurricanes_df['any_name']=='FLORENCE'].index" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The name `FLORENCE` had been used consistently in since the 1950s, reaching a peak in popularity during the 60s." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Is there a seasonality in the occurrence of hurricanes?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hurricanes happen when water temperatures (`Sea Surface Temperature` SST) are warm. Solar incidence is one of the key factors affecting SST and this typically happens during summer months. However, summer happens during different months in northern and southern hemispheres. To visualize this seasonality, we need to group our data by month as well as basin. The snippet below creates a multilevel index grouper in `pandas`." ] }, { "cell_type": "code", "execution_count": 22, "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", "
countmin_pressure_merged
start_datetimeany_basin
AprilNA52
NI415
SI24285
SP9774
WP8356
\n", "
" ], "text/plain": [ " count min_pressure_merged\n", "start_datetime any_basin \n", "April NA 5 2\n", " NI 41 5\n", " SI 242 85\n", " SP 97 74\n", " WP 83 56" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a grouper object\n", "grouper = all_hurricanes_df.start_datetime.dt.month_name()\n", "\n", "# use grouper along with basin name to create a multilevel groupby object\n", "hurr_by_basin = all_hurricanes_df.groupby([grouper,'any_basin'], as_index=True)\n", "hurr_by_basin_month = hurr_by_basin.count()[['count', 'min_pressure_merged']]\n", "hurr_by_basin_month.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we turn the index into columns for further processing." ] }, { "cell_type": "code", "execution_count": 23, "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", "
monthbasincount
0AprilNA5
1AprilNI41
2AprilSI242
3AprilSP97
4AprilWP83
\n", "
" ], "text/plain": [ " month basin count\n", "0 April NA 5\n", "1 April NI 41\n", "2 April SI 242\n", "3 April SP 97\n", "4 April WP 83" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# turn index into columns\n", "hurr_by_basin_month.reset_index(inplace=True)\n", "hurr_by_basin_month.drop('min_pressure_merged', axis=1, inplace=True)\n", "hurr_by_basin_month.columns = ['month', 'basin', 'count']\n", "hurr_by_basin_month.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We add the month column back, but this time we will help Pandas understand how to sort months in the correct chronological order." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,1, figsize=(15,7))\n", "month_order = ['January','February', 'March','April','May','June',\n", " 'July','August','September','October','November','December']\n", "\n", "sns.barplot(x='month', y='count', hue='basin', data=hurr_by_basin_month, ax=ax,\n", " order=month_order)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The bars in **red** represent the number of hurricanes in the **Sounth Indian** ocean, which spans from west of Australia to east of southern Africa. The **brown** bars are for the **Western Pacific** ocean, which spans east of China. The **orange** bars are for the **North Atlantic** ocean. The sinusoidal nature of these bars show the charateristic offset in summer between northern and southern hemispheres. The **green** bars represent **North Indian** hurricanes, which is dominated by the monsoon effect, and is seen to be prevalant for most part of the year." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What percent of hurricanes make landfall?\n", "While exploring the hurricane data on maps, we noticed their geographic distribution and that they travel long distances over the oceans. Thus, do all hurricanes eventually make landfall? If not, what percent of them do? This is an important question to answer as the threat to human life decreases dramatically when a hurricane does not make a landfall.\n", "\n", "We will answer this question by performing **overlay analysis**. For this, we need to intersect the hurricane tracks with world boundary dataset. We will make an anonymous connection to ArcGIS Online to look for a layer published by Esri in the Living Atlas." ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [], "source": [ "agol_gis = GIS(set_active=False)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", " World Continents\n", " \n", "
This layer represents the boundaries for the continents of the world. The layer is suitable for display to a largest scale of 1:15,000,000.Feature Layer Collection by esri\n", "
Last Modified: November 11, 2018\n", "
0 comments, 39,101 views\n", "
\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "world_boundaries_item = agol_gis.content.get(\n", " '57c1ade4fa7c4e2384e6a23f2b3bd254')\n", "world_boundaries_item" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will import the `overlay_layers` tool from the `manage_data` toolset to perform the overlay analysis." ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "boundary_fl = world_boundaries_item.layers[0]\n", "from arcgis.features.manage_data import overlay_layers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The overlay operation below migth take 1~2 hours in a regular hosted notebook environment." ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.37 s, sys: 231 ms, total: 1.6 s\n", "Wall time: 22min 13s\n" ] } ], "source": [ "inland_tracks = overlay_layers(input_layer=hurricane_fl, overlay_layer = boundary_fl, \n", " overlay_type='INTERSECT', output_type='INPUT', \n", " output_name='hurricane_landfall_tracks', gis=gis)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As part of the intersect operation, the output type is specified as `Input`. Since the input layer is hurricane tracks (a line layer), the result will continue to be a line layer. We can draw this layer on a map to view those hurricanes that have made a landfall and traveled inland." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "landfall_tracks_map = gis.map(\"USA\")\n", "landfall_tracks_map" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "landfall_tracks_map.add_layer(inland_tracks)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We query the landfall tracks layer into a DataFrame. We will then plot a bar chart showing what percent of hurricanes in each basin make a landfall." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "fields_to_query = ['min_season', 'any_basin','any_name', 'max_wind_merged', \n", " 'min_pressure_merged', 'track_duration','end_datetime', \n", " 'start_datetime', 'analysislength']\n", "\n", "landfall_tracks_fl = inland_tracks.layers[0]" ] }, { "cell_type": "code", "execution_count": 28, "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", "
analysislengthany_basinany_nameend_datetimemax_wind_mergedmin_pressure_mergedmin_seasonobjectidstart_datetimetrack_durationSHAPE
04.376642NANOT NAMED-366342480000095.0965.01853.01-36646992000001.317600e+09{'paths': [[[-74.47272727299998, 24], [-74.463...
1117.097286NAUNNAMED-364517280000070.0NaN1854.02-36454752000002.160000e+08{'paths': [[[-99.13749999999999, 26.5699999999...
2256.909588NAUNNAMED-364517280000070.0NaN1854.03-36454752000002.160000e+08{'paths': [[[-102.21739130399999, 27.686956522...
\n", "
" ], "text/plain": [ " analysislength any_basin any_name end_datetime max_wind_merged \\\n", "0 4.376642 NA NOT NAMED -3663424800000 95.0 \n", "1 117.097286 NA UNNAMED -3645172800000 70.0 \n", "2 256.909588 NA UNNAMED -3645172800000 70.0 \n", "\n", " min_pressure_merged min_season objectid start_datetime track_duration \\\n", "0 965.0 1853.0 1 -3664699200000 1.317600e+09 \n", "1 NaN 1854.0 2 -3645475200000 2.160000e+08 \n", "2 NaN 1854.0 3 -3645475200000 2.160000e+08 \n", "\n", " SHAPE \n", "0 {'paths': [[[-74.47272727299998, 24], [-74.463... \n", "1 {'paths': [[[-99.13749999999999, 26.5699999999... \n", "2 {'paths': [[[-102.21739130399999, 27.686956522... " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "landfall_tracks_df = landfall_tracks_fl.query(out_fields=fields_to_query).df\n", "landfall_tracks_df.head(3)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig1, ax1 = plt.subplots(1,1, figsize=(12,5))\n", "\n", "basin_ax = all_hurricanes_df['any_basin'].value_counts().plot(kind='bar', ax=ax1)\n", "basin_ax = landfall_tracks_df['any_basin'].value_counts().plot(kind='bar', \n", " ax=ax1, \n", " cmap='viridis', \n", " alpha=0.5)\n", "basin_ax.set_title('Number of hurricanes per basin that make landfall')\n", "basin_ax.tick_params(axis='x', labelrotation=65)\n", "basin_ax.set_xticklabels(['Western Pacific', 'South Indian', 'North Atlantic',\n", " 'Eastern Pacicifc', 'North Indian','Southern Pacific',\n", " 'South Atlantic'])\n", "basin_ax.tick_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The bar chart above plots the number of hurricanes (per basin) that made landfall over another bar chart of the total number of hurricanes per basin. From the chart, most hurricanes in the **Western Pacific**, **South Indian**, **North Atlantic** ocean make landfall. Hurricanes in **Southern Pacific** ocean rarely make landfall. This helps us guage the severity of hurricanes in different geographic basins." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How far do hurricanes travel inland after landfall?\n", "Hurricanes in general lose velocity and intensity after they make a landfall. Thus they can only travel a short distance inland. As a result of the overlay analysis, an `analysislength` column is created. We can plot the histogram of that column to understand how far hurricanes have traveled inland after landfall." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,0,'Distance in miles')" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "landfall_tracks_df['analysislength'].plot(kind='hist', bins=100,\n", " title='Histogram of distance traveled inland',\n", " figsize=(12,7), xlim=[-100,2500])\n", "plt.xlabel('Distance in miles')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, majority of hurricanes travel less than `500` miles after making a landfall. We can query which are the top `50` hurricanes that have traveled longest inland." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# filter the top 50 longest hurricanes (distance traveled inland)\n", "top_50_longest = landfall_tracks_df.sort_values(by=['analysislength'], axis=0, ascending=False).head(50)\n", "top_50_longest['any_basin'].value_counts().plot(kind='bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Southern Pacific** basin, followed by **South Indian** basin contains the hurricanes that have traveled longest inland." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inland_map = gis.map()\n", "inland_map" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top_50_longest.spatial.plot(inland_map, renderer_type='u', col='any_basin',cmap='prism')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting this on the map, we notice hurricanes have traveled longest inland over the east coast of North America, China and Australia. Interestingly, Australia bears landfall of hurricanes from both **South Indian** and **Western Pacific** basins." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Where do hurricanes make landfall?\n", "Of equal interest is finding where hurricanes make landfall. From experience we know certain regions are prone to hurricane damage more than the rest. Using spatial data science, we can empirically derive those regions that have statistically more hurricane landfalls compared to the rest.\n", "\n", "For this, we will repeat the **overlay analysis**. However, this time, we will change the `output_type` to `POINT`. The tool will return the points along the coast lines where hurricanes make landfall." ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.43 s, sys: 258 ms, total: 1.69 s\n", "Wall time: 24min 41s\n" ] } ], "source": [ "landfall_item = overlay_layers(input_layer=hurricane_fl, overlay_layer = boundary_fl, \n", " overlay_type='INTERSECT', output_type='POINT', \n", " output_name='hurricane_landfall_locations', gis=gis)" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [], "source": [ "landfall_points_fl = landfall_item.layers[0]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "landfall_map = gis.map()\n", "landfall_map" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "landfall_map.add_layer(landfall_item)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Perform density analysis on hurricane landfall locations\n", "The map above shows hundreds of thousands of points spread around the world. Do all these places have equal probability of being hit by a hurricane? To answer this, we will perform **density analysis**. The `calculate_density` tool available under the `analyze_patterns` toolset is used for this." ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 80.9 ms, sys: 15.3 ms, total: 96.2 ms\n", "Wall time: 42.7 s\n" ] } ], "source": [ "from arcgis.features.analyze_patterns import calculate_density\n", "landfall_density_item = calculate_density(input_layer=landfall_points_fl, radius=30,\n", " radius_units='Miles', area_units='SquareMiles',\n", " classification_type='NaturalBreaks', num_classes=7,\n", " output_name='landfall_density', gis=gis)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "landfall_map = gis.map('Florida, USA')\n", "landfall_map" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "landfall_map.add_layer(landfall_density_item)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The map here computes the kernel density of landfall locations. It does this by summing the number of landfalls within a radius of `30` miles and dividing it by the area of this radius. Thus it spreads the number of landfalls over a smooth surface, then classifies this surface into `7` classes. By performing density anlaysis, we are able to wade through large clouds of landfall points and identify locations that have more landfalls compared to the rest of the world.\n", "\n", "Let us visualize the density analysis results on a table and as a chart." ] }, { "cell_type": "code", "execution_count": 130, "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", "
SHAPEanalysisareaclassobjectidvalue_max_per_squaremilevalue_min_per_squaremile
0{\"rings\": [[[53.845677534778474, 81.0534260146...920.649527210.0106790.00267
1{\"rings\": [[[24.78192557105382, 79.98490572185...1896.053559220.0106790.00267
2{\"rings\": [[[15.16524293599764, 79.45064557546...162.088581230.0106790.00267
3{\"rings\": [[[12.600794233316094, 65.2393256814...183.094538240.0106790.00267
4{\"rings\": [[[-13.79165699844873, 64.5982135057...1672.631881250.0106790.00267
\n", "
" ], "text/plain": [ " SHAPE analysisarea class \\\n", "0 {\"rings\": [[[53.845677534778474, 81.0534260146... 920.649527 2 \n", "1 {\"rings\": [[[24.78192557105382, 79.98490572185... 1896.053559 2 \n", "2 {\"rings\": [[[15.16524293599764, 79.45064557546... 162.088581 2 \n", "3 {\"rings\": [[[12.600794233316094, 65.2393256814... 183.094538 2 \n", "4 {\"rings\": [[[-13.79165699844873, 64.5982135057... 1672.631881 2 \n", "\n", " objectid value_max_per_squaremile value_min_per_squaremile \n", "0 1 0.010679 0.00267 \n", "1 2 0.010679 0.00267 \n", "2 3 0.010679 0.00267 \n", "3 4 0.010679 0.00267 \n", "4 5 0.010679 0.00267 " ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "landfall_density_sdf = landfall_density_item.layers[0].query(as_df=True)\n", "landfall_density_sdf.head()" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,'Histogram of hurricane landfall densities')" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = landfall_density_sdf['class'].hist()\n", "ax.set_title('Histogram of hurricane landfall densities')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the histogram above, we notice there are only a very few places that can be classified as having a high density of hurricane landfalls. Let us analyze these places a bit further." ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(40, 6)" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "high_density_landfalls = landfall_density_sdf[(landfall_density_sdf['class']==6) | \n", " (landfall_density_sdf['class']==7)]\n", "\n", "high_density_landfalls.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have identified `40` sites worldwide that have a high density of hurricane landfalls based on the anlaysis of data spanning the last `169` years. Below, we plot them on a map." ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "high_density_landfall_map1 = gis.map('North Carolina')\n", "high_density_landfall_map2 = gis.map('China')\n", "display(high_density_landfall_map1)\n", "display(high_density_landfall_map2)" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "high_density_landfalls.spatial.plot(map_widget=high_density_landfall_map1, line_width=0, outline_color=0)\n", "high_density_landfalls.spatial.plot(map_widget=high_density_landfall_map2, line_width=0, outline_color=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The places that turn up are not much of a surprise. We notice the coast of **Carolinas** in the United States, the states of **West Bengal**, **Orissa** in India, several places along the East coast of **China**, southern tip of **Japan**, and most of the island of **Philippines** are the places that are most affected on a repeat basis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What are the demographics of places with highest density of landfalls?\n", "Now that we have found the places that have the highest desnity of landfalls, we are faced with the question, who lives there? What is the impact of repeat natural calamities on these places? We can answer those questions by **geoenriching** those polygons with demographic and socio-economic attributes.\n", "\n", "
\n", " Note: Geoenrichment costs ArcGIS Online credits and requires this functionality to be configured in your Organization\n", "
\n", "\n", "Below we use the `enrich()` function to add socio-economic columns to the landfall density `DataFrame`. For a data collection, we pick `keyGlobalFacts` which is available for most part of the world." ] }, { "cell_type": "code", "execution_count": 210, "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", "
AVGHHSZHasDataIDOBJECTID_0SHAPETOTFEMALESTOTHHTOTMALESTOTPOPaggregationMethodanalysisareaapportionmentConfidenceclassobjectidpopulationToPolygonSizeRatingsourceCountryvalue_max_per_squaremilevalue_min_per_squaremile
02.49101{\"rings\": [[[-75.76583397992073, 36.0687216884...3514281535007014BlockApportionment:US.BlockGroups118.2337012.57671702.191US0.2269180.122803
12.44112{\"rings\": [[[-76.19324209703427, 36.3892777762...23548191722363147179BlockApportionment:US.BlockGroups1165.1446452.57661742.191US0.1228030.067631
22.21123{\"rings\": [[[-76.40694615559107, 34.8933493663...62105485652112731BlockApportionment:US.BlockGroups731.2456652.57661942.191US0.1228030.067631
32.70134{\"rings\": [[[130.2448784688346, 32.54260472224...111187816996921087BlockApportionment:JP.Blocks106.2369042.09062751.695JP0.1228030.067631
42.39145{\"rings\": [[[-80.57417529744856, 32.2220486344...27843214252808155924BlockApportionment:US.BlockGroups255.8014032.57662802.191US0.1228030.067631
\n", "
" ], "text/plain": [ " AVGHHSZ HasData ID OBJECTID_0 \\\n", "0 2.49 1 0 1 \n", "1 2.44 1 1 2 \n", "2 2.21 1 2 3 \n", "3 2.70 1 3 4 \n", "4 2.39 1 4 5 \n", "\n", " SHAPE TOTFEMALES TOTHH \\\n", "0 {\"rings\": [[[-75.76583397992073, 36.0687216884... 3514 2815 \n", "1 {\"rings\": [[[-76.19324209703427, 36.3892777762... 23548 19172 \n", "2 {\"rings\": [[[-76.40694615559107, 34.8933493663... 6210 5485 \n", "3 {\"rings\": [[[130.2448784688346, 32.54260472224... 11118 7816 \n", "4 {\"rings\": [[[-80.57417529744856, 32.2220486344... 27843 21425 \n", "\n", " TOTMALES TOTPOP aggregationMethod analysisarea \\\n", "0 3500 7014 BlockApportionment:US.BlockGroups 118.233701 \n", "1 23631 47179 BlockApportionment:US.BlockGroups 1165.144645 \n", "2 6521 12731 BlockApportionment:US.BlockGroups 731.245665 \n", "3 9969 21087 BlockApportionment:JP.Blocks 106.236904 \n", "4 28081 55924 BlockApportionment:US.BlockGroups 255.801403 \n", "\n", " apportionmentConfidence class objectid populationToPolygonSizeRating \\\n", "0 2.576 7 170 2.191 \n", "1 2.576 6 174 2.191 \n", "2 2.576 6 194 2.191 \n", "3 2.090 6 275 1.695 \n", "4 2.576 6 280 2.191 \n", "\n", " sourceCountry value_max_per_squaremile value_min_per_squaremile \n", "0 US 0.226918 0.122803 \n", "1 US 0.122803 0.067631 \n", "2 US 0.122803 0.067631 \n", "3 JP 0.122803 0.067631 \n", "4 US 0.122803 0.067631 " ] }, "execution_count": 210, "metadata": {}, "output_type": "execute_result" } ], "source": [ "landfalls_enriched = enrich(high_density_landfalls, data_collections='keyGlobalFacts')\n", "landfalls_enriched.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `enrich()` operation accepts the Spatially Enabled `DataFrame`, performs spatial aggregation and returns another `DataFrame` with socio-economic and demographic columns added to it. The `data_collections` parameter decides which additional columns get added.\n", "\n", "Let us visualize the population that is affected by country. For this, we group by the `sourceCountry` column and sum up the results. The cell below plots the total number of men, women and households that live within the high density polygons." ] }, { "cell_type": "code", "execution_count": 216, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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YMEC5s2bx8iRIwd6cyRJWqXYplnWimhbOIREklQbL7zwAkOGDPFCXwMRwZAhQ/zlSJKkfrBNs6wV0bYwgCFJqhUv9PXheyFJUv95HV3W8h4TAxiSJEmSJKn2nANDklRbI0788Qotb86ZB/S4fMGCBYwbNw6Axx9/nLa2NoYOHQrA9OnTOfbYY3nggQd45ZVXOPDAAzn77LO5+eabOeGEEwBob29niy22YK211mKHHXbg4x//OOPHj186znPjjTfmhhtu4OSTT+a73/3u0rIBbrnlFmbNmsUee+zB+eefz1FHHQXAvffey0477cTZZ5/N5z//eQBeeuklNt10Uz7xiU/wta99bWkZY8eO5ZxzzmHMmDGdym3cBoBzzjmHvfbai9NPP52LL76YtrY23vCGN/Cd73yHXXbZpd/HV5IkNbc6tGnOOeccrr322qV1HHHEERx44IEcfPDBy7RB5syZw4EHHshvfvObFbrfBjAkSSqGDBnCrFmzADj55JNZZ511+PznP09msssuu/DpT3+aa665hpdffpmJEyfy5S9/mbPPPpt99tkHWDaAcMstt7D77rt3uth3+NznPrc0INHoHe94B5deeunSAMYll1zCjjvu2CnPz372M7bddlsuu+wyzjjjjF67YzbbhjvuuINrr72WX/3qV6y55po89dRT/PnPf27xSEmSpDp7Ldo0deAQEkmSenHTTTcxePBgjjzySADa2tqYNGkSU6ZMYcmSJSu0ruHDh/PCCy/wxBNPkJn89Kc/Zb/99uuUZ9q0aRx33HEMHz6cO++8s1/1PPbYY2y88casueaaQNU7ZPPNN1/u7ZckSfW1Mts0rwUDGJIk9eL+++9n55137pS23nrrMXz4cNrb23tc97bbbmP06NGMHj2a008/fWn6pEmTlqbvsccendY5+OCDufzyy/nFL37BTjvttDTIAPD8889z4403cuCBB3LYYYcxbdq0Xre/cRtGjx7N7373O/bee2/mzp3LW97yFo4++mhuvfXWVg6FJElaha2oNs3o0aOZPn16p+Uf+chHli7bf//9V/i2g0NI1Ojk9Qeo3mcGpl5JalFmNh2m0V16o74OIQH48Ic/zCGHHMJvf/tbDjvsMH7xi18sXXbttdeyxx57sPbaa/PBD36Q0047jUmTJtHW1tbnbbjnnnu47bbbuPnmmznkkEM488wzOeKII3rcH6kvVvSY71b0Ni5ckl7PVmSbpmub4aKLLlpmDowVzR4YkiT14u1vfzszZ87slLZ48WLmzp3L1ltvvcLr23TTTRk0aBAzZsxYOgFXh2nTpnHDDTcwYsQIdt55ZxYsWMDNN9/cr3ra2toYO3Ysp5xyCt/85je58sorV8TmS5KkmlrZbZoVzQCGJEm9GDduHEuWLOHCCy8E4OWXX+b444/niCOOYO21135N6jz11FM566yzOvWsWLx4MbfffjuPPPIIc+bMYc6cOZx33nktDSPp6qGHHmL27NlLX8+aNYutttpqhWy7JEmqp4Fo06xIDiGRJNVWXbqCRwRXX301Rx99NKeddhqvvPIK+++/P2eccUa/y5w0aRI/+MEPlr7+4Q9/2Gn5e97znmXWueqqq9hzzz07zYkxfvx4vvCFL/Diiy8CcMABBzBo0CAAdtttN4455pilY1Y7fOUrX2HkyJEce+yxLFq0iDXWWINtttmGyZMn93t/JElS91bnNs3KFJk50NuwUowZMya7dpVRF86BIWmAPfjgg7ztbW8b6M1Qg2bvSUTck5ljBmiTasO2Re+cA0PS65Vtmu4tT9vCISSSJEmSJKn2DGBIkqSVJiK2jIibI+LBiLg/Io4r6SdHxB8jYlb5279hnS9GRHtEPBQR+zSk71vS2iPixIb0kRFxV0TMjohLI+KNJX3N8rq9LB/RWx2SJKk+DGBIkqSV6SXg+Mx8G7ArcExEbFeWTcrM0eXvOoCy7FDg7cC+wLcioi0i2oDzgP2A7YDDGso5q5Q1CngaOKqkHwU8nZnbAJNKvm7reO0OgSTp9eD1Ml1DXyzvMTGAIUmSVprMfCwzf1WePws8CGzRwyrjgUsy88XM/D3QDry7/LVn5sOZ+WfgEmB8VDex3xO4oqw/FTiooayp5fkVwLiSv7s6JEnql8GDB7NgwQKDGA0ykwULFjB48OB+l+FdSCRJ0oAoQzjeCdwFvBf4TEQcDsyk6qXxNFVw486G1ebxasBjbpf0XYAhwKLMfKlJ/i061snMlyLimZK/pzq6bvNEYCLA8OHD+7S/kqTXj2HDhjFv3jzmz58/0JtSK4MHD2bYsGH9Xt8AhiRJWukiYh3gSuCzmbk4Ir4NnAZkefw34ONANFk9ad6LNHvITw/Lelqnc2LmZGAyVHchaZZHkqRBgwYxcuTIgd6M1Y4BDElSfa3o2zv3ctvmBQsWMG7cOAAef/xx2traGDp0KADTp0/n2GOP5YEHHuCVV17hwAMP5Oyzz+bmm2/mhBNOAKC9vZ0tttiCtdZaix122IGPf/zj7LHHHpx//vkcdVQ1DcO9997LTjvtxNlnn83nP/95AF566SU23XRTPvGJT/C1r31t6faMHTuWc845hzFjXr2r2C233ML48eM7NYrOOecc9tprL04//XQuvvhi2traeMMb3sB3vvMddtlllxVw4FasiBhEFby4KDOvAsjMJxqWfxe4trycB2zZsPow4NHyvFn6U8AGEbFG6YXRmL+jrHkRsQawPrCwlzokSVJNOAeGJEnFkCFDmDVrFrNmzeJTn/oUn/vc55g1axb33nsvBx98MAcddBCzZ8/m//7v/3juuef48pe/zD777LN0nTFjxnDRRRcxa9YsLrzwQgDe8Y53cOmlly6t45JLLmHHHXfsVO/PfvYztt12Wy677LKWxsruvvvuS+ucNWsWe+21F3fccQfXXnstv/rVr7jvvvu44YYb2HLLLXsta2Urc05cADyYmd9oSN+sIdsHgN+U59OBQ8sdREYCo4BfAncDo8odR95INQnn9KwO4M3AwWX9CcA1DWVNKM8PBm4q+burQ5Ik1YgBDEmSenHTTTcxePBgjjzySADa2tqYNGkSU6ZMYcmSJT2uO3z4cF544QWeeOIJMpOf/vSn7Lfffp3yTJs2jeOOO47hw4dz5513dlNSzx577DE23nhj1lxzTQA23nhjNt98836V9Rp7L/AxYM8ut0z9ekT8OiLuA/YAPgeQmfcDlwEPAD8FjsnMl0vvis8A11NNBHpZyQtwAvBPEdFONcfFBSX9AmBISf8n4MSe6nhNj4IkSeozh5BIktSL+++/n5133rlT2nrrrcfw4cNpb29nhx126HH9gw8+mMsvv5x3vvOd7LTTTkuDDADPP/88N954I9/5zndYtGgR06ZNY7fdduuxvNtuu43Ro0cvfX3llVey9957c+qpp/KWt7yFvfbai0MOOYT3v//9/djb11Zm3k7zOSeu62Gd04HTm6Rf12y9zHyYJncRycwXgA/1pQ5JklQf9sCQJKkXmUk18qG19K4+/OEPc/nllzNt2jQOO+ywTsuuvfZa9thjD9Zee20++MEPcvXVV/Pyyz3/+N91CMnWW2/NOuuswz33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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2, figsize=(15,5))\n", "# plot bar chart 1\n", "grouper1 = landfalls_enriched[['TOTFEMALES','TOTMALES','sourceCountry']].groupby(by='sourceCountry')\n", "grouper1.sum().plot(kind='bar', stacked=True, ax=ax[0], \n", " title='Population living within high density areas')\n", "\n", "# plot bar chart 2\n", "grouper2 = landfalls_enriched[['TOTHH','sourceCountry']].groupby(by='sourceCountry')\n", "grouper2.sum().plot(kind='bar', ax=ax[1], \n", " title='Total number of households within high density areas')\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hurricanes make landfalls on coasts, which invariably are places of dense population. By geo enriching the density maps, we are able to determine that the coasts of **China** (7 million), **Hongkong** (7M), **India** (6M) and **Philippines** (3M) are at high risk as they suffer repeat landfalls and also support large populations.\n", "\n", "This information can be used by city planners to better zone the coasts and avoid development along hurricane prone areas." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "In this notebook, we accessed the aggregated hurricane track data from Part 1 as Spatially Enabled `DataFrame` objects. We visualized these DataFrames both spatially and as charts to reveal interesting information about the global hurricane dataset.\n", "\n", "We learned that global hurricanes are classified into `7` basins, with the most hurricanes occurring over **Western Pacific**. The **North Atlantic** basin, which affects the continental United States, ranks as third busiest basin. The number of hurricanes recorded worldwide has been steadily climbing as technology improves. However, after the `1970`s, we notice a year-over-year reduction in the number of hurricanes. We analyze more of this phenomena in the next part of this study.\n", "\n", "As for hurricane names, the top spot is a tie between **Irma** and **Florence**, with `15` occurrences for each so far. By turning this DataFrame into a timeseries, we were able to observe a sinusoidal seasonality. The peaks between hurricanes in northern and cyclones in southern hemisphere were offest by about `6` months, matching the time when summer occurs in these hemispheres. We also noticed that hurricanes over the **North Indian** basin occur throughout the year as they are influenced by a monsoon phenomena.\n", "\n", "We then performed **overlay analysis** to understand where hurricanes make landfall and the path they take once they make landfall. We noticed that the majority of hurricanes make landfall. Once they make a landfall, the majority travel under `100` miles inland. \n", "\n", "We extended the overlay analysis to calculate the exact points where landfall occurs. After performing a density analysis on the landfall locations, we found places along the coasts of the **Carolinas** in the United States, **Orissa, West Bengal** in India, several places along the east coast of **China**, southern tip of **Japan** and most of **Phillippines** are affected from a repeat landfall / historical perspective. \n", "\n", "By geo-enriching the high density places, we were able to understand the number of people that live in these places. **China** tops the list with most people affected.\n", "\n", "In the next notebook, we extend this analysis to answer the important question: Does the intensity of hurricanes increase over time?" ] } ], "metadata": { "esriNotebookRuntime": { "notebookRuntimeName": "ArcGIS Notebook Python 3 Standard", "notebookRuntimeVersion": "10.7.1" }, "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.7" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "**Table of Contents**", "title_sidebar": "Contents", "toc_cell": true, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "379px" }, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 2 }