Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ScienceTony/3764c9bfd3d5a4913bd04c4aa7f352fa to your computer and use it in GitHub Desktop.
Save ScienceTony/3764c9bfd3d5a4913bd04c4aa7f352fa to your computer and use it in GitHub Desktop.
Investigation into the number of occurrences over time and location.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Acquisition \n",
"[Tony McDonald](https://twitter.com/ScienceTony)<br>\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'25-07-2019'"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from datetime import datetime\n",
"datetime.today().strftime('%d-%m-%Y')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, some data must be found <br>\n",
"https://github.com/socratica/data \n",
"<br>\n",
"<br>\n",
"License: MIT License with Copyright (c) 2019 Socratica https://github.com/socratica/data/blob/master/LICENSE\n",
"<br>\n",
"This license allows me to freely download, use, manipulate and distribute. \n",
"<br>\n",
"This is taken from the [Socratica](https://www.youtube.com/Socratica) SQL youtube video for [SELECT](https://www.youtube.com/watch?v=VkabxQgtGsA&list=PLi01XoE8jYojRqM4qGBF1U90Ee1Ecb5tt&index=7). \n",
"<br>\n",
"This notebook covers\n",
"<ul>\n",
" <li>Importing, quick examination and preparation </li>\n",
" <li>Creating 'Number of Nuclear Explosions By Year' graph</li>\n",
" <li>Creating 'Number of Nuclear Explosions By Decade' graph</li>\n",
" <li>Creating 'Number of Nuclear Explosions By Area' graph</li>\n",
" </ul> "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# IPython lets me use terminal so i can use this to have a quick look at the dataset. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"! whoami"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"psql (PostgreSQL) 11.2\r\n"
]
}
],
"source": [
"! psql --version "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Python 3.7.2\r\n"
]
}
],
"source": [
"! python -V "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5.8.0\r\n"
]
}
],
"source": [
"! ipython -V "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Chitter with SQL.ipynb\r\n",
"Create A View And Find The Difference Between Nukes and Quakes.ipynb\r\n",
"Examine Earthquake with pandas.ipynb\r\n",
"Examine using SQL magic.ipynb\r\n",
"SQL_Pandas_and_sqldf.ipynb\r\n",
"Untitled.ipynb\r\n",
"\u001b[34mdata-master from YT\u001b[m\u001b[m\r\n",
"\u001b[34mmap-output-files\u001b[m\u001b[m\r\n",
"\u001b[31mserverRestart.command\u001b[m\u001b[m\r\n",
"\u001b[31mserverStart.command\u001b[m\u001b[m\r\n",
"\u001b[31mserverStatus.command\u001b[m\u001b[m\r\n",
"\u001b[31mserverStop.command\u001b[m\u001b[m\r\n",
"\u001b[34msql_data\u001b[m\u001b[m\r\n",
"\u001b[31msql_initial_state.py\u001b[m\u001b[m\r\n"
]
}
],
"source": [
"! ls "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data-master from YT/songs.csv\r\n",
"data-master from YT/earthquake.csv\r\n"
]
}
],
"source": [
"!find 'data-master from YT' -name '*csv'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I have 2 files <br>\n",
"<ul>\n",
" <li>data-master from YT/songs.csv</li>\n",
"<li>data-master from YT/earthquake.csv</li> \n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Now i will look at the files with terminal "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 23120 data-master from YT/earthquake.csv\r\n"
]
}
],
"source": [
"! wc -l 'data-master from YT/earthquake.csv'"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"earthquake_id,occurred_on,latitude,longitude,depth,magnitude,calculation_method,network_id,place,cause\r",
"\r\n",
"1,1969-01-01 9:07:06,51.096,-179.392,45,5.6,mw,iscgem812771,\"Andreanof Islands, Aleutian Islands, Alaska\",earthquake\r",
"\r\n",
"2,1969-01-02 17:50:48,-56.096,-27.842,80.1,6,mw,iscgemsup812819,South Sandwich Islands region,earthquake\r",
"\r\n",
"3,1969-01-03 3:16:40,37.14,57.899,10,5.5,mw,iscgem812826,Turkmenistan-Iran border region,earthquake\r",
"\r\n",
"4,1969-01-03 13:28:12,51.132,-179.306,15,5.9,mw,iscgem812841,\"Andreanof Islands, Aleutian Islands, Alaska\",earthquake\r",
"\r\n"
]
}
],
"source": [
"! head -n 5 'data-master from YT/earthquake.csv'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" This is a bit messy so i will use pandas"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"from pandas import DataFrame"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# This gives me a clue to the encoding."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import chardet\n",
"\n",
"#Open the test file and read the contents in as a bytes object\n",
"testfile = open('data-master from YT/earthquake.csv','rb').read()\n",
"\n",
"#Detect the file encoding (this may take some time)\n",
"chardet.detect( testfile )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The output above indicates that the encoding is ascii and it is 100% sure. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load the file into a dataframe fo use."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>earthquake_id</th>\n",
" <th>occurred_on</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" <th>depth</th>\n",
" <th>magnitude</th>\n",
" <th>calculation_method</th>\n",
" <th>network_id</th>\n",
" <th>place</th>\n",
" <th>cause</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1969-01-01 9:07:06</td>\n",
" <td>51.096</td>\n",
" <td>-179.392</td>\n",
" <td>45.0</td>\n",
" <td>5.6</td>\n",
" <td>mw</td>\n",
" <td>iscgem812771</td>\n",
" <td>Andreanof Islands, Aleutian Islands, Alaska</td>\n",
" <td>earthquake</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1969-01-02 17:50:48</td>\n",
" <td>-56.096</td>\n",
" <td>-27.842</td>\n",
" <td>80.1</td>\n",
" <td>6.0</td>\n",
" <td>mw</td>\n",
" <td>iscgemsup812819</td>\n",
" <td>South Sandwich Islands region</td>\n",
" <td>earthquake</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1969-01-03 3:16:40</td>\n",
" <td>37.140</td>\n",
" <td>57.899</td>\n",
" <td>10.0</td>\n",
" <td>5.5</td>\n",
" <td>mw</td>\n",
" <td>iscgem812826</td>\n",
" <td>Turkmenistan-Iran border region</td>\n",
" <td>earthquake</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" earthquake_id occurred_on latitude longitude depth magnitude \\\n",
"0 1 1969-01-01 9:07:06 51.096 -179.392 45.0 5.6 \n",
"1 2 1969-01-02 17:50:48 -56.096 -27.842 80.1 6.0 \n",
"2 3 1969-01-03 3:16:40 37.140 57.899 10.0 5.5 \n",
"\n",
" calculation_method network_id \\\n",
"0 mw iscgem812771 \n",
"1 mw iscgemsup812819 \n",
"2 mw iscgem812826 \n",
"\n",
" place cause \n",
"0 Andreanof Islands, Aleutian Islands, Alaska earthquake \n",
"1 South Sandwich Islands region earthquake \n",
"2 Turkmenistan-Iran border region earthquake "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Read the file as a .csv file with the encoding given...\n",
"earthquake_df = pd.read_csv('data-master from YT/earthquake.csv', encoding = 'ascii')\n",
"# ... and show us the first three rows:\n",
"earthquake_df[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Preparation "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# How clean is the data?"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Earthquake file is clean of Nan\n"
]
}
],
"source": [
"\n",
"file = earthquake_df.isnull().values.any() # returns True if data has Nans\n",
"if file == False:\n",
" print('Earthquake file is clean of Nan')\n",
"else:\n",
" print('Earthquake file needs some cleaning\\n')\n",
" \n",
"#print('Earthquake file', earthquake_df.isnull().values.any())\n",
"# df = earthquake_df[earthquake_df.isnull().any(axis=1)]\n",
"# print (df)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"earthquake_id int64\n",
"occurred_on object\n",
"latitude float64\n",
"longitude float64\n",
"depth float64\n",
"magnitude float64\n",
"calculation_method object\n",
"network_id object\n",
"place object\n",
"cause object\n",
"dtype: object"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 23119\n",
"unique 23110\n",
"top 2004-01-20 8:11:59\n",
"freq 2\n",
"Name: occurred_on, dtype: object"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df['occurred_on'].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## I might need to clean the occurred-on column in the code above since i don't really need the exact time. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Analysis and Presentation "
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 23119.000000\n",
"mean 71.165256\n",
"std 124.327891\n",
"min -1.100000\n",
"25% 12.950000\n",
"50% 33.000000\n",
"75% 53.890000\n",
"max 700.000000\n",
"Name: depth, dtype: float64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# This will be interesting for another notebook, but doesn't help me answer \n",
"# the question i currently have\n",
"earthquake_df['depth'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 23119.000000\n",
"mean 5.874432\n",
"std 0.421113\n",
"min 5.500000\n",
"25% 5.600000\n",
"50% 5.700000\n",
"75% 6.000000\n",
"max 9.100000\n",
"Name: magnitude, dtype: float64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df['magnitude'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 23119\n",
"unique 2979\n",
"top Vanuatu\n",
"freq 699\n",
"Name: place, dtype: object"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df['place'].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## I find this interesting so i will look into it a bit more. Earthquake is listed as one cause, but what are the other two? "
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 23119\n",
"unique 3\n",
"top earthquake\n",
"freq 22942\n",
"Name: cause, dtype: object"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df['cause'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['earthquake', 'nuclear explosion', 'explosion'], dtype=object)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df['cause'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Find the earliest nuke event"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>247</th>\n",
" <td>nuclear explosion</td>\n",
" <td>52km NNE of Beatty, NV</td>\n",
" <td>1969-09-16 14:30:01</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause place occurred_on\n",
"247 nuclear explosion 52km NNE of Beatty, NV 1969-09-16 14:30:01"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ne = DataFrame(earthquake_df[earthquake_df.cause == 'nuclear explosion'][['cause', 'place', 'occurred_on']])\n",
"#DataFrame(plot_df[plot_df.Gender == 'M']['In constituency since'].value_counts()).sort_values(by=['occurred_on'])\n",
"ne.sort_values(by='occurred_on')[:1]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1482</th>\n",
" <td>explosion</td>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>1973-02-16 5:02:58</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause place occurred_on\n",
"1482 explosion eastern Kazakhstan 1973-02-16 5:02:58"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ee = DataFrame(earthquake_df[earthquake_df.cause == 'explosion'][['cause', 'place', 'occurred_on']])\n",
"#DataFrame(plot_df[plot_df.Gender == 'M']['In constituency since'].value_counts()).sort_values(by=['occurred_on'])\n",
"ee.sort_values(by='occurred_on')[:1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Find the most recent nuke event"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>22482</th>\n",
" <td>nuclear explosion</td>\n",
" <td>21km ENE of Sungjibaegam, North Korea</td>\n",
" <td>2017-09-03 3:30:02</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause place \\\n",
"22482 nuclear explosion 21km ENE of Sungjibaegam, North Korea \n",
"\n",
" occurred_on \n",
"22482 2017-09-03 3:30:02 "
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ne.sort_values(by='occurred_on', ascending=False)[:1]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6379</th>\n",
" <td>explosion</td>\n",
" <td>Tuamotu Archipelago, French Polynesia region</td>\n",
" <td>1985-05-08 20:27:59</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause place \\\n",
"6379 explosion Tuamotu Archipelago, French Polynesia region \n",
"\n",
" occurred_on \n",
"6379 1985-05-08 20:27:59 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ee.sort_values(by='occurred_on', ascending=False)[:1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li>Most recent nuke: North Korea 2017-09-03 3:30:02</li>\n",
" <li>Fist nuke: 52km NNE of Beatty, NV \t1969-09-16 14:30:01 </li>\n",
"</ul>\n",
"NV is Navada, USA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# I will now examine the different causes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Nuclear explosion"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Number of occurences</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>nuclear explosion</th>\n",
" <td>173</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Number of occurences\n",
"nuclear explosion 173"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nukeCauseCount_df = DataFrame(earthquake_df[earthquake_df['cause'] == 'nuclear explosion']['cause'].value_counts())\n",
"nukeCauseCount_df.columns=[\"Number of occurences\"]\n",
"nukeCauseCount_df"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>magnitude</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>247</th>\n",
" <td>nuclear explosion</td>\n",
" <td>5.82</td>\n",
" <td>52km NNE of Beatty, NV</td>\n",
" <td>1969-09-16 14:30:01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>399</th>\n",
" <td>nuclear explosion</td>\n",
" <td>5.54</td>\n",
" <td>48km NNE of Beatty, NV</td>\n",
" <td>1970-03-26 19:00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1591</th>\n",
" <td>nuclear explosion</td>\n",
" <td>5.64</td>\n",
" <td>52km NE of Beatty, NV</td>\n",
" <td>1973-06-06 13:00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1665</th>\n",
" <td>nuclear explosion</td>\n",
" <td>6.30</td>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>1973-07-23 1:22:58</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause magnitude place \\\n",
"247 nuclear explosion 5.82 52km NNE of Beatty, NV \n",
"399 nuclear explosion 5.54 48km NNE of Beatty, NV \n",
"1591 nuclear explosion 5.64 52km NE of Beatty, NV \n",
"1665 nuclear explosion 6.30 eastern Kazakhstan \n",
"\n",
" occurred_on \n",
"247 1969-09-16 14:30:01 \n",
"399 1970-03-26 19:00:01 \n",
"1591 1973-06-06 13:00:01 \n",
"1665 1973-07-23 1:22:58 "
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nukeCause_df = DataFrame(earthquake_df[earthquake_df['cause'] == 'nuclear explosion'])\n",
"nukeCause_df[['cause', 'magnitude', 'place', 'occurred_on']][:4]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Explosion"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Number of occurences</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>explosion</th>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Number of occurences\n",
"explosion 4"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"explosionCauseCount_df = DataFrame(earthquake_df[earthquake_df['cause'] == 'explosion']['cause'].value_counts())\n",
"explosionCauseCount_df.columns=[\"Number of occurences\"]\n",
"explosionCauseCount_df"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>magnitude</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1482</th>\n",
" <td>explosion</td>\n",
" <td>5.6</td>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>1973-02-16 5:02:58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2460</th>\n",
" <td>explosion</td>\n",
" <td>6.4</td>\n",
" <td>Novaya Zemlya, Russia</td>\n",
" <td>1975-08-23 8:59:58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6106</th>\n",
" <td>explosion</td>\n",
" <td>5.7</td>\n",
" <td>Tuamotu Archipelago, French Polynesia region</td>\n",
" <td>1984-11-02 20:44:59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6379</th>\n",
" <td>explosion</td>\n",
" <td>5.7</td>\n",
" <td>Tuamotu Archipelago, French Polynesia region</td>\n",
" <td>1985-05-08 20:27:59</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause magnitude place \\\n",
"1482 explosion 5.6 eastern Kazakhstan \n",
"2460 explosion 6.4 Novaya Zemlya, Russia \n",
"6106 explosion 5.7 Tuamotu Archipelago, French Polynesia region \n",
"6379 explosion 5.7 Tuamotu Archipelago, French Polynesia region \n",
"\n",
" occurred_on \n",
"1482 1973-02-16 5:02:58 \n",
"2460 1975-08-23 8:59:58 \n",
"6106 1984-11-02 20:44:59 \n",
"6379 1985-05-08 20:27:59 "
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"explosionCause_df = DataFrame(earthquake_df[earthquake_df['cause'] == 'explosion'])\n",
"explosionCause_df[['cause', 'magnitude', 'place', 'occurred_on']]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Earthquake"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Number of occurences</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>earthquake</th>\n",
" <td>22942</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Number of occurences\n",
"earthquake 22942"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthCause_df = DataFrame(earthquake_df[earthquake_df['cause'] == 'earthquake']['cause'].value_counts())\n",
"earthCause_df.columns=[\"Number of occurences\"]\n",
"earthCause_df"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" <th>magnitude</th>\n",
" <th>place</th>\n",
" <th>occurred_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>earthquake</td>\n",
" <td>5.6</td>\n",
" <td>Andreanof Islands, Aleutian Islands, Alaska</td>\n",
" <td>1969-01-01 9:07:06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>earthquake</td>\n",
" <td>6.0</td>\n",
" <td>South Sandwich Islands region</td>\n",
" <td>1969-01-02 17:50:48</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>earthquake</td>\n",
" <td>5.5</td>\n",
" <td>Turkmenistan-Iran border region</td>\n",
" <td>1969-01-03 3:16:40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>earthquake</td>\n",
" <td>5.9</td>\n",
" <td>Andreanof Islands, Aleutian Islands, Alaska</td>\n",
" <td>1969-01-03 13:28:12</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause magnitude place \\\n",
"0 earthquake 5.6 Andreanof Islands, Aleutian Islands, Alaska \n",
"1 earthquake 6.0 South Sandwich Islands region \n",
"2 earthquake 5.5 Turkmenistan-Iran border region \n",
"3 earthquake 5.9 Andreanof Islands, Aleutian Islands, Alaska \n",
"\n",
" occurred_on \n",
"0 1969-01-01 9:07:06 \n",
"1 1969-01-02 17:50:48 \n",
"2 1969-01-03 3:16:40 \n",
"3 1969-01-03 13:28:12 "
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthCause_df = DataFrame(earthquake_df[earthquake_df['cause'] == 'earthquake'])\n",
"earthCause_df[['cause', 'magnitude', 'place', 'occurred_on']][:4]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create a DataFrame with just explosion and nuclear explosion in the cause column"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(23119, 10)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"earthquake_df.shape"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"booleans = []\n",
"for cause in earthquake_df.cause:\n",
" if (cause == 'nuclear explosion' or cause == 'explosion'):\n",
" booleans.append(True)\n",
" else:\n",
" booleans.append(False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### This simple check should return True "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[True]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"booleans[1482:1483]"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"23119"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(booleans)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"nuke_bool = pd.Series(booleans)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 False\n",
"1 False\n",
"2 False\n",
"3 False\n",
"4 False\n",
"dtype: bool"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nuke_bool.head()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>earthquake_id</th>\n",
" <th>occurred_on</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" <th>depth</th>\n",
" <th>magnitude</th>\n",
" <th>calculation_method</th>\n",
" <th>network_id</th>\n",
" <th>place</th>\n",
" <th>cause</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>247</th>\n",
" <td>248</td>\n",
" <td>1969-09-16 14:30:01</td>\n",
" <td>37.314167</td>\n",
" <td>-116.460667</td>\n",
" <td>1.2</td>\n",
" <td>5.82</td>\n",
" <td>ml</td>\n",
" <td>ci3326197</td>\n",
" <td>52km NNE of Beatty, NV</td>\n",
" <td>nuclear explosion</td>\n",
" </tr>\n",
" <tr>\n",
" <th>399</th>\n",
" <td>400</td>\n",
" <td>1970-03-26 19:00:01</td>\n",
" <td>37.300500</td>\n",
" <td>-116.534167</td>\n",
" <td>1.2</td>\n",
" <td>5.54</td>\n",
" <td>ml</td>\n",
" <td>ci3325031</td>\n",
" <td>48km NNE of Beatty, NV</td>\n",
" <td>nuclear explosion</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1482</th>\n",
" <td>1483</td>\n",
" <td>1973-02-16 5:02:58</td>\n",
" <td>49.835000</td>\n",
" <td>78.232000</td>\n",
" <td>0.0</td>\n",
" <td>5.60</td>\n",
" <td>mb</td>\n",
" <td>usp00000jc</td>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>explosion</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1591</th>\n",
" <td>1592</td>\n",
" <td>1973-06-06 13:00:01</td>\n",
" <td>37.245000</td>\n",
" <td>-116.346000</td>\n",
" <td>1.1</td>\n",
" <td>5.64</td>\n",
" <td>ml</td>\n",
" <td>ci3319623</td>\n",
" <td>52km NE of Beatty, NV</td>\n",
" <td>nuclear explosion</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1665</th>\n",
" <td>1666</td>\n",
" <td>1973-07-23 1:22:58</td>\n",
" <td>49.986000</td>\n",
" <td>78.853000</td>\n",
" <td>0.0</td>\n",
" <td>6.30</td>\n",
" <td>mb</td>\n",
" <td>usp00002tp</td>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>nuclear explosion</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" earthquake_id occurred_on latitude longitude depth \\\n",
"247 248 1969-09-16 14:30:01 37.314167 -116.460667 1.2 \n",
"399 400 1970-03-26 19:00:01 37.300500 -116.534167 1.2 \n",
"1482 1483 1973-02-16 5:02:58 49.835000 78.232000 0.0 \n",
"1591 1592 1973-06-06 13:00:01 37.245000 -116.346000 1.1 \n",
"1665 1666 1973-07-23 1:22:58 49.986000 78.853000 0.0 \n",
"\n",
" magnitude calculation_method network_id place \\\n",
"247 5.82 ml ci3326197 52km NNE of Beatty, NV \n",
"399 5.54 ml ci3325031 48km NNE of Beatty, NV \n",
"1482 5.60 mb usp00000jc eastern Kazakhstan \n",
"1591 5.64 ml ci3319623 52km NE of Beatty, NV \n",
"1665 6.30 mb usp00002tp eastern Kazakhstan \n",
"\n",
" cause \n",
"247 nuclear explosion \n",
"399 nuclear explosion \n",
"1482 explosion \n",
"1591 nuclear explosion \n",
"1665 nuclear explosion "
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_df = earthquake_df[nuke_bool]\n",
"complete_nuke_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(177, 10)"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_df.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Everything looks good. Now create a DataFrame consisting of the numbers of explosions each year."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"247 1969-09-16 14:30:01\n",
"399 1970-03-26 19:00:01\n",
"Name: occurred_on, dtype: object"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_df['occurred_on'][:2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The occurred_on object will need to be changed because i just want the year."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"earthquake_id int64\n",
"occurred_on object\n",
"latitude float64\n",
"longitude float64\n",
"depth float64\n",
"magnitude float64\n",
"calculation_method object\n",
"network_id object\n",
"place object\n",
"cause object\n",
"dtype: object"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/tonymcdonald/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" \n"
]
}
],
"source": [
"# I can ignore this error message. \n",
"complete_nuke_df['Year'] = complete_nuke_df['occurred_on'].str[:4]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"247 1969\n",
"399 1970\n",
"1482 1973\n",
"Name: Year, dtype: object"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# It has worked! \n",
"complete_nuke_df['Year'][:3]"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Year</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1970</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1974</th>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975</th>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause\n",
"Year \n",
"1969 1\n",
"1970 1\n",
"1973 7\n",
"1974 6\n",
"1975 10"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_count_df = DataFrame(complete_nuke_df.groupby(['Year']).count()['cause'])\n",
"complete_nuke_count_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Rename the column heading"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"complete_nuke_count_df = complete_nuke_count_df.rename(columns={\"cause\": \"Nuclear Explosions\"})"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Nuclear Explosions</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Year</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1970</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1973</th>\n",
" <td>7</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Nuclear Explosions\n",
"Year \n",
"1969 1\n",
"1970 1\n",
"1973 7"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_count_df[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Great! Now i can plot the result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plot the results"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAm0AAAF3CAYAAAD3rnzeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3XecbHV9//HXGy7SpV4LyvXagGDXKzYSFRtWjIlEECtKNFFI1NhbLISoMRprbhCsVBvIz4JgwArSOwgqShEBESlR5MLn98c5C8Oye+/d2Tm7e5jX8/GYx5455fP9nJkzM5/9npaqQpIkSQvbGvOdgCRJklbNok2SJKkHLNokSZJ6wKJNkiSpByzaJEmSesCiTZIkqQcs2iTNSpILkzx5vvOYjSTvTvLFWcZ4a5J9R5WTJE1m0SaNgbaw+m2S9QfGvSLJMfOY1owlOSbJn5JcN/D4xnznBVBVe1fVK+ayzSSV5Pr2dbgyyYFJNh4izvuTHD1p3FZJrknyoNFlLGk2LNqk8bEI2Gu+k1hdSdacZtJrqmqDgcez5zSxhechVbUBcB9gE+DdQ8R4D3C3JK8ESBLgf4APV9UZo0q0jb1olPGkcWLRJo2PDwJvmKonJsnSttdm0cC4Y5K8YuD5K5Ock+TaJGcnefgUcdZI8uYkP0/yuySHJNl0YPqhSS5L8ock30/ygIFpn03yqSTfTHI98MSZrFySNyU5bmIdkrw6yVlJ1hlYvz2SXJrkN0lev5JYz2mXvbp9Hf5iUjuXtK/DeUme1I6/zS7WVcS4MMkbkpzevhYHJ1mnnbZ5kiPa5a5K8oMkq/yurqprgMOBbds4z09y0qT1en2Sr0+x7A3Ay4F9ktwD2IOmAHz/wLKvSHJukt8n+VaSLQemfTzJxW3P3AlJHjsw7X3t+h2Y5Fpgt1Wti6SpWbRJ4+NE4BjgDTNdMMnzaXpwXgzcGXgO8LspZt0TeC7weGAL4PfAJwamfwu4P3AX4GTgS5OW35WmUNgQ+OEM0/wg8Gfg7UnuD+wN7FZVfxqY54lt+08F3jzVsXhJtgIOBP4JWAx8E/hGkjsl2Rp4DfDIqtoQeBpw4UxiDMy2M7AjcG/gwcBL2/GvBy5ul7sr8FZglfcbTLIJzWt/XDvqcODeg8UiTcH0hamWr6rjgc8Cn6d5D15eVTe2sf8W+Bdgpzav44EDBhY/vl2HTYEvA4cmWXtg+l+3828EHLyqdZE0NYs2aby8E3htksUzXO4VwAeq6oRqXFBVv5pivr8H3lZVF7e9N+8G/nai96uq9quqawemPSTJRgPLH1ZVP6qqmycVW4P+q+2Fmni8t419M01RuSdNwfKBqjpl0rL/WlXXt7v89gd2mSL+3wH/r6q+2xYtHwLWBR4L3ASsDWybZK2qurCqfj7DGLesR1VdWlVXAd8AHtqOvxG4O3Cvqrqxqn5QK79J9MlJrgauBJYA/92+HjfQFEi7AbS9mkuBI1YS6+3A/YAvVNWJA+P/Hti7qs6rqhXA+4Dt2l45quoLVXVVO+0DNIX9/QaW/2FVfaN9X/+4kvYlrYRFmzRGqupMmh/tN89w0S2BqYqTye4FfG2ioALOoSl07ppkzST7tLtOr+HWHqrNB5a/aDXa2LOqNh54vGNiQlVdCPwvTXHyiSmWHYz/K5rewMm2aKdNxLy5Xe4eVXUBTe/Zu4HLkxyUZEYxBua5bGD4/4AN2uEPAhcARyb5RZJVvVcPr6qNgXWATwE/mNjVCnwO2LU9Ru1FwCFtMTeltqD6JXDWpEn3Aj4x8L5eCdwM3BMgyRvbXad/oOldXZ+Zv6+SVsGiTRo/7wJeyW0LiOvbv+sNjLvbwPBFwH1XI/ZFwNMnFVXrVNUlNLs+dwKeTLObbGm7TAaWX+VuwJVJ8gzgMcDRNMXPZFsODC8BLp1inktpipSJmGmXuwSgqg6oqu3beQr495nGWJm2J/L1VXUf4NnA6yaOm1vFcjcC+9Lsbn1gO+44ml3Gf0nz+k+5a3Q1XATsPul9Xbeqjk/yROB1wN8AG9McC3cdI3xfJTUs2qQx0/YWHUyzG3Fi3BU0BcVubY/Yy7ltkbYvzUkMj0jjfknuxe19Gnj/xLQki5Ps1E7bELiB5li49WiOORuZJJsDn6HZlfsS4NltETfoHUnWa3cVvoypj686BHhmkiclWYvmGLMbgB8n2TrJDu3xWn8C/kjTk7jaMVZjPZ7Vvr4BrmnjT9XG5OXWbNfpj8AvBiZ9Hvg4sKKqZnqc4IRPA2+bOD4uycbtcW7QvK8raHrf1qLphVx/qiCSZseiTRpP7+H2P6yvpDnY/HfAAxgoMKrqUJqD0w8ArgW+TnPQ+WQfpTme7Mj2TMHjgEe10z5Ps8vwEuBsbj1gfqY+nttep23iDMnlNMfEfbOqfgfsDuybZLOBZY+l2fV4NPChqjpycvCqOo/mOLCP0RQizwaeXVV/pjmebZ92/GU0J1S8dYYxVuX+wFE0vVU/AT5ZVcesZP7TklxHs1vyJcBft8fJTfgCTc/bsL1sE+//h2lOMLgGOJ3mJAxoTrI4CjifZpf3NcBvhm1L0vSy8uNbJan/kiylOVZrrfZg+bGRZF3gcppj386f73wkDc+eNkm6Y3s1cIIFm9R/Xplaku6gklxIc0LAc+c5FUkj4O5RSZKkHnD3qCRJUg9YtEmSJPWARZskSVIPWLRJkiT1gEWbJElSD1i0SZIk9YBFmyRJUg9YtEmSJPWARZskSVIPWLRJkiT1gEWbJElSD1i0SZIk9YBFmyRJUg9YtEmSJPWARZskSVIPWLRJkiT1gEWbJElSDyya7wS6sPnmm9fSpUvnOw1JkqRVOumkk66sqsWrmu8OWbQtXbqUE088cb7TkCRJWqUkv1qd+dw9KkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMLpmhLsl+Sy5OcOWn8a5Ocl+SsJB+Yr/wkSZLm04Ip2oDPAjsOjkjyRGAn4MFV9QDgQ/OQlyRJ0rxbMEVbVX0fuGrS6FcD+1TVDe08l895YpIkSQvAginaprEV8JdJjk9ybJJHzndCkiRJ82Gh33t0EbAJ8GjgkcAhSe5TVTV5xiR7AHsALFmyZE6TlKQ7hAOy+vPueruvYUkdW+g9bRcDX63GT4Gbgc2nmrGqllfVsqpatnjx4jlNUpIkqWsLvWj7OrADQJKtgDsBV85rRpIkSfNgweweTXIg8ARg8yQXA+8C9gP2ay8D8mfgJVPtGpUkSbqjWzBFW1XtMs2k3eY0EUmSpAVooe8elSRJEhZtkiRJvWDRJkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMWbZIkST1g0SZJktQDC+beo9KCdkBWf95dq7s8NDd8vyUtQPa0SZIk9YBFmyRJUg9YtEmSJPWARZskSVIPWLRJkiT1gEWbJElSD1i0SZIk9YBFmyRJUg9YtEmSJPWARZskSVIPWLRJkiT1gEWbJElSDyyYoi3JfkkuT3LmFNPekKSSbD4fuUmSJM23BVO0AZ8Fdpw8MsmWwFOAX891QpIkSQvFginaqur7wFVTTPpP4I1AzW1GkiRJC8eCKdqmkuQ5wCVVddpqzLtHkhOTnHjFFVfMQXaSJElzZ8EWbUnWA94GvHN15q+q5VW1rKqWLV68uNvkJEmS5tiCLdqA+wL3Bk5LciFwT+DkJHeb16wkSZLmwaL5TmA6VXUGcJeJ523htqyqrpy3pCRJkubJgulpS3Ig8BNg6yQXJ9l9vnOSJElaKBZMT1tV7bKK6UvnKBVJkqQFZ8H0tEmSJGl6Fm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPbBgbmMljZ0Dsnrz7VrzG1OStCDY0yZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMWbZIkST2wYIq2JPsluTzJmQPjPpjk3CSnJ/lako3nM0dJkqT5smCKNuCzwI6Txn0XeGBVPRj4GfCWuU5KkiRpIVgwRVtVfR+4atK4I6tqRfv0OOCec56YJEnSArBgirbV8HLgW/OdhCRJ0nzoRdGW5G3ACuBLK5lnjyQnJjnxiiuumLvkJEmS5sCCL9qSvAR4FvDCqqrp5quq5VW1rKqWLV68eO4SlCRJmgOL5juBlUmyI/Am4PFV9X/znY8kSdJ8WTA9bUkOBH4CbJ3k4iS7Ax8HNgS+m+TUJJ+e1yQlSZLmyYLpaauqXaYY/Zk5T0SSJGkBWjA9bZIkSZqeRZskSVIPWLRJkiT1gEWbJElSD1i0SZIk9YBFmyRJUg90WrQl2STJg7tsQ5IkaRyMvGhLckySOyfZFDgN2D/Jh0fdjiRJ0jjpoqdto6q6BngesH9VPQJ4cgftSJIkjY0uirZFSe4O7Awc0UF8SZKksdNF0fYe4DvABVV1QpL7AOd30I4kSdLYGPm9R6vqUODQgee/AP5m1O1IkiSNk5EXbUkWA68Elg7Gr6qXj7otSZKkcTHyog04DPgBcBRwUwfxJUmSxk4XRdt6VfWmDuJKkiSNrS5ORDgiyTM6iCtJkjS2uija9qIp3P6U5Nr2cU0H7UiSJI2NLs4e3XDUMSVJksZdF8e0keQ5wF+1T4+pKi+yK0mSNAtd3Ht0H5pdpGe3j73acZIkSRpSFz1tzwAeWlU3AyT5HHAK8OYO2pIkSRoLXZyIALDxwPBGHbUhSZI0Nrroafs34JQk/wuE5ti2t3TQjiRJ0tgYeU9bVR0IPBr4avt4TFUdtKrlkuyX5PIkZw6M2zTJd5Oc3/7dZNT5SpIk9cHIirYk27R/Hw7cHbgYuAjYoh23Kp8Fdpw07s3A0VV1f+BoPC5OkiSNqVHuHn0dsAfwH1NMK2CHlS1cVd9PsnTS6J2AJ7TDnwOOAbxFliRJGjsjK9qqao/27xNHFRO4a1X9po37myR3GWFsSZKk3hj5iQhJng98u6quTfJ24OHAe6vqlFG3NandPWh6+liyZEmXTY23A7L68+5ao425uvE0ftyGFi7fG2lkurjkxzvagm174Gk0uzU/PWSs3ya5O0D79/LpZqyq5VW1rKqWLV68eMjmJEmSFqYuirab2r/PBD5VVYcBdxoy1uHAS9rhlwCHzTI3SZKkXuqiaLskyX8DOwPfTLL26rST5EDgJ8DWSS5OsjuwD/CUJOcDT2mfS5IkjZ0uLq67M82lOz5UVVe3uzX/ZVULVdUu00x60iiTkyRJ6qMuLq77f8DPgacleQ1wl6o6ctTtSJIkjZORF21J9gK+BNylfXwxyWtH3Y4kSdI46WL36O7Ao6rqeoAk/05zrNrHOmhLkiRpLHRxIkK49QxS2uEZXNxLkiRJk3XR07Y/cHySr7XPnwt8poN2JEmSxsbIi7aq+nCSY4DtaXrYXtb13RAkSZLu6EZWtCXZdODphe3jlmlVddWo2pIkSRo3o+xpOwkopj5+rYD7jLAtSZKksTKyoq2q7j2qWJIkSbqtLk5EIMnzaI5pK+AHVfX1LtqRJEkaF11cXPeTwKuAM4AzgVcl+cSo25EkSRonXfS0PR54YFUVQJLP0RRwkiRJGlIXF9c9D1gy8HxL4PQO2pEkSRobXfS0bQack+Sn7fNHAsclORygqp7TQZuSJEl3aF0Ube/sIKYkSdJY66Jou6Kqzh4ckeQJVXVMB21JkiSNhS6OaTskyRvTWDfJx4B/66AdSZKksdFF0fYomhMRfgycAFwKPK6DdiRJksZGF0XbjcAfgXWBdYBfVtXNHbQjSZI0Nroo2k6gKdoeSXNXhF2SfLmDdiRJksZGFyci7F5VJ7bDlwE7JXlRB+1IkiSNjZH1tCXZAaCqTkwy+ebx14+qHUmSpHE0yt2jHxoY/sqkaW8fYTuSJEljZ5RFW6YZnuq5JEmSZmCURVtNMzzV8xlJ8s9JzkpyZpIDk6wzm3iSJEl9M8oTEe7T3l80A8O0zycf47baktwD2BPYtqr+mOQQ4AXAZ2eZryRJUm+MsmjbaWD4Q5OmTX4+U4uAdZPcCKxHc8FeSZKksTGyoq2qjh1VrElxL0nyIeDXNNd/O7Kqjpw8X5I9gD0AlixZ0kUq6pMDVvMwyl1ntef+jm91X0fwtZSkjnVxcd2RSrIJTS/evYEtgPWT7DZ5vqpaXlXLqmrZ4sWL5zpNSZKkTi34og14Ms2tsK6oqhuBrwKPneecJEmS5tRIi7Ykayb54Chj0uwWfXSS9ZIEeBJwzojbkCRJWtBGWrRV1U3AI9rialQxjwe+DJwMnEGT8/JRxZckSeqDLu49egpwWJJDGbh9VVV9ddiAVfUu4F0jyE2SJKmXuijaNgV+B+wwMK5ojkWTJEnSEEZetFXVy0YdU5IkadyNvGhrbzG1O/AA4JbbTVXVy0fdliRJ0rjo4pIfXwDuBjwNOBa4J3BtB+1IkiSNjS6KtvtV1TuA66vqc8AzgQd10I4kSdLY6KJou7H9e3WSBwIbAUs7aEeSJGlsdHH26PL21lPvAA4HNgDe2UE7kiRJY6OLs0f3bQePBe4z6viSJEnjaOS7R5PcNclnknyrfb5tkt1H3Y4kSdI46eKYts8C3wG2aJ//DPinDtqRJEkaG10c07Z5VR2S5C0AVbUiyU0dtHPHc8Bq3rJ11+o2D0mj5+d7dHwtNaa66Gm7PslmNLeuIsmjgT900I4kSdLY6KKn7XU0Z43eN8mPgMXA33bQjiRJ0tjo4uzRk5M8HtgaCHBeVd24isUkSZK0EiMr2pI8b5pJWyWhqr46qrYkSZLGzSh72p69kmkFWLRJkiQNaWRFW1W9bFSxJEmSdFtdXFx37yQbDzzfJMn7Rt2OJEnSOOnikh9Pr6qrJ55U1e+BZ3TQjiRJ0tjoomhbM8naE0+SrAusvZL5JUmStApdXKfti8DRSfanOQHh5cDnOmhHkiRpbHRxnbYPJDkDeBLNddreW1XfGXU7kiRJ46SLnjaq6lvAt7qILUmSNI66OHv02iTXtI8/JbkpyTWzjLlxki8nOTfJOUkeM6p8JUmS+qCL3aMbDj5P8lxgu1mG/Sjw7ar62yR3AtabZTxJkqRe6eLs0duoqq8DOwy7fJI7A38FfKaN9+fBS4pIkiSNg5H3tE26B+kawDKas0iHdR/gCmD/JA8BTgL2qqrrZxFTkiSpV7o4EWHwHqQrgAuBnWYRbxHwcOC1VXV8ko8CbwbeMThTkj2APQCWLFkyi+buYA7I6s2362zqamkG3CYlaShdHNM26nuQXgxcXFXHt8+/TFO0TW53ObAcYNmyZX7bS5KkO5SRFW1J3rmSyVVV7x0mblVdluSiJFtX1Xk01387e6gkJUmSemqUPW1THWO2PrA7sBkwVNHWei3wpfbM0V8Ao+7NkyRJWtBGVrRV1X9MDCfZENiLprg6CPiP6ZZbzdin0pzQIEmSNJZGekxbkk2B1wEvpLnf6MOr6vejbEOSJGkcjfKYtg8Cz6M5GeBBVXXdqGJLkiSNu1FeXPf1wBbA24FLB25lde1sb2MlSZI07kZ5TFvnd1eQJEkaVxZakiRJPWDRJkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPWDRJkmS1AMWbZIkST1g0SZJktQDFm2SJEk9YNEmSZLUAxZtkiRJPdCboi3JmklOSXLEfOciSZI013pTtAF7AefMdxKSJEnzoRdFW5J7As8E9p3vXCRJkuZDL4o24CPAG4Gb5zsRSZKk+bBovhNYlSTPAi6vqpOSPGEl8+0B7AGwZMmSOcpOktR7B2T15921ustDWoU+9LQ9DnhOkguBg4Adknxx8kxVtbyqllXVssWLF891jpIkSZ1a8EVbVb2lqu5ZVUuBFwDfq6rd5jktSZKkObXgizZJkiT14Ji2QVV1DHDMPKchSZI05+xpkyRJ6gGLNkmSpB6waJMkSeoBizZJkqQesGiTJEnqAYs2SZKkHrBokyRJ6gGLNkmSpB6waJMkSeoBizZJkqQesGiTJEnqAYs2SZKkHrBokyRJ6gGLNkmSpB6waJMkSeoBizZJkqQesGiTJEnqAYs2SZKkHrBokyRJ6gGLNkmSpB6waJMkSeoBizZJkqQesGiTJEnqAYs2SZKkHljwRVuSLZP8b5JzkpyVZK/5zkmSJGmuLZrvBFbDCuD1VXVykg2Bk5J8t6rOnu/EJEmS5sqC72mrqt9U1cnt8LXAOcA95jcrSZKkudWHnrZbJFkKPAw4foppewB7ACxZsmRO85IkScABWb35dq35jdlTC76nbUKSDYCvAP9UVddMnl5Vy6tqWVUtW7x48dwnKEmS1KFeFG1J1qIp2L5UVV+d73wkSZLm2oIv2pIE+AxwTlV9eL7zkSRJmg8LvmgDHge8CNghyant4xnznZQkSdJcWvAnIlTVD4HVPApRkiTpjqkPPW2SJEljz6JNkiSpByzaJEmSesCiTZIkqQcs2iRJknrAok2SJKkHLNokSZJ6wKJNkiSpByzaJEmSesCiTZIkqQcs2iRJknpgwd97dGQOWM3bl+5ao403k5iSNBOj/l7T6HTx3vg7NhpdrPccfRbtaZMkSeoBizZJkqQesGiTJEnqAYs2SZKkHrBokyRJ6gGLNkmSpB6waJMkSeoBizZJkqQesGiTJEnqAYs2SZKkHrBokyRJ6oFeFG1JdkxyXpILkrx5vvORJEmaawu+aEuyJvAJ4OnAtsAuSbad36wkSZLm1oIv2oDtgAuq6hdV9WfgIGCnec5JkiRpTvWhaLsHcNHA84vbcZIkSWMjVTXfOaxUkucDT6uqV7TPXwRsV1WvnTTfHsAe7dOtgfNWI/zmwJUjTLeLmH3IsYuYfcixi5h9yLGLmH3IsYuYfcixi5h9yLGLmH3IsYuYfcixi5gziXevqlq8qpkWzS6fOXExsOXA83sCl06eqaqWA8tnEjjJiVW1bHbpdRuzDzl2EbMPOXYRsw85dhGzDzl2EbMPOXYRsw85dhGzDzl2EbMPOXYRs4sc+7B79ATg/knuneROwAuAw+c5J0mSpDm14HvaqmpFktcA3wHWBParqrPmOS1JkqQ5teCLNoCq+ibwzQ5Cz2h36jzF7EOOXcTsQ45dxOxDjl3E7EOOXcTsQ45dxOxDjl3E7EOOXcTsQ45dxBx5jgv+RARJkiT145g2SZKksWfRJkmS1AMWbZIkST1g0SZJkjQLSfZMsuWq55xlO+N0IkKSJwJ/Q3Ox3hXA+cC+VXXBLGI+DXguza21iubCv4dV1beHiBXg+W2cLwM70Nxn9Vzg01V187B5Tmrne1W1wyyW37yqrhx4vhvNPWLPBP6nZrhRJflr4NiquirJYuA/gIcBZwOvr6qLh8jxw8BXqupHM112JTE3BV5D8x5/Bngr8BjgHGDvqvr9EDG72Ca3odluBrfJw6vqnGFjrqStl1XV/kMst02b3/FVdd3A+B2H+ey0y24HVFWdkGRbYEfg3Pbs85FI8vmqevGIYm1P+7mpqiOHjPEo4JyquibJusCbgYfTfHb2rqo/DBFzT+BrVXXRKmdevXgT19e8tKqOSrIr8Fiaz83yqrpxyLj3Bf6a2352DhxmnQdijuz7fBXtvLOq3jPksk+jucj80VV14cD4l1fVfkPE6/x3Z6H95rQxRvq7k+QPwPXAz4EDgUOr6oqZ5rXKdsalaEuyD3BX4GiaD+UvgZ8B/0Dz5XboEDE/AmwFfJ7mzg3QfJheDJxfVXvNMN4ngbsAdwKuAdYGvgE8A/jtTOO1MU+fPKrN+TyAqnrwEDFPrqqHt8NvB/4SOAB4FnBxVf3zDOOdXVXbtsMHA8cBhwJPBl5YVU8ZIscrgF8Bi4GDab7MT5lpnEkxvwmcAdwZ+It2+BDgKcBDqmqnGcbrYpt8E7ALcBC33SZfABxUVfvMNOYq2vt1VS2Z4TJ7Av9I86P9UGCvqjqsnXbLtjXDmO8Cnk5zGaPvAo8CjqHZhr5TVe8fIubki3gHeCLwPYCqes4M4/20qrZrh19J8xp8DXgq8I1h3pskZ9FseyuSLAf+j+aH90nt+OcNEXOkPz5JvkTzvqwHXA1sAHy1zTFV9ZIhYu4JPBs4lub78VTg9zRF3D9U1TFDxBzp9/kq2prx56Zdbm9ge+BkmvX/SFV9rJ027GdnpL87ffjNaeOM9HcnySnAI9rl/w54DnASzWfoq1V17UxznFJVjcUDOGNgeBHwo3Z4E5r/dIeJ+bNpxofmQz5UjsBawO+AOw3ke8aQOR4OfBHYBrgXsBS4qB2+15AxTxkYPhlYfyDvGecJnDcwfNKkaafOJkfg/sA7gLNo/nN8F7DVkDFPHXh/L5ltnl1tk8BaU4y/0zDbZLvs6dM8zgBuGGa9gQ3a4aXAiTSF2222rSFirklTGFwD3Lkdvy5w+pAxT24/O08AHt/+/U07/Phht8l2+ARgcTu8/iw+3+cM5jvbbXIiT5pDZ55K06N8BfBt4CXAhsNsP+3fRcBvgTXb55nFe3PGQJz1gGPa4SWz2IZG/X1+zTSPa4EVs1jvRe3wxjTXL/3PydvXTGO2f0fyu0MPfnPaZUf6uzPF528tmsLtQOCKYXKc6jFOx7Td3O7eAtiC5gueanZpZciYf2p3yUz2SOBPQ8Rb0eZ0I3BCVf25fb4CuGmYBKvpDfgKzUX+HlJNd/qNVfWrqvrVMDGBdZM8LMkjaL44rx/Ie5g8j0nynnb3zjFJngu37DocdldHtTmdX1XvraoHADsD6zD8hZrXSLIJze6YDZIsbfPcjKYomqkutsmb21iT3b2dNoy70vQ2PHuKx++GiLdmtbtE2+3xCcDT213aw673iqq6qar+D/h5VV3Txv8jw6/3Mpr/lN8G/KGa3ps/VtWxVXXsEPHWSLJJu72k2t6r9vOzYsgcz0zysnb4tCTLAJJsBQy127FJqW6uqiOranea7emTNLubfzFEvDVDfxBnAAAQpUlEQVTaXaQb0hRYG7Xj16b5YRvWxMXh125jU1W/nkXMUX+fXw3cv6ruPOmxIU3xP4xF7e8BVXU1zWfwzkkOZbjvIBjx705PfnNg9L87t/nuqqobq+rwqtqF5p+JkejFHRFGZG/glCTn0fwH8GqAdl/2aUPGfBnwySQbcmt3+pY0/029dIh4lyXZoKquq6odJ0YmuRvw5yFzpKq+luRI4L1JXsHwH+5b8gQ+3A5fleTuVfWb9sdomB+f19D8MJ7XPv/nJNfTdNG/aMgcb/fjX1UTPURvGTLmv9H01gG8HNg3SQHbAv86RLwutsl/Ao5Ocj7Nf7fQfGHcj+Z1HsYRND1jp06ekOSYIeJdluShE/Gq6rokzwL2Ax40ZI5/TrJeW7Q9YiC/jRiyaKvmWJ7/bH8Q/zPJb5ndd+ZGNEVggEpyt6q6LMkGDF+svgL4aLvL6ErgJ0kuonnvXzFkzNv9+ND0nhze/sDN1GdoPjdr0nzOD03yC+DRNLvxh7EvcEKS44C/Av4dbvnsXDVkzJcCnxrh9/nnaXqXfjvFtAOGiAfw8ySPn/inoapuAnZP8j6aY2OHMfLfnQ5+c37DaH9zYPS/O3833YT2n8eRGJtj2uCWA8nvA1zQ/pcyqrh3ozlwNTT71y8bVew2/vo03cGXjyDWQ4DHVNWnZ5/Z7WKvCazd/nAOG2Mjmv8mh+nBGYyzQQ0c4D4q7TqmmmOIFtEck3VJVQ31n3MX22SSNWgO0r1lm6T5D3rY/0hHKsk9aXrGbvc5SfK4GuLkkSRrV9UNU4zfHLh7VZ0xXLa3ifVM4HFV9dbZxpoUdz3grlX1y1nE2JBmO1pE8x00VaGwurG2qqqfDbv8NDG3AKiqS5NsTHPcz6+r6qeziPkAmmNLz6yqc1c1/wzidvp9PhsTRfNURUCSe1TVJSNsayS/Owv9N6eNM5LfnZXEH9nv0dgUbW33/I3VrnDbBfpw4Oyq+taQMR/c9t6MKseRxutLzD7k2EXMLnJs4y4Brqmqq9tduMtojn06a8Qxz62qMxdCvL7E7EOOXcTsQ44DcZcxcEbqbAvCUcfrS8w+5NhVzCnaGOrEkynViA6OW+gPmt1Nm7TD/wL8GHg7zZlm+wwZ8ybgAuC9wLYjyHGk8foSsw859mi930xzFuq5NLvHzqXZPXUW8LqFELMPObreY7nej6c5KeYomjNRjwB+RHMW8pbzHa8vMfuQY0fr/bppHq8HrhomxynbGVWghf5g4Gy89o1atx1exPBnMJ0CPBB4P82P72ntl8nShRCvLzH7kGOP1vssmjMmN6M5S23wDMVhz0gdacw+5Oh6j+V6nzIQ594016qD5pI+R853vL7E7EOOHa33n2j+AX/XFI+rh8lxynZGFWihP2h61h7YDn+bW3vd1pnFh3zyKb7b0RwseRHw4/mO15eYfcixR+s9cXmFNYHLgTUGpg27nY80Zh9ydL3Hd70H4p488Pys+Y7Xl5h9yLGj9f4x8Ihppl00TI5TPcbpmLYHA1/g1rPyHkdzYcYHAx+uqhmfzZPklKp62BTjA/xVzfCyAKOO15eYfcixi5gd5fhZmjO11qe50OoKmn9SdqC5xtbO8x2zDzl2EbMPOXYRsw85tjH3o7lU0NE0dwS4pKpe154ocnJVbTOf8foSsw85dhEzydY0u0FvdyHqJHetWZwcdJtY41K0wS1nmjyV5urMi2jOqvtODXnWXpJdhyn25ipeX2L2IccuYnaU4yJue0uaR9HcIeHXwCeqvb7RfMbsQ45dxOxDjl3E7EOObcy1gFfSXMLnNGC/qrqpPWPzLjXDa4yNOl5fYvYhx65izoWxKtokSZJGrb1syFtobkm4uB19OXAYzcmOI7mk09jcESHJBmmufnxWkj8kuSLJcUleulBi9iHHLmL2IccuYs5xji9ZKDH7kGMXMfuQYxcx+5DjpJhnjvjzPZJ4fYnZhxw7inkIzVmoT6iqzapqM5p7Ff+e5p6mIzE2PW1JDqO5OfNRNLczWp/matxvp9mXPeMLZo46Zh9y7CJmH3LsImYfcuwiZh9y7CJmH3LsImYfcuwiZh9y7CJmH3LsImaS86pq65lOm7FRnM3Qhwdw2qTnJ7R/16C5IOO8x+xDjq636+16u953tBxdb9d7BOt9JPBGmrubTIy7K/Am4KhhcpzqMTa7R4Hrk2wPkOTZtPenq+b+gsPe92/UMfuQYxcx+5BjFzH7kGMXMfuQYxcx+5BjFzH7kGMXMfuQYxcx+5BjFzH/jua6gccm+X2Sq2gu1LspTU/eaIyq+lvoD5pLe/wUuBr4IbBVO34xsOdCiNmHHF1v19v1dr3vaDm63q73iGJuQ3Nf3Q0mjd9xmHhTPRYxJqq5x+N2U4y/Ism1CyFmH3LsImYfcuwiZh9y7CJmH3LsImYfcuwiZh9y7CJmH3LsImYfcuwiZpI9gX8EzgH2TbJXVR3WTt6b5jqCszY2JyKsTEZ5M9eOYvYhxy5i9iHHLmL2IccuYvYhxy5i9iHHLmL2IccuYvYhxy5i9iHHYWMmOQN4TFVdl2QpzfUDv1BVH800F1Ifxtj0tCU5fbpJNAcLznvMPuTYRcw+5NhFzD7k2EXMPuTYRcw+5NhFzD7k2EXMPuTYRcw+5NhRzDWr6jqAqrowyROALye5F8Mfd3c7Y1O00bwJT6O5Zsqg0NwzbCHE7EOOXcTsQ45dxOxDjl3E7EOOXcTsQ45dxOxDjl3E7EOOXcTsQ45dxLwsyUOr6lSAtsftWcB+wIOGzPF2xqloO4Lm4MBTJ09IcswCidmHHLuI2Yccu4jZhxy7iNmHHLuI2Yccu4jZhxy7iNmHHLuI2Yccu4j5Ypp74N6iqlYAL07y30NlOAWPaZMkSeqBcbpOmyRJUm9ZtEmSJPWARZskSVIPWLRJkiT1gEWbJElSD1i0SZIk9YBFmyRJUg9YtEmSJPWARZskSVIPWLRJkiT1gEWbJElSD1i0SZIk9YBFmyRJUg9YtEmSJPWARZs0S2n8MMnTB8btnOTbHbe5KMnb2+d3T/LLJHcZmGd5kjd0lcNsJLlfkp2nmbZNkhPb4ccm+eAwcVbR/kFJnjXF+OOSPHCm8VYVd6FIclmSDeY7j+kk2THJl4dYbmmSL3WRk7SQWLRJs1RVBbwK+HCSdZKsD7wf+MfZxE2yaCWT9wGeDWye5GPAYuA/gA+0yz4S2A74yCxzWCNJZhNjGvcDVllsVdWPq+pfZhtHo5VkzfnOYVBVXVhVL5zvPKSuWbRJI1BVZwLfAN4EvAv4fFX9PMlLkvw0yalJPplkDbilF+zEJGcleedEnCQXJ3lHkh8Bf72S9t4EPAN4MfBfVXU68Elg2ySPBz4O/GNVrUiyVpKPtHmcluRlbVubJPnfJCcnOX2ip7Dt6TotyXLgZOAuSQ5Ickb7uF0x2vYwfSTJT5L8Islz2vFrtOPPbNuYWKd9gCe3r8u0xe1gz0uSp7R5ndbmvM7kOCtZ1zWT/HeSs5McDmy6krdztyQnJDkvyaPa5e+f5Adtuye2RfFqx2178PaZIu56Sb7Qvq4nJdl+mtfgu0m+1i67/8C0W3rOkmyftnc3yZ0H4p4+Ta/iywdep49PFOdJPjOwbb51UltvT/Jj4DmTYt0tydfb9Ts+yXbt+OVJ3tgO75TkqDQOaj8PP2zX6alT5Lc4yRHtOvwoyV+042+3HeS2vbNTvqZJXpXk4CRHJrkgyXvb8YtWtX1LC0ZV+fDhYwQPYH3gPOAMYG3ggcDXgUXt9OXAru3wpu3fRcAPgG3b5xcDr1uNtv6Npqj7CPAx4EHt+EcAvwf2HZh3T+AN7fA6wGnAPYA7ARu04+8K/Kwd3ga4CXhY+/xxwDcG4m08RT4HAV8EAjwcOLMd/0LgCJp/ELdo129zYEfgy9Os2zbAie3wLfMB3wUe0Q5v2Ma8TZyVrOuuA3ksAa4DnjVF28cB72+HnwccMfDert0OPxD4UTs827hvAz7VDj8Y+CWw1qRldwR+B9wNWJOmkF7WTrts4D3cHvh2O/xR4N/b4QCbDM4PPAT4Krdum/sBO0+xbf4Y2Gpg2T2nec++AjyyHb4PcHo7vAFwLvB44GfAkoHt5bA2t22BXwNrTXq//wd4Uzv8DOC4lWwHg9vMlK8pTW/4uW1O6wGXAHdhNbZvHz4WymNlu18kzUBVXZ/kYOC6qrohyZOBRwIntp0Y6wIXtbPvkmR3mh/GLWh+uM5upx28Gs29leYH/AFV9b6JXpKqOinJOTS9bhOeCtwvyW7t8zvT7Fa8EvhQksfRFGn3SrJxO8/PquqUdvh84AFJPgL8P+CoaXL6WlVVklNoChhoCokDqupm4NIkP6Ep6obxI+BjSQ4AvlJV1+b2e26nW9e/Gsjj10m+v5J2vtr+PQl4Tzu8Ttv2g2heq6Xt+NnG3R54L0BVnZ7kSuDeNAXOoB9X1WUASU5r2z9xJW09maYAoqqKppAf9BSa3eeD2+b57bTd2h7KNWkK3m0H8plu23wScN+B92OzJHeqquuS/ANwNPDqqvr1wDIHt7mdneQy4L6TYm5P02tNVX0zyf5peldXtR1M95oCfLeqrgNI8jOa7XR1t29p3lm0SaN1c/uAphdhv6p6x+AMSe4P7AVsV1VXJ/kiTVEw4fpVNdL+2K0A3jfwfKocJvL4+6o6dlIer6LpcXhYNbtRLxvI45YcquryJA8Bng68nqaH7x+mSOuGiVzS7gZu2x6Jqnp3kq8Bz6QpNv5yitmmW9ddgJpi/qnc0P69iVu/I/+FpsfmhTSv0VWDqc0i7uq+PjcMDA8uv4JbD3MZ3IayirwC/E9V/ettRibbAK8GHl1Vf0hyEKvYNnNrxbSsqlZM0daDaHoKt5g0fnJ+k59P+dqsxnawstf0dq/jDLZvad55TJvUnaOAnZNsDpBksyRLaHp/rgWuSXJ34Gkd5/Ed4B/SntiQ5C/aHouNgN+2BduONLtIbyftGalVdQjwbmbWU/Z9ml7FNdp1fTRNT9O1NLu2VluS+1bVaVW1N80u6K2miDPdug7msSUwVcG3MhsBl7bF8UunWb9h4n6fphAkzVmrmwO/mMHyF9LsEgf4m4HxRwKvaeMmySaTlvsu8IIkm7XzbN7mvxG3bptb0PTIrVT7mnyPptijjffQ9u/9aAqghwLPT/KwgUV3bnPbhmbbm7zeg6/NjsAvqupP02wH0y23ytd0ltu3NKfsaZM6UlVnJPlX4Ki25+lGmuNqTqTZFXomzY/Jj6aL0R4UfUNV7TuLVD4JbAmc0vaK/JbmQPLPAYcnOaHN6ZfTLH8vYHm7bAEzuYzIQcCjgNNpev/2rKrftQeNr5vkVJoen0+sRqw3JXlsG+dUml1uawzGWcm6HkxzXNUZNMc1rWw35lQ+BhyS5EU0heFN7fjZxv0IzWt7Bs328aJpequm8852+d8AJ0wa/6kkZ7a5vpVm1x8AVXVqkr2B77Wv05+BPYCfAhcAZwE/ZyXb5iSvbtt7Jc3vylFJ/gnYH3htVf2mnbZf2pMwaLb9H9Cc+fzKqrpx0m7OtwH7t6/5tcDu7fiptoPBXatTvqZT7EqfMJvtW5pTue1eFUmSutXudv1iVR0x37lIfeLuUUmSpB6wp02SJKkH7GmTJEnqAYs2SZKkHrBokyRJ6gGLNkmSpB6waJMkSeoBizZJkqQe+P+qBuRKboqoLwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"complete_nuke_count_df.plot.bar(title = 'Nuclear Explosions By Year\\n',\n",
" figsize=(10,5), grid=False, color='orange',legend=False)\n",
"plt.ylabel('\\nNuclear Explosions')\n",
"plt.xlabel('\\nYear. *Years not listed had no nuclear explosions') \n",
"pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Next plot is to look at the number of explosion by decade"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"sixties = complete_nuke_df['Year'].where((complete_nuke_df['Year'] >= '1960') & (complete_nuke_df['Year'] < '1970')).count()\n",
"seventies = complete_nuke_df['Year'].where((complete_nuke_df['Year'] >= '1970') & (complete_nuke_df['Year'] < '1980')).count()\n",
"eighties = complete_nuke_df['Year'].where((complete_nuke_df['Year'] >= '1980') & (complete_nuke_df['Year'] < '1990')).count()\n",
"nighties = complete_nuke_df['Year'].where((complete_nuke_df['Year'] >= '1990') & (complete_nuke_df['Year'] < '2000')).count()\n",
"noughties = complete_nuke_df['Year'].where((complete_nuke_df['Year'] >= '2000') & (complete_nuke_df['Year'] < '2010')).count()\n",
"tens = complete_nuke_df['Year'].where((complete_nuke_df['Year'] >= '2010') & (complete_nuke_df['Year'] < '2020')).count()\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Decade</th>\n",
" <th>Number Of Nuclear Explosions</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1960s</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1970s</td>\n",
" <td>70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1980s</td>\n",
" <td>93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1990s</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2000s</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2010s</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Decade Number Of Nuclear Explosions\n",
"0 1960s 1\n",
"1 1970s 70\n",
"2 1980s 93\n",
"3 1990s 12\n",
"4 2000s 0\n",
"5 2010s 1"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = {'Decade':['1960s', '1970s', '1980s', '1990s', '2000s', '2010s'], \n",
" ' Number Of Nuclear Explosions':[sixties, seventies, eighties, nighties, noughties, tens]} \n",
"decadePlot= pd.DataFrame(data) \n",
"\n",
"decadePlot"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = decadePlot.plot.bar(x='Decade', title='Number Of Nuclear Explosions by Decade\\n', \n",
" legend=False, color='m', figsize=(7,6),\n",
" rot=0)\n",
"plt.ylabel('\\nNuclear Explosions')\n",
"\n",
"# create a list to collect the plt.patches data\n",
"totals = []\n",
"\n",
"# find the values and append to list\n",
"for i in ax.patches:\n",
" totals.append(i.get_height())\n",
"\n",
"# set individual bar lables using above list\n",
"total = sum(totals)\n",
"\n",
"# set individual bar lables using above list\n",
"for i in ax.patches:\n",
" # get_x pulls left or right; get_height pushes up or down\n",
" ax.text(i.get_x()-.03, i.get_height()+ 1.8, \\\n",
" str(round((i.get_height()/total)*100, 2))+'%', fontsize=10,\n",
" color='b')\n",
"plt.yticks(np.arange(0, 110, step=10))\n",
"pass"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The 1970s and 80s account for 92.09 % of all the nuclear explosions\n"
]
}
],
"source": [
"sum1 = 39.55 + 52.54\n",
"print(\"The 1970s and 80s account for\",sum1,\"% of all the nuclear explosions\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# First and last entries of dataset. "
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1969-01 Is the earliest entry to the dataset\n"
]
}
],
"source": [
"print(earthquake_df['occurred_on'].min()[:7],\"Is the earliest entry to the dataset\")"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2018-12 Is the last entry to the dataset\n"
]
}
],
"source": [
"print(earthquake_df['occurred_on'].max()[:7], \"Is the last entry to the dataset\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Create a new dataframe showing numbers of nuclear explosions for each area."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cause</th>\n",
" </tr>\n",
" <tr>\n",
" <th>place</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>21km ENE of Sungjibaegam, North Korea</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47km NNE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48km NNE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51km NNE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52km NE of Beatty, NV</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52km NNE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54km NE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55km NE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57km NE of Beatty, NV</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Novaya Zemlya, Russia</th>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Russia-Kazakhstan border region</th>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tuamotu Archipelago, French Polynesia region</th>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ural Mountains region, Russia</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>eastern Kazakhstan</th>\n",
" <td>93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>northwestern Russia</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>northwestern Siberia, Russia</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>southern Xinjiang, China</th>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>southwestern Sakha, Russia</th>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cause\n",
"place \n",
"21km ENE of Sungjibaegam, North Korea 1\n",
"47km NNE of Beatty, NV 1\n",
"48km NNE of Beatty, NV 1\n",
"51km NNE of Beatty, NV 1\n",
"52km NE of Beatty, NV 2\n",
"52km NNE of Beatty, NV 1\n",
"54km NE of Beatty, NV 1\n",
"55km NE of Beatty, NV 1\n",
"57km NE of Beatty, NV 1\n",
"Novaya Zemlya, Russia 24\n",
"Russia-Kazakhstan border region 6\n",
"Tuamotu Archipelago, French Polynesia region 30\n",
"Ural Mountains region, Russia 1\n",
"eastern Kazakhstan 93\n",
"northwestern Russia 1\n",
"northwestern Siberia, Russia 1\n",
"southern Xinjiang, China 10\n",
"southwestern Sakha, Russia 1"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_place_count_df = DataFrame(complete_nuke_df.groupby(['place']).count()['cause'])\n",
"complete_nuke_place_count_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# I will rename the rows like Beatty,NV because this is obviously in the same location or near enough. "
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"complete_nuke_place_count_df = complete_nuke_place_count_df.reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>place</th>\n",
" <th>cause</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>21km ENE of Sungjibaegam, North Korea</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>47km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>48km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>51km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" place cause\n",
"0 21km ENE of Sungjibaegam, North Korea 1\n",
"1 47km NNE of Beatty, NV 1\n",
"2 48km NNE of Beatty, NV 1\n",
"3 51km NNE of Beatty, NV 1"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_place_count_df[:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Now i will pull out all the NV rows and store them in their own database"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>place</th>\n",
" <th>cause</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>47km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>48km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>51km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>52km NE of Beatty, NV</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>52km NNE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>54km NE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>55km NE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>57km NE of Beatty, NV</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" place cause\n",
"1 47km NNE of Beatty, NV 1\n",
"2 48km NNE of Beatty, NV 1\n",
"3 51km NNE of Beatty, NV 1\n",
"4 52km NE of Beatty, NV 2\n",
"5 52km NNE of Beatty, NV 1\n",
"6 54km NE of Beatty, NV 1\n",
"7 55km NE of Beatty, NV 1\n",
"8 57km NE of Beatty, NV 1"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"NV_df = complete_nuke_place_count_df.loc[complete_nuke_place_count_df['place'].str.contains(\"of Beatty, NV\")]\n",
"\n",
"NV_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# This will remove the NVs from the dataframe"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"complete_nuke_place_count_df.drop(complete_nuke_place_count_df.index[NV_df.index], axis=0, inplace=True)\n"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>place</th>\n",
" <th>cause</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>21km ENE of Sungjibaegam, North Korea</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Novaya Zemlya, Russia</td>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Russia-Kazakhstan border region</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Tuamotu Archipelago, French Polynesia region</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Ural Mountains region, Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>northwestern Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>northwestern Siberia, Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>southern Xinjiang, China</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>southwestern Sakha, Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" place cause\n",
"0 21km ENE of Sungjibaegam, North Korea 1\n",
"9 Novaya Zemlya, Russia 24\n",
"10 Russia-Kazakhstan border region 6\n",
"11 Tuamotu Archipelago, French Polynesia region 30\n",
"12 Ural Mountains region, Russia 1\n",
"13 eastern Kazakhstan 93\n",
"14 northwestern Russia 1\n",
"15 northwestern Siberia, Russia 1\n",
"16 southern Xinjiang, China 10\n",
"17 southwestern Sakha, Russia 1"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_place_count_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Rename the columns "
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Place</th>\n",
" <th>Nuclear Explosions</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>21km ENE of Sungjibaegam, North Korea</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Novaya Zemlya, Russia</td>\n",
" <td>24</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Place Nuclear Explosions\n",
"0 21km ENE of Sungjibaegam, North Korea 1\n",
"9 Novaya Zemlya, Russia 24"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_place_count_df = complete_nuke_place_count_df.rename(columns={\"place\": \"Place\", \"cause\": \"Nuclear Explosions\"})\n",
"\n",
"\n",
"complete_nuke_place_count_df[:2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Now i sum the NV nuke explosions"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# remeber that this df has not changed the column headers, so it still has cause \n",
"NV_sum = NV_df['cause'].sum()\n",
"NV_sum"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Now append the above sum for Beatty, NV to the dataframe "
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Place</th>\n",
" <th>Nuclear Explosions</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>eastern Kazakhstan</td>\n",
" <td>93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Tuamotu Archipelago, French Polynesia region</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Novaya Zemlya, Russia</td>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>southern Xinjiang, China</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>National Security Site, NV</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Russia-Kazakhstan border region</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>21km ENE of Sungjibaegam, North Korea</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Ural Mountains region, Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>northwestern Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>northwestern Siberia, Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>southwestern Sakha, Russia</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Place Nuclear Explosions\n",
"5 eastern Kazakhstan 93\n",
"3 Tuamotu Archipelago, French Polynesia region 30\n",
"1 Novaya Zemlya, Russia 24\n",
"8 southern Xinjiang, China 10\n",
"10 National Security Site, NV 9\n",
"2 Russia-Kazakhstan border region 6\n",
"0 21km ENE of Sungjibaegam, North Korea 1\n",
"4 Ural Mountains region, Russia 1\n",
"6 northwestern Russia 1\n",
"7 northwestern Siberia, Russia 1\n",
"9 southwestern Sakha, Russia 1"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete_nuke_place_count_df = complete_nuke_place_count_df.append({'Place':'National Security Site, NV', 'Nuclear Explosions': NV_sum}, ignore_index=True).sort_values(by='Nuclear Explosions', ascending=False)\n",
"complete_nuke_place_count_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Now i can plot the table"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"# will put the highest number at the top of the graph. \n",
"complete_nuke_place_count_df = complete_nuke_place_count_df.sort_values(by='Nuclear Explosions', ascending=True)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = complete_nuke_place_count_df.plot.barh(x='Place', title='Number of Nuclear Explosions By Place\\n', \n",
" figsize=(6,6), color=['darkcyan'],\n",
" legend=False)\n",
"\n",
"# create a list to collect the plt.patches data\n",
"totals = []\n",
"\n",
"# find the values and append to list\n",
"for i in ax.patches:\n",
" totals.append(i.get_width())\n",
"\n",
"# set individual bar lables using above list\n",
"total = sum(totals)\n",
"\n",
"# set individual bar lables using above list\n",
"for i in ax.patches:\n",
" # get_width pulls left or right; get_y pushes up or down\n",
" ax.text(i.get_width()+.3, i.get_y()+0.1, \\\n",
" str(round((i.get_width()/total)*100, 2))+'%', fontsize=10,\n",
"color='b')\n",
"\n",
"\n",
"\n",
"plt.xticks(np.arange(0, 120, step=10))\n",
"plt.xlabel('\\nNumber Of Nuclear Explosions')\n",
"pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[View Full Report](https://www.sciencetony.com/2019/07/nuclear-test-map-for-1969-to-2017.html)<br>\n",
"[Sciencetony.com](https://www.sciencetony.com/)<br>\n",
"[View My LinkedIn CV](https://www.linkedin.com/in/tony-mcdonald-sciencetony/)<br>\n",
"[My Twitter](https://twitter.com/ScienceTony)<br>\n",
"[My YouTube](https://www.youtube.com/Dreamazium)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment