{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Scraping NBA team information from Wikipedia (Revisited)\n", "\n", "__Update__ (March 6, 2018): This simple Wikipedia table is the subject of a lot of editing! Somebody modified it again in early February. In this case, the editor felt that US state postal codes would be unfamiliar to international NBA fans. Instead, the table current uses the full name of the US states (and Ontario, in the case of Toronto). The URL below was changed to reflect an historical snapshot of the table prior to this change.\n", "\n", "In this notebook, we are going to take another look at scraping [NBA team information from Wikipedia](https://en.wikipedia.org/wiki/National_Basketball_Association#Teams). We will also see how generate a map of NBA arena locations.\n", "\n", "In [an earlier notebook](https://github.com/practicallypredictable/posts/blob/master/notebooks/scrape_wikipedia_nba_team_info-part1.ipynb), we scraped the table using the [Requests](http://docs.python-requests.org/en/master/) and [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/) packages.\n", "\n", "Unfortunately, somebody modified the table in mid-December. As a result, the original code in that notebook no longer works.\n", "\n", "Web content changes all the time, which will occasionally break web scraping code. This is particularly true of Wikipedia, where pages are open to edits by the community.\n", "\n", "In this particular case, we could just move on and ignore the table changes. The NBA team data are basically unchanged. We could just use the saved CSV file from the prior scraping. That's a major reason why you should always save the result of web scraping.\n", "\n", "On the other hand, I think this is a good opportunity to try to scrape the table in a more robust and general way. You will also see examples of some useful `pandas` techniques to clean up the Wikipedia data. I think you will find these techniques useful in your own sports analytics projects.\n", "\n", "I also wanted to do something useful with the Wikipedia information, beyond using it as an example to learn web scraping. Later in this post, we'll discuss why arena location data can be useful in sports analytics. Drawing a map is a perfect way to learn how to start using geographic data in Python. \n", "\n", "### What Changed\n", "\n", "The change the person made to the table was relatively simple. This person decided to group together certain cells in the table for the two New York teams (the Knicks and the Nets) and the LA teams (the Clippers and the Lakers). In particular, this person added HTML `rowspan` tags in the City columns, as well as in the Arena column for the LA teams.\n", "\n", "Think of `rowspan` and `colspan` tags in an HTML table as being similar to merged cells in a spreadsheet program like Microsoft Excel or Google Sheets.\n", "\n", "You can [look at the Wikipedia page prior to the table change here](https://en.wikipedia.org/w/index.php?title=National_Basketball_Association&direction=prev&oldid=815465296), and compare to the current table. Try to use your browser's inspection tools to find the `rowspan` tags that changed.\n", "\n", "We want to figure out how to read these merged cells, and \"unspan\" them to make the table layout simpler." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scraping the Table, Again\n", "\n", "We are going to use a general approach for scraping HTML tables. This approach will work for Wikipedia and other web pages, and will automatically handle the spanning that broke our original code.\n", "\n", "The scraping code is part of the [pracpred package, which you can find on GitHub](https://github.com/practicallypredictable/pracpred) or [find on from PyPI](https://pypi.python.org/pypi/pracpred). You can install the package using the command `pip install pracpred` in your sports analytics environment." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pracpred.scrape as pps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, we will do our data analysis using [`pandas`](https://pandas.pydata.org/). We will also use the [Matplotlib Basemap](https://matplotlib.org/basemap/) package for plotting a map at the end of this notebook." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from mpl_toolkits.basemap import Basemap\n", "from matplotlib.patches import Polygon\n", "from matplotlib.collections import PatchCollection\n", "from matplotlib.colors import rgb2hex\n", "%matplotlib notebook" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "import warnings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You'll notice we are going to use the [`warnings`](https://docs.python.org/3/library/warnings.html?highlight=warnings#module-warnings) module from the Python standard library. This is purely cosmetic, because as you'll see toward the end of this notebook, Basemap emits some warning messages that I want to suppress." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "PARENT_DIR = Path.cwd().parent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting the Raw HTML Table\n", "\n", "f you inspect the HTML for the Wikipedia page, you'll see that it has 5 HTML tables. We really only want the one for the NBA teams. If you inspect this table in your browser, you'll see that it has the HTML tag `<table class=\"navbox wikitable\">`. We can specify this class to make sure we only get back the table we want." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#URL = 'https://en.wikipedia.org/wiki/National_Basketball_Association'\n", "URL = 'https://en.wikipedia.org/w/index.php?title=National_Basketball_Association&oldid=823837048'\n", "NBA_TEAM_INFO = 'navbox wikitable'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "USER_AGENT = (\n", " 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) ' +\n", " 'AppleWebKit/537.36 (KHTML, like Gecko) ' +\n", " 'Chrome/61.0.3163.100 Safari/537.36'\n", ")\n", "\n", "REQUEST_HEADERS = {\n", " 'user-agent': USER_AGENT,\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can call the scraping code. You can [find the source code on GitHub here](https://github.com/practicallypredictable/pracpred/blob/master/pracpred/scrape/html_tables.py). The package defines two Python classes, `HTMLTables` and `HTMLTable`. The `HTMLTables` `class` is basically a wrapper on top of Requests and BeautifulSoup. This `class` gets and stores the HTML for one or more tables from a URL. The `HTMLTable` `class` has the code to unspan the table and convert it to a `pandas` `DataFrame`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "tables = pps.HTMLTables(URL, table_class=NBA_TEAM_INFO, headers=REQUEST_HEADERS)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(tables)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(33, 9)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tables[0].shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We got back one table, which has 33 rows and 9 columns. Notice that the table dimensions are the largest number of rows in any column, and the largest number of columns in any row. This is the key to getting the unspanning to work. We want to view the table as a grid of cells to remove the spanning structure.\n", "\n", "Now, let's convert the HTML table to a `pandas` `DataFrame`. For this particular table, we want to have any spanned cells repeat the values when we unspan the table." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>0</th>\n", " <th>1</th>\n", " <th>2</th>\n", " <th>3</th>\n", " <th>4</th>\n", " <th>5</th>\n", " <th>6</th>\n", " <th>7</th>\n", " <th>8</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Division</td>\n", " <td>Team</td>\n", " <td>City</td>\n", " <td>Arena</td>\n", " <td>Capacity</td>\n", " <td>Coordinates</td>\n", " <td>Founded</td>\n", " <td>Joined</td>\n", " <td>Head coach</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Atlantic</td>\n", " <td>Boston Celtics</td>\n", " <td>Boston, MA</td>\n", " <td>TD Garden</td>\n", " <td>18,624</td>\n", " <td>42°21′59″N 71°03′44″W / 42.366303°N 71.06222...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Brad Stevens</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Atlantic</td>\n", " <td>Brooklyn Nets</td>\n", " <td>New York City, NY</td>\n", " <td>Barclays Center</td>\n", " <td>17,732</td>\n", " <td>40°40′58″N 73°58′29″W / 40.68265°N 73.974689...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Kenny Atkinson</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Atlantic</td>\n", " <td>New York Knicks</td>\n", " <td>New York City, NY</td>\n", " <td>Madison Square Garden</td>\n", " <td>19,812</td>\n", " <td>40°45′02″N 73°59′37″W / 40.750556°N 73.99361...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Jeff Hornacek</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>Atlantic</td>\n", " <td>Philadelphia 76ers</td>\n", " <td>Philadelphia, PA</td>\n", " <td>Wells Fargo Center</td>\n", " <td>21,600</td>\n", " <td>39°54′04″N 75°10′19″W / 39.901111°N 75.17194...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Brett Brown</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>Atlantic</td>\n", " <td>Toronto Raptors</td>\n", " <td>Toronto, ON</td>\n", " <td>Air Canada Centre</td>\n", " <td>19,800</td>\n", " <td>43°38′36″N 79°22′45″W / 43.643333°N 79.37916...</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>Dwane Casey</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>Central</td>\n", " <td>Chicago Bulls</td>\n", " <td>Chicago, IL</td>\n", " <td>United Center</td>\n", " <td>20,917</td>\n", " <td>41°52′50″N 87°40′27″W / 41.880556°N 87.67416...</td>\n", " <td>1966</td>\n", " <td>1966</td>\n", " <td>Fred Hoiberg</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>Central</td>\n", " <td>Cleveland Cavaliers</td>\n", " <td>Cleveland, OH</td>\n", " <td>Quicken Loans Arena</td>\n", " <td>20,562</td>\n", " <td>41°29′47″N 81°41′17″W / 41.496389°N 81.68805...</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Tyronn Lue</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>Central</td>\n", " <td>Detroit Pistons</td>\n", " <td>Detroit, MI</td>\n", " <td>Little Caesars Arena</td>\n", " <td>20,491</td>\n", " <td>42°41′49″N 83°14′44″W / 42.696944°N 83.24555...</td>\n", " <td>1941*</td>\n", " <td>1948</td>\n", " <td>Stan Van Gundy</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>Central</td>\n", " <td>Indiana Pacers</td>\n", " <td>Indianapolis, IN</td>\n", " <td>Bankers Life Fieldhouse</td>\n", " <td>17,923</td>\n", " <td>39°45′50″N 86°09′20″W / 39.763889°N 86.15555...</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Nate McMillan</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>Central</td>\n", " <td>Milwaukee Bucks</td>\n", " <td>Milwaukee, WI</td>\n", " <td>Bradley Center</td>\n", " <td>18,717</td>\n", " <td>43°02′37″N 87°55′01″W / 43.043611°N 87.91694...</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Joe Prunty</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>Southeast</td>\n", " <td>Atlanta Hawks</td>\n", " <td>Atlanta, GA</td>\n", " <td>Philips Arena</td>\n", " <td>15,711</td>\n", " <td>33°45′26″N 84°23′47″W / 33.757222°N 84.39638...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Mike Budenholzer</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>Southeast</td>\n", " <td>Charlotte Hornets</td>\n", " <td>Charlotte, NC</td>\n", " <td>Spectrum Center</td>\n", " <td>19,077</td>\n", " <td>35°13′30″N 80°50′21″W / 35.225°N 80.839167°W...</td>\n", " <td>1988*</td>\n", " <td>1988*</td>\n", " <td>Steve Clifford</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>Southeast</td>\n", " <td>Miami Heat</td>\n", " <td>Miami, FL</td>\n", " <td>American Airlines Arena</td>\n", " <td>19,600</td>\n", " <td>25°46′53″N 80°11′17″W / 25.781389°N 80.18805...</td>\n", " <td>1988</td>\n", " <td>1988</td>\n", " <td>Erik Spoelstra</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>Southeast</td>\n", " <td>Orlando Magic</td>\n", " <td>Orlando, FL</td>\n", " <td>Amway Center</td>\n", " <td>18,846</td>\n", " <td>28°32′21″N 81°23′01″W / 28.539167°N 81.38361...</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Frank Vogel</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>Southeast</td>\n", " <td>Washington Wizards</td>\n", " <td>Washington, D.C.</td>\n", " <td>Capital One Arena</td>\n", " <td>20,356</td>\n", " <td>38°53′53″N 77°01′15″W / 38.898056°N 77.02083...</td>\n", " <td>1961*</td>\n", " <td>1961*</td>\n", " <td>Scott Brooks</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>Northwest</td>\n", " <td>Denver Nuggets</td>\n", " <td>Denver, CO</td>\n", " <td>Pepsi Center</td>\n", " <td>19,520</td>\n", " <td>39°44′55″N 105°00′27″W / 39.748611°N 105.007...</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Michael Malone</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>Northwest</td>\n", " <td>Minnesota Timberwolves</td>\n", " <td>Minneapolis, MN</td>\n", " <td>Target Center</td>\n", " <td>19,356</td>\n", " <td>44°58′46″N 93°16′34″W / 44.979444°N 93.27611...</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Tom Thibodeau</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>Northwest</td>\n", " <td>Oklahoma City Thunder</td>\n", " <td>Oklahoma City, OK</td>\n", " <td>Chesapeake Energy Arena</td>\n", " <td>18,203</td>\n", " <td>35°27′48″N 97°30′54″W / 35.463333°N 97.515°W...</td>\n", " <td>1967*</td>\n", " <td>1967*</td>\n", " <td>Billy Donovan</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>Northwest</td>\n", " <td>Portland Trail Blazers</td>\n", " <td>Portland, OR</td>\n", " <td>Moda Center</td>\n", " <td>19,441</td>\n", " <td>45°31′54″N 122°40′00″W / 45.531667°N 122.666...</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Terry Stotts</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>Northwest</td>\n", " <td>Utah Jazz</td>\n", " <td>Salt Lake City, UT</td>\n", " <td>Vivint Smart Home Arena</td>\n", " <td>19,911</td>\n", " <td>40°46′06″N 111°54′04″W / 40.768333°N 111.901...</td>\n", " <td>1974*</td>\n", " <td>1974*</td>\n", " <td>Quin Snyder</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>Pacific</td>\n", " <td>Golden State Warriors</td>\n", " <td>Oakland, CA</td>\n", " <td>Oracle Arena</td>\n", " <td>19,596</td>\n", " <td>37°45′01″N 122°12′11″W / 37.750278°N 122.203...</td>\n", " <td>1946*</td>\n", " <td>1946*</td>\n", " <td>Steve Kerr</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>Pacific</td>\n", " <td>Los Angeles Clippers</td>\n", " <td>Los Angeles, CA</td>\n", " <td>Staples Center</td>\n", " <td>19,060</td>\n", " <td>34°02′35″N 118°16′02″W / 34.043056°N 118.267...</td>\n", " <td>1970*</td>\n", " <td>1970*</td>\n", " <td>Doc Rivers</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>Pacific</td>\n", " <td>Los Angeles Lakers</td>\n", " <td>Los Angeles, CA</td>\n", " <td>Staples Center</td>\n", " <td>18,997</td>\n", " <td>34°02′35″N 118°16′02″W / 34.043056°N 118.267...</td>\n", " <td>1947*</td>\n", " <td>1948</td>\n", " <td>Luke Walton</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>Pacific</td>\n", " <td>Phoenix Suns</td>\n", " <td>Phoenix, AZ</td>\n", " <td>Talking Stick Resort Arena</td>\n", " <td>18,055</td>\n", " <td>33°26′45″N 112°04′17″W / 33.445833°N 112.071...</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Jay Triano</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>Pacific</td>\n", " <td>Sacramento Kings</td>\n", " <td>Sacramento, CA</td>\n", " <td>Golden 1 Center</td>\n", " <td>17,500</td>\n", " <td>38°38′57″N 121°31′05″W / 38.649167°N 121.518...</td>\n", " <td>1923*</td>\n", " <td>1948</td>\n", " <td>Dave Joerger</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>Southwest</td>\n", " <td>Dallas Mavericks</td>\n", " <td>Dallas, TX</td>\n", " <td>American Airlines Center</td>\n", " <td>19,200</td>\n", " <td>32°47′26″N 96°48′37″W / 32.790556°N 96.81027...</td>\n", " <td>1980</td>\n", " <td>1980</td>\n", " <td>Rick Carlisle</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>Southwest</td>\n", " <td>Houston Rockets</td>\n", " <td>Houston, TX</td>\n", " <td>Toyota Center</td>\n", " <td>18,055</td>\n", " <td>29°45′03″N 95°21′44″W / 29.750833°N 95.36222...</td>\n", " <td>1967*</td>\n", " <td>1967*</td>\n", " <td>Mike D'Antoni</td>\n", " </tr>\n", " <tr>\n", " <th>30</th>\n", " <td>Southwest</td>\n", " <td>Memphis Grizzlies</td>\n", " <td>Memphis, TN</td>\n", " <td>FedExForum</td>\n", " <td>18,119</td>\n", " <td>35°08′18″N 90°03′02″W / 35.138333°N 90.05055...</td>\n", " <td>1995*</td>\n", " <td>1995*</td>\n", " <td>J. B. Bickerstaff</td>\n", " </tr>\n", " <tr>\n", " <th>31</th>\n", " <td>Southwest</td>\n", " <td>New Orleans Pelicans</td>\n", " <td>New Orleans, LA</td>\n", " <td>Smoothie King Center</td>\n", " <td>16,867</td>\n", " <td>29°56′56″N 90°04′55″W / 29.948889°N 90.08194...</td>\n", " <td>2002*</td>\n", " <td>2002*</td>\n", " <td>Alvin Gentry</td>\n", " </tr>\n", " <tr>\n", " <th>32</th>\n", " <td>Southwest</td>\n", " <td>San Antonio Spurs</td>\n", " <td>San Antonio, TX</td>\n", " <td>AT&T Center</td>\n", " <td>18,418</td>\n", " <td>29°25′37″N 98°26′15″W / 29.426944°N 98.4375°...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Gregg Popovich</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 0 1 2 \\\n", "0 Division Team City \n", "1 Eastern Conference Eastern Conference Eastern Conference \n", "2 Atlantic Boston Celtics Boston, MA \n", "3 Atlantic Brooklyn Nets New York City, NY \n", "4 Atlantic New York Knicks New York City, NY \n", "5 Atlantic Philadelphia 76ers Philadelphia, PA \n", "6 Atlantic Toronto Raptors Toronto, ON \n", "7 Central Chicago Bulls Chicago, IL \n", "8 Central Cleveland Cavaliers Cleveland, OH \n", "9 Central Detroit Pistons Detroit, MI \n", "10 Central Indiana Pacers Indianapolis, IN \n", "11 Central Milwaukee Bucks Milwaukee, WI \n", "12 Southeast Atlanta Hawks Atlanta, GA \n", "13 Southeast Charlotte Hornets Charlotte, NC \n", "14 Southeast Miami Heat Miami, FL \n", "15 Southeast Orlando Magic Orlando, FL \n", "16 Southeast Washington Wizards Washington, D.C. \n", "17 Western Conference Western Conference Western Conference \n", "18 Northwest Denver Nuggets Denver, CO \n", "19 Northwest Minnesota Timberwolves Minneapolis, MN \n", "20 Northwest Oklahoma City Thunder Oklahoma City, OK \n", "21 Northwest Portland Trail Blazers Portland, OR \n", "22 Northwest Utah Jazz Salt Lake City, UT \n", "23 Pacific Golden State Warriors Oakland, CA \n", "24 Pacific Los Angeles Clippers Los Angeles, CA \n", "25 Pacific Los Angeles Lakers Los Angeles, CA \n", "26 Pacific Phoenix Suns Phoenix, AZ \n", "27 Pacific Sacramento Kings Sacramento, CA \n", "28 Southwest Dallas Mavericks Dallas, TX \n", "29 Southwest Houston Rockets Houston, TX \n", "30 Southwest Memphis Grizzlies Memphis, TN \n", "31 Southwest New Orleans Pelicans New Orleans, LA \n", "32 Southwest San Antonio Spurs San Antonio, TX \n", "\n", " 3 4 \\\n", "0 Arena Capacity \n", "1 Eastern Conference Eastern Conference \n", "2 TD Garden 18,624 \n", "3 Barclays Center 17,732 \n", "4 Madison Square Garden 19,812 \n", "5 Wells Fargo Center 21,600 \n", "6 Air Canada Centre 19,800 \n", "7 United Center 20,917 \n", "8 Quicken Loans Arena 20,562 \n", "9 Little Caesars Arena 20,491 \n", "10 Bankers Life Fieldhouse 17,923 \n", "11 Bradley Center 18,717 \n", "12 Philips Arena 15,711 \n", "13 Spectrum Center 19,077 \n", "14 American Airlines Arena 19,600 \n", "15 Amway Center 18,846 \n", "16 Capital One Arena 20,356 \n", "17 Western Conference Western Conference \n", "18 Pepsi Center 19,520 \n", "19 Target Center 19,356 \n", "20 Chesapeake Energy Arena 18,203 \n", "21 Moda Center 19,441 \n", "22 Vivint Smart Home Arena 19,911 \n", "23 Oracle Arena 19,596 \n", "24 Staples Center 19,060 \n", "25 Staples Center 18,997 \n", "26 Talking Stick Resort Arena 18,055 \n", "27 Golden 1 Center 17,500 \n", "28 American Airlines Center 19,200 \n", "29 Toyota Center 18,055 \n", "30 FedExForum 18,119 \n", "31 Smoothie King Center 16,867 \n", "32 AT&T Center 18,418 \n", "\n", " 5 6 \\\n", "0 Coordinates Founded \n", "1 Eastern Conference Eastern Conference \n", "2 42°21′59″N 71°03′44″W / 42.366303°N 71.06222... 1946 \n", "3 40°40′58″N 73°58′29″W / 40.68265°N 73.974689... 1967* \n", "4 40°45′02″N 73°59′37″W / 40.750556°N 73.99361... 1946 \n", "5 39°54′04″N 75°10′19″W / 39.901111°N 75.17194... 1946* \n", "6 43°38′36″N 79°22′45″W / 43.643333°N 79.37916... 1995 \n", "7 41°52′50″N 87°40′27″W / 41.880556°N 87.67416... 1966 \n", "8 41°29′47″N 81°41′17″W / 41.496389°N 81.68805... 1970 \n", "9 42°41′49″N 83°14′44″W / 42.696944°N 83.24555... 1941* \n", "10 39°45′50″N 86°09′20″W / 39.763889°N 86.15555... 1967 \n", "11 43°02′37″N 87°55′01″W / 43.043611°N 87.91694... 1968 \n", "12 33°45′26″N 84°23′47″W / 33.757222°N 84.39638... 1946* \n", "13 35°13′30″N 80°50′21″W / 35.225°N 80.839167°W... 1988* \n", "14 25°46′53″N 80°11′17″W / 25.781389°N 80.18805... 1988 \n", "15 28°32′21″N 81°23′01″W / 28.539167°N 81.38361... 1989 \n", "16 38°53′53″N 77°01′15″W / 38.898056°N 77.02083... 1961* \n", "17 Western Conference Western Conference \n", "18 39°44′55″N 105°00′27″W / 39.748611°N 105.007... 1967 \n", "19 44°58′46″N 93°16′34″W / 44.979444°N 93.27611... 1989 \n", "20 35°27′48″N 97°30′54″W / 35.463333°N 97.515°W... 1967* \n", "21 45°31′54″N 122°40′00″W / 45.531667°N 122.666... 1970 \n", "22 40°46′06″N 111°54′04″W / 40.768333°N 111.901... 1974* \n", "23 37°45′01″N 122°12′11″W / 37.750278°N 122.203... 1946* \n", "24 34°02′35″N 118°16′02″W / 34.043056°N 118.267... 1970* \n", "25 34°02′35″N 118°16′02″W / 34.043056°N 118.267... 1947* \n", "26 33°26′45″N 112°04′17″W / 33.445833°N 112.071... 1968 \n", "27 38°38′57″N 121°31′05″W / 38.649167°N 121.518... 1923* \n", "28 32°47′26″N 96°48′37″W / 32.790556°N 96.81027... 1980 \n", "29 29°45′03″N 95°21′44″W / 29.750833°N 95.36222... 1967* \n", "30 35°08′18″N 90°03′02″W / 35.138333°N 90.05055... 1995* \n", "31 29°56′56″N 90°04′55″W / 29.948889°N 90.08194... 2002* \n", "32 29°25′37″N 98°26′15″W / 29.426944°N 98.4375°... 1967* \n", "\n", " 7 8 \n", "0 Joined Head coach \n", "1 Eastern Conference Eastern Conference \n", "2 1946 Brad Stevens \n", "3 1976 Kenny Atkinson \n", "4 1946 Jeff Hornacek \n", "5 1949 Brett Brown \n", "6 1995 Dwane Casey \n", "7 1966 Fred Hoiberg \n", "8 1970 Tyronn Lue \n", "9 1948 Stan Van Gundy \n", "10 1976 Nate McMillan \n", "11 1968 Joe Prunty \n", "12 1949 Mike Budenholzer \n", "13 1988* Steve Clifford \n", "14 1988 Erik Spoelstra \n", "15 1989 Frank Vogel \n", "16 1961* Scott Brooks \n", "17 Western Conference Western Conference \n", "18 1976 Michael Malone \n", "19 1989 Tom Thibodeau \n", "20 1967* Billy Donovan \n", "21 1970 Terry Stotts \n", "22 1974* Quin Snyder \n", "23 1946* Steve Kerr \n", "24 1970* Doc Rivers \n", "25 1948 Luke Walton \n", "26 1968 Jay Triano \n", "27 1948 Dave Joerger \n", "28 1980 Rick Carlisle \n", "29 1967* Mike D'Antoni \n", "30 1995* J. B. Bickerstaff \n", "31 2002* Alvin Gentry \n", "32 1976 Gregg Popovich " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw = tables[0].to_df(repeat_span=True)\n", "raw" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cleaning Up the Table\n", "\n", "Now let's clean up the raw information in the table.\n", "\n", "#### Column Headers\n", "\n", "First, notice that our generic scraping function doesn't know anything about what columns are in the table. We need to create useful column headers." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def setup_columns(raw):\n", " df = raw.copy()\n", " df.columns = df.loc[0, :]\n", " return df.drop(df.index[0])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Division</th>\n", " <th>Team</th>\n", " <th>City</th>\n", " <th>Arena</th>\n", " <th>Capacity</th>\n", " <th>Coordinates</th>\n", " <th>Founded</th>\n", " <th>Joined</th>\n", " <th>Head coach</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>1</th>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " <td>Eastern Conference</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Atlantic</td>\n", " <td>Boston Celtics</td>\n", " <td>Boston, MA</td>\n", " <td>TD Garden</td>\n", " <td>18,624</td>\n", " <td>42°21′59″N 71°03′44″W / 42.366303°N 71.06222...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Brad Stevens</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Atlantic</td>\n", " <td>Brooklyn Nets</td>\n", " <td>New York City, NY</td>\n", " <td>Barclays Center</td>\n", " <td>17,732</td>\n", " <td>40°40′58″N 73°58′29″W / 40.68265°N 73.974689...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Kenny Atkinson</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Atlantic</td>\n", " <td>New York Knicks</td>\n", " <td>New York City, NY</td>\n", " <td>Madison Square Garden</td>\n", " <td>19,812</td>\n", " <td>40°45′02″N 73°59′37″W / 40.750556°N 73.99361...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Jeff Hornacek</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>Atlantic</td>\n", " <td>Philadelphia 76ers</td>\n", " <td>Philadelphia, PA</td>\n", " <td>Wells Fargo Center</td>\n", " <td>21,600</td>\n", " <td>39°54′04″N 75°10′19″W / 39.901111°N 75.17194...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Brett Brown</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>Atlantic</td>\n", " <td>Toronto Raptors</td>\n", " <td>Toronto, ON</td>\n", " <td>Air Canada Centre</td>\n", " <td>19,800</td>\n", " <td>43°38′36″N 79°22′45″W / 43.643333°N 79.37916...</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>Dwane Casey</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>Central</td>\n", " <td>Chicago Bulls</td>\n", " <td>Chicago, IL</td>\n", " <td>United Center</td>\n", " <td>20,917</td>\n", " <td>41°52′50″N 87°40′27″W / 41.880556°N 87.67416...</td>\n", " <td>1966</td>\n", " <td>1966</td>\n", " <td>Fred Hoiberg</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>Central</td>\n", " <td>Cleveland Cavaliers</td>\n", " <td>Cleveland, OH</td>\n", " <td>Quicken Loans Arena</td>\n", " <td>20,562</td>\n", " <td>41°29′47″N 81°41′17″W / 41.496389°N 81.68805...</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Tyronn Lue</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>Central</td>\n", " <td>Detroit Pistons</td>\n", " <td>Detroit, MI</td>\n", " <td>Little Caesars Arena</td>\n", " <td>20,491</td>\n", " <td>42°41′49″N 83°14′44″W / 42.696944°N 83.24555...</td>\n", " <td>1941*</td>\n", " <td>1948</td>\n", " <td>Stan Van Gundy</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>Central</td>\n", " <td>Indiana Pacers</td>\n", " <td>Indianapolis, IN</td>\n", " <td>Bankers Life Fieldhouse</td>\n", " <td>17,923</td>\n", " <td>39°45′50″N 86°09′20″W / 39.763889°N 86.15555...</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Nate McMillan</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>Central</td>\n", " <td>Milwaukee Bucks</td>\n", " <td>Milwaukee, WI</td>\n", " <td>Bradley Center</td>\n", " <td>18,717</td>\n", " <td>43°02′37″N 87°55′01″W / 43.043611°N 87.91694...</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Joe Prunty</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>Southeast</td>\n", " <td>Atlanta Hawks</td>\n", " <td>Atlanta, GA</td>\n", " <td>Philips Arena</td>\n", " <td>15,711</td>\n", " <td>33°45′26″N 84°23′47″W / 33.757222°N 84.39638...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Mike Budenholzer</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>Southeast</td>\n", " <td>Charlotte Hornets</td>\n", " <td>Charlotte, NC</td>\n", " <td>Spectrum Center</td>\n", " <td>19,077</td>\n", " <td>35°13′30″N 80°50′21″W / 35.225°N 80.839167°W...</td>\n", " <td>1988*</td>\n", " <td>1988*</td>\n", " <td>Steve Clifford</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>Southeast</td>\n", " <td>Miami Heat</td>\n", " <td>Miami, FL</td>\n", " <td>American Airlines Arena</td>\n", " <td>19,600</td>\n", " <td>25°46′53″N 80°11′17″W / 25.781389°N 80.18805...</td>\n", " <td>1988</td>\n", " <td>1988</td>\n", " <td>Erik Spoelstra</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>Southeast</td>\n", " <td>Orlando Magic</td>\n", " <td>Orlando, FL</td>\n", " <td>Amway Center</td>\n", " <td>18,846</td>\n", " <td>28°32′21″N 81°23′01″W / 28.539167°N 81.38361...</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Frank Vogel</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>Southeast</td>\n", " <td>Washington Wizards</td>\n", " <td>Washington, D.C.</td>\n", " <td>Capital One Arena</td>\n", " <td>20,356</td>\n", " <td>38°53′53″N 77°01′15″W / 38.898056°N 77.02083...</td>\n", " <td>1961*</td>\n", " <td>1961*</td>\n", " <td>Scott Brooks</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " <td>Western Conference</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>Northwest</td>\n", " <td>Denver Nuggets</td>\n", " <td>Denver, CO</td>\n", " <td>Pepsi Center</td>\n", " <td>19,520</td>\n", " <td>39°44′55″N 105°00′27″W / 39.748611°N 105.007...</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Michael Malone</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>Northwest</td>\n", " <td>Minnesota Timberwolves</td>\n", " <td>Minneapolis, MN</td>\n", " <td>Target Center</td>\n", " <td>19,356</td>\n", " <td>44°58′46″N 93°16′34″W / 44.979444°N 93.27611...</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Tom Thibodeau</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>Northwest</td>\n", " <td>Oklahoma City Thunder</td>\n", " <td>Oklahoma City, OK</td>\n", " <td>Chesapeake Energy Arena</td>\n", " <td>18,203</td>\n", " <td>35°27′48″N 97°30′54″W / 35.463333°N 97.515°W...</td>\n", " <td>1967*</td>\n", " <td>1967*</td>\n", " <td>Billy Donovan</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>Northwest</td>\n", " <td>Portland Trail Blazers</td>\n", " <td>Portland, OR</td>\n", " <td>Moda Center</td>\n", " <td>19,441</td>\n", " <td>45°31′54″N 122°40′00″W / 45.531667°N 122.666...</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Terry Stotts</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>Northwest</td>\n", " <td>Utah Jazz</td>\n", " <td>Salt Lake City, UT</td>\n", " <td>Vivint Smart Home Arena</td>\n", " <td>19,911</td>\n", " <td>40°46′06″N 111°54′04″W / 40.768333°N 111.901...</td>\n", " <td>1974*</td>\n", " <td>1974*</td>\n", " <td>Quin Snyder</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>Pacific</td>\n", " <td>Golden State Warriors</td>\n", " <td>Oakland, CA</td>\n", " <td>Oracle Arena</td>\n", " <td>19,596</td>\n", " <td>37°45′01″N 122°12′11″W / 37.750278°N 122.203...</td>\n", " <td>1946*</td>\n", " <td>1946*</td>\n", " <td>Steve Kerr</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>Pacific</td>\n", " <td>Los Angeles Clippers</td>\n", " <td>Los Angeles, CA</td>\n", " <td>Staples Center</td>\n", " <td>19,060</td>\n", " <td>34°02′35″N 118°16′02″W / 34.043056°N 118.267...</td>\n", " <td>1970*</td>\n", " <td>1970*</td>\n", " <td>Doc Rivers</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>Pacific</td>\n", " <td>Los Angeles Lakers</td>\n", " <td>Los Angeles, CA</td>\n", " <td>Staples Center</td>\n", " <td>18,997</td>\n", " <td>34°02′35″N 118°16′02″W / 34.043056°N 118.267...</td>\n", " <td>1947*</td>\n", " <td>1948</td>\n", " <td>Luke Walton</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>Pacific</td>\n", " <td>Phoenix Suns</td>\n", " <td>Phoenix, AZ</td>\n", " <td>Talking Stick Resort Arena</td>\n", " <td>18,055</td>\n", " <td>33°26′45″N 112°04′17″W / 33.445833°N 112.071...</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Jay Triano</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>Pacific</td>\n", " <td>Sacramento Kings</td>\n", " <td>Sacramento, CA</td>\n", " <td>Golden 1 Center</td>\n", " <td>17,500</td>\n", " <td>38°38′57″N 121°31′05″W / 38.649167°N 121.518...</td>\n", " <td>1923*</td>\n", " <td>1948</td>\n", " <td>Dave Joerger</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>Southwest</td>\n", " <td>Dallas Mavericks</td>\n", " <td>Dallas, TX</td>\n", " <td>American Airlines Center</td>\n", " <td>19,200</td>\n", " <td>32°47′26″N 96°48′37″W / 32.790556°N 96.81027...</td>\n", " <td>1980</td>\n", " <td>1980</td>\n", " <td>Rick Carlisle</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>Southwest</td>\n", " <td>Houston Rockets</td>\n", " <td>Houston, TX</td>\n", " <td>Toyota Center</td>\n", " <td>18,055</td>\n", " <td>29°45′03″N 95°21′44″W / 29.750833°N 95.36222...</td>\n", " <td>1967*</td>\n", " <td>1967*</td>\n", " <td>Mike D'Antoni</td>\n", " </tr>\n", " <tr>\n", " <th>30</th>\n", " <td>Southwest</td>\n", " <td>Memphis Grizzlies</td>\n", " <td>Memphis, TN</td>\n", " <td>FedExForum</td>\n", " <td>18,119</td>\n", " <td>35°08′18″N 90°03′02″W / 35.138333°N 90.05055...</td>\n", " <td>1995*</td>\n", " <td>1995*</td>\n", " <td>J. B. Bickerstaff</td>\n", " </tr>\n", " <tr>\n", " <th>31</th>\n", " <td>Southwest</td>\n", " <td>New Orleans Pelicans</td>\n", " <td>New Orleans, LA</td>\n", " <td>Smoothie King Center</td>\n", " <td>16,867</td>\n", " <td>29°56′56″N 90°04′55″W / 29.948889°N 90.08194...</td>\n", " <td>2002*</td>\n", " <td>2002*</td>\n", " <td>Alvin Gentry</td>\n", " </tr>\n", " <tr>\n", " <th>32</th>\n", " <td>Southwest</td>\n", " <td>San Antonio Spurs</td>\n", " <td>San Antonio, TX</td>\n", " <td>AT&T Center</td>\n", " <td>18,418</td>\n", " <td>29°25′37″N 98°26′15″W / 29.426944°N 98.4375°...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Gregg Popovich</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ "0 Division Team City \\\n", "1 Eastern Conference Eastern Conference Eastern Conference \n", "2 Atlantic Boston Celtics Boston, MA \n", "3 Atlantic Brooklyn Nets New York City, NY \n", "4 Atlantic New York Knicks New York City, NY \n", "5 Atlantic Philadelphia 76ers Philadelphia, PA \n", "6 Atlantic Toronto Raptors Toronto, ON \n", "7 Central Chicago Bulls Chicago, IL \n", "8 Central Cleveland Cavaliers Cleveland, OH \n", "9 Central Detroit Pistons Detroit, MI \n", "10 Central Indiana Pacers Indianapolis, IN \n", "11 Central Milwaukee Bucks Milwaukee, WI \n", "12 Southeast Atlanta Hawks Atlanta, GA \n", "13 Southeast Charlotte Hornets Charlotte, NC \n", "14 Southeast Miami Heat Miami, FL \n", "15 Southeast Orlando Magic Orlando, FL \n", "16 Southeast Washington Wizards Washington, D.C. \n", "17 Western Conference Western Conference Western Conference \n", "18 Northwest Denver Nuggets Denver, CO \n", "19 Northwest Minnesota Timberwolves Minneapolis, MN \n", "20 Northwest Oklahoma City Thunder Oklahoma City, OK \n", "21 Northwest Portland Trail Blazers Portland, OR \n", "22 Northwest Utah Jazz Salt Lake City, UT \n", "23 Pacific Golden State Warriors Oakland, CA \n", "24 Pacific Los Angeles Clippers Los Angeles, CA \n", "25 Pacific Los Angeles Lakers Los Angeles, CA \n", "26 Pacific Phoenix Suns Phoenix, AZ \n", "27 Pacific Sacramento Kings Sacramento, CA \n", "28 Southwest Dallas Mavericks Dallas, TX \n", "29 Southwest Houston Rockets Houston, TX \n", "30 Southwest Memphis Grizzlies Memphis, TN \n", "31 Southwest New Orleans Pelicans New Orleans, LA \n", "32 Southwest San Antonio Spurs San Antonio, TX \n", "\n", "0 Arena Capacity \\\n", "1 Eastern Conference Eastern Conference \n", "2 TD Garden 18,624 \n", "3 Barclays Center 17,732 \n", "4 Madison Square Garden 19,812 \n", "5 Wells Fargo Center 21,600 \n", "6 Air Canada Centre 19,800 \n", "7 United Center 20,917 \n", "8 Quicken Loans Arena 20,562 \n", "9 Little Caesars Arena 20,491 \n", "10 Bankers Life Fieldhouse 17,923 \n", "11 Bradley Center 18,717 \n", "12 Philips Arena 15,711 \n", "13 Spectrum Center 19,077 \n", "14 American Airlines Arena 19,600 \n", "15 Amway Center 18,846 \n", "16 Capital One Arena 20,356 \n", "17 Western Conference Western Conference \n", "18 Pepsi Center 19,520 \n", "19 Target Center 19,356 \n", "20 Chesapeake Energy Arena 18,203 \n", "21 Moda Center 19,441 \n", "22 Vivint Smart Home Arena 19,911 \n", "23 Oracle Arena 19,596 \n", "24 Staples Center 19,060 \n", "25 Staples Center 18,997 \n", "26 Talking Stick Resort Arena 18,055 \n", "27 Golden 1 Center 17,500 \n", "28 American Airlines Center 19,200 \n", "29 Toyota Center 18,055 \n", "30 FedExForum 18,119 \n", "31 Smoothie King Center 16,867 \n", "32 AT&T Center 18,418 \n", "\n", "0 Coordinates Founded \\\n", "1 Eastern Conference Eastern Conference \n", "2 42°21′59″N 71°03′44″W / 42.366303°N 71.06222... 1946 \n", "3 40°40′58″N 73°58′29″W / 40.68265°N 73.974689... 1967* \n", "4 40°45′02″N 73°59′37″W / 40.750556°N 73.99361... 1946 \n", "5 39°54′04″N 75°10′19″W / 39.901111°N 75.17194... 1946* \n", "6 43°38′36″N 79°22′45″W / 43.643333°N 79.37916... 1995 \n", "7 41°52′50″N 87°40′27″W / 41.880556°N 87.67416... 1966 \n", "8 41°29′47″N 81°41′17″W / 41.496389°N 81.68805... 1970 \n", "9 42°41′49″N 83°14′44″W / 42.696944°N 83.24555... 1941* \n", "10 39°45′50″N 86°09′20″W / 39.763889°N 86.15555... 1967 \n", "11 43°02′37″N 87°55′01″W / 43.043611°N 87.91694... 1968 \n", "12 33°45′26″N 84°23′47″W / 33.757222°N 84.39638... 1946* \n", "13 35°13′30″N 80°50′21″W / 35.225°N 80.839167°W... 1988* \n", "14 25°46′53″N 80°11′17″W / 25.781389°N 80.18805... 1988 \n", "15 28°32′21″N 81°23′01″W / 28.539167°N 81.38361... 1989 \n", "16 38°53′53″N 77°01′15″W / 38.898056°N 77.02083... 1961* \n", "17 Western Conference Western Conference \n", "18 39°44′55″N 105°00′27″W / 39.748611°N 105.007... 1967 \n", "19 44°58′46″N 93°16′34″W / 44.979444°N 93.27611... 1989 \n", "20 35°27′48″N 97°30′54″W / 35.463333°N 97.515°W... 1967* \n", "21 45°31′54″N 122°40′00″W / 45.531667°N 122.666... 1970 \n", "22 40°46′06″N 111°54′04″W / 40.768333°N 111.901... 1974* \n", "23 37°45′01″N 122°12′11″W / 37.750278°N 122.203... 1946* \n", "24 34°02′35″N 118°16′02″W / 34.043056°N 118.267... 1970* \n", "25 34°02′35″N 118°16′02″W / 34.043056°N 118.267... 1947* \n", "26 33°26′45″N 112°04′17″W / 33.445833°N 112.071... 1968 \n", "27 38°38′57″N 121°31′05″W / 38.649167°N 121.518... 1923* \n", "28 32°47′26″N 96°48′37″W / 32.790556°N 96.81027... 1980 \n", "29 29°45′03″N 95°21′44″W / 29.750833°N 95.36222... 1967* \n", "30 35°08′18″N 90°03′02″W / 35.138333°N 90.05055... 1995* \n", "31 29°56′56″N 90°04′55″W / 29.948889°N 90.08194... 2002* \n", "32 29°25′37″N 98°26′15″W / 29.426944°N 98.4375°... 1967* \n", "\n", "0 Joined Head coach \n", "1 Eastern Conference Eastern Conference \n", "2 1946 Brad Stevens \n", "3 1976 Kenny Atkinson \n", "4 1946 Jeff Hornacek \n", "5 1949 Brett Brown \n", "6 1995 Dwane Casey \n", "7 1966 Fred Hoiberg \n", "8 1970 Tyronn Lue \n", "9 1948 Stan Van Gundy \n", "10 1976 Nate McMillan \n", "11 1968 Joe Prunty \n", "12 1949 Mike Budenholzer \n", "13 1988* Steve Clifford \n", "14 1988 Erik Spoelstra \n", "15 1989 Frank Vogel \n", "16 1961* Scott Brooks \n", "17 Western Conference Western Conference \n", "18 1976 Michael Malone \n", "19 1989 Tom Thibodeau \n", "20 1967* Billy Donovan \n", "21 1970 Terry Stotts \n", "22 1974* Quin Snyder \n", "23 1946* Steve Kerr \n", "24 1970* Doc Rivers \n", "25 1948 Luke Walton \n", "26 1968 Jay Triano \n", "27 1948 Dave Joerger \n", "28 1980 Rick Carlisle \n", "29 1967* Mike D'Antoni \n", "30 1995* J. B. Bickerstaff \n", "31 2002* Alvin Gentry \n", "32 1976 Gregg Popovich " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = setup_columns(raw)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### NBA Conference Information\n", "\n", "Next, notice that the Eastern and Western Conference repeat across the entire row. What we want is to remove those rows, and create a new column showing the conference for each team." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def cleanup_nba_conferences(df):\n", " df['temporary'] = df['Division']\n", " df = df.set_index('temporary')\n", " eastern = df.index.get_loc('Eastern Conference')\n", " western = df.index.get_loc('Western Conference')\n", " df.loc[eastern+1:western, 'Conference'] = 'Eastern'\n", " df.loc[western+1:, 'Conference'] = 'Western'\n", " df = df.drop(df.index[eastern]).drop(df.index[western])\n", " df['Conference'] = df['Conference'].astype('category')\n", " df['Division'] = df['Division'].astype('category')\n", " return df.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Division</th>\n", " <th>Team</th>\n", " <th>City</th>\n", " <th>Arena</th>\n", " <th>Capacity</th>\n", " <th>Coordinates</th>\n", " <th>Founded</th>\n", " <th>Joined</th>\n", " <th>Head coach</th>\n", " <th>Conference</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Atlantic</td>\n", " <td>Boston Celtics</td>\n", " <td>Boston, MA</td>\n", " <td>TD Garden</td>\n", " <td>18,624</td>\n", " <td>42°21′59″N 71°03′44″W / 42.366303°N 71.06222...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Brad Stevens</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Atlantic</td>\n", " <td>Brooklyn Nets</td>\n", " <td>New York City, NY</td>\n", " <td>Barclays Center</td>\n", " <td>17,732</td>\n", " <td>40°40′58″N 73°58′29″W / 40.68265°N 73.974689...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Kenny Atkinson</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Atlantic</td>\n", " <td>New York Knicks</td>\n", " <td>New York City, NY</td>\n", " <td>Madison Square Garden</td>\n", " <td>19,812</td>\n", " <td>40°45′02″N 73°59′37″W / 40.750556°N 73.99361...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Jeff Hornacek</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Atlantic</td>\n", " <td>Philadelphia 76ers</td>\n", " <td>Philadelphia, PA</td>\n", " <td>Wells Fargo Center</td>\n", " <td>21,600</td>\n", " <td>39°54′04″N 75°10′19″W / 39.901111°N 75.17194...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Brett Brown</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Atlantic</td>\n", " <td>Toronto Raptors</td>\n", " <td>Toronto, ON</td>\n", " <td>Air Canada Centre</td>\n", " <td>19,800</td>\n", " <td>43°38′36″N 79°22′45″W / 43.643333°N 79.37916...</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>Dwane Casey</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>Central</td>\n", " <td>Chicago Bulls</td>\n", " <td>Chicago, IL</td>\n", " <td>United Center</td>\n", " <td>20,917</td>\n", " <td>41°52′50″N 87°40′27″W / 41.880556°N 87.67416...</td>\n", " <td>1966</td>\n", " <td>1966</td>\n", " <td>Fred Hoiberg</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>Central</td>\n", " <td>Cleveland Cavaliers</td>\n", " <td>Cleveland, OH</td>\n", " <td>Quicken Loans Arena</td>\n", " <td>20,562</td>\n", " <td>41°29′47″N 81°41′17″W / 41.496389°N 81.68805...</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Tyronn Lue</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>Central</td>\n", " <td>Detroit Pistons</td>\n", " <td>Detroit, MI</td>\n", " <td>Little Caesars Arena</td>\n", " <td>20,491</td>\n", " <td>42°41′49″N 83°14′44″W / 42.696944°N 83.24555...</td>\n", " <td>1941*</td>\n", " <td>1948</td>\n", " <td>Stan Van Gundy</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>Central</td>\n", " <td>Indiana Pacers</td>\n", " <td>Indianapolis, IN</td>\n", " <td>Bankers Life Fieldhouse</td>\n", " <td>17,923</td>\n", " <td>39°45′50″N 86°09′20″W / 39.763889°N 86.15555...</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Nate McMillan</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>Central</td>\n", " <td>Milwaukee Bucks</td>\n", " <td>Milwaukee, WI</td>\n", " <td>Bradley Center</td>\n", " <td>18,717</td>\n", " <td>43°02′37″N 87°55′01″W / 43.043611°N 87.91694...</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Joe Prunty</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>Southeast</td>\n", " <td>Atlanta Hawks</td>\n", " <td>Atlanta, GA</td>\n", " <td>Philips Arena</td>\n", " <td>15,711</td>\n", " <td>33°45′26″N 84°23′47″W / 33.757222°N 84.39638...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Mike Budenholzer</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>Southeast</td>\n", " <td>Charlotte Hornets</td>\n", " <td>Charlotte, NC</td>\n", " <td>Spectrum Center</td>\n", " <td>19,077</td>\n", " <td>35°13′30″N 80°50′21″W / 35.225°N 80.839167°W...</td>\n", " <td>1988*</td>\n", " <td>1988*</td>\n", " <td>Steve Clifford</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>Southeast</td>\n", " <td>Miami Heat</td>\n", " <td>Miami, FL</td>\n", " <td>American Airlines Arena</td>\n", " <td>19,600</td>\n", " <td>25°46′53″N 80°11′17″W / 25.781389°N 80.18805...</td>\n", " <td>1988</td>\n", " <td>1988</td>\n", " <td>Erik Spoelstra</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>Southeast</td>\n", " <td>Orlando Magic</td>\n", " <td>Orlando, FL</td>\n", " <td>Amway Center</td>\n", " <td>18,846</td>\n", " <td>28°32′21″N 81°23′01″W / 28.539167°N 81.38361...</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Frank Vogel</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>Southeast</td>\n", " <td>Washington Wizards</td>\n", " <td>Washington, D.C.</td>\n", " <td>Capital One Arena</td>\n", " <td>20,356</td>\n", " <td>38°53′53″N 77°01′15″W / 38.898056°N 77.02083...</td>\n", " <td>1961*</td>\n", " <td>1961*</td>\n", " <td>Scott Brooks</td>\n", " <td>Eastern</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>Northwest</td>\n", " <td>Denver Nuggets</td>\n", " <td>Denver, CO</td>\n", " <td>Pepsi Center</td>\n", " <td>19,520</td>\n", " <td>39°44′55″N 105°00′27″W / 39.748611°N 105.007...</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Michael Malone</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>Northwest</td>\n", " <td>Minnesota Timberwolves</td>\n", " <td>Minneapolis, MN</td>\n", " <td>Target Center</td>\n", " <td>19,356</td>\n", " <td>44°58′46″N 93°16′34″W / 44.979444°N 93.27611...</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Tom Thibodeau</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>Northwest</td>\n", " <td>Oklahoma City Thunder</td>\n", " <td>Oklahoma City, OK</td>\n", " <td>Chesapeake Energy Arena</td>\n", " <td>18,203</td>\n", " <td>35°27′48″N 97°30′54″W / 35.463333°N 97.515°W...</td>\n", " <td>1967*</td>\n", " <td>1967*</td>\n", " <td>Billy Donovan</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>Northwest</td>\n", " <td>Portland Trail Blazers</td>\n", " <td>Portland, OR</td>\n", " <td>Moda Center</td>\n", " <td>19,441</td>\n", " <td>45°31′54″N 122°40′00″W / 45.531667°N 122.666...</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Terry Stotts</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>Northwest</td>\n", " <td>Utah Jazz</td>\n", " <td>Salt Lake City, UT</td>\n", " <td>Vivint Smart Home Arena</td>\n", " <td>19,911</td>\n", " <td>40°46′06″N 111°54′04″W / 40.768333°N 111.901...</td>\n", " <td>1974*</td>\n", " <td>1974*</td>\n", " <td>Quin Snyder</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>Pacific</td>\n", " <td>Golden State Warriors</td>\n", " <td>Oakland, CA</td>\n", " <td>Oracle Arena</td>\n", " <td>19,596</td>\n", " <td>37°45′01″N 122°12′11″W / 37.750278°N 122.203...</td>\n", " <td>1946*</td>\n", " <td>1946*</td>\n", " <td>Steve Kerr</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>Pacific</td>\n", " <td>Los Angeles Clippers</td>\n", " <td>Los Angeles, CA</td>\n", " <td>Staples Center</td>\n", " <td>19,060</td>\n", " <td>34°02′35″N 118°16′02″W / 34.043056°N 118.267...</td>\n", " <td>1970*</td>\n", " <td>1970*</td>\n", " <td>Doc Rivers</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>Pacific</td>\n", " <td>Los Angeles Lakers</td>\n", " <td>Los Angeles, CA</td>\n", " <td>Staples Center</td>\n", " <td>18,997</td>\n", " <td>34°02′35″N 118°16′02″W / 34.043056°N 118.267...</td>\n", " <td>1947*</td>\n", " <td>1948</td>\n", " <td>Luke Walton</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>Pacific</td>\n", " <td>Phoenix Suns</td>\n", " <td>Phoenix, AZ</td>\n", " <td>Talking Stick Resort Arena</td>\n", " <td>18,055</td>\n", " <td>33°26′45″N 112°04′17″W / 33.445833°N 112.071...</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Jay Triano</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>Pacific</td>\n", " <td>Sacramento Kings</td>\n", " <td>Sacramento, CA</td>\n", " <td>Golden 1 Center</td>\n", " <td>17,500</td>\n", " <td>38°38′57″N 121°31′05″W / 38.649167°N 121.518...</td>\n", " <td>1923*</td>\n", " <td>1948</td>\n", " <td>Dave Joerger</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>Southwest</td>\n", " <td>Dallas Mavericks</td>\n", " <td>Dallas, TX</td>\n", " <td>American Airlines Center</td>\n", " <td>19,200</td>\n", " <td>32°47′26″N 96°48′37″W / 32.790556°N 96.81027...</td>\n", " <td>1980</td>\n", " <td>1980</td>\n", " <td>Rick Carlisle</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>Southwest</td>\n", " <td>Houston Rockets</td>\n", " <td>Houston, TX</td>\n", " <td>Toyota Center</td>\n", " <td>18,055</td>\n", " <td>29°45′03″N 95°21′44″W / 29.750833°N 95.36222...</td>\n", " <td>1967*</td>\n", " <td>1967*</td>\n", " <td>Mike D'Antoni</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>Southwest</td>\n", " <td>Memphis Grizzlies</td>\n", " <td>Memphis, TN</td>\n", " <td>FedExForum</td>\n", " <td>18,119</td>\n", " <td>35°08′18″N 90°03′02″W / 35.138333°N 90.05055...</td>\n", " <td>1995*</td>\n", " <td>1995*</td>\n", " <td>J. B. Bickerstaff</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>Southwest</td>\n", " <td>New Orleans Pelicans</td>\n", " <td>New Orleans, LA</td>\n", " <td>Smoothie King Center</td>\n", " <td>16,867</td>\n", " <td>29°56′56″N 90°04′55″W / 29.948889°N 90.08194...</td>\n", " <td>2002*</td>\n", " <td>2002*</td>\n", " <td>Alvin Gentry</td>\n", " <td>Western</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>Southwest</td>\n", " <td>San Antonio Spurs</td>\n", " <td>San Antonio, TX</td>\n", " <td>AT&T Center</td>\n", " <td>18,418</td>\n", " <td>29°25′37″N 98°26′15″W / 29.426944°N 98.4375°...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Gregg Popovich</td>\n", " <td>Western</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ "0 Division Team City \\\n", "0 Atlantic Boston Celtics Boston, MA \n", "1 Atlantic Brooklyn Nets New York City, NY \n", "2 Atlantic New York Knicks New York City, NY \n", "3 Atlantic Philadelphia 76ers Philadelphia, PA \n", "4 Atlantic Toronto Raptors Toronto, ON \n", "5 Central Chicago Bulls Chicago, IL \n", "6 Central Cleveland Cavaliers Cleveland, OH \n", "7 Central Detroit Pistons Detroit, MI \n", "8 Central Indiana Pacers Indianapolis, IN \n", "9 Central Milwaukee Bucks Milwaukee, WI \n", "10 Southeast Atlanta Hawks Atlanta, GA \n", "11 Southeast Charlotte Hornets Charlotte, NC \n", "12 Southeast Miami Heat Miami, FL \n", "13 Southeast Orlando Magic Orlando, FL \n", "14 Southeast Washington Wizards Washington, D.C. \n", "15 Northwest Denver Nuggets Denver, CO \n", "16 Northwest Minnesota Timberwolves Minneapolis, MN \n", "17 Northwest Oklahoma City Thunder Oklahoma City, OK \n", "18 Northwest Portland Trail Blazers Portland, OR \n", "19 Northwest Utah Jazz Salt Lake City, UT \n", "20 Pacific Golden State Warriors Oakland, CA \n", "21 Pacific Los Angeles Clippers Los Angeles, CA \n", "22 Pacific Los Angeles Lakers Los Angeles, CA \n", "23 Pacific Phoenix Suns Phoenix, AZ \n", "24 Pacific Sacramento Kings Sacramento, CA \n", "25 Southwest Dallas Mavericks Dallas, TX \n", "26 Southwest Houston Rockets Houston, TX \n", "27 Southwest Memphis Grizzlies Memphis, TN \n", "28 Southwest New Orleans Pelicans New Orleans, LA \n", "29 Southwest San Antonio Spurs San Antonio, TX \n", "\n", "0 Arena Capacity \\\n", "0 TD Garden 18,624 \n", "1 Barclays Center 17,732 \n", "2 Madison Square Garden 19,812 \n", "3 Wells Fargo Center 21,600 \n", "4 Air Canada Centre 19,800 \n", "5 United Center 20,917 \n", "6 Quicken Loans Arena 20,562 \n", "7 Little Caesars Arena 20,491 \n", "8 Bankers Life Fieldhouse 17,923 \n", "9 Bradley Center 18,717 \n", "10 Philips Arena 15,711 \n", "11 Spectrum Center 19,077 \n", "12 American Airlines Arena 19,600 \n", "13 Amway Center 18,846 \n", "14 Capital One Arena 20,356 \n", "15 Pepsi Center 19,520 \n", "16 Target Center 19,356 \n", "17 Chesapeake Energy Arena 18,203 \n", "18 Moda Center 19,441 \n", "19 Vivint Smart Home Arena 19,911 \n", "20 Oracle Arena 19,596 \n", "21 Staples Center 19,060 \n", "22 Staples Center 18,997 \n", "23 Talking Stick Resort Arena 18,055 \n", "24 Golden 1 Center 17,500 \n", "25 American Airlines Center 19,200 \n", "26 Toyota Center 18,055 \n", "27 FedExForum 18,119 \n", "28 Smoothie King Center 16,867 \n", "29 AT&T Center 18,418 \n", "\n", "0 Coordinates Founded Joined \\\n", "0 42°21′59″N 71°03′44″W / 42.366303°N 71.06222... 1946 1946 \n", "1 40°40′58″N 73°58′29″W / 40.68265°N 73.974689... 1967* 1976 \n", "2 40°45′02″N 73°59′37″W / 40.750556°N 73.99361... 1946 1946 \n", "3 39°54′04″N 75°10′19″W / 39.901111°N 75.17194... 1946* 1949 \n", "4 43°38′36″N 79°22′45″W / 43.643333°N 79.37916... 1995 1995 \n", "5 41°52′50″N 87°40′27″W / 41.880556°N 87.67416... 1966 1966 \n", "6 41°29′47″N 81°41′17″W / 41.496389°N 81.68805... 1970 1970 \n", "7 42°41′49″N 83°14′44″W / 42.696944°N 83.24555... 1941* 1948 \n", "8 39°45′50″N 86°09′20″W / 39.763889°N 86.15555... 1967 1976 \n", "9 43°02′37″N 87°55′01″W / 43.043611°N 87.91694... 1968 1968 \n", "10 33°45′26″N 84°23′47″W / 33.757222°N 84.39638... 1946* 1949 \n", "11 35°13′30″N 80°50′21″W / 35.225°N 80.839167°W... 1988* 1988* \n", "12 25°46′53″N 80°11′17″W / 25.781389°N 80.18805... 1988 1988 \n", "13 28°32′21″N 81°23′01″W / 28.539167°N 81.38361... 1989 1989 \n", "14 38°53′53″N 77°01′15″W / 38.898056°N 77.02083... 1961* 1961* \n", "15 39°44′55″N 105°00′27″W / 39.748611°N 105.007... 1967 1976 \n", "16 44°58′46″N 93°16′34″W / 44.979444°N 93.27611... 1989 1989 \n", "17 35°27′48″N 97°30′54″W / 35.463333°N 97.515°W... 1967* 1967* \n", "18 45°31′54″N 122°40′00″W / 45.531667°N 122.666... 1970 1970 \n", "19 40°46′06″N 111°54′04″W / 40.768333°N 111.901... 1974* 1974* \n", "20 37°45′01″N 122°12′11″W / 37.750278°N 122.203... 1946* 1946* \n", "21 34°02′35″N 118°16′02″W / 34.043056°N 118.267... 1970* 1970* \n", "22 34°02′35″N 118°16′02″W / 34.043056°N 118.267... 1947* 1948 \n", "23 33°26′45″N 112°04′17″W / 33.445833°N 112.071... 1968 1968 \n", "24 38°38′57″N 121°31′05″W / 38.649167°N 121.518... 1923* 1948 \n", "25 32°47′26″N 96°48′37″W / 32.790556°N 96.81027... 1980 1980 \n", "26 29°45′03″N 95°21′44″W / 29.750833°N 95.36222... 1967* 1967* \n", "27 35°08′18″N 90°03′02″W / 35.138333°N 90.05055... 1995* 1995* \n", "28 29°56′56″N 90°04′55″W / 29.948889°N 90.08194... 2002* 2002* \n", "29 29°25′37″N 98°26′15″W / 29.426944°N 98.4375°... 1967* 1976 \n", "\n", "0 Head coach Conference \n", "0 Brad Stevens Eastern \n", "1 Kenny Atkinson Eastern \n", "2 Jeff Hornacek Eastern \n", "3 Brett Brown Eastern \n", "4 Dwane Casey Eastern \n", "5 Fred Hoiberg Eastern \n", "6 Tyronn Lue Eastern \n", "7 Stan Van Gundy Eastern \n", "8 Nate McMillan Eastern \n", "9 Joe Prunty Eastern \n", "10 Mike Budenholzer Eastern \n", "11 Steve Clifford Eastern \n", "12 Erik Spoelstra Eastern \n", "13 Frank Vogel Eastern \n", "14 Scott Brooks Eastern \n", "15 Michael Malone Western \n", "16 Tom Thibodeau Western \n", "17 Billy Donovan Western \n", "18 Terry Stotts Western \n", "19 Quin Snyder Western \n", "20 Steve Kerr Western \n", "21 Doc Rivers Western \n", "22 Luke Walton Western \n", "23 Jay Triano Western \n", "24 Dave Joerger Western \n", "25 Rick Carlisle Western \n", "26 Mike D'Antoni Western \n", "27 J. B. Bickerstaff Western \n", "28 Alvin Gentry Western \n", "29 Gregg Popovich Western " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = cleanup_nba_conferences(df)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### City and Postal Code\n", "\n", "Next, we want to split the city and the postal code into two separate columns.\n", "\n", "To do this, we need to use [`pandas` string-handling methods](https://pandas.pydata.org/pandas-docs/stable/text.html)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def split_city_postal(df):\n", " df['Postal'] = df['City'].str.rsplit(',', n=1).str.get(1).str.replace('.', '').str.strip()\n", " df['City'] = df['City'].str.rsplit(',', n=1).str.get(0)\n", " return df" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Division</th>\n", " <th>Team</th>\n", " <th>City</th>\n", " <th>Arena</th>\n", " <th>Capacity</th>\n", " <th>Coordinates</th>\n", " <th>Founded</th>\n", " <th>Joined</th>\n", " <th>Head coach</th>\n", " <th>Conference</th>\n", " <th>Postal</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Atlantic</td>\n", " <td>Boston Celtics</td>\n", " <td>Boston</td>\n", " <td>TD Garden</td>\n", " <td>18,624</td>\n", " <td>42°21′59″N 71°03′44″W / 42.366303°N 71.06222...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Brad Stevens</td>\n", " <td>Eastern</td>\n", " <td>MA</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Atlantic</td>\n", " <td>Brooklyn Nets</td>\n", " <td>New York City</td>\n", " <td>Barclays Center</td>\n", " <td>17,732</td>\n", " <td>40°40′58″N 73°58′29″W / 40.68265°N 73.974689...</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Kenny Atkinson</td>\n", " <td>Eastern</td>\n", " <td>NY</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Atlantic</td>\n", " <td>New York Knicks</td>\n", " <td>New York City</td>\n", " <td>Madison Square Garden</td>\n", " <td>19,812</td>\n", " <td>40°45′02″N 73°59′37″W / 40.750556°N 73.99361...</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Jeff Hornacek</td>\n", " <td>Eastern</td>\n", " <td>NY</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Atlantic</td>\n", " <td>Philadelphia 76ers</td>\n", " <td>Philadelphia</td>\n", " <td>Wells Fargo Center</td>\n", " <td>21,600</td>\n", " <td>39°54′04″N 75°10′19″W / 39.901111°N 75.17194...</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Brett Brown</td>\n", " <td>Eastern</td>\n", " <td>PA</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Atlantic</td>\n", " <td>Toronto Raptors</td>\n", " <td>Toronto</td>\n", " <td>Air Canada Centre</td>\n", " <td>19,800</td>\n", " <td>43°38′36″N 79°22′45″W / 43.643333°N 79.37916...</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>Dwane Casey</td>\n", " <td>Eastern</td>\n", " <td>ON</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ "0 Division Team City Arena \\\n", "0 Atlantic Boston Celtics Boston TD Garden \n", "1 Atlantic Brooklyn Nets New York City Barclays Center \n", "2 Atlantic New York Knicks New York City Madison Square Garden \n", "3 Atlantic Philadelphia 76ers Philadelphia Wells Fargo Center \n", "4 Atlantic Toronto Raptors Toronto Air Canada Centre \n", "\n", "0 Capacity Coordinates Founded Joined \\\n", "0 18,624 42°21′59″N 71°03′44″W / 42.366303°N 71.06222... 1946 1946 \n", "1 17,732 40°40′58″N 73°58′29″W / 40.68265°N 73.974689... 1967* 1976 \n", "2 19,812 40°45′02″N 73°59′37″W / 40.750556°N 73.99361... 1946 1946 \n", "3 21,600 39°54′04″N 75°10′19″W / 39.901111°N 75.17194... 1946* 1949 \n", "4 19,800 43°38′36″N 79°22′45″W / 43.643333°N 79.37916... 1995 1995 \n", "\n", "0 Head coach Conference Postal \n", "0 Brad Stevens Eastern MA \n", "1 Kenny Atkinson Eastern NY \n", "2 Jeff Hornacek Eastern NY \n", "3 Brett Brown Eastern PA \n", "4 Dwane Casey Eastern ON " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = split_city_postal(df)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Arena Latitude and Longitude\n", "\n", "Lastly, we need to clean up the arena latitude and longitude. This is a little tricky, since there is a lot of content packed into the Coordinates column in the `DataFrame`. Let's focus on one row to see what's going on." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['42°21′59″N 71°03′44″W\\ufeff ',\n", " ' \\ufeff42.366303°N 71.062228°W\\ufeff ',\n", " ' 42.366303; -71.062228\\ufeff (Boston Celtics)']]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "row = list(df.loc[df['Team'] == 'Boston Celtics', 'Coordinates'].str.split('/'))\n", "row" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 3 elements per row, with different formats for the latitude and longitude. In case you were wondering, the `\\ufeff` appearing in the text strings are a special [Unicode](https://en.wikipedia.org/wiki/Byte_order_mark) character. We are going to ignore the first two elements and just get the third.\n", "\n", "We need to split this third element into latitude and longitude by the semi-colon (;) and extract the numbers. Again, we will use `pandas` string-handling methods, along with [regular expressions](https://docs.python.org/3/howto/regex.html). Regular expressions are a very general way to find and extract text in many computer languages, including Python. In this particular case, the regular expression just gets numbers with a decimal point, potentially starting with a negative sign." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def get_arena_lat_lon(df):\n", " df['Coordinates'] = df['Coordinates'].str.split('/').str.get(2).str.split(';')\n", " df['Latitude'] = df['Coordinates'].str.get(0).astype(float)\n", " df['Longitude'] = df['Coordinates'].str.get(1).str.extract('(-+[\\d]*\\.[\\d]*)', expand=False).astype(float)\n", " return df" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Division</th>\n", " <th>Team</th>\n", " <th>City</th>\n", " <th>Arena</th>\n", " <th>Capacity</th>\n", " <th>Coordinates</th>\n", " <th>Founded</th>\n", " <th>Joined</th>\n", " <th>Head coach</th>\n", " <th>Conference</th>\n", " <th>Postal</th>\n", " <th>Latitude</th>\n", " <th>Longitude</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Atlantic</td>\n", " <td>Boston Celtics</td>\n", " <td>Boston</td>\n", " <td>TD Garden</td>\n", " <td>18,624</td>\n", " <td>[ 42.366303, -71.062228 (Boston Celtics)]</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Brad Stevens</td>\n", " <td>Eastern</td>\n", " <td>MA</td>\n", " <td>42.366303</td>\n", " <td>-71.062228</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Atlantic</td>\n", " <td>Brooklyn Nets</td>\n", " <td>New York City</td>\n", " <td>Barclays Center</td>\n", " <td>17,732</td>\n", " <td>[ 40.68265, -73.974689 (Brooklyn Nets)]</td>\n", " <td>1967*</td>\n", " <td>1976</td>\n", " <td>Kenny Atkinson</td>\n", " <td>Eastern</td>\n", " <td>NY</td>\n", " <td>40.682650</td>\n", " <td>-73.974689</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>Atlantic</td>\n", " <td>New York Knicks</td>\n", " <td>New York City</td>\n", " <td>Madison Square Garden</td>\n", " <td>19,812</td>\n", " <td>[ 40.750556, -73.993611 (New York Knicks)]</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Jeff Hornacek</td>\n", " <td>Eastern</td>\n", " <td>NY</td>\n", " <td>40.750556</td>\n", " <td>-73.993611</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Atlantic</td>\n", " <td>Philadelphia 76ers</td>\n", " <td>Philadelphia</td>\n", " <td>Wells Fargo Center</td>\n", " <td>21,600</td>\n", " <td>[ 39.901111, -75.171944 (Philadelphia 76ers)]</td>\n", " <td>1946*</td>\n", " <td>1949</td>\n", " <td>Brett Brown</td>\n", " <td>Eastern</td>\n", " <td>PA</td>\n", " <td>39.901111</td>\n", " <td>-75.171944</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Atlantic</td>\n", " <td>Toronto Raptors</td>\n", " <td>Toronto</td>\n", " <td>Air Canada Centre</td>\n", " <td>19,800</td>\n", " <td>[ 43.643333, -79.379167 (Toronto Raptors)]</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>Dwane Casey</td>\n", " <td>Eastern</td>\n", " <td>ON</td>\n", " <td>43.643333</td>\n", " <td>-79.379167</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ "0 Division Team City Arena \\\n", "0 Atlantic Boston Celtics Boston TD Garden \n", "1 Atlantic Brooklyn Nets New York City Barclays Center \n", "2 Atlantic New York Knicks New York City Madison Square Garden \n", "3 Atlantic Philadelphia 76ers Philadelphia Wells Fargo Center \n", "4 Atlantic Toronto Raptors Toronto Air Canada Centre \n", "\n", "0 Capacity Coordinates Founded Joined \\\n", "0 18,624 [ 42.366303, -71.062228 (Boston Celtics)] 1946 1946 \n", "1 17,732 [ 40.68265, -73.974689 (Brooklyn Nets)] 1967* 1976 \n", "2 19,812 [ 40.750556, -73.993611 (New York Knicks)] 1946 1946 \n", "3 21,600 [ 39.901111, -75.171944 (Philadelphia 76ers)] 1946* 1949 \n", "4 19,800 [ 43.643333, -79.379167 (Toronto Raptors)] 1995 1995 \n", "\n", "0 Head coach Conference Postal Latitude Longitude \n", "0 Brad Stevens Eastern MA 42.366303 -71.062228 \n", "1 Kenny Atkinson Eastern NY 40.682650 -73.974689 \n", "2 Jeff Hornacek Eastern NY 40.750556 -73.993611 \n", "3 Brett Brown Eastern PA 39.901111 -75.171944 \n", "4 Dwane Casey Eastern ON 43.643333 -79.379167 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = get_arena_lat_lon(df)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Putting It All Together\n", "\n", "Now we'll just put all these steps into one function. This function will combine all the steps, do a few more simple cleanups, and drop columns that we don't need at the end. We also want to save the final, cleaned-up results." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def wiki_teams_info(raw):\n", " df = setup_columns(raw)\n", " df = cleanup_nba_conferences(df)\n", " df = split_city_postal(df)\n", " df = get_arena_lat_lon(df)\n", " df['Capacity'] = df['Capacity'].str.replace(',', '').astype(int)\n", " df['Founded'] = df['Founded'].str.replace('*', '').astype(int)\n", " df['Joined'] = df['Joined'].str.replace('*', '').astype(int)\n", " cols = [\n", " 'Team',\n", " 'Conference',\n", " 'Division',\n", " 'City',\n", " 'Postal',\n", " 'Arena',\n", " 'Capacity',\n", " 'Latitude',\n", " 'Longitude',\n", " 'Founded',\n", " 'Joined',\n", " 'Head coach',\n", " ]\n", " return df[cols].reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Team</th>\n", " <th>Conference</th>\n", " <th>Division</th>\n", " <th>City</th>\n", " <th>Postal</th>\n", " <th>Arena</th>\n", " <th>Capacity</th>\n", " <th>Latitude</th>\n", " <th>Longitude</th>\n", " <th>Founded</th>\n", " <th>Joined</th>\n", " <th>Head coach</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Boston Celtics</td>\n", " <td>Eastern</td>\n", " <td>Atlantic</td>\n", " <td>Boston</td>\n", " <td>MA</td>\n", " <td>TD Garden</td>\n", " <td>18624</td>\n", " <td>42.366303</td>\n", " <td>-71.062228</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Brad Stevens</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>Brooklyn Nets</td>\n", " <td>Eastern</td>\n", " <td>Atlantic</td>\n", " <td>New York City</td>\n", " <td>NY</td>\n", " <td>Barclays Center</td>\n", " <td>17732</td>\n", " <td>40.682650</td>\n", " <td>-73.974689</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Kenny Atkinson</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>New York Knicks</td>\n", " <td>Eastern</td>\n", " <td>Atlantic</td>\n", " <td>New York City</td>\n", " <td>NY</td>\n", " <td>Madison Square Garden</td>\n", " <td>19812</td>\n", " <td>40.750556</td>\n", " <td>-73.993611</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Jeff Hornacek</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>Philadelphia 76ers</td>\n", " <td>Eastern</td>\n", " <td>Atlantic</td>\n", " <td>Philadelphia</td>\n", " <td>PA</td>\n", " <td>Wells Fargo Center</td>\n", " <td>21600</td>\n", " <td>39.901111</td>\n", " <td>-75.171944</td>\n", " <td>1946</td>\n", " <td>1949</td>\n", " <td>Brett Brown</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Toronto Raptors</td>\n", " <td>Eastern</td>\n", " <td>Atlantic</td>\n", " <td>Toronto</td>\n", " <td>ON</td>\n", " <td>Air Canada Centre</td>\n", " <td>19800</td>\n", " <td>43.643333</td>\n", " <td>-79.379167</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>Dwane Casey</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>Chicago Bulls</td>\n", " <td>Eastern</td>\n", " <td>Central</td>\n", " <td>Chicago</td>\n", " <td>IL</td>\n", " <td>United Center</td>\n", " <td>20917</td>\n", " <td>41.880556</td>\n", " <td>-87.674167</td>\n", " <td>1966</td>\n", " <td>1966</td>\n", " <td>Fred Hoiberg</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>Cleveland Cavaliers</td>\n", " <td>Eastern</td>\n", " <td>Central</td>\n", " <td>Cleveland</td>\n", " <td>OH</td>\n", " <td>Quicken Loans Arena</td>\n", " <td>20562</td>\n", " <td>41.496389</td>\n", " <td>-81.688056</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Tyronn Lue</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>Detroit Pistons</td>\n", " <td>Eastern</td>\n", " <td>Central</td>\n", " <td>Detroit</td>\n", " <td>MI</td>\n", " <td>Little Caesars Arena</td>\n", " <td>20491</td>\n", " <td>42.696944</td>\n", " <td>-83.245556</td>\n", " <td>1941</td>\n", " <td>1948</td>\n", " <td>Stan Van Gundy</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>Indiana Pacers</td>\n", " <td>Eastern</td>\n", " <td>Central</td>\n", " <td>Indianapolis</td>\n", " <td>IN</td>\n", " <td>Bankers Life Fieldhouse</td>\n", " <td>17923</td>\n", " <td>39.763889</td>\n", " <td>-86.155556</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Nate McMillan</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>Milwaukee Bucks</td>\n", " <td>Eastern</td>\n", " <td>Central</td>\n", " <td>Milwaukee</td>\n", " <td>WI</td>\n", " <td>Bradley Center</td>\n", " <td>18717</td>\n", " <td>43.043611</td>\n", " <td>-87.916944</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Joe Prunty</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>Atlanta Hawks</td>\n", " <td>Eastern</td>\n", " <td>Southeast</td>\n", " <td>Atlanta</td>\n", " <td>GA</td>\n", " <td>Philips Arena</td>\n", " <td>15711</td>\n", " <td>33.757222</td>\n", " <td>-84.396389</td>\n", " <td>1946</td>\n", " <td>1949</td>\n", " <td>Mike Budenholzer</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>Charlotte Hornets</td>\n", " <td>Eastern</td>\n", " <td>Southeast</td>\n", " <td>Charlotte</td>\n", " <td>NC</td>\n", " <td>Spectrum Center</td>\n", " <td>19077</td>\n", " <td>35.225000</td>\n", " <td>-80.839167</td>\n", " <td>1988</td>\n", " <td>1988</td>\n", " <td>Steve Clifford</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>Miami Heat</td>\n", " <td>Eastern</td>\n", " <td>Southeast</td>\n", " <td>Miami</td>\n", " <td>FL</td>\n", " <td>American Airlines Arena</td>\n", " <td>19600</td>\n", " <td>25.781389</td>\n", " <td>-80.188056</td>\n", " <td>1988</td>\n", " <td>1988</td>\n", " <td>Erik Spoelstra</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>Orlando Magic</td>\n", " <td>Eastern</td>\n", " <td>Southeast</td>\n", " <td>Orlando</td>\n", " <td>FL</td>\n", " <td>Amway Center</td>\n", " <td>18846</td>\n", " <td>28.539167</td>\n", " <td>-81.383611</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Frank Vogel</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>Washington Wizards</td>\n", " <td>Eastern</td>\n", " <td>Southeast</td>\n", " <td>Washington</td>\n", " <td>DC</td>\n", " <td>Capital One Arena</td>\n", " <td>20356</td>\n", " <td>38.898056</td>\n", " <td>-77.020833</td>\n", " <td>1961</td>\n", " <td>1961</td>\n", " <td>Scott Brooks</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>Denver Nuggets</td>\n", " <td>Western</td>\n", " <td>Northwest</td>\n", " <td>Denver</td>\n", " <td>CO</td>\n", " <td>Pepsi Center</td>\n", " <td>19520</td>\n", " <td>39.748611</td>\n", " <td>-105.007500</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Michael Malone</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>Minnesota Timberwolves</td>\n", " <td>Western</td>\n", " <td>Northwest</td>\n", " <td>Minneapolis</td>\n", " <td>MN</td>\n", " <td>Target Center</td>\n", " <td>19356</td>\n", " <td>44.979444</td>\n", " <td>-93.276111</td>\n", " <td>1989</td>\n", " <td>1989</td>\n", " <td>Tom Thibodeau</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>Oklahoma City Thunder</td>\n", " <td>Western</td>\n", " <td>Northwest</td>\n", " <td>Oklahoma City</td>\n", " <td>OK</td>\n", " <td>Chesapeake Energy Arena</td>\n", " <td>18203</td>\n", " <td>35.463333</td>\n", " <td>-97.515000</td>\n", " <td>1967</td>\n", " <td>1967</td>\n", " <td>Billy Donovan</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>Portland Trail Blazers</td>\n", " <td>Western</td>\n", " <td>Northwest</td>\n", " <td>Portland</td>\n", " <td>OR</td>\n", " <td>Moda Center</td>\n", " <td>19441</td>\n", " <td>45.531667</td>\n", " <td>-122.666667</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Terry Stotts</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>Utah Jazz</td>\n", " <td>Western</td>\n", " <td>Northwest</td>\n", " <td>Salt Lake City</td>\n", " <td>UT</td>\n", " <td>Vivint Smart Home Arena</td>\n", " <td>19911</td>\n", " <td>40.768333</td>\n", " <td>-111.901111</td>\n", " <td>1974</td>\n", " <td>1974</td>\n", " <td>Quin Snyder</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>Golden State Warriors</td>\n", " <td>Western</td>\n", " <td>Pacific</td>\n", " <td>Oakland</td>\n", " <td>CA</td>\n", " <td>Oracle Arena</td>\n", " <td>19596</td>\n", " <td>37.750278</td>\n", " <td>-122.203056</td>\n", " <td>1946</td>\n", " <td>1946</td>\n", " <td>Steve Kerr</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>Los Angeles Clippers</td>\n", " <td>Western</td>\n", " <td>Pacific</td>\n", " <td>Los Angeles</td>\n", " <td>CA</td>\n", " <td>Staples Center</td>\n", " <td>19060</td>\n", " <td>34.043056</td>\n", " <td>-118.267222</td>\n", " <td>1970</td>\n", " <td>1970</td>\n", " <td>Doc Rivers</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>Los Angeles Lakers</td>\n", " <td>Western</td>\n", " <td>Pacific</td>\n", " <td>Los Angeles</td>\n", " <td>CA</td>\n", " <td>Staples Center</td>\n", " <td>18997</td>\n", " <td>34.043056</td>\n", " <td>-118.267222</td>\n", " <td>1947</td>\n", " <td>1948</td>\n", " <td>Luke Walton</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>Phoenix Suns</td>\n", " <td>Western</td>\n", " <td>Pacific</td>\n", " <td>Phoenix</td>\n", " <td>AZ</td>\n", " <td>Talking Stick Resort Arena</td>\n", " <td>18055</td>\n", " <td>33.445833</td>\n", " <td>-112.071389</td>\n", " <td>1968</td>\n", " <td>1968</td>\n", " <td>Jay Triano</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>Sacramento Kings</td>\n", " <td>Western</td>\n", " <td>Pacific</td>\n", " <td>Sacramento</td>\n", " <td>CA</td>\n", " <td>Golden 1 Center</td>\n", " <td>17500</td>\n", " <td>38.649167</td>\n", " <td>-121.518056</td>\n", " <td>1923</td>\n", " <td>1948</td>\n", " <td>Dave Joerger</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>Dallas Mavericks</td>\n", " <td>Western</td>\n", " <td>Southwest</td>\n", " <td>Dallas</td>\n", " <td>TX</td>\n", " <td>American Airlines Center</td>\n", " <td>19200</td>\n", " <td>32.790556</td>\n", " <td>-96.810278</td>\n", " <td>1980</td>\n", " <td>1980</td>\n", " <td>Rick Carlisle</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>Houston Rockets</td>\n", " <td>Western</td>\n", " <td>Southwest</td>\n", " <td>Houston</td>\n", " <td>TX</td>\n", " <td>Toyota Center</td>\n", " <td>18055</td>\n", " <td>29.750833</td>\n", " <td>-95.362222</td>\n", " <td>1967</td>\n", " <td>1967</td>\n", " <td>Mike D'Antoni</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>Memphis Grizzlies</td>\n", " <td>Western</td>\n", " <td>Southwest</td>\n", " <td>Memphis</td>\n", " <td>TN</td>\n", " <td>FedExForum</td>\n", " <td>18119</td>\n", " <td>35.138333</td>\n", " <td>-90.050556</td>\n", " <td>1995</td>\n", " <td>1995</td>\n", " <td>J. B. Bickerstaff</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>New Orleans Pelicans</td>\n", " <td>Western</td>\n", " <td>Southwest</td>\n", " <td>New Orleans</td>\n", " <td>LA</td>\n", " <td>Smoothie King Center</td>\n", " <td>16867</td>\n", " <td>29.948889</td>\n", " <td>-90.081944</td>\n", " <td>2002</td>\n", " <td>2002</td>\n", " <td>Alvin Gentry</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>San Antonio Spurs</td>\n", " <td>Western</td>\n", " <td>Southwest</td>\n", " <td>San Antonio</td>\n", " <td>TX</td>\n", " <td>AT&T Center</td>\n", " <td>18418</td>\n", " <td>29.426944</td>\n", " <td>-98.437500</td>\n", " <td>1967</td>\n", " <td>1976</td>\n", " <td>Gregg Popovich</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ "0 Team Conference Division City Postal \\\n", "0 Boston Celtics Eastern Atlantic Boston MA \n", "1 Brooklyn Nets Eastern Atlantic New York City NY \n", "2 New York Knicks Eastern Atlantic New York City NY \n", "3 Philadelphia 76ers Eastern Atlantic Philadelphia PA \n", "4 Toronto Raptors Eastern Atlantic Toronto ON \n", "5 Chicago Bulls Eastern Central Chicago IL \n", "6 Cleveland Cavaliers Eastern Central Cleveland OH \n", "7 Detroit Pistons Eastern Central Detroit MI \n", "8 Indiana Pacers Eastern Central Indianapolis IN \n", "9 Milwaukee Bucks Eastern Central Milwaukee WI \n", "10 Atlanta Hawks Eastern Southeast Atlanta GA \n", "11 Charlotte Hornets Eastern Southeast Charlotte NC \n", "12 Miami Heat Eastern Southeast Miami FL \n", "13 Orlando Magic Eastern Southeast Orlando FL \n", "14 Washington Wizards Eastern Southeast Washington DC \n", "15 Denver Nuggets Western Northwest Denver CO \n", "16 Minnesota Timberwolves Western Northwest Minneapolis MN \n", "17 Oklahoma City Thunder Western Northwest Oklahoma City OK \n", "18 Portland Trail Blazers Western Northwest Portland OR \n", "19 Utah Jazz Western Northwest Salt Lake City UT \n", "20 Golden State Warriors Western Pacific Oakland CA \n", "21 Los Angeles Clippers Western Pacific Los Angeles CA \n", "22 Los Angeles Lakers Western Pacific Los Angeles CA \n", "23 Phoenix Suns Western Pacific Phoenix AZ \n", "24 Sacramento Kings Western Pacific Sacramento CA \n", "25 Dallas Mavericks Western Southwest Dallas TX \n", "26 Houston Rockets Western Southwest Houston TX \n", "27 Memphis Grizzlies Western Southwest Memphis TN \n", "28 New Orleans Pelicans Western Southwest New Orleans LA \n", "29 San Antonio Spurs Western Southwest San Antonio TX \n", "\n", "0 Arena Capacity Latitude Longitude Founded \\\n", "0 TD Garden 18624 42.366303 -71.062228 1946 \n", "1 Barclays Center 17732 40.682650 -73.974689 1967 \n", "2 Madison Square Garden 19812 40.750556 -73.993611 1946 \n", "3 Wells Fargo Center 21600 39.901111 -75.171944 1946 \n", "4 Air Canada Centre 19800 43.643333 -79.379167 1995 \n", "5 United Center 20917 41.880556 -87.674167 1966 \n", "6 Quicken Loans Arena 20562 41.496389 -81.688056 1970 \n", "7 Little Caesars Arena 20491 42.696944 -83.245556 1941 \n", "8 Bankers Life Fieldhouse 17923 39.763889 -86.155556 1967 \n", "9 Bradley Center 18717 43.043611 -87.916944 1968 \n", "10 Philips Arena 15711 33.757222 -84.396389 1946 \n", "11 Spectrum Center 19077 35.225000 -80.839167 1988 \n", "12 American Airlines Arena 19600 25.781389 -80.188056 1988 \n", "13 Amway Center 18846 28.539167 -81.383611 1989 \n", "14 Capital One Arena 20356 38.898056 -77.020833 1961 \n", "15 Pepsi Center 19520 39.748611 -105.007500 1967 \n", "16 Target Center 19356 44.979444 -93.276111 1989 \n", "17 Chesapeake Energy Arena 18203 35.463333 -97.515000 1967 \n", "18 Moda Center 19441 45.531667 -122.666667 1970 \n", "19 Vivint Smart Home Arena 19911 40.768333 -111.901111 1974 \n", "20 Oracle Arena 19596 37.750278 -122.203056 1946 \n", "21 Staples Center 19060 34.043056 -118.267222 1970 \n", "22 Staples Center 18997 34.043056 -118.267222 1947 \n", "23 Talking Stick Resort Arena 18055 33.445833 -112.071389 1968 \n", "24 Golden 1 Center 17500 38.649167 -121.518056 1923 \n", "25 American Airlines Center 19200 32.790556 -96.810278 1980 \n", "26 Toyota Center 18055 29.750833 -95.362222 1967 \n", "27 FedExForum 18119 35.138333 -90.050556 1995 \n", "28 Smoothie King Center 16867 29.948889 -90.081944 2002 \n", "29 AT&T Center 18418 29.426944 -98.437500 1967 \n", "\n", "0 Joined Head coach \n", "0 1946 Brad Stevens \n", "1 1976 Kenny Atkinson \n", "2 1946 Jeff Hornacek \n", "3 1949 Brett Brown \n", "4 1995 Dwane Casey \n", "5 1966 Fred Hoiberg \n", "6 1970 Tyronn Lue \n", "7 1948 Stan Van Gundy \n", "8 1976 Nate McMillan \n", "9 1968 Joe Prunty \n", "10 1949 Mike Budenholzer \n", "11 1988 Steve Clifford \n", "12 1988 Erik Spoelstra \n", "13 1989 Frank Vogel \n", "14 1961 Scott Brooks \n", "15 1976 Michael Malone \n", "16 1989 Tom Thibodeau \n", "17 1967 Billy Donovan \n", "18 1970 Terry Stotts \n", "19 1974 Quin Snyder \n", "20 1946 Steve Kerr \n", "21 1970 Doc Rivers \n", "22 1948 Luke Walton \n", "23 1968 Jay Triano \n", "24 1948 Dave Joerger \n", "25 1980 Rick Carlisle \n", "26 1967 Mike D'Antoni \n", "27 1995 J. B. Bickerstaff \n", "28 2002 Alvin Gentry \n", "29 1976 Gregg Popovich " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = wiki_teams_info(raw)\n", "df" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "OUTPUT_DIR = PARENT_DIR / 'data' / 'scraped'\n", "OUTPUT_DIR.mkdir(exist_ok=True, parents=True)\n", "csvfile = OUTPUT_DIR.joinpath('wiki-nba_team_info.csv')\n", "df.to_csv(csvfile, index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can use these HTML scraping tools and techniques in your own sports analytics projects. But we're not done yet.\n", "\n", "### A Map of NBA Arenas\n", "\n", "We haven't done anything useful with the NBA team data from Wikipedia. One nice thing we can do is to draw a map of NBA arena locations using the latitude and longitude information.\n", "\n", "There's a more practical use for this arena data. Most serious [strength of schedule](https://en.wikipedia.org/wiki/Strength_of_schedule) analysis in the NBA looks at road games, rest and distance traveled. In a future post, we'll see how to incorporate this geographic information to estimate travel distance between games.\n", "\n", "#### Another HTML Table to Scrape\n", "\n", "We are going to use Python's [Basemap package](https://basemaptutorial.readthedocs.io/en/latest/) to draw a map of North America with NBA arenas. We are also going to going to fill in the U.S. states having NBA arenas using a different color for each NBA Division. Sorry Toronto and Washington fans. Any coloring for Washington, D.C. wouldn't be visible anyway, and this example won't fill in the province of Ontario.\n", "\n", "In order to do this coloring, we need to use [shapefiles](https://basemaptutorial.readthedocs.io/en/latest/shapefile.html). These files contain information about the shapes of various geographic features (in this case, U.S. states). We will overlay these shapes on our map filled with the correct color. The shapefiles we will use come from the [U.S. Census Bureau](https://www.census.gov/geo/maps-data/data/prev_cartbndry_names.html).\n", "\n", "In order to use these particular shapefiles, we need to be able to move between state names and postal abbreviations. Our arena data has only the postal abbreviations, and the shapefiles use state names.\n", "\n", "There are plenty of ways to get this information (including typing it in to a Python program yourself). However, since this technical guide is about scraping HTML tables, we can use it as another opportunity to scrape a Wikipedia table.\n", "\n", "Let's scrape [Wikipedia's list of U.S. state abbreviations](https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations)." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "ABBR_URL = 'https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the same HTML table scraping function as before. In this case, we want to use a table class of `'sortable'` to get the right table." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "abbr_tables = pps.HTMLTables(ABBR_URL, headers=REQUEST_HEADERS, table_class='sortable')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(abbr_tables)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>0</th>\n", " <th>1</th>\n", " <th>2</th>\n", " <th>3</th>\n", " <th>4</th>\n", " <th>5</th>\n", " <th>6</th>\n", " <th>7</th>\n", " <th>8</th>\n", " <th>9</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>Codes: ISO ISO 3166 codes (2-letter, 3-l...</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>Name and status of region</td>\n", " <td>NaN</td>\n", " <td>ISO</td>\n", " <td>ANSI</td>\n", " <td>NaN</td>\n", " <td>USPS</td>\n", " <td>USCG</td>\n", " <td>GPO</td>\n", " <td>AP</td>\n", " <td>Other abbreviations</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>United States of America</td>\n", " <td>Federal state</td>\n", " <td>US USA 840</td>\n", " <td>US</td>\n", " <td>00</td>\n", " <td></td>\n", " <td></td>\n", " <td>U.S.</td>\n", " <td>U.S.</td>\n", " <td>U.S.A.</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>Alabama</td>\n", " <td>State</td>\n", " <td>US-AL</td>\n", " <td>AL</td>\n", " <td>01</td>\n", " <td>AL</td>\n", " <td>AL</td>\n", " <td>Ala.</td>\n", " <td>Ala.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>Alaska</td>\n", " <td>State</td>\n", " <td>US-AK</td>\n", " <td>AK</td>\n", " <td>02</td>\n", " <td>AK</td>\n", " <td>AK</td>\n", " <td>Alaska</td>\n", " <td>Alaska</td>\n", " <td>Alas.</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>Arizona</td>\n", " <td>State</td>\n", " <td>US-AZ</td>\n", " <td>AZ</td>\n", " <td>04</td>\n", " <td>AZ</td>\n", " <td>AZ</td>\n", " <td>Ariz.</td>\n", " <td>Ariz.</td>\n", " <td>Az.</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>Arkansas</td>\n", " <td>State</td>\n", " <td>US-AR</td>\n", " <td>AR</td>\n", " <td>05</td>\n", " <td>AR</td>\n", " <td>AR</td>\n", " <td>Ark.</td>\n", " <td>Ark.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>California</td>\n", " <td>State</td>\n", " <td>US-CA</td>\n", " <td>CA</td>\n", " <td>06</td>\n", " <td>CA</td>\n", " <td>CF</td>\n", " <td>Calif.</td>\n", " <td>Calif.</td>\n", " <td>Ca., Cal.</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>Colorado</td>\n", " <td>State</td>\n", " <td>US-CO</td>\n", " <td>CO</td>\n", " <td>08</td>\n", " <td>CO</td>\n", " <td>CL</td>\n", " <td>Colo.</td>\n", " <td>Colo.</td>\n", " <td>Col.</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>Connecticut</td>\n", " <td>State</td>\n", " <td>US-CT</td>\n", " <td>CT</td>\n", " <td>09</td>\n", " <td>CT</td>\n", " <td>CT</td>\n", " <td>Conn.</td>\n", " <td>Conn.</td>\n", " <td>Ct.</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>Delaware</td>\n", " <td>State</td>\n", " <td>US-DE</td>\n", " <td>DE</td>\n", " <td>10</td>\n", " <td>DE</td>\n", " <td>DL</td>\n", " <td>Del.</td>\n", " <td>Del.</td>\n", " <td>De.</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>District of Columbia</td>\n", " <td>Federal district</td>\n", " <td>US-DC</td>\n", " <td>DC</td>\n", " <td>11</td>\n", " <td>DC</td>\n", " <td>DC</td>\n", " <td>D.C.</td>\n", " <td>D.C.</td>\n", " <td>Wash. D.C.</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>Florida</td>\n", " <td>State</td>\n", " <td>US-FL</td>\n", " <td>FL</td>\n", " <td>12</td>\n", " <td>FL</td>\n", " <td>FL</td>\n", " <td>Fla.</td>\n", " <td>Fla.</td>\n", " <td>Fl., Flor.</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>Georgia</td>\n", " <td>State</td>\n", " <td>US-GA</td>\n", " <td>GA</td>\n", " <td>13</td>\n", " <td>GA</td>\n", " <td>GA</td>\n", " <td>Ga.</td>\n", " <td>Ga.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>Hawaii</td>\n", " <td>State</td>\n", " <td>US-HI</td>\n", " <td>HI</td>\n", " <td>15</td>\n", " <td>HI</td>\n", " <td>HA</td>\n", " <td>Hawaii</td>\n", " <td>Hawaii</td>\n", " <td>H.I.</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>Idaho</td>\n", " <td>State</td>\n", " <td>US-ID</td>\n", " <td>ID</td>\n", " <td>16</td>\n", " <td>ID</td>\n", " <td>ID</td>\n", " <td>Idaho</td>\n", " <td>Idaho</td>\n", " <td>Id., Ida.</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>Illinois</td>\n", " <td>State</td>\n", " <td>US-IL</td>\n", " <td>IL</td>\n", " <td>17</td>\n", " <td>IL</td>\n", " <td>IL</td>\n", " <td>Ill.</td>\n", " <td>Ill.</td>\n", " <td>Il., Ills., Ill's</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>Indiana</td>\n", " <td>State</td>\n", " <td>US-IN</td>\n", " <td>IN</td>\n", " <td>18</td>\n", " <td>IN</td>\n", " <td>IN</td>\n", " <td>Ind.</td>\n", " <td>Ind.</td>\n", " <td>In.</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>Iowa</td>\n", " <td>State</td>\n", " <td>US-IA</td>\n", " <td>IA</td>\n", " <td>19</td>\n", " <td>IA</td>\n", " <td>IA</td>\n", " <td>Iowa</td>\n", " <td>Iowa</td>\n", " <td>Ia., Ioa.</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>Kansas</td>\n", " <td>State</td>\n", " <td>US-KS</td>\n", " <td>KS</td>\n", " <td>20</td>\n", " <td>KS</td>\n", " <td>KA</td>\n", " <td>Kans.</td>\n", " <td>Kan.</td>\n", " <td>Ks., Ka.</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>Kentucky</td>\n", " <td>State (Commonwealth)</td>\n", " <td>US-KY</td>\n", " <td>KY</td>\n", " <td>21</td>\n", " <td>KY</td>\n", " <td>KY</td>\n", " <td>Ky.</td>\n", " <td>Ky.</td>\n", " <td>Ken., Kent.</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>Louisiana</td>\n", " <td>State</td>\n", " <td>US-LA</td>\n", " <td>LA</td>\n", " <td>22</td>\n", " <td>LA</td>\n", " <td>LA</td>\n", " <td>La.</td>\n", " <td>La.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>Maine</td>\n", " <td>State</td>\n", " <td>US-ME</td>\n", " <td>ME</td>\n", " <td>23</td>\n", " <td>ME</td>\n", " <td>ME</td>\n", " <td>Maine</td>\n", " <td>Maine</td>\n", " <td>Me.</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>Maryland</td>\n", " <td>State</td>\n", " <td>US-MD</td>\n", " <td>MD</td>\n", " <td>24</td>\n", " <td>MD</td>\n", " <td>MD</td>\n", " <td>Md.</td>\n", " <td>Md.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>Massachusetts</td>\n", " <td>State (Commonwealth)</td>\n", " <td>US-MA</td>\n", " <td>MA</td>\n", " <td>25</td>\n", " <td>MA</td>\n", " <td>MS</td>\n", " <td>Mass.</td>\n", " <td>Mass.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>Michigan</td>\n", " <td>State</td>\n", " <td>US-MI</td>\n", " <td>MI</td>\n", " <td>26</td>\n", " <td>MI</td>\n", " <td>MC</td>\n", " <td>Mich.</td>\n", " <td>Mich.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>Minnesota</td>\n", " <td>State</td>\n", " <td>US-MN</td>\n", " <td>MN</td>\n", " <td>27</td>\n", " <td>MN</td>\n", " <td>MN</td>\n", " <td>Minn.</td>\n", " <td>Minn.</td>\n", " <td>Mn.</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>Mississippi</td>\n", " <td>State</td>\n", " <td>US-MS</td>\n", " <td>MS</td>\n", " <td>28</td>\n", " <td>MS</td>\n", " <td>MI</td>\n", " <td>Miss.</td>\n", " <td>Miss.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>Missouri</td>\n", " <td>State</td>\n", " <td>US-MO</td>\n", " <td>MO</td>\n", " <td>29</td>\n", " <td>MO</td>\n", " <td>MO</td>\n", " <td>Mo.</td>\n", " <td>Mo.</td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>51</th>\n", " <td>Washington</td>\n", " <td>State</td>\n", " <td>US-WA</td>\n", " <td>WA</td>\n", " <td>53</td>\n", " <td>WA</td>\n", " <td>WN</td>\n", " <td>Wash.</td>\n", " <td>Wash.</td>\n", " <td>Wa., Wn.</td>\n", " </tr>\n", " <tr>\n", " <th>52</th>\n", " <td>West Virginia</td>\n", " <td>State</td>\n", " <td>US-WV</td>\n", " <td>WV</td>\n", " <td>54</td>\n", " <td>WV</td>\n", " <td>WV</td>\n", " <td>W. Va.</td>\n", " <td>W.Va.</td>\n", " <td>W.V., W. Virg.</td>\n", " </tr>\n", " <tr>\n", " <th>53</th>\n", " <td>Wisconsin</td>\n", " <td>State</td>\n", " <td>US-WI</td>\n", " <td>WI</td>\n", " <td>55</td>\n", " <td>WI</td>\n", " <td>WS</td>\n", " <td>Wis.</td>\n", " <td>Wis.</td>\n", " <td>Wi., Wisc.</td>\n", " </tr>\n", " <tr>\n", " <th>54</th>\n", " <td>Wyoming</td>\n", " <td>State</td>\n", " <td>US-WY</td>\n", " <td>WY</td>\n", " <td>56</td>\n", " <td>WY</td>\n", " <td>WY</td>\n", " <td>Wyo.</td>\n", " <td>Wyo.</td>\n", " <td>Wy.</td>\n", " </tr>\n", " <tr>\n", " <th>55</th>\n", " <td>American Samoa</td>\n", " <td>Insular area (Territory)</td>\n", " <td>AS ASM 016 US-AS</td>\n", " <td>AS</td>\n", " <td>60</td>\n", " <td>AS</td>\n", " <td>AS</td>\n", " <td>A.S.</td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>56</th>\n", " <td>Guam</td>\n", " <td>Insular area (Territory)</td>\n", " <td>GU GUM 316 US-GU</td>\n", " <td>GU</td>\n", " <td>66</td>\n", " <td>GU</td>\n", " <td>GU</td>\n", " <td>Guam</td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>57</th>\n", " <td>Northern Mariana Islands</td>\n", " <td>Insular area (Commonwealth)</td>\n", " <td>MP MNP 580 US-MP</td>\n", " <td>MP</td>\n", " <td>69</td>\n", " <td>MP</td>\n", " <td>CM</td>\n", " <td>M.P.</td>\n", " <td></td>\n", " <td>CNMI</td>\n", " </tr>\n", " <tr>\n", " <th>58</th>\n", " <td>Puerto Rico</td>\n", " <td>Insular area (Territory)</td>\n", " <td>PR PRI 630 US-PR</td>\n", " <td>PR</td>\n", " <td>72</td>\n", " <td>PR</td>\n", " <td>PR</td>\n", " <td>P.R.</td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>59</th>\n", " <td>U.S. Virgin Islands</td>\n", " <td>Insular area (Territory)</td>\n", " <td>VI VIR 850 US-VI</td>\n", " <td>VI</td>\n", " <td>78</td>\n", " <td>VI</td>\n", " <td>VI</td>\n", " <td>V.I.</td>\n", " <td></td>\n", " <td>U.S.V.I.</td>\n", " </tr>\n", " <tr>\n", " <th>60</th>\n", " <td>U.S. Minor Outlying Islands</td>\n", " <td>Insular areas</td>\n", " <td>UM UMI 581 US-UM</td>\n", " <td>UM</td>\n", " <td>74</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>61</th>\n", " <td>Baker Island</td>\n", " <td>island</td>\n", " <td>UM-81</td>\n", " <td></td>\n", " <td>81</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XB</td>\n", " </tr>\n", " <tr>\n", " <th>62</th>\n", " <td>Howland Island</td>\n", " <td>island</td>\n", " <td>UM-84</td>\n", " <td></td>\n", " <td>84</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XH</td>\n", " </tr>\n", " <tr>\n", " <th>63</th>\n", " <td>Jarvis Island</td>\n", " <td>island</td>\n", " <td>UM-86</td>\n", " <td></td>\n", " <td>86</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XQ</td>\n", " </tr>\n", " <tr>\n", " <th>64</th>\n", " <td>Johnston Atoll</td>\n", " <td>atoll</td>\n", " <td>UM-67</td>\n", " <td></td>\n", " <td>67</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XU</td>\n", " </tr>\n", " <tr>\n", " <th>65</th>\n", " <td>Kingman Reef</td>\n", " <td>atoll</td>\n", " <td>UM-89</td>\n", " <td></td>\n", " <td>89</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XM</td>\n", " </tr>\n", " <tr>\n", " <th>66</th>\n", " <td>Midway Islands</td>\n", " <td>atoll</td>\n", " <td>UM-71</td>\n", " <td></td>\n", " <td>71</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>QM</td>\n", " </tr>\n", " <tr>\n", " <th>67</th>\n", " <td>Navassa Island</td>\n", " <td>island</td>\n", " <td>UM-76</td>\n", " <td></td>\n", " <td>76</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XV</td>\n", " </tr>\n", " <tr>\n", " <th>68</th>\n", " <td>Palmyra Atoll</td>\n", " <td>atoll</td>\n", " <td>UM-95</td>\n", " <td></td>\n", " <td>95</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>XL</td>\n", " </tr>\n", " <tr>\n", " <th>69</th>\n", " <td>Wake Island</td>\n", " <td>atoll</td>\n", " <td>UM-79</td>\n", " <td></td>\n", " <td>79</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>QW</td>\n", " </tr>\n", " <tr>\n", " <th>70</th>\n", " <td>Micronesia</td>\n", " <td>Freely associated state</td>\n", " <td>FM FSM 583</td>\n", " <td>FM</td>\n", " <td>64</td>\n", " <td>FM</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>71</th>\n", " <td>Marshall Islands</td>\n", " <td>Freely associated state</td>\n", " <td>MH MHL 584</td>\n", " <td>MH</td>\n", " <td>68</td>\n", " <td>MH</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>72</th>\n", " <td>Palau</td>\n", " <td>Freely associated state</td>\n", " <td>PW PLW 585</td>\n", " <td>PW</td>\n", " <td>70</td>\n", " <td>PW</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>73</th>\n", " <td>U.S. Armed Forces – Americas</td>\n", " <td>US military mail code</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>AA</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>74</th>\n", " <td>U.S. Armed Forces – Europe</td>\n", " <td>US military mail code</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>AE</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>75</th>\n", " <td>U.S. Armed Forces – Pacific</td>\n", " <td>US military mail code</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>AP</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>76</th>\n", " <td>Northern Mariana Islands</td>\n", " <td>Obsolete postal code</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>CM</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>77</th>\n", " <td>Panama Canal Zone</td>\n", " <td>Obsolete postal code</td>\n", " <td>PZ PCZ 594</td>\n", " <td></td>\n", " <td></td>\n", " <td>CZ</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>78</th>\n", " <td>Nebraska</td>\n", " <td>Obsolete postal code</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td>NB</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>79</th>\n", " <td>Philippine Islands</td>\n", " <td>Obsolete postal code</td>\n", " <td>PH PHL 608</td>\n", " <td></td>\n", " <td></td>\n", " <td>PI</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " <tr>\n", " <th>80</th>\n", " <td>Trust Territory of the Pacific Islands</td>\n", " <td>Obsolete postal code</td>\n", " <td>PC PCI 582</td>\n", " <td></td>\n", " <td></td>\n", " <td>TT</td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " <td></td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>81 rows × 10 columns</p>\n", "</div>" ], "text/plain": [ " 0 \\\n", "0 Codes: ISO ISO 3166 codes (2-letter, 3-l... \n", "1 Name and status of region \n", "2 \n", "3 United States of America \n", "4 Alabama \n", "5 Alaska \n", "6 Arizona \n", "7 Arkansas \n", "8 California \n", "9 Colorado \n", "10 Connecticut \n", "11 Delaware \n", "12 District of Columbia \n", "13 Florida \n", "14 Georgia \n", "15 Hawaii \n", "16 Idaho \n", "17 Illinois \n", "18 Indiana \n", "19 Iowa \n", "20 Kansas \n", "21 Kentucky \n", "22 Louisiana \n", "23 Maine \n", "24 Maryland \n", "25 Massachusetts \n", "26 Michigan \n", "27 Minnesota \n", "28 Mississippi \n", "29 Missouri \n", ".. ... \n", "51 Washington \n", "52 West Virginia \n", "53 Wisconsin \n", "54 Wyoming \n", "55 American Samoa \n", "56 Guam \n", "57 Northern Mariana Islands \n", "58 Puerto Rico \n", "59 U.S. Virgin Islands \n", "60 U.S. Minor Outlying Islands \n", "61 Baker Island \n", "62 Howland Island \n", "63 Jarvis Island \n", "64 Johnston Atoll \n", "65 Kingman Reef \n", "66 Midway Islands \n", "67 Navassa Island \n", "68 Palmyra Atoll \n", "69 Wake Island \n", "70 Micronesia \n", "71 Marshall Islands \n", "72 Palau \n", "73 U.S. Armed Forces – Americas \n", "74 U.S. Armed Forces – Europe \n", "75 U.S. Armed Forces – Pacific \n", "76 Northern Mariana Islands \n", "77 Panama Canal Zone \n", "78 Nebraska \n", "79 Philippine Islands \n", "80 Trust Territory of the Pacific Islands \n", "\n", " 1 2 3 4 5 6 \\\n", "0 NaN NaN NaN NaN NaN NaN \n", "1 NaN ISO ANSI NaN USPS USCG \n", "2 \n", "3 Federal state US USA 840 US 00 \n", "4 State US-AL AL 01 AL AL \n", "5 State US-AK AK 02 AK AK \n", "6 State US-AZ AZ 04 AZ AZ \n", "7 State US-AR AR 05 AR AR \n", "8 State US-CA CA 06 CA CF \n", "9 State US-CO CO 08 CO CL \n", "10 State US-CT CT 09 CT CT \n", "11 State US-DE DE 10 DE DL \n", "12 Federal district US-DC DC 11 DC DC \n", "13 State US-FL FL 12 FL FL \n", "14 State US-GA GA 13 GA GA \n", "15 State US-HI HI 15 HI HA \n", "16 State US-ID ID 16 ID ID \n", "17 State US-IL IL 17 IL IL \n", "18 State US-IN IN 18 IN IN \n", "19 State US-IA IA 19 IA IA \n", "20 State US-KS KS 20 KS KA \n", "21 State (Commonwealth) US-KY KY 21 KY KY \n", "22 State US-LA LA 22 LA LA \n", "23 State US-ME ME 23 ME ME \n", "24 State US-MD MD 24 MD MD \n", "25 State (Commonwealth) US-MA MA 25 MA MS \n", "26 State US-MI MI 26 MI MC \n", "27 State US-MN MN 27 MN MN \n", "28 State US-MS MS 28 MS MI \n", "29 State US-MO MO 29 MO MO \n", ".. ... ... ... ... ... ... \n", "51 State US-WA WA 53 WA WN \n", "52 State US-WV WV 54 WV WV \n", "53 State US-WI WI 55 WI WS \n", "54 State US-WY WY 56 WY WY \n", "55 Insular area (Territory) AS ASM 016 US-AS AS 60 AS AS \n", "56 Insular area (Territory) GU GUM 316 US-GU GU 66 GU GU \n", "57 Insular area (Commonwealth) MP MNP 580 US-MP MP 69 MP CM \n", "58 Insular area (Territory) PR PRI 630 US-PR PR 72 PR PR \n", "59 Insular area (Territory) VI VIR 850 US-VI VI 78 VI VI \n", "60 Insular areas UM UMI 581 US-UM UM 74 \n", "61 island UM-81 81 \n", "62 island UM-84 84 \n", "63 island UM-86 86 \n", "64 atoll UM-67 67 \n", "65 atoll UM-89 89 \n", "66 atoll UM-71 71 \n", "67 island UM-76 76 \n", "68 atoll UM-95 95 \n", "69 atoll UM-79 79 \n", "70 Freely associated state FM FSM 583 FM 64 FM \n", "71 Freely associated state MH MHL 584 MH 68 MH \n", "72 Freely associated state PW PLW 585 PW 70 PW \n", "73 US military mail code AA \n", "74 US military mail code AE \n", "75 US military mail code AP \n", "76 Obsolete postal code CM \n", "77 Obsolete postal code PZ PCZ 594 CZ \n", "78 Obsolete postal code NB \n", "79 Obsolete postal code PH PHL 608 PI \n", "80 Obsolete postal code PC PCI 582 TT \n", "\n", " 7 8 9 \n", "0 NaN NaN NaN \n", "1 GPO AP Other abbreviations \n", "2 NaN NaN NaN \n", "3 U.S. U.S. U.S.A. \n", "4 Ala. Ala. \n", "5 Alaska Alaska Alas. \n", "6 Ariz. Ariz. Az. \n", "7 Ark. Ark. \n", "8 Calif. Calif. Ca., Cal. \n", "9 Colo. Colo. Col. \n", "10 Conn. Conn. Ct. \n", "11 Del. Del. De. \n", "12 D.C. D.C. Wash. D.C. \n", "13 Fla. Fla. Fl., Flor. \n", "14 Ga. Ga. \n", "15 Hawaii Hawaii H.I. \n", "16 Idaho Idaho Id., Ida. \n", "17 Ill. Ill. Il., Ills., Ill's \n", "18 Ind. Ind. In. \n", "19 Iowa Iowa Ia., Ioa. \n", "20 Kans. Kan. Ks., Ka. \n", "21 Ky. Ky. Ken., Kent. \n", "22 La. La. \n", "23 Maine Maine Me. \n", "24 Md. Md. \n", "25 Mass. Mass. \n", "26 Mich. Mich. \n", "27 Minn. Minn. Mn. \n", "28 Miss. Miss. \n", "29 Mo. Mo. \n", ".. ... ... ... \n", "51 Wash. Wash. Wa., Wn. \n", "52 W. Va. W.Va. W.V., W. Virg. \n", "53 Wis. Wis. Wi., Wisc. \n", "54 Wyo. Wyo. Wy. \n", "55 A.S. \n", "56 Guam \n", "57 M.P. CNMI \n", "58 P.R. \n", "59 V.I. U.S.V.I. \n", "60 \n", "61 XB \n", "62 XH \n", "63 XQ \n", "64 XU \n", "65 XM \n", "66 QM \n", "67 XV \n", "68 XL \n", "69 QW \n", "70 \n", "71 \n", "72 \n", "73 \n", "74 \n", "75 \n", "76 \n", "77 \n", "78 \n", "79 \n", "80 \n", "\n", "[81 rows x 10 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abbr_df = abbr_tables[0].to_df()\n", "abbr_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cleaning an Ugly Table\n", "\n", "This is a relatively ugly table. Notice that many of the cells are blank. One of the reasons I wanted to use this example is to show how this general web scraping framework works, even for ugly tables.\n", "\n", "In this case, we just want the name, status and USPS columns. We can also filter out any obsolete postal codes." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "def usps_abbrs(raw):\n", " df = raw.drop(raw.index[:4]).reset_index(drop=True)\n", " df = df.iloc[:, [0, 1, 5]]\n", " df.columns = ['Name', 'Status', 'USPS']\n", " df = df.loc[(df['USPS'] != '') & (~df['Status'].str.contains('Obsolete')), ['Name', 'Status', 'USPS']]\n", " return df.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Name</th>\n", " <th>Status</th>\n", " <th>USPS</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>42</th>\n", " <td>Tennessee</td>\n", " <td>State</td>\n", " <td>TN</td>\n", " </tr>\n", " <tr>\n", " <th>43</th>\n", " <td>Texas</td>\n", " <td>State</td>\n", " <td>TX</td>\n", " </tr>\n", " <tr>\n", " <th>44</th>\n", " <td>Utah</td>\n", " <td>State</td>\n", " <td>UT</td>\n", " </tr>\n", " <tr>\n", " <th>45</th>\n", " <td>Vermont</td>\n", " <td>State</td>\n", " <td>VT</td>\n", " </tr>\n", " <tr>\n", " <th>46</th>\n", " <td>Virginia</td>\n", " <td>State (Commonwealth)</td>\n", " <td>VA</td>\n", " </tr>\n", " <tr>\n", " <th>47</th>\n", " <td>Washington</td>\n", " <td>State</td>\n", " <td>WA</td>\n", " </tr>\n", " <tr>\n", " <th>48</th>\n", " <td>West Virginia</td>\n", " <td>State</td>\n", " <td>WV</td>\n", " </tr>\n", " <tr>\n", " <th>49</th>\n", " <td>Wisconsin</td>\n", " <td>State</td>\n", " <td>WI</td>\n", " </tr>\n", " <tr>\n", " <th>50</th>\n", " <td>Wyoming</td>\n", " <td>State</td>\n", " <td>WY</td>\n", " </tr>\n", " <tr>\n", " <th>51</th>\n", " <td>American Samoa</td>\n", " <td>Insular area (Territory)</td>\n", " <td>AS</td>\n", " </tr>\n", " <tr>\n", " <th>52</th>\n", " <td>Guam</td>\n", " <td>Insular area (Territory)</td>\n", " <td>GU</td>\n", " </tr>\n", " <tr>\n", " <th>53</th>\n", " <td>Northern Mariana Islands</td>\n", " <td>Insular area (Commonwealth)</td>\n", " <td>MP</td>\n", " </tr>\n", " <tr>\n", " <th>54</th>\n", " <td>Puerto Rico</td>\n", " <td>Insular area (Territory)</td>\n", " <td>PR</td>\n", " </tr>\n", " <tr>\n", " <th>55</th>\n", " <td>U.S. Virgin Islands</td>\n", " <td>Insular area (Territory)</td>\n", " <td>VI</td>\n", " </tr>\n", " <tr>\n", " <th>56</th>\n", " <td>Micronesia</td>\n", " <td>Freely associated state</td>\n", " <td>FM</td>\n", " </tr>\n", " <tr>\n", " <th>57</th>\n", " <td>Marshall Islands</td>\n", " <td>Freely associated state</td>\n", " <td>MH</td>\n", " </tr>\n", " <tr>\n", " <th>58</th>\n", " <td>Palau</td>\n", " <td>Freely associated state</td>\n", " <td>PW</td>\n", " </tr>\n", " <tr>\n", " <th>59</th>\n", " <td>U.S. Armed Forces – Americas</td>\n", " <td>US military mail code</td>\n", " <td>AA</td>\n", " </tr>\n", " <tr>\n", " <th>60</th>\n", " <td>U.S. Armed Forces – Europe</td>\n", " <td>US military mail code</td>\n", " <td>AE</td>\n", " </tr>\n", " <tr>\n", " <th>61</th>\n", " <td>U.S. Armed Forces – Pacific</td>\n", " <td>US military mail code</td>\n", " <td>AP</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Name Status USPS\n", "42 Tennessee State TN\n", "43 Texas State TX\n", "44 Utah State UT\n", "45 Vermont State VT\n", "46 Virginia State (Commonwealth) VA\n", "47 Washington State WA\n", "48 West Virginia State WV\n", "49 Wisconsin State WI\n", "50 Wyoming State WY\n", "51 American Samoa Insular area (Territory) AS\n", "52 Guam Insular area (Territory) GU\n", "53 Northern Mariana Islands Insular area (Commonwealth) MP\n", "54 Puerto Rico Insular area (Territory) PR\n", "55 U.S. Virgin Islands Insular area (Territory) VI\n", "56 Micronesia Freely associated state FM\n", "57 Marshall Islands Freely associated state MH\n", "58 Palau Freely associated state PW\n", "59 U.S. Armed Forces – Americas US military mail code AA\n", "60 U.S. Armed Forces – Europe US military mail code AE\n", "61 U.S. Armed Forces – Pacific US military mail code AP" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "usps_df = usps_abbrs(abbr_df)\n", "usps_df.tail(20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This simple table is just what we need. Now, we can build a function which will return the postal abbreviation given the state name." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "def state_abbr_mapper(usps_df):\n", " name_usps = usps_df[['Name', 'USPS']].set_index('Name').to_dict(orient='Index')\n", " def inner(name):\n", " return name_usps[name]['USPS']\n", " return inner" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "name2abbr = state_abbr_mapper(usps_df)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'AL'" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name2abbr('Alabama')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Take another look at what this function does. We used an inner function, which we return. This inner function \"remembers\" the `DataFrame` which was passed in to the outer function. It will be very easy to use this simple function as a wrapper to the `DataFrame` in our map-drawing code below.\n", "\n", "#### Drawing the Map\n", "\n", "Now we can start putting the pieces of the map together.\n", "\n", "First, we need a function to create a Basemap of the lower 48 U.S. states, along with portions of Canada and Mexico." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "def draw_basemap():\n", " \"\"\"Lambert Conformal map of lower 48 U.S. states with portions of Canada and Mexico.\"\"\"\n", " m = Basemap(\n", " llcrnrlon=-119,\n", " llcrnrlat=22,\n", " urcrnrlon=-64,\n", " urcrnrlat=49,\n", " projection='lcc',\n", " lat_1=32,\n", " lat_2=45,\n", " lon_0=-95,\n", " )\n", " m.fillcontinents(color='lightgray')\n", " return m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Reading the Shapefiles\n", "\n", "Next, we read in our shapefiles for the U.S. states." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "def read_shape_files(m):\n", " \"\"\" Get U.S. state shape boundaries.\"\"\"\n", " # Shapefiles downloaded from https://www.census.gov/geo/maps-data/data/prev_cartbndry_names.html\n", " MAP_DATA_DIR = PARENT_DIR / 'data'\n", " SHAPEFILE = MAP_DATA_DIR.joinpath('st99_d00')\n", " return m.readshapefile(\n", " shapefile=str(SHAPEFILE),\n", " name='states',\n", " drawbounds=True,\n", " color='white',\n", " linewidth=1,\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Making a Colormap for NBA Divisions\n", "\n", "Next, we create a colormap with a distinct color for each of the NBA Divisions." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "def make_colormap(divisions, colormap='Set3'):\n", " \"\"\"Create colormap with distinct value for each NBA division.\"\"\"\n", " cmap = plt.get_cmap(colormap, len(divisions)) \n", " return {div: cmap(divisions.index(div))[:3] for div in divisions}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to assign a color to each state that has an NBA arena. Of course, we can't use the U.S. state shapefiles for Toronto." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def get_state_colors(df):\n", " colors = make_colormap(list(df['Division'].str.strip().unique()))\n", " state_color = {}\n", " for abbr in list(df['Postal'].str.strip().unique()):\n", " div = list(df.loc[df['Postal'] == abbr, 'Division'].unique())\n", " assert len(div) == 1 # there can only be one Division applicable for teams from one U.S. state\n", " div = str(div[0])\n", " color = colors[div]\n", " state_color[abbr] = rgb2hex(color)\n", " return state_color" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we need to get the information from the shapefile for each U.S. state. This is where we need to use our function to look up the postal abbreviation given a U.S. state name from the shapefile." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "def get_state_polygons(m):\n", " state_polygons = {}\n", " for info, shape in zip(m.states_info, m.states):\n", " abbr = name2abbr(info['NAME'])\n", " if abbr in state_polygons:\n", " state_polygons[abbr].append(Polygon(shape, True))\n", " else:\n", " state_polygons[abbr] = [Polygon(shape, True)]\n", " return state_polygons" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Putting It All Together and Drawing the Map\n", "\n", "To draw the map, we need to perform the following steps:\n", "\n", "- Create the Basemap;\n", "- Read in the state shapefiles and assign the colors for the states that need to be filled in;\n", "- Fill in the states with the correct colors\n", "- Draw markers for the arenas using the latitude and longitude information\n", "- Create text labels for the arenas using the team names\n", "- Show the map\n", "\n", "As I mentioned above, Basemap may emit some warnings when you run this code. The warnings I get are harmless, and I've filtered them out using the `warnings` module. You can run this code without the `warnings` module if you want, and the map should still be fine." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "def draw_nba_map(df):\n", " \"\"\"Draw map with locations of NBA arenas.\"\"\"\n", " \n", " fig, ax = plt.subplots(figsize=(12,8))\n", " m = draw_basemap()\n", " state_shapes = read_shape_files(m)\n", " state_polygons = get_state_polygons(m)\n", " state_colors = get_state_colors(df)\n", " \n", " # Color in states (skip Ontario and Washington, DC)\n", " for abbr in state_colors:\n", " if abbr not in ['ON', 'DC']:\n", " ax.add_collection(PatchCollection(\n", " state_polygons[abbr],\n", " facecolor=state_colors[abbr],\n", " edgecolor='white',\n", " linewidth=1,\n", " zorder=2)\n", " )\n", "\n", " # Display markers and labels for arenas\n", " cities = set()\n", " for _, row in df.iterrows():\n", " city = row['City']\n", " x, y = m(row['Longitude'], row['Latitude'])\n", " m.plot(x=x, y=y, color='black', marker='o', markersize=5)\n", " team = row['Team'].split()[-1]\n", " \n", " # If a city has already been plotted, offset the text so labels don't overlap\n", " if city in cities:\n", " label_x = x+40000\n", " label_y = y+40000\n", " else:\n", " label_x = x+40000\n", " label_y = y-40000\n", " cities.add(city)\n", " plt.text(x=label_x, y=label_y, s=team, fontsize='smaller')\n", "\n", " # Remove the box surrounding the plot\n", " for spine in ax.spines.values():\n", " spine.set_visible(False)\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "image/png": "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cflwOIzNZuNHP/oRJ598MsuXL+fRRx/FYrFwxRVX8JOf/IS///3vWCwWrr781vTrmpvrufeB21nx3Z/y93/8iY82voskyVz7tZuYXtHzew3mPpnNViZNrMCT073xiWEY+Hw+Jk2axK233orD4eA73/kON9xwA6FQCMMwWLlyJf/4xz946623ePvtt3nsscf4yle+QkNDA3a7naeffhq/38+ll15KSUkJO3bs4N577+Xss8/miiuuYNeuXQiCwKpVq9KR3WAwiKIoiJKEWZL6JWTtskK+xUaexUap1UmxzYFFklG7Io8mUSJyUMR1XyRESzR0zFSBwaQxHOCzZVN4pWEXDeEAumEQSvTtmtgUCSIIAmVlZdTVJbuMyrJMVVUVp512Gi6Xi1gshsVi4bLLLmPp0qUsWbKEto4Odgc6sGsGTfv28fvf/5633noLSZbBMFi1ahX79+/nS1/6Evfeey8VFRVcf/31vPbaa7jd7qw6T/aXIW/lMBI/NMWmYHFZqKmqGe5NyUrcbjeGZkBoEE4cugFBFaPL9cIADEkAi4JglTFsCpJNwWF34LDZKcjNT6cppCJ6wGjx0gAwmwe/SCQlLvuSHy2KYlr8poSvLMtIkpSO/FoslnQEOPX3SAPmg0XxweK4J5Hc3Nw86G4OoigOqFJ5JKLrGhZrdnQMOmXBUqZNm0Nl1SZisQg2m42FCxeybNmybsutWbOGM844gx07dvDjH/84LSoOZtOmTXzwwQe89NJLeDxePli3l3//5x80NO7hxb89zc0rfkFubgHvf/AWv37gOSRJzsi179B9MputVEybwykLluLJsaLrenpwKooiY8aM4c9//nNaaDY3N2M2m3nooYfweDyUlJRw5ZVXpsX7888/T3l5Oc888wxPPvkkDz74IJdffjltbW28+eab7N69m5tvvpnTTz+dyspK3nvvvbSzjWEYaJqGzWYjoeu839rI/LxinIrpiF2+ZEEgx2wl12ylwGKnrKswSxAE4rqGJAhIgkhnLMIufwf7YmHaomH2R8PDVkiW4s+1lXxl0hw+UzYZvev88l5LPetaez8LE9WSfrsTncluaVarlQkTJnDWWWeRm5vLU089xZ133okgCMybNw+AktJS3q2tZruvHTUcxrJ+LfPmzTsQTe86H/7ud7/jxhtvpKKiAoC7776bFStWkEgkuOWWW5g6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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x10f0b7f98>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", " draw_nba_map(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This simple example only scratches the surface of what you can do with geographical data in Python." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:sports_py36]", "language": "python", "name": "conda-env-sports_py36-py" }, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }