{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import numpy as np\n", "from IPython.display import Image\n", "import warnings\n", "warnings.filterwarnings('ignore') # ignores annoying warnings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lecture 12:\n", "\n", "- Tricks with pandas\n", "- Filtering the pandas way\n", "- concatentating and merging pandas DataFrames\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Locating and Editing Data\n", "\n", "In the past few lectures we have learned about several different ways to filter data, from masking in **Numpy** arrays, to **filter( )** in the last lecture. Today we are going to learn about filtering pandas DataFrames to accomplish some of the same tasks, but with more flexibility and ease. Pandas provides a powerful way to tease out useful information.\n", "\n", "We will be looking at data on Holocene Eruptions from the Smithsonian Holocene Volcano Database: http://volcano.si.edu/list_volcano_holocene.cfm (Global Volcanism Program, 2013. Volcanoes of the World, v. 4.8.7. Venzke, E (ed.). Smithsonian Institution. Downloaded 14 Mar 2020. https://doi.org/10.5479/si.GVP.VOTW4-2013). This link will download an xml file, which Excel can read, but for Pandas to work on it, you have to convert it to a regular .xls file from within excel. I have done that for you for the following. \n", "\n", "We will see how to filter these data to pull out interesting information on Holocene Eruptions. Let's read in this data and first look at its length. To read an Excel spreadsheet, we can use a new function **pd.read_excel( )**. If you look in the file, you will see that the header is in the second line (not the first), so header=1 in the argument list, after the PATH to the file. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of Eruptions: 1424\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
0210010West Eifel Volcanic FieldGermanyMaar(s)Eruption Dated8300 BCEMediterranean and Western AsiaWestern Europe50.1706.85600FoiditeRift zone / Continental crust (>25 km)
1210020Chaine des PuysFranceLava dome(s)Eruption Dated4040 BCEMediterranean and Western AsiaWestern Europe45.7752.971464Basalt / Picro-BasaltRift zone / Continental crust (>25 km)
2210030Olot Volcanic FieldSpainPyroclastic cone(s)Evidence CredibleUnknownMediterranean and Western AsiaWestern Europe42.1702.53893Trachybasalt / Tephrite BasaniteIntraplate / Continental crust (>25 km)
3210040Calatrava Volcanic FieldSpainPyroclastic cone(s)Eruption Dated3600 BCEMediterranean and Western AsiaWestern Europe38.870-4.021117Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
4211003VulsiniItalyCalderaEruption Observed104 BCEMediterranean and Western AsiaItaly42.60011.93800Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "0 210010 West Eifel Volcanic Field Germany Maar(s) \n", "1 210020 Chaine des Puys France Lava dome(s) \n", "2 210030 Olot Volcanic Field Spain Pyroclastic cone(s) \n", "3 210040 Calatrava Volcanic Field Spain Pyroclastic cone(s) \n", "4 211003 Vulsini Italy Caldera \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "0 Eruption Dated 8300 BCE Mediterranean and Western Asia \n", "1 Eruption Dated 4040 BCE Mediterranean and Western Asia \n", "2 Evidence Credible Unknown Mediterranean and Western Asia \n", "3 Eruption Dated 3600 BCE Mediterranean and Western Asia \n", "4 Eruption Observed 104 BCE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "0 Western Europe 50.170 6.85 600 \n", "1 Western Europe 45.775 2.97 1464 \n", "2 Western Europe 42.170 2.53 893 \n", "3 Western Europe 38.870 -4.02 1117 \n", "4 Italy 42.600 11.93 800 \n", "\n", " Dominant Rock Type \\\n", "0 Foidite \n", "1 Basalt / Picro-Basalt \n", "2 Trachybasalt / Tephrite Basanite \n", "3 Basalt / Picro-Basalt \n", "4 Trachyte / Trachydacite \n", "\n", " Tectonic Setting \n", "0 Rift zone / Continental crust (>25 km) \n", "1 Rift zone / Continental crust (>25 km) \n", "2 Intraplate / Continental crust (>25 km) \n", "3 Intraplate / Continental crust (>25 km) \n", "4 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EruptionData=pd.read_excel('Datasets/GVP_Volcano_List_Holocene.xls',header=1)\n", "print('Number of Eruptions:',len(EruptionData))\n", "EruptionData.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wow, that's a lot of Eruptions! However, the DataFrame has a lot of information we really aren't interested in. For example, there are many eruptions in this data for which the evidence isn't strong ('Evidence Uncertain'). You can verify this, by printing out the **Series** \"Activity Evidence\".\n", "\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Eruption Dated\n", "1 Eruption Dated\n", "2 Evidence Credible\n", "3 Eruption Dated\n", "4 Eruption Observed\n", "5 Evidence Uncertain\n", "6 Eruption Observed\n", "7 Eruption Observed\n", "8 Eruption Observed\n", "9 Eruption Dated\n", "10 Eruption Observed\n", "11 Evidence Uncertain\n", "12 Eruption Dated\n", "13 Eruption Observed\n", "14 Eruption Observed\n", "15 Eruption Observed\n", "16 Eruption Observed\n", "17 Eruption Dated\n", "18 Eruption Observed\n", "19 Eruption Dated\n", "20 Eruption Observed\n", "21 Eruption Observed\n", "22 Evidence Credible\n", "23 Evidence Credible\n", "24 Evidence Credible\n", "25 Evidence Credible\n", "26 Evidence Uncertain\n", "27 Eruption Dated\n", "28 Eruption Dated\n", "29 Evidence Credible\n", " ... \n", "1394 Eruption Dated\n", "1395 Eruption Dated\n", "1396 Evidence Uncertain\n", "1397 Evidence Uncertain\n", "1398 Eruption Observed\n", "1399 Evidence Uncertain\n", "1400 Eruption Dated\n", "1401 Evidence Uncertain\n", "1402 Evidence Uncertain\n", "1403 Evidence Uncertain\n", "1404 Evidence Uncertain\n", "1405 Eruption Dated\n", "1406 Eruption Dated\n", "1407 Evidence Credible\n", "1408 Eruption Observed\n", "1409 Eruption Observed\n", "1410 Evidence Uncertain\n", "1411 Evidence Credible\n", "1412 Evidence Credible\n", "1413 Eruption Observed\n", "1414 Eruption Observed\n", "1415 Eruption Observed\n", "1416 Eruption Observed\n", "1417 Eruption Observed\n", "1418 Evidence Credible\n", "1419 Unrest / Holocene\n", "1420 Eruption Observed\n", "1421 Eruption Observed\n", "1422 Evidence Credible\n", "1423 Evidence Uncertain\n", "Name: Activity Evidence, Length: 1424, dtype: object" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EruptionData['Activity Evidence']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In Lecture 9, we learned how to filter a DataFrame by putting what we wanted in a conditional statement enclosed in square brackets. Remembering from Lecture 4 that the conditional for \"equal to\" is \"==\", we can retrieve all the rows that contain 'Eruption Observed' in the column 'Activity Evidence' like this this: " ] }, { "cell_type": "code", "execution_count": 4, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
4211003VulsiniItalyCalderaEruption Observed104 BCEMediterranean and Western AsiaItaly42.60011.930800Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
6211010Campi FlegreiItalyCalderaEruption Observed1538 CEMediterranean and Western AsiaItaly40.82714.139458Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
7211020VesuviusItalyStratovolcanoEruption Observed1944 CEMediterranean and Western AsiaItaly40.82114.4261281Phono-tephrite / Tephri-phonoliteSubduction zone / Continental crust (>25 km)
8211030IschiaItalyComplexEruption Observed1302 CEMediterranean and Western AsiaItaly40.73013.897789Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
10211040StromboliItalyStratovolcanoEruption Observed2020 CEMediterranean and Western AsiaItaly38.78915.213924Trachyandesite / Basaltic TrachyandesiteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "4 211003 Vulsini Italy Caldera \n", "6 211010 Campi Flegrei Italy Caldera \n", "7 211020 Vesuvius Italy Stratovolcano \n", "8 211030 Ischia Italy Complex \n", "10 211040 Stromboli Italy Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "4 Eruption Observed 104 BCE Mediterranean and Western Asia \n", "6 Eruption Observed 1538 CE Mediterranean and Western Asia \n", "7 Eruption Observed 1944 CE Mediterranean and Western Asia \n", "8 Eruption Observed 1302 CE Mediterranean and Western Asia \n", "10 Eruption Observed 2020 CE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "4 Italy 42.600 11.930 800 \n", "6 Italy 40.827 14.139 458 \n", "7 Italy 40.821 14.426 1281 \n", "8 Italy 40.730 13.897 789 \n", "10 Italy 38.789 15.213 924 \n", "\n", " Dominant Rock Type \\\n", "4 Trachyte / Trachydacite \n", "6 Trachyte / Trachydacite \n", "7 Phono-tephrite / Tephri-phonolite \n", "8 Trachyte / Trachydacite \n", "10 Trachyandesite / Basaltic Trachyandesite \n", "\n", " Tectonic Setting \n", "4 Subduction zone / Continental crust (>25 km) \n", "6 Subduction zone / Continental crust (>25 km) \n", "7 Subduction zone / Continental crust (>25 km) \n", "8 Subduction zone / Continental crust (>25 km) \n", "10 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#notice the conditional '==' which means 'equals to' from Lecture 4\n", "ObservedEruptions=EruptionData[EruptionData['Activity Evidence']=='Eruption Observed']\n", "ObservedEruptions.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas **DataFrames** also have a method called **.loc** that allows for filtering of **DataFrames** in a similar way to the familiar conditional above. " ] }, { "cell_type": "code", "execution_count": 6, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
4211003VulsiniItalyCalderaEruption Observed104 BCEMediterranean and Western AsiaItaly42.60011.930800Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
6211010Campi FlegreiItalyCalderaEruption Observed1538 CEMediterranean and Western AsiaItaly40.82714.139458Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
7211020VesuviusItalyStratovolcanoEruption Observed1944 CEMediterranean and Western AsiaItaly40.82114.4261281Phono-tephrite / Tephri-phonoliteSubduction zone / Continental crust (>25 km)
8211030IschiaItalyComplexEruption Observed1302 CEMediterranean and Western AsiaItaly40.73013.897789Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
10211040StromboliItalyStratovolcanoEruption Observed2020 CEMediterranean and Western AsiaItaly38.78915.213924Trachyandesite / Basaltic TrachyandesiteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "4 211003 Vulsini Italy Caldera \n", "6 211010 Campi Flegrei Italy Caldera \n", "7 211020 Vesuvius Italy Stratovolcano \n", "8 211030 Ischia Italy Complex \n", "10 211040 Stromboli Italy Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "4 Eruption Observed 104 BCE Mediterranean and Western Asia \n", "6 Eruption Observed 1538 CE Mediterranean and Western Asia \n", "7 Eruption Observed 1944 CE Mediterranean and Western Asia \n", "8 Eruption Observed 1302 CE Mediterranean and Western Asia \n", "10 Eruption Observed 2020 CE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "4 Italy 42.600 11.930 800 \n", "6 Italy 40.827 14.139 458 \n", "7 Italy 40.821 14.426 1281 \n", "8 Italy 40.730 13.897 789 \n", "10 Italy 38.789 15.213 924 \n", "\n", " Dominant Rock Type \\\n", "4 Trachyte / Trachydacite \n", "6 Trachyte / Trachydacite \n", "7 Phono-tephrite / Tephri-phonolite \n", "8 Trachyte / Trachydacite \n", "10 Trachyandesite / Basaltic Trachyandesite \n", "\n", " Tectonic Setting \n", "4 Subduction zone / Continental crust (>25 km) \n", "6 Subduction zone / Continental crust (>25 km) \n", "7 Subduction zone / Continental crust (>25 km) \n", "8 Subduction zone / Continental crust (>25 km) \n", "10 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EruptionData.loc[EruptionData['Activity Evidence']=='Eruption Observed'].head()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This statement does exactly the same thing as the conditional. The syntax of a **.loc** statement might look trickier, but trust us, it will make your life easier as things get more complicated. It is \n", " is computationally faster and has more tricks up its sleeve as we shall see soon. :) \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's look at some big eruptions we might be interested in (and who wouldn't be?). One of the most famous Volcanic eruptions is the 1980 Eruption of Mount St. Helens (Washington State). To find it, let's search for Holocene Eruptions of Mount St. Helens. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='Figures/StHelens.jpg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Image from: Global Volcanism Program, 2013. St. Helens (321050) in Volcanoes of the World, v. 4.7.5. Venzke, E (ed.). Smithsonian Institution. Downloaded 31 Dec 2018 (https://volcano.si.edu/volcano.cfm?vn=321050)" ] }, { "cell_type": "code", "execution_count": 33, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
937321050St. HelensUnited StatesStratovolcanoEruption Observed2008 CECanada and Western USAUSA (Washington)46.2-122.182549DaciteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "937 321050 St. Helens United States Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "937 Eruption Observed 2008 CE Canada and Western USA \n", "\n", " Subregion Latitude Longitude Elevation (m) Dominant Rock Type \\\n", "937 USA (Washington) 46.2 -122.18 2549 Dacite \n", "\n", " Tectonic Setting \n", "937 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EruptionData.loc[EruptionData['Volcano Name']=='St. Helens']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, simple conditional statements like this enable us to filter large datasets for the small amount of information we're interested in.\n", "\n", "Although the above statement would work equally well without the **.loc** method, we can add some whistles and bells. The use of the **.loc** syntax allows you search through a particular column (Series) by putting a comma after your conditional statement followed by another Series name. Say we wanted the 'Last Known Eruption' of all stratovolcanoes. We could do this:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7 1944 CE\n", "10 2020 CE\n", "11 Unknown\n", "12 1230 CE\n", "13 1890 CE\n", "Name: Last Known Eruption, dtype: object" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stratos=EruptionData.loc[EruptionData['Primary Volcano Type'].str.contains('Stratovolcano'),'Last Known Eruption']\n", "stratos.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we have used the syntax **DataFrame.Series.str.contains( )**. This allows us to get not only the type \"Stratovolcano\", but also \"Stratovolcano(es)\" and anything that has \"Stratovolcano\" in it. \n", "\n", "It is worth pointing out another way to accomplish the same thing using the method **isin()**. You can create a list of things you want (or don't want), then test if the string is in the list. Here is how it would work for this example to select things in the list:\n" ] }, { "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
7211020VesuviusItalyStratovolcanoEruption Observed1944 CEMediterranean and Western AsiaItaly40.82114.4261281Phono-tephrite / Tephri-phonoliteSubduction zone / Continental crust (>25 km)
10211040StromboliItalyStratovolcanoEruption Observed2020 CEMediterranean and Western AsiaItaly38.78915.213924Trachyandesite / Basaltic TrachyandesiteSubduction zone / Continental crust (>25 km)
11211041PanareaItalyStratovolcanoEvidence UncertainUnknownMediterranean and Western AsiaItaly38.63815.064399Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
12211042LipariItalyStratovolcano(es)Eruption Dated1230 CEMediterranean and Western AsiaItaly38.49014.933590RhyoliteSubduction zone / Continental crust (>25 km)
13211050VulcanoItalyStratovolcano(es)Eruption Observed1890 CEMediterranean and Western AsiaItaly38.40414.962500Trachybasalt / Tephrite BasaniteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "7 211020 Vesuvius Italy Stratovolcano \n", "10 211040 Stromboli Italy Stratovolcano \n", "11 211041 Panarea Italy Stratovolcano \n", "12 211042 Lipari Italy Stratovolcano(es) \n", "13 211050 Vulcano Italy Stratovolcano(es) \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "7 Eruption Observed 1944 CE Mediterranean and Western Asia \n", "10 Eruption Observed 2020 CE Mediterranean and Western Asia \n", "11 Evidence Uncertain Unknown Mediterranean and Western Asia \n", "12 Eruption Dated 1230 CE Mediterranean and Western Asia \n", "13 Eruption Observed 1890 CE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "7 Italy 40.821 14.426 1281 \n", "10 Italy 38.789 15.213 924 \n", "11 Italy 38.638 15.064 399 \n", "12 Italy 38.490 14.933 590 \n", "13 Italy 38.404 14.962 500 \n", "\n", " Dominant Rock Type \\\n", "7 Phono-tephrite / Tephri-phonolite \n", "10 Trachyandesite / Basaltic Trachyandesite \n", "11 Andesite / Basaltic Andesite \n", "12 Rhyolite \n", "13 Trachybasalt / Tephrite Basanite \n", "\n", " Tectonic Setting \n", "7 Subduction zone / Continental crust (>25 km) \n", "10 Subduction zone / Continental crust (>25 km) \n", "11 Subduction zone / Continental crust (>25 km) \n", "12 Subduction zone / Continental crust (>25 km) \n", "13 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "volcano_types=['Stratovolcano','Stratovolcano(es)']\n", "stratos=EruptionData[EruptionData['Primary Volcano Type'].isin(volcano_types)]\n", "stratos.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's how it works if you don't want things in the list:" ] }, { "cell_type": "code", "execution_count": 13, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
0210010West Eifel Volcanic FieldGermanyMaar(s)Eruption Dated8300 BCEMediterranean and Western AsiaWestern Europe50.1706.85600FoiditeRift zone / Continental crust (>25 km)
1210020Chaine des PuysFranceLava dome(s)Eruption Dated4040 BCEMediterranean and Western AsiaWestern Europe45.7752.971464Basalt / Picro-BasaltRift zone / Continental crust (>25 km)
2210030Olot Volcanic FieldSpainPyroclastic cone(s)Evidence CredibleUnknownMediterranean and Western AsiaWestern Europe42.1702.53893Trachybasalt / Tephrite BasaniteIntraplate / Continental crust (>25 km)
3210040Calatrava Volcanic FieldSpainPyroclastic cone(s)Eruption Dated3600 BCEMediterranean and Western AsiaWestern Europe38.870-4.021117Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
4211003VulsiniItalyCalderaEruption Observed104 BCEMediterranean and Western AsiaItaly42.60011.93800Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "0 210010 West Eifel Volcanic Field Germany Maar(s) \n", "1 210020 Chaine des Puys France Lava dome(s) \n", "2 210030 Olot Volcanic Field Spain Pyroclastic cone(s) \n", "3 210040 Calatrava Volcanic Field Spain Pyroclastic cone(s) \n", "4 211003 Vulsini Italy Caldera \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "0 Eruption Dated 8300 BCE Mediterranean and Western Asia \n", "1 Eruption Dated 4040 BCE Mediterranean and Western Asia \n", "2 Evidence Credible Unknown Mediterranean and Western Asia \n", "3 Eruption Dated 3600 BCE Mediterranean and Western Asia \n", "4 Eruption Observed 104 BCE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "0 Western Europe 50.170 6.85 600 \n", "1 Western Europe 45.775 2.97 1464 \n", "2 Western Europe 42.170 2.53 893 \n", "3 Western Europe 38.870 -4.02 1117 \n", "4 Italy 42.600 11.93 800 \n", "\n", " Dominant Rock Type \\\n", "0 Foidite \n", "1 Basalt / Picro-Basalt \n", "2 Trachybasalt / Tephrite Basanite \n", "3 Basalt / Picro-Basalt \n", "4 Trachyte / Trachydacite \n", "\n", " Tectonic Setting \n", "0 Rift zone / Continental crust (>25 km) \n", "1 Rift zone / Continental crust (>25 km) \n", "2 Intraplate / Continental crust (>25 km) \n", "3 Intraplate / Continental crust (>25 km) \n", "4 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "volcano_types=['Stratovolcano','Stratovolcano(es)']\n", "not_stratos=EruptionData[EruptionData['Primary Volcano Type'].isin(volcano_types)==False]\n", "not_stratos.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Moving on. \n", "\n", "Now we can do stuff to this filtered DataFrame **stratos**. The **.loc** syntax also allows you to take a slice through the columns list to select a specific range of column headers:" ] }, { "cell_type": "code", "execution_count": 46, "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", "
Volcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known Eruption
7VesuviusItalyStratovolcanoEruption Observed1944 CE
10StromboliItalyStratovolcanoEruption Observed2020 CE
11PanareaItalyStratovolcanoEvidence UncertainUnknown
12LipariItalyStratovolcano(es)Eruption Dated1230 CE
13VulcanoItalyStratovolcano(es)Eruption Observed1890 CE
\n", "
" ], "text/plain": [ " Volcano Name Country Primary Volcano Type Activity Evidence \\\n", "7 Vesuvius Italy Stratovolcano Eruption Observed \n", "10 Stromboli Italy Stratovolcano Eruption Observed \n", "11 Panarea Italy Stratovolcano Evidence Uncertain \n", "12 Lipari Italy Stratovolcano(es) Eruption Dated \n", "13 Vulcano Italy Stratovolcano(es) Eruption Observed \n", "\n", " Last Known Eruption \n", "7 1944 CE \n", "10 2020 CE \n", "11 Unknown \n", "12 1230 CE \n", "13 1890 CE " ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ColumnSlice=EruptionData.loc[EruptionData['Primary Volcano Type'].str.contains('Stratovolcano'),\n", " 'Volcano Name':'Last Known Eruption']\n", "ColumnSlice.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Something else **.loc** can do is to change the values _inplace_ in DataFrames easily. Let's say we found a historical document that told us that the Unknown last eruption at Panarea was in 5000 BCE. We want to update the information in the **DataFrame** and can do it this way: " ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "before modifying:\n", " 11 Unknown\n", "Name: Last Known Eruption, dtype: object\n", "after modifying:\n", " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "11 211041 Panarea Italy Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "11 Evidence Uncertain 5000 BCE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "11 Italy 38.638 15.064 399 \n", "\n", " Dominant Rock Type Tectonic Setting \n", "11 Andesite / Basaltic Andesite Subduction zone / Continental crust (>25 km) \n" ] } ], "source": [ "print ('before modifying:\\n',EruptionData.loc[EruptionData['Volcano Name']=='Panarea']['Last Known Eruption'])\n", "EruptionData.loc[EruptionData['Volcano Name']=='Panarea','Last Known Eruption']='5000 BCE'\n", "\n", "# and let's take a look: \n", "print ('after modifying:\\n',EruptionData.loc[EruptionData['Volcano Name']=='Panarea'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "As we can see, the syntax for this can get complicated quickly, but we can retrieve and/or modify lots of data using a few lines of code. \n", "\n", "### Sorting and Indexing\n", "\n", "What if we wanted to sort our dataset so the most northerly eruptions come out on top? Pandas DataFrames have a method for this called sort_values. Normally, this will sort from lowest to highest (an \"ascending\" sort), but we can use the argument **ascending=False** to tell it to sort from highest to lowest." ] }, { "cell_type": "code", "execution_count": 137, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
1361377020East Gakkel Ridge at 85°EUndersea FeaturesSubmarineEvidence Credible1999 CEIceland and Arctic OceanArctic Ocean85.60885.250-3800No Data (checked)Rift zone / Oceanic crust (< 15 km)
1360376010Jan MayenNorwayStratovolcanoEruption Observed1985 CEIceland and Arctic OceanAtlantic Ocean (Jan Mayen)71.082-8.1552197Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1359375010Kolbeinsey RidgeIcelandSubmarineEruption Observed1755 CEIceland and Arctic OceanNorth of Iceland66.670-18.5005Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1355373100Tjornes Fracture ZoneIcelandSubmarineEruption Observed1868 CEIceland and Arctic OceanIceland (northeastern)66.309-17.118-75Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1354373090TheistareykirIcelandShieldEruption Dated900 BCEIceland and Arctic OceanIceland (northeastern)65.833-17.166540Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country \\\n", "1361 377020 East Gakkel Ridge at 85°E Undersea Features \n", "1360 376010 Jan Mayen Norway \n", "1359 375010 Kolbeinsey Ridge Iceland \n", "1355 373100 Tjornes Fracture Zone Iceland \n", "1354 373090 Theistareykir Iceland \n", "\n", " Primary Volcano Type Activity Evidence Last Known Eruption \\\n", "1361 Submarine Evidence Credible 1999 CE \n", "1360 Stratovolcano Eruption Observed 1985 CE \n", "1359 Submarine Eruption Observed 1755 CE \n", "1355 Submarine Eruption Observed 1868 CE \n", "1354 Shield Eruption Dated 900 BCE \n", "\n", " Region Subregion Latitude \\\n", "1361 Iceland and Arctic Ocean Arctic Ocean 85.608 \n", "1360 Iceland and Arctic Ocean Atlantic Ocean (Jan Mayen) 71.082 \n", "1359 Iceland and Arctic Ocean North of Iceland 66.670 \n", "1355 Iceland and Arctic Ocean Iceland (northeastern) 66.309 \n", "1354 Iceland and Arctic Ocean Iceland (northeastern) 65.833 \n", "\n", " Longitude Elevation (m) Dominant Rock Type \\\n", "1361 85.250 -3800 No Data (checked) \n", "1360 -8.155 2197 Basalt / Picro-Basalt \n", "1359 -18.500 5 Basalt / Picro-Basalt \n", "1355 -17.118 -75 Basalt / Picro-Basalt \n", "1354 -17.166 540 Basalt / Picro-Basalt \n", "\n", " Tectonic Setting \n", "1361 Rift zone / Oceanic crust (< 15 km) \n", "1360 Rift zone / Oceanic crust (< 15 km) \n", "1359 Rift zone / Oceanic crust (< 15 km) \n", "1355 Rift zone / Oceanic crust (< 15 km) \n", "1354 Rift zone / Oceanic crust (< 15 km) " ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# First read in our DataFrame again:\n", "EruptionData=pd.read_excel('Datasets/GVP_Volcano_List_Holocene.xls',header=1)\n", "NorthernToSouthern=EruptionData.sort_values(by='Latitude',ascending=False)\n", "NorthernToSouthern.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks like the most northerly eruptions during the Holocene were at the East Gakkel Ridge and that the most northerly above sea-level eruption was on Jan Mayen in 1985. I bet I'm the only person you know who has actually been there!\n", "\n", "Now let's try to get the first 10 rows in this DataFrame. We can do this using **.loc**, right?" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
0210010West Eifel Volcanic FieldGermanyMaar(s)Eruption Dated8300 BCEMediterranean and Western AsiaWestern Europe50.1706.850600FoiditeRift zone / Continental crust (>25 km)
692290350Karpinsky GroupRussiaCone(s)Eruption Observed1952 CEKuril IslandsKuril Islands50.148155.3731326Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
932320811Cayley Volcanic FieldCanadaVolcanic fieldEvidence CredibleUnknownCanada and Western USACanada50.120-123.2802375Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
930320190Garibaldi LakeCanadaVolcanic fieldEvidence CredibleUnknownCanada and Western USACanada49.933-123.0002316Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
931320200GaribaldiCanadaStratovolcanoEruption Dated8060 BCECanada and Western USACanada49.850-123.0002678DaciteSubduction zone / Continental crust (>25 km)
689290320Nemo PeakRussiaCalderaEruption Observed1938 CEKuril IslandsKuril Islands49.570154.8081018Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
817305020Keluo GroupChinaPyroclastic cone(s)Evidence CredibleUnknownKamchatka and Mainland AsiaChina (eastern)49.370125.920670Trachybasalt / Tephrite BasaniteIntraplate / Continental crust (>25 km)
688290310Tao-Rusyr CalderaRussiaStratovolcanoEruption Observed1952 CEKuril IslandsKuril Islands49.350154.7001325Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
687290300KharimkotanRussiaStratovolcanoEruption Observed1933 CEKuril IslandsKuril Islands49.120154.5081145Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
684290260ChirinkotanRussiaStratovolcanoEruption Observed2017 CEKuril IslandsKuril Islands48.980153.480724Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
685290270EkarmaRussiaStratovolcanoEruption Observed2010 CEKuril IslandsKuril Islands48.958153.9301170Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
686290290SinarkaRussiaStratovolcanoEruption Observed1878 CEKuril IslandsKuril Islands48.873154.182911Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
978331005West Valley SegmentCanadaSubmarineUnrest / HoloceneUnknownHawaii and Pacific OceanPacific Ocean (northern)48.780-128.640-2550NaNRift zone / Intermediate crust (15-25 km)
933321010BakerUnited StatesStratovolcano(es)Eruption Observed1880 CECanada and Western USAUSA (Washington)48.777-121.8133285Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
818305030WudalianchiChinaVolcanic fieldEruption Observed1776 CEKamchatka and Mainland AsiaChina (eastern)48.720126.120597Trachybasalt / Tephrite BasaniteIntraplate / Continental crust (>25 km)
812303020Khanuy GolMongoliaVolcanic fieldEvidence CredibleUnknownKamchatka and Mainland AsiaMongolia48.670102.7501886Trachyandesite / Basaltic TrachyandesiteIntraplate / Continental crust (>25 km)
683290250RaikokeRussiaStratovolcanoEruption Observed2019 CEKuril IslandsKuril Islands48.292153.250551Basalt / Picro-BasaltSubduction zone / Intermediate crust (15-25 km)
811303010Taryatu-ChulutuMongoliaVolcanic fieldEruption Dated2980 BCEKamchatka and Mainland AsiaMongolia48.13399.9502326Trachybasalt / Tephrite BasaniteIntraplate / Continental crust (>25 km)
934321020Glacier PeakUnited StatesStratovolcanoEruption Dated1700 CECanada and Western USAUSA (Washington)48.112-121.1133213DaciteSubduction zone / Continental crust (>25 km)
682290240Sarychev PeakRussiaStratovolcanoEruption Observed2019 CEKuril IslandsKuril Islands48.092153.2001496Andesite / Basaltic AndesiteSubduction zone / Intermediate crust (15-25 km)
979331010Endeavour SegmentCanadaSubmarineEruption Dated3490 BCEHawaii and Pacific OceanPacific Ocean (northern)47.950-129.100-2050Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
681290220RasshuaRussiaStratovolcanoEruption Observed1957 CEKuril IslandsKuril Islands47.770153.020956Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)
680290211SredniiRussiaSubmarineEvidence CredibleUnknownKuril IslandsKuril Islands47.600152.92036No Data (checked)Subduction zone / Oceanic crust (< 15 km)
679290210UshishurRussiaCalderaEruption Observed1884 CEKuril IslandsKuril Islands47.520152.800401Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)
816305011Arxan-ChaiheChinaPyroclastic cone(s)Eruption Dated0 CEKamchatka and Mainland AsiaChina (eastern)47.450120.8001677Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
678290200KetoiRussiaStratovolcanoEruption Observed1960 CEKuril IslandsKuril Islands47.350152.4751172Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)
677290191UratmanRussiaStratovolcanoEvidence CredibleUnknownKuril IslandsKuril Islands47.120152.250678Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)
676290190Prevo PeakRussiaStratovolcanoEruption Observed1825 CEKuril IslandsKuril Islands47.020152.1201360Basalt / Picro-BasaltSubduction zone / Oceanic crust (< 15 km)
675290180Zavaritzki CalderaRussiaCalderaEruption Observed1957 CEKuril IslandsKuril Islands46.925151.950624Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)
980331011Cobb SegmentCanadaSubmarineEruption Dated1180 BCEHawaii and Pacific OceanPacific Ocean (northern)46.880-129.330-2100Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
..........................................
8211030IschiaItalyComplexEruption Observed1302 CEMediterranean and Western AsiaItaly40.73013.897789Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
581283280HakkodasanJapanStratovolcano(es)Eruption Dated1550 CEJapan, Taiwan, MarianasHonshu40.659140.8771585Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
579283270IwakisanJapanStratovolcanoEruption Observed1863 CEJapan, Taiwan, MarianasHonshu40.656140.3031625Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
36214060AragatsArmeniaStratovolcanoEvidence CredibleUnknownMediterranean and Western AsiaWestern Asia40.53044.2004095Andesite / Basaltic AndesiteIntraplate / Continental crust (>25 km)
580283271TowadaJapanCalderaEruption Observed915 CEJapan, Taiwan, MarianasHonshu40.510140.8801011Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
956323080Lassen Volcanic CenterUnited StatesStratovolcanoEruption Observed1917 CECanada and Western USAUSA (California)40.492-121.5083187Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
37214070Ghegham Volcanic RidgeArmeniaVolcanic fieldEruption Dated1900 BCEMediterranean and Western AsiaWestern Asia40.28345.0003597Andesite / Basaltic AndesiteIntraplate / Continental crust (>25 km)
39214090PorakArmenia-AzerbaijanStratovolcanoEruption Dated778 BCEMediterranean and Western AsiaWestern Asia40.02845.7403029Andesite / Basaltic AndesiteIntraplate / Continental crust (>25 km)
577283260Akita-YakeyamaJapanStratovolcanoEruption Observed1997 CEJapan, Taiwan, MarianasHonshu39.964140.7571366Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
576283250HachimantaiJapanStratovolcanoEruption Dated5350 BCEJapan, Taiwan, MarianasHonshu39.958140.8541613Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
578283262MegataJapanMaar(s)Eruption Dated2050 BCEJapan, Taiwan, MarianasHonshu39.950139.730291Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
575283240IwatesanJapanComplexEruption Observed1919 CEJapan, Taiwan, MarianasHonshu39.853141.0012038Basalt / Picro-BasaltSubduction zone / Continental crust (>25 km)
38214080Vaiyots-SarArmeniaPyroclastic cone(s)Eruption Dated2000 BCEMediterranean and Western AsiaWestern Asia39.79745.4972575Andesite / Basaltic AndesiteIntraplate / Continental crust (>25 km)
574283230Akita-KomagatakeJapanStratovolcano(es)Eruption Observed1971 CEJapan, Taiwan, MarianasHonshu39.761140.7991637Basalt / Picro-BasaltSubduction zone / Continental crust (>25 km)
40214100Tskhouk-KarckarArmenia-AzerbaijanPyroclastic cone(s)Eruption Dated3000 BCEMediterranean and Western AsiaWestern Asia39.74245.9923139Andesite / Basaltic AndesiteIntraplate / Continental crust (>25 km)
32213040AraratTurkeyStratovolcanoEruption Observed1840 CEMediterranean and Western AsiaTurkey39.70044.3005165Andesite / Basaltic AndesiteIntraplate / Continental crust (>25 km)
1364382002CorvoPortugalStratovolcanoEvidence CredibleUnknownAtlantic OceanAzores39.699-31.111718Basalt / Picro-BasaltIntraplate / Oceanic crust (< 15 km)
975328010DotseroUnited StatesMaarEruption Dated2200 BCECanada and Western USAUSA (Colorado)39.661-107.0352230Basalt / Picro-BasaltRift zone / Continental crust (>25 km)
969326010Soda LakesUnited StatesMaar(s)Evidence CredibleUnknownCanada and Western USAUSA (Nevada)39.530-118.8701251Basalt / Picro-BasaltRift zone / Continental crust (>25 km)
9211031PalinuroItalySubmarineEruption Dated8040 BCEMediterranean and Western AsiaItaly39.48014.830-70PhonoliteSubduction zone / Continental crust (>25 km)
1363382001FloresPortugalStratovolcano(es)Eruption Dated950 BCEAtlantic OceanAzores39.462-31.216914Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
31213030Tenduruk DagiTurkeyShieldEruption Observed1855 CEMediterranean and Western AsiaTurkey39.35643.8743514Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
17211080MarsiliItalySubmarineEruption Dated1050 BCEMediterranean and Western AsiaItaly39.28414.399-779NaNNaN
573283220ChokaisanJapanStratovolcano(es)Eruption Observed1974 CEJapan, Taiwan, MarianasHonshu39.099140.0492236Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
1368382040GraciosaPortugalStratovolcanoEruption Dated1950 BCEAtlantic OceanAzores39.020-27.970402Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
957323100Clear LakeUnited StatesVolcanic fieldEvidence CredibleUnknownCanada and Western USAUSA (California)38.970-122.7701439DaciteSubduction zone / Continental crust (>25 km)
971327050Black Rock DesertUnited StatesVolcanic fieldEruption Dated1290 CECanada and Western USAUSA (Utah)38.970-112.5001800Basalt / Picro-BasaltRift zone / Continental crust (>25 km)
572283210KurikomayamaJapanStratovolcanoEruption Observed1950 CEJapan, Taiwan, MarianasHonshu38.961140.7881627Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)
3210040Calatrava Volcanic FieldSpainPyroclastic cone(s)Eruption Dated3600 BCEMediterranean and Western AsiaWestern Europe38.870-4.0201117Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
10211040StromboliItalyStratovolcanoEruption Observed2020 CEMediterranean and Western AsiaItaly38.78915.213924Trachyandesite / Basaltic TrachyandesiteSubduction zone / Continental crust (>25 km)
\n", "

149 rows × 13 columns

\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country \\\n", "0 210010 West Eifel Volcanic Field Germany \n", "692 290350 Karpinsky Group Russia \n", "932 320811 Cayley Volcanic Field Canada \n", "930 320190 Garibaldi Lake Canada \n", "931 320200 Garibaldi Canada \n", "689 290320 Nemo Peak Russia \n", "817 305020 Keluo Group China \n", "688 290310 Tao-Rusyr Caldera Russia \n", "687 290300 Kharimkotan Russia \n", "684 290260 Chirinkotan Russia \n", "685 290270 Ekarma Russia \n", "686 290290 Sinarka Russia \n", "978 331005 West Valley Segment Canada \n", "933 321010 Baker United States \n", "818 305030 Wudalianchi China \n", "812 303020 Khanuy Gol Mongolia \n", "683 290250 Raikoke Russia \n", "811 303010 Taryatu-Chulutu Mongolia \n", "934 321020 Glacier Peak United States \n", "682 290240 Sarychev Peak Russia \n", "979 331010 Endeavour Segment Canada \n", "681 290220 Rasshua Russia \n", "680 290211 Srednii Russia \n", "679 290210 Ushishur Russia \n", "816 305011 Arxan-Chaihe China \n", "678 290200 Ketoi Russia \n", "677 290191 Uratman Russia \n", "676 290190 Prevo Peak Russia \n", "675 290180 Zavaritzki Caldera Russia \n", "980 331011 Cobb Segment Canada \n", "... ... ... ... \n", "8 211030 Ischia Italy \n", "581 283280 Hakkodasan Japan \n", "579 283270 Iwakisan Japan \n", "36 214060 Aragats Armenia \n", "580 283271 Towada Japan \n", "956 323080 Lassen Volcanic Center United States \n", "37 214070 Ghegham Volcanic Ridge Armenia \n", "39 214090 Porak Armenia-Azerbaijan \n", "577 283260 Akita-Yakeyama Japan \n", "576 283250 Hachimantai Japan \n", "578 283262 Megata Japan \n", "575 283240 Iwatesan Japan \n", "38 214080 Vaiyots-Sar Armenia \n", "574 283230 Akita-Komagatake Japan \n", "40 214100 Tskhouk-Karckar Armenia-Azerbaijan \n", "32 213040 Ararat Turkey \n", "1364 382002 Corvo Portugal \n", "975 328010 Dotsero United States \n", "969 326010 Soda Lakes United States \n", "9 211031 Palinuro Italy \n", "1363 382001 Flores Portugal \n", "31 213030 Tenduruk Dagi Turkey \n", "17 211080 Marsili Italy \n", "573 283220 Chokaisan Japan \n", "1368 382040 Graciosa Portugal \n", "957 323100 Clear Lake United States \n", "971 327050 Black Rock Desert United States \n", "572 283210 Kurikomayama Japan \n", "3 210040 Calatrava Volcanic Field Spain \n", "10 211040 Stromboli Italy \n", "\n", " Primary Volcano Type Activity Evidence Last Known Eruption \\\n", "0 Maar(s) Eruption Dated 8300 BCE \n", "692 Cone(s) Eruption Observed 1952 CE \n", "932 Volcanic field Evidence Credible Unknown \n", "930 Volcanic field Evidence Credible Unknown \n", "931 Stratovolcano Eruption Dated 8060 BCE \n", "689 Caldera Eruption Observed 1938 CE \n", "817 Pyroclastic cone(s) Evidence Credible Unknown \n", "688 Stratovolcano Eruption Observed 1952 CE \n", "687 Stratovolcano Eruption Observed 1933 CE \n", "684 Stratovolcano Eruption Observed 2017 CE \n", "685 Stratovolcano Eruption Observed 2010 CE \n", "686 Stratovolcano Eruption Observed 1878 CE \n", "978 Submarine Unrest / Holocene Unknown \n", "933 Stratovolcano(es) Eruption Observed 1880 CE \n", "818 Volcanic field Eruption Observed 1776 CE \n", "812 Volcanic field Evidence Credible Unknown \n", "683 Stratovolcano Eruption Observed 2019 CE \n", "811 Volcanic field Eruption Dated 2980 BCE \n", "934 Stratovolcano Eruption Dated 1700 CE \n", "682 Stratovolcano Eruption Observed 2019 CE \n", "979 Submarine Eruption Dated 3490 BCE \n", "681 Stratovolcano Eruption Observed 1957 CE \n", "680 Submarine Evidence Credible Unknown \n", "679 Caldera Eruption Observed 1884 CE \n", "816 Pyroclastic cone(s) Eruption Dated 0 CE \n", "678 Stratovolcano Eruption Observed 1960 CE \n", "677 Stratovolcano Evidence Credible Unknown \n", "676 Stratovolcano Eruption Observed 1825 CE \n", "675 Caldera Eruption Observed 1957 CE \n", "980 Submarine Eruption Dated 1180 BCE \n", "... ... ... ... \n", "8 Complex Eruption Observed 1302 CE \n", "581 Stratovolcano(es) Eruption Dated 1550 CE \n", "579 Stratovolcano Eruption Observed 1863 CE \n", "36 Stratovolcano Evidence Credible Unknown \n", "580 Caldera Eruption Observed 915 CE \n", "956 Stratovolcano Eruption Observed 1917 CE \n", "37 Volcanic field Eruption Dated 1900 BCE \n", "39 Stratovolcano Eruption Dated 778 BCE \n", "577 Stratovolcano Eruption Observed 1997 CE \n", "576 Stratovolcano Eruption Dated 5350 BCE \n", "578 Maar(s) Eruption Dated 2050 BCE \n", "575 Complex Eruption Observed 1919 CE \n", "38 Pyroclastic cone(s) Eruption Dated 2000 BCE \n", "574 Stratovolcano(es) Eruption Observed 1971 CE \n", "40 Pyroclastic cone(s) Eruption Dated 3000 BCE \n", "32 Stratovolcano Eruption Observed 1840 CE \n", "1364 Stratovolcano Evidence Credible Unknown \n", "975 Maar Eruption Dated 2200 BCE \n", "969 Maar(s) Evidence Credible Unknown \n", "9 Submarine Eruption Dated 8040 BCE \n", "1363 Stratovolcano(es) Eruption Dated 950 BCE \n", "31 Shield Eruption Observed 1855 CE \n", "17 Submarine Eruption Dated 1050 BCE \n", "573 Stratovolcano(es) Eruption Observed 1974 CE \n", "1368 Stratovolcano Eruption Dated 1950 BCE \n", "957 Volcanic field Evidence Credible Unknown \n", "971 Volcanic field Eruption Dated 1290 CE \n", "572 Stratovolcano Eruption Observed 1950 CE \n", "3 Pyroclastic cone(s) Eruption Dated 3600 BCE \n", "10 Stratovolcano Eruption Observed 2020 CE \n", "\n", " Region Subregion Latitude \\\n", "0 Mediterranean and Western Asia Western Europe 50.170 \n", "692 Kuril Islands Kuril Islands 50.148 \n", "932 Canada and Western USA Canada 50.120 \n", "930 Canada and Western USA Canada 49.933 \n", "931 Canada and Western USA Canada 49.850 \n", "689 Kuril Islands Kuril Islands 49.570 \n", "817 Kamchatka and Mainland Asia China (eastern) 49.370 \n", "688 Kuril Islands Kuril Islands 49.350 \n", "687 Kuril Islands Kuril Islands 49.120 \n", "684 Kuril Islands Kuril Islands 48.980 \n", "685 Kuril Islands Kuril Islands 48.958 \n", "686 Kuril Islands Kuril Islands 48.873 \n", "978 Hawaii and Pacific Ocean Pacific Ocean (northern) 48.780 \n", "933 Canada and Western USA USA (Washington) 48.777 \n", "818 Kamchatka and Mainland Asia China (eastern) 48.720 \n", "812 Kamchatka and Mainland Asia Mongolia 48.670 \n", "683 Kuril Islands Kuril Islands 48.292 \n", "811 Kamchatka and Mainland Asia Mongolia 48.133 \n", "934 Canada and Western USA USA (Washington) 48.112 \n", "682 Kuril Islands Kuril Islands 48.092 \n", "979 Hawaii and Pacific Ocean Pacific Ocean (northern) 47.950 \n", "681 Kuril Islands Kuril Islands 47.770 \n", "680 Kuril Islands Kuril Islands 47.600 \n", "679 Kuril Islands Kuril Islands 47.520 \n", "816 Kamchatka and Mainland Asia China (eastern) 47.450 \n", "678 Kuril Islands Kuril Islands 47.350 \n", "677 Kuril Islands Kuril Islands 47.120 \n", "676 Kuril Islands Kuril Islands 47.020 \n", "675 Kuril Islands Kuril Islands 46.925 \n", "980 Hawaii and Pacific Ocean Pacific Ocean (northern) 46.880 \n", "... ... ... ... \n", "8 Mediterranean and Western Asia Italy 40.730 \n", "581 Japan, Taiwan, Marianas Honshu 40.659 \n", "579 Japan, Taiwan, Marianas Honshu 40.656 \n", "36 Mediterranean and Western Asia Western Asia 40.530 \n", "580 Japan, Taiwan, Marianas Honshu 40.510 \n", "956 Canada and Western USA USA (California) 40.492 \n", "37 Mediterranean and Western Asia Western Asia 40.283 \n", "39 Mediterranean and Western Asia Western Asia 40.028 \n", "577 Japan, Taiwan, Marianas Honshu 39.964 \n", "576 Japan, Taiwan, Marianas Honshu 39.958 \n", "578 Japan, Taiwan, Marianas Honshu 39.950 \n", "575 Japan, Taiwan, Marianas Honshu 39.853 \n", "38 Mediterranean and Western Asia Western Asia 39.797 \n", "574 Japan, Taiwan, Marianas Honshu 39.761 \n", "40 Mediterranean and Western Asia Western Asia 39.742 \n", "32 Mediterranean and Western Asia Turkey 39.700 \n", "1364 Atlantic Ocean Azores 39.699 \n", "975 Canada and Western USA USA (Colorado) 39.661 \n", "969 Canada and Western USA USA (Nevada) 39.530 \n", "9 Mediterranean and Western Asia Italy 39.480 \n", "1363 Atlantic Ocean Azores 39.462 \n", "31 Mediterranean and Western Asia Turkey 39.356 \n", "17 Mediterranean and Western Asia Italy 39.284 \n", "573 Japan, Taiwan, Marianas Honshu 39.099 \n", "1368 Atlantic Ocean Azores 39.020 \n", "957 Canada and Western USA USA (California) 38.970 \n", "971 Canada and Western USA USA (Utah) 38.970 \n", "572 Japan, Taiwan, Marianas Honshu 38.961 \n", "3 Mediterranean and Western Asia Western Europe 38.870 \n", "10 Mediterranean and Western Asia Italy 38.789 \n", "\n", " Longitude Elevation (m) Dominant Rock Type \\\n", "0 6.850 600 Foidite \n", "692 155.373 1326 Andesite / Basaltic Andesite \n", "932 -123.280 2375 Andesite / Basaltic Andesite \n", "930 -123.000 2316 Andesite / Basaltic Andesite \n", "931 -123.000 2678 Dacite \n", "689 154.808 1018 Andesite / Basaltic Andesite \n", "817 125.920 670 Trachybasalt / Tephrite Basanite \n", "688 154.700 1325 Andesite / Basaltic Andesite \n", "687 154.508 1145 Andesite / Basaltic Andesite \n", "684 153.480 724 Andesite / Basaltic Andesite \n", "685 153.930 1170 Andesite / Basaltic Andesite \n", "686 154.182 911 Andesite / Basaltic Andesite \n", "978 -128.640 -2550 NaN \n", "933 -121.813 3285 Andesite / Basaltic Andesite \n", "818 126.120 597 Trachybasalt / Tephrite Basanite \n", "812 102.750 1886 Trachyandesite / Basaltic Trachyandesite \n", "683 153.250 551 Basalt / Picro-Basalt \n", "811 99.950 2326 Trachybasalt / Tephrite Basanite \n", "934 -121.113 3213 Dacite \n", "682 153.200 1496 Andesite / Basaltic Andesite \n", "979 -129.100 -2050 Basalt / Picro-Basalt \n", "681 153.020 956 Andesite / Basaltic Andesite \n", "680 152.920 36 No Data (checked) \n", "679 152.800 401 Andesite / Basaltic Andesite \n", "816 120.800 1677 Basalt / Picro-Basalt \n", "678 152.475 1172 Andesite / Basaltic Andesite \n", "677 152.250 678 Andesite / Basaltic Andesite \n", "676 152.120 1360 Basalt / Picro-Basalt \n", "675 151.950 624 Andesite / Basaltic Andesite \n", "980 -129.330 -2100 Basalt / Picro-Basalt \n", "... ... ... ... \n", "8 13.897 789 Trachyte / Trachydacite \n", "581 140.877 1585 Andesite / Basaltic Andesite \n", "579 140.303 1625 Andesite / Basaltic Andesite \n", "36 44.200 4095 Andesite / Basaltic Andesite \n", "580 140.880 1011 Andesite / Basaltic Andesite \n", "956 -121.508 3187 Andesite / Basaltic Andesite \n", "37 45.000 3597 Andesite / Basaltic Andesite \n", "39 45.740 3029 Andesite / Basaltic Andesite \n", "577 140.757 1366 Andesite / Basaltic Andesite \n", "576 140.854 1613 Andesite / Basaltic Andesite \n", "578 139.730 291 Andesite / Basaltic Andesite \n", "575 141.001 2038 Basalt / Picro-Basalt \n", "38 45.497 2575 Andesite / Basaltic Andesite \n", "574 140.799 1637 Basalt / Picro-Basalt \n", "40 45.992 3139 Andesite / Basaltic Andesite \n", "32 44.300 5165 Andesite / Basaltic Andesite \n", "1364 -31.111 718 Basalt / Picro-Basalt \n", "975 -107.035 2230 Basalt / Picro-Basalt \n", "969 -118.870 1251 Basalt / Picro-Basalt \n", "9 14.830 -70 Phonolite \n", "1363 -31.216 914 Basalt / Picro-Basalt \n", "31 43.874 3514 Basalt / Picro-Basalt \n", "17 14.399 -779 NaN \n", "573 140.049 2236 Andesite / Basaltic Andesite \n", "1368 -27.970 402 Basalt / Picro-Basalt \n", "957 -122.770 1439 Dacite \n", "971 -112.500 1800 Basalt / Picro-Basalt \n", "572 140.788 1627 Andesite / Basaltic Andesite \n", "3 -4.020 1117 Basalt / Picro-Basalt \n", "10 15.213 924 Trachyandesite / Basaltic Trachyandesite \n", "\n", " Tectonic Setting \n", "0 Rift zone / Continental crust (>25 km) \n", "692 Subduction zone / Continental crust (>25 km) \n", "932 Subduction zone / Continental crust (>25 km) \n", "930 Subduction zone / Continental crust (>25 km) \n", "931 Subduction zone / Continental crust (>25 km) \n", "689 Subduction zone / Intermediate crust (15-25 km) \n", "817 Intraplate / Continental crust (>25 km) \n", "688 Subduction zone / Intermediate crust (15-25 km) \n", "687 Subduction zone / Intermediate crust (15-25 km) \n", "684 Subduction zone / Intermediate crust (15-25 km) \n", "685 Subduction zone / Intermediate crust (15-25 km) \n", "686 Subduction zone / Intermediate crust (15-25 km) \n", "978 Rift zone / Intermediate crust (15-25 km) \n", "933 Subduction zone / Continental crust (>25 km) \n", "818 Intraplate / Continental crust (>25 km) \n", "812 Intraplate / Continental crust (>25 km) \n", "683 Subduction zone / Intermediate crust (15-25 km) \n", "811 Intraplate / Continental crust (>25 km) \n", "934 Subduction zone / Continental crust (>25 km) \n", "682 Subduction zone / Intermediate crust (15-25 km) \n", "979 Rift zone / Oceanic crust (< 15 km) \n", "681 Subduction zone / Oceanic crust (< 15 km) \n", "680 Subduction zone / Oceanic crust (< 15 km) \n", "679 Subduction zone / Oceanic crust (< 15 km) \n", "816 Intraplate / Continental crust (>25 km) \n", "678 Subduction zone / Oceanic crust (< 15 km) \n", "677 Subduction zone / Oceanic crust (< 15 km) \n", "676 Subduction zone / Oceanic crust (< 15 km) \n", "675 Subduction zone / Oceanic crust (< 15 km) \n", "980 Rift zone / Oceanic crust (< 15 km) \n", "... ... \n", "8 Subduction zone / Continental crust (>25 km) \n", "581 Subduction zone / Continental crust (>25 km) \n", "579 Subduction zone / Continental crust (>25 km) \n", "36 Intraplate / Continental crust (>25 km) \n", "580 Subduction zone / Continental crust (>25 km) \n", "956 Subduction zone / Continental crust (>25 km) \n", "37 Intraplate / Continental crust (>25 km) \n", "39 Intraplate / Continental crust (>25 km) \n", "577 Subduction zone / Continental crust (>25 km) \n", "576 Subduction zone / Continental crust (>25 km) \n", "578 Subduction zone / Continental crust (>25 km) \n", "575 Subduction zone / Continental crust (>25 km) \n", "38 Intraplate / Continental crust (>25 km) \n", "574 Subduction zone / Continental crust (>25 km) \n", "40 Intraplate / Continental crust (>25 km) \n", "32 Intraplate / Continental crust (>25 km) \n", "1364 Intraplate / Oceanic crust (< 15 km) \n", "975 Rift zone / Continental crust (>25 km) \n", "969 Rift zone / Continental crust (>25 km) \n", "9 Subduction zone / Continental crust (>25 km) \n", "1363 Intraplate / Continental crust (>25 km) \n", "31 Intraplate / Continental crust (>25 km) \n", "17 NaN \n", "573 Subduction zone / Continental crust (>25 km) \n", "1368 Rift zone / Oceanic crust (< 15 km) \n", "957 Subduction zone / Continental crust (>25 km) \n", "971 Rift zone / Continental crust (>25 km) \n", "572 Subduction zone / Continental crust (>25 km) \n", "3 Intraplate / Continental crust (>25 km) \n", "10 Subduction zone / Continental crust (>25 km) \n", "\n", "[149 rows x 13 columns]" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NorthernToSouthern.loc[0:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oops! This didn't work as expected did it? Instead, we got the all the rows between the _indices_ of 0 and 10 which are not in any particular order now. When we sorted by Latitude, Pandas did not assign new indices and put the records in no particular order within a particular Latitude value. This is a \"feature\" of sorting functions. So... to get what we really wanted, which was the first 10 records in the NorthernToSouthern DataFrame, we can use the method **.iloc** instead of **.loc**. " ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
1361377020East Gakkel Ridge at 85°EUndersea FeaturesSubmarineEvidence Credible1999 CEIceland and Arctic OceanArctic Ocean85.60885.250-3800No Data (checked)Rift zone / Oceanic crust (< 15 km)
1360376010Jan MayenNorwayStratovolcanoEruption Observed1985 CEIceland and Arctic OceanAtlantic Ocean (Jan Mayen)71.082-8.1552197Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1359375010Kolbeinsey RidgeIcelandSubmarineEruption Observed1755 CEIceland and Arctic OceanNorth of Iceland66.670-18.5005Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1355373100Tjornes Fracture ZoneIcelandSubmarineEruption Observed1868 CEIceland and Arctic OceanIceland (northeastern)66.309-17.118-75Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1354373090TheistareykirIcelandShieldEruption Dated900 BCEIceland and Arctic OceanIceland (northeastern)65.833-17.166540Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1352373080KraflaIcelandCalderaEruption Observed1984 CEIceland and Arctic OceanIceland (northeastern)65.715-16.728800Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1353373082HeidarspordarIcelandFissure ventConfirmed Eruption300 BCEIceland and Arctic OceanIceland (northeastern)65.583-16.817490NaNRift zone / Oceanic crust (< 15 km)
904314060Imuruk LakeUnited StatesShield(s)Eruption Dated300 CEAlaskaAlaska (western)65.517-163.450610Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
1351373070FremrinamarIcelandStratovolcanoEruption Dated1200 BCEIceland and Arctic OceanIceland (northeastern)65.416-16.666970Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
1350373060AskjaIcelandStratovolcanoEruption Observed1961 CEIceland and Arctic OceanIceland (northeastern)65.033-16.7831080Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country \\\n", "1361 377020 East Gakkel Ridge at 85°E Undersea Features \n", "1360 376010 Jan Mayen Norway \n", "1359 375010 Kolbeinsey Ridge Iceland \n", "1355 373100 Tjornes Fracture Zone Iceland \n", "1354 373090 Theistareykir Iceland \n", "1352 373080 Krafla Iceland \n", "1353 373082 Heidarspordar Iceland \n", "904 314060 Imuruk Lake United States \n", "1351 373070 Fremrinamar Iceland \n", "1350 373060 Askja Iceland \n", "\n", " Primary Volcano Type Activity Evidence Last Known Eruption \\\n", "1361 Submarine Evidence Credible 1999 CE \n", "1360 Stratovolcano Eruption Observed 1985 CE \n", "1359 Submarine Eruption Observed 1755 CE \n", "1355 Submarine Eruption Observed 1868 CE \n", "1354 Shield Eruption Dated 900 BCE \n", "1352 Caldera Eruption Observed 1984 CE \n", "1353 Fissure vent Confirmed Eruption 300 BCE \n", "904 Shield(s) Eruption Dated 300 CE \n", "1351 Stratovolcano Eruption Dated 1200 BCE \n", "1350 Stratovolcano Eruption Observed 1961 CE \n", "\n", " Region Subregion Latitude \\\n", "1361 Iceland and Arctic Ocean Arctic Ocean 85.608 \n", "1360 Iceland and Arctic Ocean Atlantic Ocean (Jan Mayen) 71.082 \n", "1359 Iceland and Arctic Ocean North of Iceland 66.670 \n", "1355 Iceland and Arctic Ocean Iceland (northeastern) 66.309 \n", "1354 Iceland and Arctic Ocean Iceland (northeastern) 65.833 \n", "1352 Iceland and Arctic Ocean Iceland (northeastern) 65.715 \n", "1353 Iceland and Arctic Ocean Iceland (northeastern) 65.583 \n", "904 Alaska Alaska (western) 65.517 \n", "1351 Iceland and Arctic Ocean Iceland (northeastern) 65.416 \n", "1350 Iceland and Arctic Ocean Iceland (northeastern) 65.033 \n", "\n", " Longitude Elevation (m) Dominant Rock Type \\\n", "1361 85.250 -3800 No Data (checked) \n", "1360 -8.155 2197 Basalt / Picro-Basalt \n", "1359 -18.500 5 Basalt / Picro-Basalt \n", "1355 -17.118 -75 Basalt / Picro-Basalt \n", "1354 -17.166 540 Basalt / Picro-Basalt \n", "1352 -16.728 800 Basalt / Picro-Basalt \n", "1353 -16.817 490 NaN \n", "904 -163.450 610 Basalt / Picro-Basalt \n", "1351 -16.666 970 Basalt / Picro-Basalt \n", "1350 -16.783 1080 Basalt / Picro-Basalt \n", "\n", " Tectonic Setting \n", "1361 Rift zone / Oceanic crust (< 15 km) \n", "1360 Rift zone / Oceanic crust (< 15 km) \n", "1359 Rift zone / Oceanic crust (< 15 km) \n", "1355 Rift zone / Oceanic crust (< 15 km) \n", "1354 Rift zone / Oceanic crust (< 15 km) \n", "1352 Rift zone / Oceanic crust (< 15 km) \n", "1353 Rift zone / Oceanic crust (< 15 km) \n", "904 Intraplate / Continental crust (>25 km) \n", "1351 Rift zone / Oceanic crust (< 15 km) \n", "1350 Rift zone / Oceanic crust (< 15 km) " ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NorthernToSouthern.iloc[0:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Much better. Now we can see that there were lots of eruptions during the Holocene on Iceland. Can you think of how to get names of all of the Icelandic volcanoes that erupted during the Holocene? \n", "\n", "But to solve our indexing problem with **.loc( )**, by re-indexing our sorted DataFrame. To re-index a Pandas DataFrame, we use the **.set_index( )** method. \n", "\n", "This will set the index to a list of values from 0 to the length of the Dataframe." ] }, { "cell_type": "code", "execution_count": 140, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
0377020East Gakkel Ridge at 85°EUndersea FeaturesSubmarineEvidence Credible1999 CEIceland and Arctic OceanArctic Ocean85.60885.250-3800No Data (checked)Rift zone / Oceanic crust (< 15 km)
1376010Jan MayenNorwayStratovolcanoEruption Observed1985 CEIceland and Arctic OceanAtlantic Ocean (Jan Mayen)71.082-8.1552197Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
2375010Kolbeinsey RidgeIcelandSubmarineEruption Observed1755 CEIceland and Arctic OceanNorth of Iceland66.670-18.5005Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
3373100Tjornes Fracture ZoneIcelandSubmarineEruption Observed1868 CEIceland and Arctic OceanIceland (northeastern)66.309-17.118-75Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
4373090TheistareykirIcelandShieldEruption Dated900 BCEIceland and Arctic OceanIceland (northeastern)65.833-17.166540Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country \\\n", "0 377020 East Gakkel Ridge at 85°E Undersea Features \n", "1 376010 Jan Mayen Norway \n", "2 375010 Kolbeinsey Ridge Iceland \n", "3 373100 Tjornes Fracture Zone Iceland \n", "4 373090 Theistareykir Iceland \n", "\n", " Primary Volcano Type Activity Evidence Last Known Eruption \\\n", "0 Submarine Evidence Credible 1999 CE \n", "1 Stratovolcano Eruption Observed 1985 CE \n", "2 Submarine Eruption Observed 1755 CE \n", "3 Submarine Eruption Observed 1868 CE \n", "4 Shield Eruption Dated 900 BCE \n", "\n", " Region Subregion Latitude Longitude \\\n", "0 Iceland and Arctic Ocean Arctic Ocean 85.608 85.250 \n", "1 Iceland and Arctic Ocean Atlantic Ocean (Jan Mayen) 71.082 -8.155 \n", "2 Iceland and Arctic Ocean North of Iceland 66.670 -18.500 \n", "3 Iceland and Arctic Ocean Iceland (northeastern) 66.309 -17.118 \n", "4 Iceland and Arctic Ocean Iceland (northeastern) 65.833 -17.166 \n", "\n", " Elevation (m) Dominant Rock Type Tectonic Setting \n", "0 -3800 No Data (checked) Rift zone / Oceanic crust (< 15 km) \n", "1 2197 Basalt / Picro-Basalt Rift zone / Oceanic crust (< 15 km) \n", "2 5 Basalt / Picro-Basalt Rift zone / Oceanic crust (< 15 km) \n", "3 -75 Basalt / Picro-Basalt Rift zone / Oceanic crust (< 15 km) \n", "4 540 Basalt / Picro-Basalt Rift zone / Oceanic crust (< 15 km) " ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a list of integers between zero up to (but not including) the length of the DataFrame\n", "newIndexValues=list(range(len(NorthernToSouthern))) \n", "# reset the indices to this list\n", "NorthernToSouthern=NorthernToSouthern.set_index([newIndexValues])\n", "NorthernToSouthern.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another thing about indices: We can set the indices to one of the other column names, for example the \"Volcano Name\". " ] }, { "cell_type": "code", "execution_count": 141, "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", "
Volcano NumberCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
Volcano Name
East Gakkel Ridge at 85°E377020Undersea FeaturesSubmarineEvidence Credible1999 CEIceland and Arctic OceanArctic Ocean85.60885.250-3800No Data (checked)Rift zone / Oceanic crust (< 15 km)
Jan Mayen376010NorwayStratovolcanoEruption Observed1985 CEIceland and Arctic OceanAtlantic Ocean (Jan Mayen)71.082-8.1552197Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
Kolbeinsey Ridge375010IcelandSubmarineEruption Observed1755 CEIceland and Arctic OceanNorth of Iceland66.670-18.5005Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
Tjornes Fracture Zone373100IcelandSubmarineEruption Observed1868 CEIceland and Arctic OceanIceland (northeastern)66.309-17.118-75Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
Theistareykir373090IcelandShieldEruption Dated900 BCEIceland and Arctic OceanIceland (northeastern)65.833-17.166540Basalt / Picro-BasaltRift zone / Oceanic crust (< 15 km)
\n", "
" ], "text/plain": [ " Volcano Number Country \\\n", "Volcano Name \n", "East Gakkel Ridge at 85°E 377020 Undersea Features \n", "Jan Mayen 376010 Norway \n", "Kolbeinsey Ridge 375010 Iceland \n", "Tjornes Fracture Zone 373100 Iceland \n", "Theistareykir 373090 Iceland \n", "\n", " Primary Volcano Type Activity Evidence \\\n", "Volcano Name \n", "East Gakkel Ridge at 85°E Submarine Evidence Credible \n", "Jan Mayen Stratovolcano Eruption Observed \n", "Kolbeinsey Ridge Submarine Eruption Observed \n", "Tjornes Fracture Zone Submarine Eruption Observed \n", "Theistareykir Shield Eruption Dated \n", "\n", " Last Known Eruption Region \\\n", "Volcano Name \n", "East Gakkel Ridge at 85°E 1999 CE Iceland and Arctic Ocean \n", "Jan Mayen 1985 CE Iceland and Arctic Ocean \n", "Kolbeinsey Ridge 1755 CE Iceland and Arctic Ocean \n", "Tjornes Fracture Zone 1868 CE Iceland and Arctic Ocean \n", "Theistareykir 900 BCE Iceland and Arctic Ocean \n", "\n", " Subregion Latitude Longitude \\\n", "Volcano Name \n", "East Gakkel Ridge at 85°E Arctic Ocean 85.608 85.250 \n", "Jan Mayen Atlantic Ocean (Jan Mayen) 71.082 -8.155 \n", "Kolbeinsey Ridge North of Iceland 66.670 -18.500 \n", "Tjornes Fracture Zone Iceland (northeastern) 66.309 -17.118 \n", "Theistareykir Iceland (northeastern) 65.833 -17.166 \n", "\n", " Elevation (m) Dominant Rock Type \\\n", "Volcano Name \n", "East Gakkel Ridge at 85°E -3800 No Data (checked) \n", "Jan Mayen 2197 Basalt / Picro-Basalt \n", "Kolbeinsey Ridge 5 Basalt / Picro-Basalt \n", "Tjornes Fracture Zone -75 Basalt / Picro-Basalt \n", "Theistareykir 540 Basalt / Picro-Basalt \n", "\n", " Tectonic Setting \n", "Volcano Name \n", "East Gakkel Ridge at 85°E Rift zone / Oceanic crust (< 15 km) \n", "Jan Mayen Rift zone / Oceanic crust (< 15 km) \n", "Kolbeinsey Ridge Rift zone / Oceanic crust (< 15 km) \n", "Tjornes Fracture Zone Rift zone / Oceanic crust (< 15 km) \n", "Theistareykir Rift zone / Oceanic crust (< 15 km) " ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NorthernToSouthern=NorthernToSouthern.set_index('Volcano Name')\n", "NorthernToSouthern.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sorting by awkward strings\n", "\n", "In this example data set, the dates for the last known eruption are the dates in CE or BCE or unknown, so we cannot sort by that column header. But we can first drop all the rows where the 'Last Known Eruption' is 'unknown', then split the dates on the space, multiply all the dates with 'BCE' in them by -1 and sort by the resulting column. \n", "\n", "Let's do that step by step:\n", "\n", "- to drop all the 'unknown' eruption dates, we can use the filtering statement:" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [], "source": [ "EruptionData=pd.read_excel('Datasets/GVP_Volcano_List_Holocene.xls',header=1) # read this in again\n", "KnownEruptionDates=EruptionData[EruptionData['Last Known Eruption'].str.contains('unknown')==False]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To see if this worked, we can look at all the unique eruption dates and see if 'unknown' is still there:" ] }, { "cell_type": "code", "execution_count": 170, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [Volcano Number, Volcano Name, Country, Primary Volcano Type, Activity Evidence, Last Known Eruption, Region, Subregion, Latitude, Longitude, Elevation (m), Dominant Rock Type, Tectonic Setting]\n", "Index: []" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KnownEruptionDates[KnownEruptionDates['Last Known Eruption'].str.contains('unknown')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nope. So now step 2: \n", "\n", "- To split a string on a particular key, in this case a space, we can use the syntax:\n", "\n", "EruptionData\\['Last Known Eruption'\\].str.split()\n", "\n" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 [8300, BCE]\n", "1 [4040, BCE]\n", "2 [Unknown]\n", "3 [3600, BCE]\n", "4 [104, BCE]\n", "Name: Last Known Eruption, dtype: object" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KnownEruptionDates['Last Known Eruption'].str.split().head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Whoa! some of the entries are 'Unknown' and not 'unknown'. Sloppy! But we can handle that:" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [], "source": [ "KnownEruptionDates=KnownEruptionDates[KnownEruptionDates['Last Known Eruption'].str.contains('Unknown')==False]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "More on splitting: It turns out that a space is the default for **split**. We don't really want to do this, but if we DID, we could split on the 'C' like so: \n" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 [8300 B, E]\n", "1 [4040 B, E]\n", "3 [3600 B, E]\n", "4 [104 B, E]\n", "6 [1538 , E]\n", "Name: Last Known Eruption, dtype: object" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KnownEruptionDates['Last Known Eruption'].str.split('C').head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See how the **.str.split()** method returns a list with the stuff before the split key as the first element and the stuff after the key is the second. \n", "\n", "We can make two arrays, one for the date and one for the 'CE' or 'BCE' tag. We first make an array (using the DataFrame method **.values**, transpose the array and assign the first row to a dataframe column named 'date' and the second row to a column named 'CE/BCE'. " ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[['8300' '4040' '3600' ... '1911' '2016' '1962']\n", " ['BCE' 'BCE' 'BCE' ... 'CE' 'CE' 'CE']]\n" ] } ], "source": [ "dates=KnownEruptionDates['Last Known Eruption'].str.split(' ',expand=True).transpose()\n", "print (dates.values)\n" ] }, { "cell_type": "code", "execution_count": 175, "metadata": {}, "outputs": [], "source": [ "# put in the 'date' column:\n", "KnownEruptionDates['date']=dates.values[0].astype('int')\n", "# put in the 'CE/BCE' column:\n", "KnownEruptionDates['CE/BCE']=dates.values[1].astype('str')\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because Pandas read in the 'Last Known Eruption' as a string, we need to convert the first part to an integer (that is the **.astype('int')** bit above). This means we can multiply the date in records with 'BCE' by -1. \n" ] }, { "cell_type": "code", "execution_count": 176, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic SettingdateCE/BCE
127222161Igwisi HillsTanzaniaPyroclastic cone(s)Eruption Dated10450 BCEAfrica and Red SeaAfrica (eastern)-4.88931.9331146FoiditeRift zone / Continental crust (>25 km)-10450BCE
561283141NantaisanJapanStratovolcanoEruption Dated9540 BCEJapan, Taiwan, MarianasHonshu36.765139.4912486Andesite / Basaltic AndesiteSubduction zone / Continental crust (>25 km)-9540BCE
974327812Red HillUnited StatesVolcanic fieldEruption Dated9450 BCECanada and Western USAUSA (New Mexico)34.250-108.8302300Basalt / Picro-BasaltRift zone / Continental crust (>25 km)-9450BCE
964324010Black Butte Crater Lava FieldUnited StatesShieldEruption Dated8400 BCECanada and Western USAUSA (Idaho)43.183-114.3521478Basalt / Picro-BasaltRift zone / Continental crust (>25 km)-8400BCE
1400390022BerlinAntarcticaShield(s)Eruption Dated8350 BCEAntarcticaAntarctica and South Sandwich Islands-76.050-136.0003478Trachyte / TrachydaciteIntraplate / Continental crust (>25 km)-8350BCE
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country \\\n", "127 222161 Igwisi Hills Tanzania \n", "561 283141 Nantaisan Japan \n", "974 327812 Red Hill United States \n", "964 324010 Black Butte Crater Lava Field United States \n", "1400 390022 Berlin Antarctica \n", "\n", " Primary Volcano Type Activity Evidence Last Known Eruption \\\n", "127 Pyroclastic cone(s) Eruption Dated 10450 BCE \n", "561 Stratovolcano Eruption Dated 9540 BCE \n", "974 Volcanic field Eruption Dated 9450 BCE \n", "964 Shield Eruption Dated 8400 BCE \n", "1400 Shield(s) Eruption Dated 8350 BCE \n", "\n", " Region Subregion \\\n", "127 Africa and Red Sea Africa (eastern) \n", "561 Japan, Taiwan, Marianas Honshu \n", "974 Canada and Western USA USA (New Mexico) \n", "964 Canada and Western USA USA (Idaho) \n", "1400 Antarctica Antarctica and South Sandwich Islands \n", "\n", " Latitude Longitude Elevation (m) Dominant Rock Type \\\n", "127 -4.889 31.933 1146 Foidite \n", "561 36.765 139.491 2486 Andesite / Basaltic Andesite \n", "974 34.250 -108.830 2300 Basalt / Picro-Basalt \n", "964 43.183 -114.352 1478 Basalt / Picro-Basalt \n", "1400 -76.050 -136.000 3478 Trachyte / Trachydacite \n", "\n", " Tectonic Setting date CE/BCE \n", "127 Rift zone / Continental crust (>25 km) -10450 BCE \n", "561 Subduction zone / Continental crust (>25 km) -9540 BCE \n", "974 Rift zone / Continental crust (>25 km) -9450 BCE \n", "964 Rift zone / Continental crust (>25 km) -8400 BCE \n", "1400 Intraplate / Continental crust (>25 km) -8350 BCE " ] }, "execution_count": 176, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KnownEruptionDates.loc[KnownEruptionDates['CE/BCE'].str.contains('BCE'),'date']=-1*KnownEruptionDates['date']\n", "KnownEruptionDates.sort_values(by='date').head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Concatenation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've been working on a data set that only had Holocene data in it, but the same Smithsonian website has a data set for Pleistocene volcanic eruptions too. We can concatentate both data sets into a single DataFrame (as long as they have the same columns) like this: " ] }, { "cell_type": "code", "execution_count": 238, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
0210010West Eifel Volcanic FieldGermanyMaar(s)Eruption Dated8300 BCEMediterranean and Western AsiaWestern Europe50.1706.85600FoiditeRift zone / Continental crust (>25 km)
1210020Chaine des PuysFranceLava dome(s)Eruption Dated4040 BCEMediterranean and Western AsiaWestern Europe45.7752.971464Basalt / Picro-BasaltRift zone / Continental crust (>25 km)
2210030Olot Volcanic FieldSpainPyroclastic cone(s)Evidence CredibleUnknownMediterranean and Western AsiaWestern Europe42.1702.53893Trachybasalt / Tephrite BasaniteIntraplate / Continental crust (>25 km)
3210040Calatrava Volcanic FieldSpainPyroclastic cone(s)Eruption Dated3600 BCEMediterranean and Western AsiaWestern Europe38.870-4.021117Basalt / Picro-BasaltIntraplate / Continental crust (>25 km)
4211003VulsiniItalyCalderaEruption Observed104 BCEMediterranean and Western AsiaItaly42.60011.93800Trachyte / TrachydaciteSubduction zone / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "0 210010 West Eifel Volcanic Field Germany Maar(s) \n", "1 210020 Chaine des Puys France Lava dome(s) \n", "2 210030 Olot Volcanic Field Spain Pyroclastic cone(s) \n", "3 210040 Calatrava Volcanic Field Spain Pyroclastic cone(s) \n", "4 211003 Vulsini Italy Caldera \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "0 Eruption Dated 8300 BCE Mediterranean and Western Asia \n", "1 Eruption Dated 4040 BCE Mediterranean and Western Asia \n", "2 Evidence Credible Unknown Mediterranean and Western Asia \n", "3 Eruption Dated 3600 BCE Mediterranean and Western Asia \n", "4 Eruption Observed 104 BCE Mediterranean and Western Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "0 Western Europe 50.170 6.85 600 \n", "1 Western Europe 45.775 2.97 1464 \n", "2 Western Europe 42.170 2.53 893 \n", "3 Western Europe 38.870 -4.02 1117 \n", "4 Italy 42.600 11.93 800 \n", "\n", " Dominant Rock Type \\\n", "0 Foidite \n", "1 Basalt / Picro-Basalt \n", "2 Trachybasalt / Tephrite Basanite \n", "3 Basalt / Picro-Basalt \n", "4 Trachyte / Trachydacite \n", "\n", " Tectonic Setting \n", "0 Rift zone / Continental crust (>25 km) \n", "1 Rift zone / Continental crust (>25 km) \n", "2 Intraplate / Continental crust (>25 km) \n", "3 Intraplate / Continental crust (>25 km) \n", "4 Subduction zone / Continental crust (>25 km) " ] }, "execution_count": 238, "metadata": {}, "output_type": "execute_result" } ], "source": [ "HoloceneEruptionData=pd.read_excel('Datasets/GVP_Volcano_List_Holocene.xls',header=1) # read this in again\n", "PleistoceneEruptionData=pd.read_excel('Datasets/GVP_Volcano_List_Pleistocene.xls',header=1) # read this in again\n", "# get both Unknown and unknown out!\n", "RecentEruptionData=pd.concat([HoloceneEruptionData,PleistoceneEruptionData])\n", "RecentEruptionData.head()" ] }, { "cell_type": "code", "execution_count": 185, "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", "
Volcano NumberVolcano NameCountryPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic Setting
1235461838Raja-SabandaIndonesiaUnknownNaNNaNIndonesiaSumatra-2.228101.4302527NaNUnknown
1236461839HuluniloIndonesiaStratovolcanoNaNNaNIndonesiaSumatra-2.418101.7762469NaNUnknown
1237461840TungkatIndonesiaUnknownNaNNaNIndonesiaSumatra-2.480102.0261576NaNUnknown
1238464807Ramu-LabumbuIndonesiaUnknownNaNNaNIndonesiaLesser Sunda Islands-8.416118.2071086NaNUnknown
1239590835DiscoveryAntarcticaStratovolcanoNaNNaNAntarcticaAntarctica and South Sandwich Islands-78.374165.0152578NaNIntraplate / Continental crust (>25 km)
\n", "
" ], "text/plain": [ " Volcano Number Volcano Name Country Primary Volcano Type \\\n", "1235 461838 Raja-Sabanda Indonesia Unknown \n", "1236 461839 Hulunilo Indonesia Stratovolcano \n", "1237 461840 Tungkat Indonesia Unknown \n", "1238 464807 Ramu-Labumbu Indonesia Unknown \n", "1239 590835 Discovery Antarctica Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "1235 NaN NaN Indonesia \n", "1236 NaN NaN Indonesia \n", "1237 NaN NaN Indonesia \n", "1238 NaN NaN Indonesia \n", "1239 NaN NaN Antarctica \n", "\n", " Subregion Latitude Longitude \\\n", "1235 Sumatra -2.228 101.430 \n", "1236 Sumatra -2.418 101.776 \n", "1237 Sumatra -2.480 102.026 \n", "1238 Lesser Sunda Islands -8.416 118.207 \n", "1239 Antarctica and South Sandwich Islands -78.374 165.015 \n", "\n", " Elevation (m) Dominant Rock Type \\\n", "1235 2527 NaN \n", "1236 2469 NaN \n", "1237 1576 NaN \n", "1238 1086 NaN \n", "1239 2578 NaN \n", "\n", " Tectonic Setting \n", "1235 Unknown \n", "1236 Unknown \n", "1237 Unknown \n", "1238 Unknown \n", "1239 Intraplate / Continental crust (>25 km) " ] }, "execution_count": 185, "metadata": {}, "output_type": "execute_result" } ], "source": [ "RecentEruptionData.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So a lot less is known about the Pleistocene eruptions than the Holocene ones. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is another data set on the Smithsonian Website that is interesting. It has a list of all the currently active volcanoes. " ] }, { "cell_type": "code", "execution_count": 206, "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", "
VolcanoCountryEruption Start DateEruption Stop DateMax VEI
0KuchinoerabujimaJapan2020 Jan 112020 Feb 13 (continuing)NaN
1SemisopochnoiUnited States2019 Dec 72020 Feb 16 (continuing)NaN
2NishinoshimaJapan2019 Dec 52020 Feb 15 (continuing)1.0
3KikaiJapan2019 Nov 22020 Feb 11 (continuing)NaN
4KlyuchevskoyRussia2019 Oct 242020 Feb 19 (continuing)NaN
\n", "
" ], "text/plain": [ " Volcano Country Eruption Start Date \\\n", "0 Kuchinoerabujima Japan 2020 Jan 11 \n", "1 Semisopochnoi United States 2019 Dec 7 \n", "2 Nishinoshima Japan 2019 Dec 5 \n", "3 Kikai Japan 2019 Nov 2 \n", "4 Klyuchevskoy Russia 2019 Oct 24 \n", "\n", " Eruption Stop Date Max VEI \n", "0 2020 Feb 13 (continuing) NaN \n", "1 2020 Feb 16 (continuing) NaN \n", "2 2020 Feb 15 (continuing) 1.0 \n", "3 2020 Feb 11 (continuing) NaN \n", "4 2020 Feb 19 (continuing) NaN " ] }, "execution_count": 206, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ActiveVolcanoes=pd.read_excel('Datasets/ActiveVolcanoes.xlsx')\n", "ActiveVolcanoes.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There's a lot more information about each volcano in our HoloceneEruptionData DataFrame, which we could attach to the use Pandas **merge( )** method. There are many ways to use **merge**, but the idea is to identify what kind of join you want: " ] }, { "cell_type": "code", "execution_count": 233, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "execution_count": 233, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='Figures/join-types.jpg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to pair all the stuff from the Holocene volcanoes database with the ActiveVolcanoes data if it isn't already there ('Country' for example is in both). " ] }, { "cell_type": "code", "execution_count": 249, "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", "
VolcanoCountry_xEruption Start DateEruption Stop DateMax VEIVolcano NumberVolcano NameCountry_yPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic SettingdateCE/BCE
0KuchinoerabujimaJapan2020 Jan 112020 Feb 13 (continuing)NaN282050.0KuchinoerabujimaJapanStratovolcano(es)Eruption Observed2020 CEJapan, Taiwan, MarianasRyukyu Islands and Kyushu30.443130.217657.0Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)2020.0CE
1SemisopochnoiUnited States2019 Dec 72020 Feb 16 (continuing)NaN311060.0SemisopochnoiUnited StatesStratovolcanoEruption Observed2020 CEAlaskaAleutian Islands51.930179.5801221.0Basalt / Picro-BasaltSubduction zone / Intermediate crust (15-25 km)2020.0CE
2NishinoshimaJapan2019 Dec 52020 Feb 15 (continuing)1.0284096.0NishinoshimaJapanCalderaEruption Observed2020 CEJapan, Taiwan, MarianasIzu, Volcano, and Mariana Islands27.247140.87425.0Andesite / Basaltic AndesiteSubduction zone / Crustal thickness unknown2020.0CE
3KikaiJapan2019 Nov 22020 Feb 11 (continuing)NaN282060.0KikaiJapanCalderaEruption Observed2020 CEJapan, Taiwan, MarianasRyukyu Islands and Kyushu30.793130.305704.0RhyoliteSubduction zone / Oceanic crust (< 15 km)2020.0CE
4KlyuchevskoyRussia2019 Oct 242020 Feb 19 (continuing)NaN300260.0KlyuchevskoyRussiaStratovolcanoEruption Observed2020 CEKamchatka and Mainland AsiaKamchatka Peninsula56.056160.6424754.0Basalt / Picro-BasaltSubduction zone / Continental crust (>25 km)2020.0CE
\n", "
" ], "text/plain": [ " Volcano Country_x Eruption Start Date \\\n", "0 Kuchinoerabujima Japan 2020 Jan 11 \n", "1 Semisopochnoi United States 2019 Dec 7 \n", "2 Nishinoshima Japan 2019 Dec 5 \n", "3 Kikai Japan 2019 Nov 2 \n", "4 Klyuchevskoy Russia 2019 Oct 24 \n", "\n", " Eruption Stop Date Max VEI Volcano Number Volcano Name \\\n", "0 2020 Feb 13 (continuing) NaN 282050.0 Kuchinoerabujima \n", "1 2020 Feb 16 (continuing) NaN 311060.0 Semisopochnoi \n", "2 2020 Feb 15 (continuing) 1.0 284096.0 Nishinoshima \n", "3 2020 Feb 11 (continuing) NaN 282060.0 Kikai \n", "4 2020 Feb 19 (continuing) NaN 300260.0 Klyuchevskoy \n", "\n", " Country_y Primary Volcano Type Activity Evidence Last Known Eruption \\\n", "0 Japan Stratovolcano(es) Eruption Observed 2020 CE \n", "1 United States Stratovolcano Eruption Observed 2020 CE \n", "2 Japan Caldera Eruption Observed 2020 CE \n", "3 Japan Caldera Eruption Observed 2020 CE \n", "4 Russia Stratovolcano Eruption Observed 2020 CE \n", "\n", " Region Subregion Latitude \\\n", "0 Japan, Taiwan, Marianas Ryukyu Islands and Kyushu 30.443 \n", "1 Alaska Aleutian Islands 51.930 \n", "2 Japan, Taiwan, Marianas Izu, Volcano, and Mariana Islands 27.247 \n", "3 Japan, Taiwan, Marianas Ryukyu Islands and Kyushu 30.793 \n", "4 Kamchatka and Mainland Asia Kamchatka Peninsula 56.056 \n", "\n", " Longitude Elevation (m) Dominant Rock Type \\\n", "0 130.217 657.0 Andesite / Basaltic Andesite \n", "1 179.580 1221.0 Basalt / Picro-Basalt \n", "2 140.874 25.0 Andesite / Basaltic Andesite \n", "3 130.305 704.0 Rhyolite \n", "4 160.642 4754.0 Basalt / Picro-Basalt \n", "\n", " Tectonic Setting date CE/BCE \n", "0 Subduction zone / Oceanic crust (< 15 km) 2020.0 CE \n", "1 Subduction zone / Intermediate crust (15-25 km) 2020.0 CE \n", "2 Subduction zone / Crustal thickness unknown 2020.0 CE \n", "3 Subduction zone / Oceanic crust (< 15 km) 2020.0 CE \n", "4 Subduction zone / Continental crust (>25 km) 2020.0 CE " ] }, "execution_count": 249, "metadata": {}, "output_type": "execute_result" } ], "source": [ "MergedVolcanoes=ActiveVolcanoes.merge(KnownEruptionDates,how='left',left_on='Volcano',right_on='Volcano Name')\n", "MergedVolcanoes.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You see that if a particular column (say 'Country') is in both DataFrames, the first one gets renamed 'Country_x' and the other one 'Country_y'. To clean that up we can rename the first to 'Country', then delete (drop) the second one out of the DataFrame. We also want to delete the column 'Volcano Name' because it is redundant.\n" ] }, { "cell_type": "code", "execution_count": 250, "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", "
VolcanoCountryEruption Start DateEruption Stop DateMax VEIVolcano NumberPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic SettingdateCE/BCE
0KuchinoerabujimaJapan2020 Jan 112020 Feb 13 (continuing)NaN282050.0Stratovolcano(es)Eruption Observed2020 CEJapan, Taiwan, MarianasRyukyu Islands and Kyushu30.443130.217657.0Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)2020.0CE
1SemisopochnoiUnited States2019 Dec 72020 Feb 16 (continuing)NaN311060.0StratovolcanoEruption Observed2020 CEAlaskaAleutian Islands51.930179.5801221.0Basalt / Picro-BasaltSubduction zone / Intermediate crust (15-25 km)2020.0CE
2NishinoshimaJapan2019 Dec 52020 Feb 15 (continuing)1.0284096.0CalderaEruption Observed2020 CEJapan, Taiwan, MarianasIzu, Volcano, and Mariana Islands27.247140.87425.0Andesite / Basaltic AndesiteSubduction zone / Crustal thickness unknown2020.0CE
3KikaiJapan2019 Nov 22020 Feb 11 (continuing)NaN282060.0CalderaEruption Observed2020 CEJapan, Taiwan, MarianasRyukyu Islands and Kyushu30.793130.305704.0RhyoliteSubduction zone / Oceanic crust (< 15 km)2020.0CE
4KlyuchevskoyRussia2019 Oct 242020 Feb 19 (continuing)NaN300260.0StratovolcanoEruption Observed2020 CEKamchatka and Mainland AsiaKamchatka Peninsula56.056160.6424754.0Basalt / Picro-BasaltSubduction zone / Continental crust (>25 km)2020.0CE
\n", "
" ], "text/plain": [ " Volcano Country Eruption Start Date \\\n", "0 Kuchinoerabujima Japan 2020 Jan 11 \n", "1 Semisopochnoi United States 2019 Dec 7 \n", "2 Nishinoshima Japan 2019 Dec 5 \n", "3 Kikai Japan 2019 Nov 2 \n", "4 Klyuchevskoy Russia 2019 Oct 24 \n", "\n", " Eruption Stop Date Max VEI Volcano Number Primary Volcano Type \\\n", "0 2020 Feb 13 (continuing) NaN 282050.0 Stratovolcano(es) \n", "1 2020 Feb 16 (continuing) NaN 311060.0 Stratovolcano \n", "2 2020 Feb 15 (continuing) 1.0 284096.0 Caldera \n", "3 2020 Feb 11 (continuing) NaN 282060.0 Caldera \n", "4 2020 Feb 19 (continuing) NaN 300260.0 Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "0 Eruption Observed 2020 CE Japan, Taiwan, Marianas \n", "1 Eruption Observed 2020 CE Alaska \n", "2 Eruption Observed 2020 CE Japan, Taiwan, Marianas \n", "3 Eruption Observed 2020 CE Japan, Taiwan, Marianas \n", "4 Eruption Observed 2020 CE Kamchatka and Mainland Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "0 Ryukyu Islands and Kyushu 30.443 130.217 657.0 \n", "1 Aleutian Islands 51.930 179.580 1221.0 \n", "2 Izu, Volcano, and Mariana Islands 27.247 140.874 25.0 \n", "3 Ryukyu Islands and Kyushu 30.793 130.305 704.0 \n", "4 Kamchatka Peninsula 56.056 160.642 4754.0 \n", "\n", " Dominant Rock Type \\\n", "0 Andesite / Basaltic Andesite \n", "1 Basalt / Picro-Basalt \n", "2 Andesite / Basaltic Andesite \n", "3 Rhyolite \n", "4 Basalt / Picro-Basalt \n", "\n", " Tectonic Setting date CE/BCE \n", "0 Subduction zone / Oceanic crust (< 15 km) 2020.0 CE \n", "1 Subduction zone / Intermediate crust (15-25 km) 2020.0 CE \n", "2 Subduction zone / Crustal thickness unknown 2020.0 CE \n", "3 Subduction zone / Oceanic crust (< 15 km) 2020.0 CE \n", "4 Subduction zone / Continental crust (>25 km) 2020.0 CE " ] }, "execution_count": 250, "metadata": {}, "output_type": "execute_result" } ], "source": [ "MergedVolcanoes.rename(columns={'Country_x':'Country'},inplace=True)\n", "MergedVolcanoes.drop(['Country_y','Volcano Name'],axis=1,inplace=True)\n", "MergedVolcanoes.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks like it worked.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using .unique( ) to find a list of categories, and string operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have more information, we can start classifying these eruptions by type. For example, what tectonic settings are represented in this dataset? Pandas has a method called **.unique( )** that allows us to find all the unique values in a column." ] }, { "cell_type": "code", "execution_count": 251, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Subduction zone / Oceanic crust (< 15 km)',\n", " 'Subduction zone / Intermediate crust (15-25 km)',\n", " 'Subduction zone / Crustal thickness unknown',\n", " 'Subduction zone / Continental crust (>25 km)',\n", " 'Intraplate / Oceanic crust (< 15 km)',\n", " 'Rift zone / Continental crust (>25 km)',\n", " nan,\n", " 'Intraplate / Continental crust (>25 km)',\n", " 'Rift zone / Intermediate crust (15-25 km)']" ] }, "execution_count": 251, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(MergedVolcanoes['Tectonic Setting'].unique())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tells us some useful information, including that some of the values are not a number (or 'nan' in Pandish). We can get rid of these using the method **.dropna( )**. While we are at it, we can delete the rows with no information on 'Volcanic Explosivity Index' data (Max VEI). " ] }, { "cell_type": "code", "execution_count": 252, "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", "
VolcanoCountryEruption Start DateEruption Stop DateMax VEIVolcano NumberPrimary Volcano TypeActivity EvidenceLast Known EruptionRegionSubregionLatitudeLongitudeElevation (m)Dominant Rock TypeTectonic SettingdateCE/BCE
0KuchinoerabujimaJapan2020 Jan 112020 Feb 13 (continuing)NaN282050.0Stratovolcano(es)Eruption Observed2020 CEJapan, Taiwan, MarianasRyukyu Islands and Kyushu30.443130.217657.0Andesite / Basaltic AndesiteSubduction zone / Oceanic crust (< 15 km)2020.0CE
1SemisopochnoiUnited States2019 Dec 72020 Feb 16 (continuing)NaN311060.0StratovolcanoEruption Observed2020 CEAlaskaAleutian Islands51.930179.5801221.0Basalt / Picro-BasaltSubduction zone / Intermediate crust (15-25 km)2020.0CE
2NishinoshimaJapan2019 Dec 52020 Feb 15 (continuing)1.0284096.0CalderaEruption Observed2020 CEJapan, Taiwan, MarianasIzu, Volcano, and Mariana Islands27.247140.87425.0Andesite / Basaltic AndesiteSubduction zone / Crustal thickness unknown2020.0CE
3KikaiJapan2019 Nov 22020 Feb 11 (continuing)NaN282060.0CalderaEruption Observed2020 CEJapan, Taiwan, MarianasRyukyu Islands and Kyushu30.793130.305704.0RhyoliteSubduction zone / Oceanic crust (< 15 km)2020.0CE
4KlyuchevskoyRussia2019 Oct 242020 Feb 19 (continuing)NaN300260.0StratovolcanoEruption Observed2020 CEKamchatka and Mainland AsiaKamchatka Peninsula56.056160.6424754.0Basalt / Picro-BasaltSubduction zone / Continental crust (>25 km)2020.0CE
\n", "
" ], "text/plain": [ " Volcano Country Eruption Start Date \\\n", "0 Kuchinoerabujima Japan 2020 Jan 11 \n", "1 Semisopochnoi United States 2019 Dec 7 \n", "2 Nishinoshima Japan 2019 Dec 5 \n", "3 Kikai Japan 2019 Nov 2 \n", "4 Klyuchevskoy Russia 2019 Oct 24 \n", "\n", " Eruption Stop Date Max VEI Volcano Number Primary Volcano Type \\\n", "0 2020 Feb 13 (continuing) NaN 282050.0 Stratovolcano(es) \n", "1 2020 Feb 16 (continuing) NaN 311060.0 Stratovolcano \n", "2 2020 Feb 15 (continuing) 1.0 284096.0 Caldera \n", "3 2020 Feb 11 (continuing) NaN 282060.0 Caldera \n", "4 2020 Feb 19 (continuing) NaN 300260.0 Stratovolcano \n", "\n", " Activity Evidence Last Known Eruption Region \\\n", "0 Eruption Observed 2020 CE Japan, Taiwan, Marianas \n", "1 Eruption Observed 2020 CE Alaska \n", "2 Eruption Observed 2020 CE Japan, Taiwan, Marianas \n", "3 Eruption Observed 2020 CE Japan, Taiwan, Marianas \n", "4 Eruption Observed 2020 CE Kamchatka and Mainland Asia \n", "\n", " Subregion Latitude Longitude Elevation (m) \\\n", "0 Ryukyu Islands and Kyushu 30.443 130.217 657.0 \n", "1 Aleutian Islands 51.930 179.580 1221.0 \n", "2 Izu, Volcano, and Mariana Islands 27.247 140.874 25.0 \n", "3 Ryukyu Islands and Kyushu 30.793 130.305 704.0 \n", "4 Kamchatka Peninsula 56.056 160.642 4754.0 \n", "\n", " Dominant Rock Type \\\n", "0 Andesite / Basaltic Andesite \n", "1 Basalt / Picro-Basalt \n", "2 Andesite / Basaltic Andesite \n", "3 Rhyolite \n", "4 Basalt / Picro-Basalt \n", "\n", " Tectonic Setting date CE/BCE \n", "0 Subduction zone / Oceanic crust (< 15 km) 2020.0 CE \n", "1 Subduction zone / Intermediate crust (15-25 km) 2020.0 CE \n", "2 Subduction zone / Crustal thickness unknown 2020.0 CE \n", "3 Subduction zone / Oceanic crust (< 15 km) 2020.0 CE \n", "4 Subduction zone / Continental crust (>25 km) 2020.0 CE " ] }, "execution_count": 252, "metadata": {}, "output_type": "execute_result" } ], "source": [ "MergedVolcanoes.dropna(subset=['Tectonic Setting'],inplace=True)\n", "MergedVolcanoes.head()\n", "# inplace=True does the method 'in place' so we don't have to assign it to a new DataFrame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### .groupby( ) and .describe( )\n", "\n", "Pandas has a couple more methods that might be useful for looking at the distribution of these data. These are the **.groupby( )** and **.describe( )** methods. We can use these methods to look at the typical volcano types type for each tectonic setting in our dataset.\n", "\n", "**.groupby( )** groups things in your DataFrame by unique values in a **Series**, for example grouping everything by 'Tectonic Setting'. **.describe( )** summarizes some useful statistics. So if we wanted to know basic statistics for each tectonic setting (and who wouldn't?), we would do: " ] }, { "cell_type": "code", "execution_count": 255, "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", "
countuniquetopfreq
Tectonic Setting
Intraplate / Continental crust (>25 km)11Stratovolcano1
Intraplate / Oceanic crust (< 15 km)22Stratovolcano1
Rift zone / Continental crust (>25 km)22Stratovolcano1
Rift zone / Intermediate crust (15-25 km)11Shield1
Subduction zone / Continental crust (>25 km)254Stratovolcano15
Subduction zone / Crustal thickness unknown33Stratovolcano1
Subduction zone / Intermediate crust (15-25 km)21Stratovolcano2
Subduction zone / Oceanic crust (< 15 km)74Stratovolcano3
\n", "
" ], "text/plain": [ " count unique top \\\n", "Tectonic Setting \n", "Intraplate / Continental crust (>25 km) 1 1 Stratovolcano \n", "Intraplate / Oceanic crust (< 15 km) 2 2 Stratovolcano \n", "Rift zone / Continental crust (>25 km) 2 2 Stratovolcano \n", "Rift zone / Intermediate crust (15-25 km) 1 1 Shield \n", "Subduction zone / Continental crust (>25 km) 25 4 Stratovolcano \n", "Subduction zone / Crustal thickness unknown 3 3 Stratovolcano \n", "Subduction zone / Intermediate crust (15-25 km) 2 1 Stratovolcano \n", "Subduction zone / Oceanic crust (< 15 km) 7 4 Stratovolcano \n", "\n", " freq \n", "Tectonic Setting \n", "Intraplate / Continental crust (>25 km) 1 \n", "Intraplate / Oceanic crust (< 15 km) 1 \n", "Rift zone / Continental crust (>25 km) 1 \n", "Rift zone / Intermediate crust (15-25 km) 1 \n", "Subduction zone / Continental crust (>25 km) 15 \n", "Subduction zone / Crustal thickness unknown 1 \n", "Subduction zone / Intermediate crust (15-25 km) 2 \n", "Subduction zone / Oceanic crust (< 15 km) 3 " ] }, "execution_count": 255, "metadata": {}, "output_type": "execute_result" } ], "source": [ "MergedVolcanoes.groupby('Tectonic Setting')['Primary Volcano Type'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tells us that around of 15 active shallow subduction zone volcanoes of which 15 were stratovolcanoes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Assignment #4\n", "Create a new notebook with the name format: Lastname_Inital_HomeworkNumber. For example, **Cych_B_HW_4**\n", "\n", "Create a markdown block in which you will describe what the notebook does. \n", "\n", "### 1. \n", "- Write a **lambda function** that returns the square of an input parameter $x$\n", " - Use **map( )** to generate a list of squares for a sequence with 10 values\n", " - Use **filter( )** and the lambda function to generate a list of numbers whose squares are between 5 and 50.\n", " - Use a **list comprehension** to generate the same list with only one line of code.\n", "\n", "\n", "### 2. \n", "- Create a **Class**, it should include at least 3 **attributes** and 3 **methods**. Be creative! Here are a few possibilities- Card, Deck, Planet, Phone Contact, Ocean, Student, Cellphone, Dog, Car\n", " - Save your class in a **module**, import the module into your notebook\n", " - Create 3 **instances** of your class, change the value of at least one attribute for one instance of your class \n", " - Call all three of your methods- you can use any of the instances of your class\n", " \n", "### 3.\n", "- Read in the ActiveVolcanoes.xlsx and GVP_Volcano_List_Holocene.xls files.\n", " - Merge the two on the name of the volcano. \n", " - Delete all the rows with no Max VEI field. (VEI stands for volcanic explosive index.)\n", " - Group by tectonic setting and describe by the 'Max VEI' field. Which volcanic setting has the largest explosive index? \n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }