Skip to content

Instantly share code, notes, and snippets.

@adyork
Last active October 20, 2022 15:34
Show Gist options
  • Save adyork/2bc800067156b54fab855c389bd1a163 to your computer and use it in GitHub Desktop.
Save adyork/2bc800067156b54fab855c389bd1a163 to your computer and use it in GitHub Desktop.
BATS_niskin_subset_example.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "BATS_niskin_subset_example.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyNx3aoynT24I0FBW3PAkxHK",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/adyork/2bc800067156b54fab855c389bd1a163/bats_niskin_subset_example.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QUliR1El8x17"
},
"source": [
"# BATS Niksin Data example\n",
"\n",
"Challenge: Use the ERDDAP api to pull data in csv format from BCO-DMO and make a plot.\n",
"\n",
"# Overview\n",
"\n",
"This notebook loads a csv file into a pandas data frame. The table is subset to columns for cruise, cast, timestamp,depth, and temperature. It then creates a plot of depth (y-axis) vs. temperature (x-axis). The y axis is inverted. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "C4Jm5Zcq8vc7"
},
"source": [
"# Resources\n",
"* BCO-DMO ERDDAP Documentation https://erddap.bco-dmo.org/erddap/tabledap/documentation.html\n",
"* See workshop materials for more on ERDDAP: https://k-rns.github.io/workshop_data_reuse/"
]
},
{
"cell_type": "markdown",
"source": [
"Dataset Landing Page (see metadata and file access)\n",
" https://www.bco-dmo.org/dataset/3782\n",
"* in the url below we are asking for .csvp instead of csv so that the units are loaded into the header not as the first row of the data table where we want the values.\n"
],
"metadata": {
"id": "FOmY0PBnFss0"
}
},
{
"cell_type": "code",
"metadata": {
"id": "K0UJ0cLI6xyz"
},
"source": [
"# This link is a subset of the dataset just for cruise 314 cast 005\n",
"niskin_csv = \"https://erddap.bco-dmo.org/erddap/tabledap/bcodmo_dataset_3782.csv?cruise_type%2Ccruise_type_text%2Ccruise_number%2Ccast_number%2Cdecy%2Ctime%2Clatitude%2Clongitude%2Cfilename%2CId%2Cdepth%2Cniskin_number%2Cp1%2Cp2%2Cp3%2Cp4%2Cp5%2Cp6%2Cp7%2Cp8%2Cp9%2Cp10%2Cp11%2Cp12%2Cp13%2Cp14%2Cp15%2CChl%2CPhae%2Cp18%2Cp19%2Cp20%2Cp21%2CTemp%2CCTD_S%2CSal1%2CSigTh%2CO2%2COxFix%2CAnom1%2CCO2%2CAlk%2CNO31%2CNO21%2CPO41%2CSi1%2CPOC%2CPON%2CTOC%2CTN%2CBact%2CPOP%2CTDP%2CSRP%2CBSi%2CLSi%2CPro%2CSyn%2CPiceu%2CNaneu%2CNO3%2CNO2%2CPO4%2CSi%2CPres&cruise_number=%220314%22&cast_number=%22005%22&decy%3E=2015&decy%3C2016\""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#load data table into a pandas data frame\n",
"import pandas as pd\n",
"df_niskin = pd.read_csv(niskin_csv,skiprows=[1])\n",
"df_niskin.head() #show first few rows of the table\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 386
},
"id": "I1eRaDL8ExdB",
"outputId": "5daefe4b-d777-437d-ae32-60f7174bade9"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" cruise_type cruise_type_text cruise_number cast_number decy \\\n",
"0 1 BATS_core 314 5 2015.36071 \n",
"1 1 BATS_core 314 5 2015.36071 \n",
"2 1 BATS_core 314 5 2015.36071 \n",
"3 1 BATS_core 314 5 2015.36071 \n",
"4 1 BATS_core 314 5 2015.36071 \n",
"\n",
" time latitude longitude filename Id \\\n",
"0 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400501 \n",
"1 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400502 \n",
"2 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400503 \n",
"3 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400504 \n",
"4 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400505 \n",
"\n",
" ... LSi Pro Syn Piceu Naneu NO3 NO2 PO4 Si Pres \n",
"0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"1 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"2 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"3 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"4 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
"[5 rows x 65 columns]"
],
"text/html": [
"\n",
" <div id=\"df-66810f76-3ee5-43af-9a2e-1e555ee184b4\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cruise_type</th>\n",
" <th>cruise_type_text</th>\n",
" <th>cruise_number</th>\n",
" <th>cast_number</th>\n",
" <th>decy</th>\n",
" <th>time</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" <th>filename</th>\n",
" <th>Id</th>\n",
" <th>...</th>\n",
" <th>LSi</th>\n",
" <th>Pro</th>\n",
" <th>Syn</th>\n",
" <th>Piceu</th>\n",
" <th>Naneu</th>\n",
" <th>NO3</th>\n",
" <th>NO2</th>\n",
" <th>PO4</th>\n",
" <th>Si</th>\n",
" <th>Pres</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400501</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400502</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400503</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400504</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400505</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 65 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-66810f76-3ee5-43af-9a2e-1e555ee184b4')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-66810f76-3ee5-43af-9a2e-1e555ee184b4 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-66810f76-3ee5-43af-9a2e-1e555ee184b4');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 45
}
]
},
{
"cell_type": "code",
"source": [
"print(\"Number of rows in this data table: \")\n",
"len(df_niskin)"
],
"metadata": {
"id": "pNO3truv94xQ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"10 randomly sampled rows from the table\")\n",
"df_niskin.sample(10) "
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 647
},
"id": "hIxKwhB1-ckf",
"outputId": "6479f29b-aaae-4b64-b642-dbf76a417f39"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"10 randomly sampled rows from the table\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" cruise_type cruise_type_text cruise_number cast_number decy \\\n",
"14 1 BATS_core 314 5 2015.36071 \n",
"5 1 BATS_core 314 5 2015.36071 \n",
"18 1 BATS_core 314 5 2015.36071 \n",
"19 1 BATS_core 314 5 2015.36071 \n",
"15 1 BATS_core 314 5 2015.36071 \n",
"2 1 BATS_core 314 5 2015.36071 \n",
"7 1 BATS_core 314 5 2015.36071 \n",
"16 1 BATS_core 314 5 2015.36071 \n",
"12 1 BATS_core 314 5 2015.36071 \n",
"13 1 BATS_core 314 5 2015.36071 \n",
"\n",
" time latitude longitude filename Id \\\n",
"14 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400515 \n",
"5 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400506 \n",
"18 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400519 \n",
"19 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400520 \n",
"15 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400517 \n",
"2 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400503 \n",
"7 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400508 \n",
"16 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400516 \n",
"12 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400513 \n",
"13 2015-05-12T15:51:00Z 31.67 -64.163 bats_bottle.txt 1031400514 \n",
"\n",
" ... LSi Pro Syn Piceu Naneu NO3 NO2 PO4 Si Pres \n",
"14 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"5 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"18 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"19 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"15 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"2 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"7 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"16 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"12 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"13 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
"[10 rows x 65 columns]"
],
"text/html": [
"\n",
" <div id=\"df-2ab2b75b-c85b-4f5b-a95e-3532c376910f\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cruise_type</th>\n",
" <th>cruise_type_text</th>\n",
" <th>cruise_number</th>\n",
" <th>cast_number</th>\n",
" <th>decy</th>\n",
" <th>time</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" <th>filename</th>\n",
" <th>Id</th>\n",
" <th>...</th>\n",
" <th>LSi</th>\n",
" <th>Pro</th>\n",
" <th>Syn</th>\n",
" <th>Piceu</th>\n",
" <th>Naneu</th>\n",
" <th>NO3</th>\n",
" <th>NO2</th>\n",
" <th>PO4</th>\n",
" <th>Si</th>\n",
" <th>Pres</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400515</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400506</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400519</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400520</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400517</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400503</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400508</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400516</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400513</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>1</td>\n",
" <td>BATS_core</td>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015.36071</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>31.67</td>\n",
" <td>-64.163</td>\n",
" <td>bats_bottle.txt</td>\n",
" <td>1031400514</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10 rows × 65 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2ab2b75b-c85b-4f5b-a95e-3532c376910f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-2ab2b75b-c85b-4f5b-a95e-3532c376910f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-2ab2b75b-c85b-4f5b-a95e-3532c376910f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 47
}
]
},
{
"cell_type": "code",
"source": [
"#we just want to work with a few of these coluns so let's subset.\n",
"cols = ['cruise_number','cast_number','time','depth','Temp']\n",
"df_niskin = df_niskin.loc[:,cols]\n",
"df_niskin.head() #show first few rows"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "unzcUAbQF5xE",
"outputId": "46ade898-943f-4869-ee78-81569687e631"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" cruise_number cast_number time depth Temp\n",
"0 314 5 2015-05-12T15:51:00Z 599.6 15.602\n",
"1 314 5 2015-05-12T15:51:00Z 700.9 13.884\n",
"2 314 5 2015-05-12T15:51:00Z 800.4 11.668\n",
"3 314 5 2015-05-12T15:51:00Z 899.9 9.213\n",
"4 314 5 2015-05-12T15:51:00Z 1000.0 7.368"
],
"text/html": [
"\n",
" <div id=\"df-2801255d-4c2e-45e8-ab5e-16ed60b7362a\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cruise_number</th>\n",
" <th>cast_number</th>\n",
" <th>time</th>\n",
" <th>depth</th>\n",
" <th>Temp</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>599.6</td>\n",
" <td>15.602</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>700.9</td>\n",
" <td>13.884</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>800.4</td>\n",
" <td>11.668</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>899.9</td>\n",
" <td>9.213</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>314</td>\n",
" <td>5</td>\n",
" <td>2015-05-12T15:51:00Z</td>\n",
" <td>1000.0</td>\n",
" <td>7.368</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2801255d-4c2e-45e8-ab5e-16ed60b7362a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-2801255d-4c2e-45e8-ab5e-16ed60b7362a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-2801255d-4c2e-45e8-ab5e-16ed60b7362a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 48
}
]
},
{
"cell_type": "code",
"source": [
"# Plotting a basic scatter plot\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"df_niskin.plot(\n",
" x='Temp', y='depth', \n",
" kind='line', \n",
" marker='o', c='orange',\n",
" title='Depth vs Temperture\\nCruise 314 Cast 005 Year 2015',\n",
" xlabel='Temp (C)', ylabel='Depth (m)', #units from the dataset metadata page\n",
" figsize=(5,7),\n",
" legend=None\n",
")\n",
"\n",
"#invert depth axis\n",
"ax = plt.gca()\n",
"ax.invert_yaxis()\n",
"\n",
"#show it!\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 473
},
"id": "4T1JXMJ9KKTC",
"outputId": "0dc74ac2-ae17-48b8-81e3-fd6e7185edc7"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 360x504 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment