{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![Callysto.ca Banner](https://github.com/callysto/curriculum-notebooks/blob/master/callysto-notebook-banner-top.jpg?raw=true)\n", "\n", "\"Open" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Hourly Weather in Canada\n", "\n", "[The National Office of Climate Services at Environment and Climate Change Canada](https://www.canada.ca/en/environment-climate-change/services/climate-change/canadian-centre-climate-services.html) has a dataset of weather measurements at monthy, daily, or even hourly intervals for almost 9000 weather stations. Check out [this example for YEG Christmas 2019](https://climate.weather.gc.ca/climate_data/hourly_data_e.html?hlyRange=2012-04-10%7C2020-05-26&dlyRange=2012-04-12%7C2020-05-26&mlyRange=%7C&StationID=50149&Prov=AB&urlExtension=_e.html&searchType=stnProx&optLimit=specDate&StartYear=2019&EndYear=2020&selRowPerPage=25&Line=1&txtRadius=25&optProxType=navLink&selCity=53%7C33%7C113%7C30%7CEdmonton&selPark=&txtCentralLatDeg=&txtCentralLatMin=0&txtCentralLatSec=0&txtCentralLongDeg=&txtCentralLongMin=0&txtCentralLongSec=0&txtLatDecDeg=53.490013888889&txtLongDecDeg=-113.53777777778&timeframe=1&Year=2019&Month=12&Day=25).\n", "\n", "## List of Weather Stations\n", "\n", "Let's start by importing and mapping the locations of all of the weather stations." ] }, { "cell_type": "code", "execution_count": 1, "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", "
NameProvinceClimate IDStation IDWMO IDTC IDLatitudeLongitudeElevation (m)First YearLast YearHLY First YearHLY Last YearDLY First YearDLY Last YearMLY First YearMLY Last Year
0ACTIVE PASSBRITISH COLUMBIA101006614NaNNaN48.87-123.284.019841996NaNNaN1984.01996.01984.01996.0
1ALBERT HEADBRITISH COLUMBIA101023515NaNNaN48.40-123.4817.019711995NaNNaN1971.01995.01971.01995.0
2BAMBERTON OCEAN CEMENTBRITISH COLUMBIA101059516NaNNaN48.58-123.5285.319611980NaNNaN1961.01980.01961.01980.0
3BEAR CREEKBRITISH COLUMBIA101072017NaNNaN48.50-124.00350.519101971NaNNaN1910.01971.01910.01971.0
4BEAVER LAKEBRITISH COLUMBIA101077418NaNNaN48.50-123.3561.018941952NaNNaN1894.01952.01894.01952.0
......................................................
8761WEST ST MODESTENEWFOUNDLAND85042166803NaNNaN51.60-56.7012.219902002NaNNaN1990.02002.01990.02002.0
8762WEST ST MODESTENEWFOUNDLAND85042176804NaNNaN51.58-56.7215.219841987NaNNaN1984.01987.01984.01987.0
8763CHURCHILL FALLSNEWFOUNDLAND850A1316940NaNNaN53.53-63.97488.519931998NaNNaN1993.01998.01993.01998.0
8764MAKKOVIK (AUT)NEWFOUNDLAND850B5HR9025NaNNaN55.08-59.1771.3198519861985.01986.0NaNNaNNaNNaN
8765MARY'S HARBOURNEWFOUNDLAND850B5R11022771339.0YMH52.30-55.8311.6199220141994.02014.01992.02013.02005.02007.0
\n", "

8766 rows × 17 columns

\n", "
" ], "text/plain": [ " Name Province Climate ID Station ID \\\n", "0 ACTIVE PASS BRITISH COLUMBIA 1010066 14 \n", "1 ALBERT HEAD BRITISH COLUMBIA 1010235 15 \n", "2 BAMBERTON OCEAN CEMENT BRITISH COLUMBIA 1010595 16 \n", "3 BEAR CREEK BRITISH COLUMBIA 1010720 17 \n", "4 BEAVER LAKE BRITISH COLUMBIA 1010774 18 \n", "... ... ... ... ... \n", "8761 WEST ST MODESTE NEWFOUNDLAND 8504216 6803 \n", "8762 WEST ST MODESTE NEWFOUNDLAND 8504217 6804 \n", "8763 CHURCHILL FALLS NEWFOUNDLAND 850A131 6940 \n", "8764 MAKKOVIK (AUT) NEWFOUNDLAND 850B5HR 9025 \n", "8765 MARY'S HARBOUR NEWFOUNDLAND 850B5R1 10227 \n", "\n", " WMO ID TC ID Latitude Longitude Elevation (m) First Year \\\n", "0 NaN NaN 48.87 -123.28 4.0 1984 \n", "1 NaN NaN 48.40 -123.48 17.0 1971 \n", "2 NaN NaN 48.58 -123.52 85.3 1961 \n", "3 NaN NaN 48.50 -124.00 350.5 1910 \n", "4 NaN NaN 48.50 -123.35 61.0 1894 \n", "... ... ... ... ... ... ... \n", "8761 NaN NaN 51.60 -56.70 12.2 1990 \n", "8762 NaN NaN 51.58 -56.72 15.2 1984 \n", "8763 NaN NaN 53.53 -63.97 488.5 1993 \n", "8764 NaN NaN 55.08 -59.17 71.3 1985 \n", "8765 71339.0 YMH 52.30 -55.83 11.6 1992 \n", "\n", " Last Year HLY First Year HLY Last Year DLY First Year DLY Last Year \\\n", "0 1996 NaN NaN 1984.0 1996.0 \n", "1 1995 NaN NaN 1971.0 1995.0 \n", "2 1980 NaN NaN 1961.0 1980.0 \n", "3 1971 NaN NaN 1910.0 1971.0 \n", "4 1952 NaN NaN 1894.0 1952.0 \n", "... ... ... ... ... ... \n", "8761 2002 NaN NaN 1990.0 2002.0 \n", "8762 1987 NaN NaN 1984.0 1987.0 \n", "8763 1998 NaN NaN 1993.0 1998.0 \n", "8764 1986 1985.0 1986.0 NaN NaN \n", "8765 2014 1994.0 2014.0 1992.0 2013.0 \n", "\n", " MLY First Year MLY Last Year \n", "0 1984.0 1996.0 \n", "1 1971.0 1995.0 \n", "2 1961.0 1980.0 \n", "3 1910.0 1971.0 \n", "4 1894.0 1952.0 \n", "... ... ... \n", "8761 1990.0 2002.0 \n", "8762 1984.0 1987.0 \n", "8763 1993.0 1998.0 \n", "8764 NaN NaN \n", "8765 2005.0 2007.0 \n", "\n", "[8766 rows x 17 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import requests\n", "from io import StringIO\n", "stations_url = 'https://drive.google.com/uc?export=download&id=1egfzGgzUb0RFu_EE5AYFZtsyXPfZ11y2'\n", "stations = pd.read_csv(StringIO(requests.get(stations_url).text), header=3)\n", "stations.drop(columns=['Latitude','Longitude'], inplace=True)\n", "stations.rename(columns={'Latitude (Decimal Degrees)':'Latitude','Longitude (Decimal Degrees)':'Longitude'}, inplace=True)\n", "stations" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This will map will take a minute or two to create with 8766 weather stations.\n", "You can zoom, pan, and click to expand markers. Clicking on a marker will display its station ID.\n" ] }, { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print('This will map will take a minute or two to create with', len(stations), 'weather stations.')\n", "import folium\n", "from folium.plugins import MarkerCluster\n", "latitude = stations['Latitude'].mean()\n", "longitude = stations['Longitude'].mean()\n", "station_map = folium.Map(location=[latitude,longitude], zoom_start=3)\n", "marker_cluster = MarkerCluster()\n", "for row in stations.itertuples():\n", " marker_cluster.add_child(folium.Marker(location=[row.Latitude,row.Longitude], tooltip=row.Name, popup=row._4))\n", "station_map.add_child(marker_cluster)\n", "print('You can zoom, pan, and click to expand markers. Clicking on a marker will display its station ID.')\n", "station_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Station Data Availability\n", "\n", "You can check out the data available for a particular station." ] }, { "cell_type": "code", "execution_count": 3, "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", "
NameProvinceClimate IDStation IDWMO IDTC IDLatitudeLongitudeElevation (m)First YearLast YearHLY First YearHLY Last YearDLY First YearDLY Last YearMLY First YearMLY Last Year
8284SABLE ISLANDNOVA SCOTIA8204700645471600.0ESA43.93-60.015.0189120171953.02016.01891.02017.01891.02007.0
\n", "
" ], "text/plain": [ " Name Province Climate ID Station ID WMO ID TC ID \\\n", "8284 SABLE ISLAND NOVA SCOTIA 8204700 6454 71600.0 ESA \n", "\n", " Latitude Longitude Elevation (m) First Year Last Year \\\n", "8284 43.93 -60.01 5.0 1891 2017 \n", "\n", " HLY First Year HLY Last Year DLY First Year DLY Last Year \\\n", "8284 1953.0 2016.0 1891.0 2017.0 \n", "\n", " MLY First Year MLY Last Year \n", "8284 1891.0 2007.0 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "station_id = 6454\n", "stations[stations['Station ID']==station_id]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Filtering Station Data\n", "\n", "You can select just a subset of the data. For example, finding stations that are currently collecting hourly weather data." ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameProvinceClimate IDStation IDWMO IDTC IDLatitudeLongitudeElevation (m)First YearLast YearHLY First YearHLY Last YearDLY First YearDLY Last YearMLY First YearMLY Last Year
28DISCOVERY ISLANDBRITISH COLUMBIA10124752722671031.0WDR48.42-123.2318.93199720201997.02020.01997.02020.01998.02005.0
39ESQUIMALT HARBOURBRITISH COLUMBIA10127105271798.0WPF48.43-123.443.00195720201994.02020.01957.02020.01957.02005.0
49KELP REEFSBRITISH COLUMBIA101399810853NaNWZO48.55-123.240.00199720201997.02020.02018.02020.0NaNNaN
54MALAHATBRITISH COLUMBIA10148206571774.0WKH48.57-123.53365.80192020201994.02020.01920.02020.01920.02005.0
67NORTH COWICHANBRITISH COLUMBIA10156304672871927.0VOO48.82-123.7244.80200720202007.02020.02007.02020.0NaNNaN
......................................................
8739NAIN ANEWFOUNDLAND85028015350771902.0YDP56.55-61.686.40201520202015.02020.02015.02018.0NaNNaN
8740NAIN ANEWFOUNDLAND850281053502NaNYDP56.55-61.686.40201520202015.02020.02018.02020.0NaNNaN
8751SAGLEKNEWFOUNDLAND8503249679771335.0WZZ58.33-62.59516.00198920201989.02020.01989.02020.01989.01993.0
8759WABUSH ANEWFOUNDLAND850417651057NaNYWK52.92-66.86551.40201320202013.02020.02013.02014.0NaNNaN
8760WABUSH ANEWFOUNDLAND85041775254171825.0YWK52.92-66.86551.40201420202014.02020.02014.02020.0NaNNaN
\n", "

1136 rows × 17 columns

\n", "
" ], "text/plain": [ " Name Province Climate ID Station ID WMO ID \\\n", "28 DISCOVERY ISLAND BRITISH COLUMBIA 1012475 27226 71031.0 \n", "39 ESQUIMALT HARBOUR BRITISH COLUMBIA 1012710 52 71798.0 \n", "49 KELP REEFS BRITISH COLUMBIA 1013998 10853 NaN \n", "54 MALAHAT BRITISH COLUMBIA 1014820 65 71774.0 \n", "67 NORTH COWICHAN BRITISH COLUMBIA 1015630 46728 71927.0 \n", "... ... ... ... ... ... \n", "8739 NAIN A NEWFOUNDLAND 8502801 53507 71902.0 \n", "8740 NAIN A NEWFOUNDLAND 8502810 53502 NaN \n", "8751 SAGLEK NEWFOUNDLAND 8503249 6797 71335.0 \n", "8759 WABUSH A NEWFOUNDLAND 8504176 51057 NaN \n", "8760 WABUSH A NEWFOUNDLAND 8504177 52541 71825.0 \n", "\n", " TC ID Latitude Longitude Elevation (m) First Year Last Year \\\n", "28 WDR 48.42 -123.23 18.93 1997 2020 \n", "39 WPF 48.43 -123.44 3.00 1957 2020 \n", "49 WZO 48.55 -123.24 0.00 1997 2020 \n", "54 WKH 48.57 -123.53 365.80 1920 2020 \n", "67 VOO 48.82 -123.72 44.80 2007 2020 \n", "... ... ... ... ... ... ... \n", "8739 YDP 56.55 -61.68 6.40 2015 2020 \n", "8740 YDP 56.55 -61.68 6.40 2015 2020 \n", "8751 WZZ 58.33 -62.59 516.00 1989 2020 \n", "8759 YWK 52.92 -66.86 551.40 2013 2020 \n", "8760 YWK 52.92 -66.86 551.40 2014 2020 \n", "\n", " HLY First Year HLY Last Year DLY First Year DLY Last Year \\\n", "28 1997.0 2020.0 1997.0 2020.0 \n", "39 1994.0 2020.0 1957.0 2020.0 \n", "49 1997.0 2020.0 2018.0 2020.0 \n", "54 1994.0 2020.0 1920.0 2020.0 \n", "67 2007.0 2020.0 2007.0 2020.0 \n", "... ... ... ... ... \n", "8739 2015.0 2020.0 2015.0 2018.0 \n", "8740 2015.0 2020.0 2018.0 2020.0 \n", "8751 1989.0 2020.0 1989.0 2020.0 \n", "8759 2013.0 2020.0 2013.0 2014.0 \n", "8760 2014.0 2020.0 2014.0 2020.0 \n", "\n", " MLY First Year MLY Last Year \n", "28 1998.0 2005.0 \n", "39 1957.0 2005.0 \n", "49 NaN NaN \n", "54 1920.0 2005.0 \n", "67 NaN NaN \n", "... ... ... \n", "8739 NaN NaN \n", "8740 NaN NaN \n", "8751 1989.0 1993.0 \n", "8759 NaN NaN \n", "8760 NaN NaN \n", "\n", "[1136 rows x 17 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stations[stations['HLY Last Year']>2019]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Mapping Filtered Data\n", "\n", "Let's make a map of that filtered dataset." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Creating a map for 1136 stations with current hourly weather.\n" ] }, { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "current_hourly = stations[stations['HLY Last Year']>2019]\n", "print('Creating a map for', len(current_hourly), 'stations with current hourly weather.')\n", "current_hourly_map = folium.Map(location=[latitude,longitude], zoom_start=3)\n", "ch_marker_cluster = MarkerCluster()\n", "for row in current_hourly.itertuples():\n", " ch_marker_cluster.add_child(folium.Marker(location=[row.Latitude,row.Longitude], tooltip=row.Name, popup=row._4))\n", "current_hourly_map.add_child(marker_cluster)\n", "current_hourly_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Weather Data\n", "\n", "Once you have selected a station, you can then import a month worth of hourly weather data." ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Longitude (x)Latitude (y)Station NameClimate IDDate/TimeYearMonthDayTimeTemp (°C)...Wind Spd FlagVisibility (km)Visibility FlagStn Press (kPa)Stn Press FlagHmdxHmdx FlagWind ChillWind Chill FlagWeather
0-113.5853.31EDMONTON INTL A30122162019-12-01 00:00201912100:00-19.1...NaN24.1NaN92.78NaNNaNNaN-27.0NaNNaN
1-113.5853.31EDMONTON INTL A30122162019-12-01 01:00201912101:00-18.7...NaN32.2NaN92.70NaNNaNNaN-27.0NaNNaN
2-113.5853.31EDMONTON INTL A30122162019-12-01 02:00201912102:00-19.3...NaN32.2NaN92.65NaNNaNNaN-26.0NaNClear
3-113.5853.31EDMONTON INTL A30122162019-12-01 03:00201912103:00-21.0...NaN32.2NaN92.62NaNNaNNaN-25.0NaNNaN
4-113.5853.31EDMONTON INTL A30122162019-12-01 04:00201912104:00-19.8...NaN32.2NaN92.61NaNNaNNaN-25.0NaNNaN
..................................................................
739-113.5853.31EDMONTON INTL A30122162019-12-31 19:002019123119:00-0.2...NaN32.2NaN90.96NaNNaNNaN-1.0NaNNaN
740-113.5853.31EDMONTON INTL A30122162019-12-31 20:002019123120:00-2.0...NaN32.2NaN90.91NaNNaNNaN-3.0NaNCloudy
741-113.5853.31EDMONTON INTL A30122162019-12-31 21:002019123121:00-3.1...NaN32.2NaN90.85NaNNaNNaN-6.0NaNNaN
742-113.5853.31EDMONTON INTL A30122162019-12-31 22:002019123122:00-2.8...NaN32.2NaN90.83NaNNaNNaN-7.0NaNNaN
743-113.5853.31EDMONTON INTL A30122162019-12-31 23:002019123123:00-1.2...NaN32.2NaN90.77NaNNaNNaN-4.0NaNCloudy
\n", "

744 rows × 28 columns

\n", "
" ], "text/plain": [ " Longitude (x) Latitude (y) Station Name Climate ID \\\n", "0 -113.58 53.31 EDMONTON INTL A 3012216 \n", "1 -113.58 53.31 EDMONTON INTL A 3012216 \n", "2 -113.58 53.31 EDMONTON INTL A 3012216 \n", "3 -113.58 53.31 EDMONTON INTL A 3012216 \n", "4 -113.58 53.31 EDMONTON INTL A 3012216 \n", ".. ... ... ... ... \n", "739 -113.58 53.31 EDMONTON INTL A 3012216 \n", "740 -113.58 53.31 EDMONTON INTL A 3012216 \n", "741 -113.58 53.31 EDMONTON INTL A 3012216 \n", "742 -113.58 53.31 EDMONTON INTL A 3012216 \n", "743 -113.58 53.31 EDMONTON INTL A 3012216 \n", "\n", " Date/Time Year Month Day Time Temp (°C) ... Wind Spd Flag \\\n", "0 2019-12-01 00:00 2019 12 1 00:00 -19.1 ... NaN \n", "1 2019-12-01 01:00 2019 12 1 01:00 -18.7 ... NaN \n", "2 2019-12-01 02:00 2019 12 1 02:00 -19.3 ... NaN \n", "3 2019-12-01 03:00 2019 12 1 03:00 -21.0 ... NaN \n", "4 2019-12-01 04:00 2019 12 1 04:00 -19.8 ... NaN \n", ".. ... ... ... ... ... ... ... ... \n", "739 2019-12-31 19:00 2019 12 31 19:00 -0.2 ... NaN \n", "740 2019-12-31 20:00 2019 12 31 20:00 -2.0 ... NaN \n", "741 2019-12-31 21:00 2019 12 31 21:00 -3.1 ... NaN \n", "742 2019-12-31 22:00 2019 12 31 22:00 -2.8 ... NaN \n", "743 2019-12-31 23:00 2019 12 31 23:00 -1.2 ... NaN \n", "\n", " Visibility (km) Visibility Flag Stn Press (kPa) Stn Press Flag Hmdx \\\n", "0 24.1 NaN 92.78 NaN NaN \n", "1 32.2 NaN 92.70 NaN NaN \n", "2 32.2 NaN 92.65 NaN NaN \n", "3 32.2 NaN 92.62 NaN NaN \n", "4 32.2 NaN 92.61 NaN NaN \n", ".. ... ... ... ... ... \n", "739 32.2 NaN 90.96 NaN NaN \n", "740 32.2 NaN 90.91 NaN NaN \n", "741 32.2 NaN 90.85 NaN NaN \n", "742 32.2 NaN 90.83 NaN NaN \n", "743 32.2 NaN 90.77 NaN NaN \n", "\n", " Hmdx Flag Wind Chill Wind Chill Flag Weather \n", "0 NaN -27.0 NaN NaN \n", "1 NaN -27.0 NaN NaN \n", "2 NaN -26.0 NaN Clear \n", "3 NaN -25.0 NaN NaN \n", "4 NaN -25.0 NaN NaN \n", ".. ... ... ... ... \n", "739 NaN -1.0 NaN NaN \n", "740 NaN -3.0 NaN Cloudy \n", "741 NaN -6.0 NaN NaN \n", "742 NaN -7.0 NaN NaN \n", "743 NaN -4.0 NaN Cloudy \n", "\n", "[744 rows x 28 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "station_id = 50149\n", "year = 2019\n", "month = 12\n", "url_start = 'https://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID='\n", "url = url_start+str(station_id)+'&Year='+str(year)+'&Month='+str(month)+'&Day=14&timeframe=1&submit=Download+Data'\n", "weather = pd.read_csv(url)\n", "weather" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also look at just one day of weather data from that data set." ] }, { "cell_type": "code", "execution_count": 7, "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", "
Longitude (x)Latitude (y)Station NameClimate IDDate/TimeYearMonthDayTimeTemp (°C)...Wind Spd FlagVisibility (km)Visibility FlagStn Press (kPa)Stn Press FlagHmdxHmdx FlagWind ChillWind Chill FlagWeather
576-113.5853.31EDMONTON INTL A30122162019-12-25 00:002019122500:00-4.6...NaN6.4NaN92.08NaNNaNNaN-9.0NaNSnow,Fog
577-113.5853.31EDMONTON INTL A30122162019-12-25 01:002019122501:00-6.0...NaN6.4NaN92.08NaNNaNNaN-9.0NaNSnow,Fog
578-113.5853.31EDMONTON INTL A30122162019-12-25 02:002019122502:00-6.6...NaN9.7NaN92.12NaNNaNNaN-10.0NaNSnow,Fog
579-113.5853.31EDMONTON INTL A30122162019-12-25 03:002019122503:00-7.3...NaN16.1NaN92.16NaNNaNNaN-12.0NaNSnow
580-113.5853.31EDMONTON INTL A30122162019-12-25 04:002019122504:00-8.9...NaN9.7NaN92.20NaNNaNNaN-14.0NaNSnow,Fog
581-113.5853.31EDMONTON INTL A30122162019-12-25 05:002019122505:00-9.6...NaN4.8NaN92.24NaNNaNNaN-14.0NaNSnow,Fog
582-113.5853.31EDMONTON INTL A30122162019-12-25 06:002019122506:00-12.2...NaN16.1NaN92.28NaNNaNNaN-18.0NaNNaN
583-113.5853.31EDMONTON INTL A30122162019-12-25 07:002019122507:00-13.8...NaN24.1NaN92.32NaNNaNNaN-18.0NaNNaN
584-113.5853.31EDMONTON INTL A30122162019-12-25 08:002019122508:00-17.1...NaN32.2NaN92.37NaNNaNNaN-22.0NaNMainly Clear
585-113.5853.31EDMONTON INTL A30122162019-12-25 09:002019122509:00-16.8...NaN32.2NaN92.40NaNNaNNaN-21.0NaNNaN
586-113.5853.31EDMONTON INTL A30122162019-12-25 10:002019122510:00-16.0...NaN32.2NaN92.48NaNNaNNaN-22.0NaNNaN
587-113.5853.31EDMONTON INTL A30122162019-12-25 11:002019122511:00-12.1...NaN32.2NaN92.53NaNNaNNaN-15.0NaNMainly Clear
588-113.5853.31EDMONTON INTL A30122162019-12-25 12:002019122512:00-9.6...NaN32.2NaN92.57NaNNaNNaN-14.0NaNNaN
589-113.5853.31EDMONTON INTL A30122162019-12-25 13:002019122513:00-8.3...NaN32.2NaN92.58NaNNaNNaN-14.0NaNNaN
590-113.5853.31EDMONTON INTL A30122162019-12-25 14:002019122514:00-7.9...NaN32.2NaN92.60NaNNaNNaN-13.0NaNClear
591-113.5853.31EDMONTON INTL A30122162019-12-25 15:002019122515:00-8.1...NaN32.2NaN92.66NaNNaNNaN-13.0NaNNaN
592-113.5853.31EDMONTON INTL A30122162019-12-25 16:002019122516:00-9.0...NaN32.2NaN92.72NaNNaNNaN-14.0NaNNaN
593-113.5853.31EDMONTON INTL A30122162019-12-25 17:002019122517:00-9.9...NaN32.2NaN92.77NaNNaNNaN-14.0NaNClear
594-113.5853.31EDMONTON INTL A30122162019-12-25 18:002019122518:00-12.8...NaN32.2NaN92.81NaNNaNNaN-19.0NaNNaN
595-113.5853.31EDMONTON INTL A30122162019-12-25 19:002019122519:00-12.8...NaN32.2NaN92.84NaNNaNNaN-19.0NaNNaN
596-113.5853.31EDMONTON INTL A30122162019-12-25 20:002019122520:00-11.7...NaN32.2NaN92.86NaNNaNNaN-18.0NaNMainly Clear
597-113.5853.31EDMONTON INTL A30122162019-12-25 21:002019122521:00-12.9...NaN32.2NaN92.85NaNNaNNaN-20.0NaNNaN
598-113.5853.31EDMONTON INTL A30122162019-12-25 22:002019122522:00-11.2...NaN32.2NaN92.86NaNNaNNaN-18.0NaNNaN
599-113.5853.31EDMONTON INTL A30122162019-12-25 23:002019122523:00-12.2...NaN32.2NaN92.88NaNNaNNaN-19.0NaNMainly Clear
\n", "

24 rows × 28 columns

\n", "
" ], "text/plain": [ " Longitude (x) Latitude (y) Station Name Climate ID \\\n", "576 -113.58 53.31 EDMONTON INTL A 3012216 \n", "577 -113.58 53.31 EDMONTON INTL A 3012216 \n", "578 -113.58 53.31 EDMONTON INTL A 3012216 \n", "579 -113.58 53.31 EDMONTON INTL A 3012216 \n", "580 -113.58 53.31 EDMONTON INTL A 3012216 \n", "581 -113.58 53.31 EDMONTON INTL A 3012216 \n", "582 -113.58 53.31 EDMONTON INTL A 3012216 \n", "583 -113.58 53.31 EDMONTON INTL A 3012216 \n", "584 -113.58 53.31 EDMONTON INTL A 3012216 \n", "585 -113.58 53.31 EDMONTON INTL A 3012216 \n", "586 -113.58 53.31 EDMONTON INTL A 3012216 \n", "587 -113.58 53.31 EDMONTON INTL A 3012216 \n", "588 -113.58 53.31 EDMONTON INTL A 3012216 \n", "589 -113.58 53.31 EDMONTON INTL A 3012216 \n", "590 -113.58 53.31 EDMONTON INTL A 3012216 \n", "591 -113.58 53.31 EDMONTON INTL A 3012216 \n", "592 -113.58 53.31 EDMONTON INTL A 3012216 \n", "593 -113.58 53.31 EDMONTON INTL A 3012216 \n", "594 -113.58 53.31 EDMONTON INTL A 3012216 \n", "595 -113.58 53.31 EDMONTON INTL A 3012216 \n", "596 -113.58 53.31 EDMONTON INTL A 3012216 \n", "597 -113.58 53.31 EDMONTON INTL A 3012216 \n", "598 -113.58 53.31 EDMONTON INTL A 3012216 \n", "599 -113.58 53.31 EDMONTON INTL A 3012216 \n", "\n", " Date/Time Year Month Day Time Temp (°C) ... Wind Spd Flag \\\n", "576 2019-12-25 00:00 2019 12 25 00:00 -4.6 ... NaN \n", "577 2019-12-25 01:00 2019 12 25 01:00 -6.0 ... NaN \n", "578 2019-12-25 02:00 2019 12 25 02:00 -6.6 ... NaN \n", "579 2019-12-25 03:00 2019 12 25 03:00 -7.3 ... NaN \n", "580 2019-12-25 04:00 2019 12 25 04:00 -8.9 ... NaN \n", "581 2019-12-25 05:00 2019 12 25 05:00 -9.6 ... NaN \n", "582 2019-12-25 06:00 2019 12 25 06:00 -12.2 ... NaN \n", "583 2019-12-25 07:00 2019 12 25 07:00 -13.8 ... NaN \n", "584 2019-12-25 08:00 2019 12 25 08:00 -17.1 ... NaN \n", "585 2019-12-25 09:00 2019 12 25 09:00 -16.8 ... NaN \n", "586 2019-12-25 10:00 2019 12 25 10:00 -16.0 ... NaN \n", "587 2019-12-25 11:00 2019 12 25 11:00 -12.1 ... NaN \n", "588 2019-12-25 12:00 2019 12 25 12:00 -9.6 ... NaN \n", "589 2019-12-25 13:00 2019 12 25 13:00 -8.3 ... NaN \n", "590 2019-12-25 14:00 2019 12 25 14:00 -7.9 ... NaN \n", "591 2019-12-25 15:00 2019 12 25 15:00 -8.1 ... NaN \n", "592 2019-12-25 16:00 2019 12 25 16:00 -9.0 ... NaN \n", "593 2019-12-25 17:00 2019 12 25 17:00 -9.9 ... NaN \n", "594 2019-12-25 18:00 2019 12 25 18:00 -12.8 ... NaN \n", "595 2019-12-25 19:00 2019 12 25 19:00 -12.8 ... NaN \n", "596 2019-12-25 20:00 2019 12 25 20:00 -11.7 ... NaN \n", "597 2019-12-25 21:00 2019 12 25 21:00 -12.9 ... NaN \n", "598 2019-12-25 22:00 2019 12 25 22:00 -11.2 ... NaN \n", "599 2019-12-25 23:00 2019 12 25 23:00 -12.2 ... NaN \n", "\n", " Visibility (km) Visibility Flag Stn Press (kPa) Stn Press Flag Hmdx \\\n", "576 6.4 NaN 92.08 NaN NaN \n", "577 6.4 NaN 92.08 NaN NaN \n", "578 9.7 NaN 92.12 NaN NaN \n", "579 16.1 NaN 92.16 NaN NaN \n", "580 9.7 NaN 92.20 NaN NaN \n", "581 4.8 NaN 92.24 NaN NaN \n", "582 16.1 NaN 92.28 NaN NaN \n", "583 24.1 NaN 92.32 NaN NaN \n", "584 32.2 NaN 92.37 NaN NaN \n", "585 32.2 NaN 92.40 NaN NaN \n", "586 32.2 NaN 92.48 NaN NaN \n", "587 32.2 NaN 92.53 NaN NaN \n", "588 32.2 NaN 92.57 NaN NaN \n", "589 32.2 NaN 92.58 NaN NaN \n", "590 32.2 NaN 92.60 NaN NaN \n", "591 32.2 NaN 92.66 NaN NaN \n", "592 32.2 NaN 92.72 NaN NaN \n", "593 32.2 NaN 92.77 NaN NaN \n", "594 32.2 NaN 92.81 NaN NaN \n", "595 32.2 NaN 92.84 NaN NaN \n", "596 32.2 NaN 92.86 NaN NaN \n", "597 32.2 NaN 92.85 NaN NaN \n", "598 32.2 NaN 92.86 NaN NaN \n", "599 32.2 NaN 92.88 NaN NaN \n", "\n", " Hmdx Flag Wind Chill Wind Chill Flag Weather \n", "576 NaN -9.0 NaN Snow,Fog \n", "577 NaN -9.0 NaN Snow,Fog \n", "578 NaN -10.0 NaN Snow,Fog \n", "579 NaN -12.0 NaN Snow \n", "580 NaN -14.0 NaN Snow,Fog \n", "581 NaN -14.0 NaN Snow,Fog \n", "582 NaN -18.0 NaN NaN \n", "583 NaN -18.0 NaN NaN \n", "584 NaN -22.0 NaN Mainly Clear \n", "585 NaN -21.0 NaN NaN \n", "586 NaN -22.0 NaN NaN \n", "587 NaN -15.0 NaN Mainly Clear \n", "588 NaN -14.0 NaN NaN \n", "589 NaN -14.0 NaN NaN \n", "590 NaN -13.0 NaN Clear \n", "591 NaN -13.0 NaN NaN \n", "592 NaN -14.0 NaN NaN \n", "593 NaN -14.0 NaN Clear \n", "594 NaN -19.0 NaN NaN \n", "595 NaN -19.0 NaN NaN \n", "596 NaN -18.0 NaN Mainly Clear \n", "597 NaN -20.0 NaN NaN \n", "598 NaN -18.0 NaN NaN \n", "599 NaN -19.0 NaN Mainly Clear \n", "\n", "[24 rows x 28 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weather_day = weather[weather['Day']==25]\n", "weather_day" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[![Callysto.ca License](https://github.com/callysto/curriculum-notebooks/blob/master/callysto-notebook-banner-bottom.jpg?raw=true)](https://github.com/callysto/curriculum-notebooks/blob/master/LICENSE.md)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }