{ "cells": [ { "cell_type": "markdown", "metadata": { "cell_id": "00000-cd1cd682-a752-4f3e-bffa-7bcff78dd3f3", "deepnote_cell_type": "markdown", "tags": [] }, "source": [ "## Note: Sorry this notebook isn't working right now and is under development.\n", "\n", "# Berkeley Air Quality Notebook" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "00001-eea90949-a595-4c05-9627-1be57f450aa2", "deepnote_cell_type": "markdown", "tags": [] }, "source": [ "**Welcome to our notebook on Berkeley Air Quality!** \n", "\n", "In this notebook we will be looking at Air Quality Index (AQI) scores in the surrounding Berkeley, CA area. With so many pollutants in the air, especially as we head into the annual fire season, AQI becomes something we check on daily. For many of us, this AQI map is all too familiar. Throughout this module we will discuss how data can be used to visualize and uncover underlying trends in the world.\n", "\n", "**Let's get started!**" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "00002-489baeae-20ba-44bf-bac5-3e7931d8c9b5", "deepnote_cell_type": "markdown", "tags": [] }, "source": [ "
\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Insert > Insert Cell Below
and choose the cell type in the drop down menu. Try adding a cell below to type in your name!\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Deleting Cells \n",
"To delete a cell, click on the scissors
at the top or Edit > Cut Cells
. Delete the cell below."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Delete this!\n"
]
}
],
"source": [
"print(\"Delete this!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Important Tip**: Everytime you open a Jupyter notebook, it is extremely important to run all the cells from the beginning in order for the notebook to work. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have had a brief crash course on Jupyter Notebooks, let's dive into Berkeley AQI!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cell
in the top toolbar \n",
"- Click on Run All
in the drop down\n",
"- Scroll back up to begin going through the notebook!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import purpleair\n",
"import folium\n",
"import ipywidgets as widgets\n",
"from ipywidgets import interact, interactive, fixed, interact_manual\n",
"from datetime import datetime\n",
"from IPython.display import clear_output"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_id": "00001-72481491-c164-40df-858a-6759fca18e03",
"deepnote_cell_type": "markdown",
"tags": []
},
"source": [
"\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "00007-e6e85ff5-acd5-4266-ba7c-be37a447c88d", "deepnote_cell_type": "markdown", "tags": [] }, "source": [ "In order to work with the data, we need to pull it into our workspace. Fortunately, PurpleAir has created an API that allows users to pull in and work with their AQI data. In the code cell below we will import the purpleair API and use it to create a dataframe of data from all PurpleAir sensors, which is roughly ~20,000!\n", "\n", "**Run the code cell below!**" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "cell_id": "00002-01085d88-3421-49bd-b74e-05511d2afc01", "deepnote_cell_type": "code", "deepnote_to_be_reexecuted": false, "execution_millis": 8000, "execution_start": 1639017393509, "source_hash": "5c996320", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initialized 22,479 sensors!\n" ] } ], "source": [ "from purpleair.network import SensorList\n", "p = SensorList()\n", "df = p.to_dataframe(sensor_filter='all',\n", " channel='parent')" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "00009-648d6ac3-7625-4663-bbe3-458b23ef4493", "deepnote_cell_type": "markdown", "tags": [] }, "source": [ "The dataframe below contains all the sensor data as of the latest update. It contains data on everything from the geograohical latitude and longitude of the sensor to data on the last time that sensor measured airborne PM." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "cell_id": "00003-4a5c5d0c-9e21-4990-8509-faddb3670857", "deepnote_cell_type": "code", "deepnote_to_be_reexecuted": false, "execution_millis": 257, "execution_start": 1639017401517, "scrolled": true, "source_hash": "f804c160", "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", " | parent | \n", "lat | \n", "lon | \n", "name | \n", "location_type | \n", "pm_2.5 | \n", "temp_f | \n", "temp_c | \n", "humidity | \n", "pressure | \n", "... | \n", "last_update_check | \n", "created | \n", "uptime | \n", "is_owner | \n", "10min_avg | \n", "30min_avg | \n", "1hour_avg | \n", "6hour_avg | \n", "1day_avg | \n", "1week_avg | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
14633 | \n", "None | \n", "37.275561 | \n", "-121.964134 | \n", "Hazelwood canary | \n", "outside | \n", "0.81 | \n", "65.0 | \n", "18.333333 | \n", "54.0 | \n", "1008.57 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "0.88 | \n", "4.10 | \n", "8.26 | \n", "17.72 | \n", "21.80 | \n", "15.42 | \n", "
25999 | \n", "None | \n", "30.053808 | \n", "-95.494643 | \n", "Villages of Bridgestone AQI | \n", "outside | \n", "35.16 | \n", "70.0 | \n", "21.111111 | \n", "70.0 | \n", "1011.86 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "34.71 | \n", "33.59 | \n", "32.77 | \n", "26.03 | \n", "16.30 | \n", "14.88 | \n", "
14091 | \n", "None | \n", "37.883620 | \n", "-122.070087 | \n", "WC Hillside | \n", "outside | \n", "1.00 | \n", "63.0 | \n", "17.222222 | \n", "57.0 | \n", "1003.26 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "2.28 | \n", "2.72 | \n", "3.16 | \n", "16.25 | \n", "25.80 | \n", "22.91 | \n", "
108226 | \n", "None | \n", "38.573703 | \n", "-121.439113 | \n", "\"C\" Street Air Shelter | \n", "inside | \n", "4.76 | \n", "78.0 | \n", "25.555556 | \n", "45.0 | \n", "1015.66 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "4.77 | \n", "4.49 | \n", "4.15 | \n", "3.96 | \n", "4.75 | \n", "5.46 | \n", "
49409 | \n", "None | \n", "18.759182 | \n", "99.017172 | \n", "\"First's Place\" | \n", "outside | \n", "40.83 | \n", "87.0 | \n", "30.555556 | \n", "37.0 | \n", "986.64 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "45.70 | \n", "49.98 | \n", "50.08 | \n", "50.61 | \n", "46.32 | \n", "32.53 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
64085 | \n", "None | \n", "36.785883 | \n", "127.157040 | \n", "청룡동행정복지센터 | \n", "outside | \n", "40.35 | \n", "54.0 | \n", "12.222222 | \n", "46.0 | \n", "1027.31 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "37.24 | \n", "38.78 | \n", "41.66 | \n", "57.59 | \n", "63.40 | \n", "45.20 | \n", "
64995 | \n", "None | \n", "36.691324 | \n", "126.585255 | \n", "한서대학교 | \n", "outside | \n", "40.64 | \n", "63.0 | \n", "17.222222 | \n", "33.0 | \n", "1017.02 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "45.03 | \n", "45.97 | \n", "43.96 | \n", "39.68 | \n", "37.22 | \n", "28.38 | \n", "
64093 | \n", "None | \n", "36.710720 | \n", "126.548390 | \n", "해미읍성 | \n", "outside | \n", "62.07 | \n", "61.0 | \n", "16.111111 | \n", "44.0 | \n", "1027.89 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "57.93 | \n", "56.06 | \n", "52.51 | \n", "43.19 | \n", "40.98 | \n", "31.83 | \n", "
29747 | \n", "None | \n", "36.761236 | \n", "127.395300 | \n", "화덕보건진료소 | \n", "outside | \n", "34.77 | \n", "62.0 | \n", "16.666667 | \n", "36.0 | \n", "1018.16 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "40.36 | \n", "49.29 | \n", "52.26 | \n", "49.02 | \n", "46.31 | \n", "38.67 | \n", "
98309 | \n", "None | \n", "36.718003 | \n", "126.926841 | \n", "화천1리마을회관 | \n", "outside | \n", "47.41 | \n", "60.0 | \n", "15.555556 | \n", "41.0 | \n", "1023.32 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "46.77 | \n", "48.10 | \n", "47.79 | \n", "48.12 | \n", "47.79 | \n", "35.08 | \n", "
22479 rows × 43 columns
\n", "\n", " | parent | \n", "lat | \n", "lon | \n", "name | \n", "location_type | \n", "pm_2.5 | \n", "temp_f | \n", "temp_c | \n", "humidity | \n", "pressure | \n", "... | \n", "last_update_check | \n", "created | \n", "uptime | \n", "is_owner | \n", "10min_avg | \n", "30min_avg | \n", "1hour_avg | \n", "6hour_avg | \n", "1day_avg | \n", "1week_avg | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
77905 | \n", "None | \n", "37.872589 | \n", "-122.257219 | \n", "Le Conte Hall | \n", "inside | \n", "0.35 | \n", "78.0 | \n", "25.555556 | \n", "32.0 | \n", "1004.55 | \n", "... | \n", "None | \n", "None | \n", "None | \n", "False | \n", "0.28 | \n", "0.18 | \n", "0.3 | \n", "4.67 | \n", "11.98 | \n", "9.49 | \n", "
1 rows × 43 columns
\n", "\n", " | created_at | \n", "0.3um/dl | \n", "0.5um/dl | \n", "1.0um/dl | \n", "2.5um/dl | \n", "5.0um/dl | \n", "10.0um/dl | \n", "PM1.0 (CF=ATM) ug/m3 | \n", "PM10 (CF=ATM) ug/m3 | \n", "Date | \n", "
---|---|---|---|---|---|---|---|---|---|---|
entry_id | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
295290 | \n", "2021-12-01 00:00:48+00:00 | \n", "1496.78 | \n", "369.34 | \n", "43.39 | \n", "3.25 | \n", "0.94 | \n", "0.65 | \n", "6.37 | \n", "9.40 | \n", "01-Dec-2021 | \n", "
295291 | \n", "2021-12-01 00:02:48+00:00 | \n", "1557.96 | \n", "405.95 | \n", "51.84 | \n", "4.38 | \n", "0.72 | \n", "0.43 | \n", "7.20 | \n", "10.44 | \n", "01-Dec-2021 | \n", "
295292 | \n", "2021-12-01 00:04:48+00:00 | \n", "1430.91 | \n", "364.16 | \n", "51.11 | \n", "3.24 | \n", "0.48 | \n", "0.43 | \n", "6.71 | \n", "9.74 | \n", "01-Dec-2021 | \n", "
295293 | \n", "2021-12-01 00:06:48+00:00 | \n", "1539.02 | \n", "386.51 | \n", "60.63 | \n", "3.50 | \n", "0.82 | \n", "0.43 | \n", "6.96 | \n", "10.45 | \n", "01-Dec-2021 | \n", "
295294 | \n", "2021-12-01 00:08:48+00:00 | \n", "1392.07 | \n", "347.67 | \n", "37.49 | \n", "1.35 | \n", "0.46 | \n", "0.22 | \n", "6.32 | \n", "8.12 | \n", "01-Dec-2021 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
300324 | \n", "2021-12-07 23:50:34+00:00 | \n", "964.21 | \n", "210.06 | \n", "23.83 | \n", "1.35 | \n", "0.22 | \n", "0.00 | \n", "3.65 | \n", "4.78 | \n", "07-Dec-2021 | \n", "
300325 | \n", "2021-12-07 23:52:34+00:00 | \n", "966.82 | \n", "214.64 | \n", "25.29 | \n", "0.37 | \n", "0.00 | \n", "0.00 | \n", "3.43 | \n", "4.50 | \n", "07-Dec-2021 | \n", "
300326 | \n", "2021-12-07 23:54:35+00:00 | \n", "945.52 | \n", "202.40 | \n", "15.53 | \n", "0.22 | \n", "0.00 | \n", "0.00 | \n", "2.88 | \n", "3.71 | \n", "07-Dec-2021 | \n", "
300327 | \n", "2021-12-07 23:56:34+00:00 | \n", "943.25 | \n", "209.67 | \n", "20.72 | \n", "0.96 | \n", "0.21 | \n", "0.21 | \n", "3.44 | \n", "4.56 | \n", "07-Dec-2021 | \n", "
300328 | \n", "2021-12-07 23:58:34+00:00 | \n", "987.24 | \n", "222.53 | \n", "31.91 | \n", "1.32 | \n", "0.22 | \n", "0.22 | \n", "3.89 | \n", "5.39 | \n", "07-Dec-2021 | \n", "
5039 rows × 10 columns
\n", "\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " | lat | \n", "lon | \n", "name | \n", "location_type | \n", "pm_2.5 | \n", "temp_f | \n", "humidity | \n", "pressure | \n", "
---|---|---|---|---|---|---|---|---|
id | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
20747 | \n", "37.838977 | \n", "-122.205489 | \n", "1000ft Montclair | \n", "outside | \n", "1.16 | \n", "56.0 | \n", "78.0 | \n", "979.92 | \n", "
81677 | \n", "37.889085 | \n", "-122.264327 | \n", "1044 Keith Ave, Berkeley | \n", "outside | \n", "3.67 | \n", "59.0 | \n", "64.0 | \n", "995.76 | \n", "
79125 | \n", "37.882941 | \n", "-122.288017 | \n", "1094 Tevlin St | \n", "inside | \n", "0.35 | \n", "75.0 | \n", "40.0 | \n", "1013.70 | \n", "
77685 | \n", "37.801872 | \n", "-122.274582 | \n", "10th and Washington | \n", "inside | \n", "31.83 | \n", "77.0 | \n", "37.0 | \n", "1014.57 | \n", "
37971 | \n", "37.883729 | \n", "-122.290362 | \n", "1128 Key Route Blvd, Albany CA | \n", "outside | \n", "2.04 | \n", "60.0 | \n", "61.0 | \n", "1014.15 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
26977 | \n", "37.813427 | \n", "-122.282483 | \n", "Xanadu | \n", "inside | \n", "0.00 | \n", "84.0 | \n", "32.0 | \n", "1015.51 | \n", "
56281 | \n", "37.813500 | \n", "-122.282971 | \n", "Xanadu | \n", "outside | \n", "0.89 | \n", "58.0 | \n", "67.0 | \n", "1015.93 | \n", "
62619 | \n", "37.886177 | \n", "-122.272443 | \n", "Yolo | \n", "inside | \n", "0.00 | \n", "90.0 | \n", "22.0 | \n", "1006.36 | \n", "
75223 | \n", "37.827560 | \n", "-122.205627 | \n", "Zinn Drive | \n", "outside | \n", "2.02 | \n", "56.0 | \n", "68.0 | \n", "986.10 | \n", "
123201 | \n", "37.869390 | \n", "-122.245792 | \n", "zz | \n", "inside | \n", "0.07 | \n", "75.0 | \n", "33.0 | \n", "988.19 | \n", "
817 rows × 8 columns
\n", "