{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Merge/Join Tables (VLOOKUP)\n", "\n", "The _merge_ function mimics the functionality of JOIN in SQL queries and replaces the VLOOKUP functionality in Excel. It is one of the most powerful and useful functions for dataframes in Pandas. The main idea is to:\n", "- **join** two (or more) dataframe table using similar keys in each of the tables. \n", "- **enrich** tables with loopup data \n", "- **validate** the match values of the key columns in the tables\n", "\n", "[![Open In Studio Lab](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/aiola-lab/from-excel-to-pandas/blob/master/notebooks/03.03_merge.ipynb)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading lookup data\n", "\n", "For this example, we will take one of the common lookup data, zip code. The loopup is not trivial as there are a few tousands (more than 33,000 as you can see below) of values and a simple Excel file will struggle to do it efficently and quickly. \n", "\n", "We will start with loading the loopup data from [Simple Maps](https://simplemaps.com/data/us-zips), which I've downloaded to a public S3 bucket." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "url = 'https://mlguy-public.s3-eu-west-1.amazonaws.com/excel2pandas/chapter3/simplemaps_uszips_basicv1/uszips.csv'\n", "\n", "import requests\n", "from io import StringIO\n", "\n", "response = requests.get(url)\n", "response" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The CSV file is read through a URL and therefore, we need to convert the text of the response to a simple string as we get when we read a local file. For that we will use the StringIO functionality as follows:" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ziplatlngcitystate_idstate_namezctaparent_zctapopulationdensitycounty_fipscounty_namecounty_weightscounty_names_allcounty_fips_allimprecisemilitarytimezone
060118.18004-66.75218AdjuntasPRPuerto RicoTrueNaN17242111.472001Adjuntas{'72001':99.43,'72141':0.57}Adjuntas|Utuado72001|72141FalseFalseAmerica/Puerto_Rico
160218.36073-67.17517AguadaPRPuerto RicoTrueNaN38442523.572003Aguada{'72003':100}Aguada72003FalseFalseAmerica/Puerto_Rico
260318.45439-67.12202AguadillaPRPuerto RicoTrueNaN48814667.972005Aguadilla{'72005':100}Aguadilla72005FalseFalseAmerica/Puerto_Rico
360618.16724-66.93828MaricaoPRPuerto RicoTrueNaN643760.472093Maricao{'72093':94.88,'72121':1.35,'72153':3.78}Maricao|Yauco|Sabana Grande72093|72153|72121FalseFalseAmerica/Puerto_Rico
461018.29032-67.12243AnascoPRPuerto RicoTrueNaN27073312.072011Añasco{'72003':0.55,'72011':99.45}Añasco|Aguada72011|72003FalseFalseAmerica/Puerto_Rico
.........................................................
330929992355.97796-130.03671HyderAKAlaskaTrueNaN152.12198Prince of Wales-Hyder{'02198':100}Prince of Wales-Hyder02198FalseFalseAmerica/Sitka
330939992555.55767-132.97627KlawockAKAlaskaTrueNaN9275.72198Prince of Wales-Hyder{'02198':100}Prince of Wales-Hyder02198FalseFalseAmerica/Sitka
330949992655.12617-131.48928MetlakatlaAKAlaskaTrueNaN16354.22198Prince of Wales-Hyder{'02198':100}Prince of Wales-Hyder02198FalseFalseAmerica/Metlakatla
330959992756.25100-133.37571Point BakerAKAlaskaTrueNaN380.22198Prince of Wales-Hyder{'02198':100}Prince of Wales-Hyder02198FalseFalseAmerica/Sitka
330969992956.36950-131.93648WrangellAKAlaskaTrueNaN24840.42275Wrangell{'02275':100}Wrangell02275FalseFalseAmerica/Sitka
\n", "

33097 rows × 18 columns

\n", "
" ], "text/plain": [ " zip lat lng city state_id state_name zcta \\\n", "0 601 18.18004 -66.75218 Adjuntas PR Puerto Rico True \n", "1 602 18.36073 -67.17517 Aguada PR Puerto Rico True \n", "2 603 18.45439 -67.12202 Aguadilla PR Puerto Rico True \n", "3 606 18.16724 -66.93828 Maricao PR Puerto Rico True \n", "4 610 18.29032 -67.12243 Anasco PR Puerto Rico True \n", "... ... ... ... ... ... ... ... \n", "33092 99923 55.97796 -130.03671 Hyder AK Alaska True \n", "33093 99925 55.55767 -132.97627 Klawock AK Alaska True \n", "33094 99926 55.12617 -131.48928 Metlakatla AK Alaska True \n", "33095 99927 56.25100 -133.37571 Point Baker AK Alaska True \n", "33096 99929 56.36950 -131.93648 Wrangell AK Alaska True \n", "\n", " parent_zcta population density county_fips county_name \\\n", "0 NaN 17242 111.4 72001 Adjuntas \n", "1 NaN 38442 523.5 72003 Aguada \n", "2 NaN 48814 667.9 72005 Aguadilla \n", "3 NaN 6437 60.4 72093 Maricao \n", "4 NaN 27073 312.0 72011 Añasco \n", "... ... ... ... ... ... \n", "33092 NaN 15 2.1 2198 Prince of Wales-Hyder \n", "33093 NaN 927 5.7 2198 Prince of Wales-Hyder \n", "33094 NaN 1635 4.2 2198 Prince of Wales-Hyder \n", "33095 NaN 38 0.2 2198 Prince of Wales-Hyder \n", "33096 NaN 2484 0.4 2275 Wrangell \n", "\n", " county_weights county_names_all \\\n", "0 {'72001':99.43,'72141':0.57} Adjuntas|Utuado \n", "1 {'72003':100} Aguada \n", "2 {'72005':100} Aguadilla \n", "3 {'72093':94.88,'72121':1.35,'72153':3.78} Maricao|Yauco|Sabana Grande \n", "4 {'72003':0.55,'72011':99.45} Añasco|Aguada \n", "... ... ... \n", "33092 {'02198':100} Prince of Wales-Hyder \n", "33093 {'02198':100} Prince of Wales-Hyder \n", "33094 {'02198':100} Prince of Wales-Hyder \n", "33095 {'02198':100} Prince of Wales-Hyder \n", "33096 {'02275':100} Wrangell \n", "\n", " county_fips_all imprecise military timezone \n", "0 72001|72141 False False America/Puerto_Rico \n", "1 72003 False False America/Puerto_Rico \n", "2 72005 False False America/Puerto_Rico \n", "3 72093|72153|72121 False False America/Puerto_Rico \n", "4 72011|72003 False False America/Puerto_Rico \n", "... ... ... ... ... \n", "33092 02198 False False America/Sitka \n", "33093 02198 False False America/Sitka \n", "33094 02198 False False America/Metlakatla \n", "33095 02198 False False America/Sitka \n", "33096 02275 False False America/Sitka \n", "\n", "[33097 rows x 18 columns]" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zip_lookup = (\n", " pd\n", " .read_csv(\n", " StringIO(\n", " response.text\n", " )\n", " )\n", ")\n", "\n", "zip_lookup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lookup Data Exploration\n", "\n", "The table above shows us the type of data that we can get from enrichment based on the zip code, including city, state, latitude, longitude, population count and density. \n", "\n", "We can explore the values that we have in this table, before we start to use it for enrichment." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Counting Values\n", "\n", "The simplest aggregation function for each group is the _size_. How many zip codes do we have in each state?" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "state_name\n", "Alabama 642\n", "Alaska 238\n", "Arizona 405\n", "Arkansas 591\n", "California 1761\n", "Colorado 525\n", "Connecticut 282\n", "Delaware 67\n", "District of Columbia 52\n", "Florida 981\n", "Georgia 735\n", "Hawaii 94\n", "Idaho 277\n", "Illinois 1383\n", "Indiana 775\n", "Iowa 934\n", "Kansas 697\n", "Kentucky 767\n", "Louisiana 515\n", "Maine 432\n", "Maryland 468\n", "Massachusetts 537\n", "Michigan 986\n", "Minnesota 884\n", "Mississippi 423\n", "Missouri 1022\n", "Montana 361\n", "Nebraska 581\n", "Nevada 175\n", "New Hampshire 248\n", "New Jersey 595\n", "New Mexico 368\n", "New York 1794\n", "North Carolina 808\n", "North Dakota 383\n", "Ohio 1195\n", "Oklahoma 648\n", "Oregon 417\n", "Pennsylvania 1795\n", "Puerto Rico 131\n", "Rhode Island 77\n", "South Carolina 424\n", "South Dakota 371\n", "Tennessee 628\n", "Texas 1935\n", "Utah 287\n", "Vermont 255\n", "Virginia 896\n", "Washington 596\n", "West Virginia 706\n", "Wisconsin 772\n", "Wyoming 178\n", "dtype: int64" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " zip_lookup\n", " .groupby('state_name')\n", " .size()\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sorting Values\n", "\n", "To sort the values is also simple with _sort_value()_ function, and see the population size of each state (based on the zip code lookup data):\n", "* Start with the zip lookup data above\n", "* Group the row by _state\\_name_ and take only the _population_ values\n", "* Sum up all the population values for each zip code area in the state Group\n", "* Sort the states by the accumulated population value in descending order" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "state_name\n", "California 39140219\n", "Texas 27884135\n", "Florida 20594164\n", "New York 19618323\n", "Illinois 12821487\n", "Pennsylvania 12790950\n", "Ohio 11639989\n", "Georgia 10297534\n", "North Carolina 10155624\n", "Michigan 9957465\n", "New Jersey 8881845\n", "Virginia 8414042\n", "Washington 7280023\n", "Arizona 6949259\n", "Massachusetts 6830133\n", "Tennessee 6644470\n", "Indiana 6637220\n", "Missouri 6090358\n", "Maryland 6003435\n", "Wisconsin 5777892\n", "Colorado 5531233\n", "Minnesota 5527473\n", "South Carolina 4955925\n", "Alabama 4864630\n", "Louisiana 4663243\n", "Kentucky 4446667\n", "Oregon 4081732\n", "Oklahoma 3918473\n", "Connecticut 3581504\n", "Puerto Rico 3384779\n", "Iowa 3133061\n", "Utah 3043806\n", "Arkansas 2990472\n", "Mississippi 2988710\n", "Nevada 2923171\n", "Kansas 2908448\n", "New Mexico 2089570\n", "Nebraska 1904901\n", "West Virginia 1828786\n", "Idaho 1687214\n", "Hawaii 1422019\n", "New Hampshire 1343673\n", "Maine 1332721\n", "Rhode Island 1056611\n", "Montana 1042359\n", "Delaware 949495\n", "South Dakota 864012\n", "North Dakota 751250\n", "Alaska 737979\n", "District of Columbia 684390\n", "Vermont 624977\n", "Wyoming 582091\n", "Name: population, dtype: int64" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "us_population_distribution = (\n", " zip_lookup\n", " .groupby('state_name')['population']\n", " .sum()\n", " .sort_values(ascending=False)\n", ")\n", "\n", "us_population_distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualization of the data\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-01-05T17:01:59.007518\n image/svg+xml\n \n \n Matplotlib v3.3.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "(\n", " us_population_distribution\n", " .plot\n", " .bar(figsize=(13,5))\n", ");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading the main data\n", "\n", "We will take the data about brewries in the US that we used in one of the previous lessson, and enrich it with the data from the zip codes table. We will load it from the local file after we retried the data from the API before. " ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [], "source": [ "breweries_data= pd.read_csv('../data/us_breweries.csv')" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamebrewery_typestreetaddress_2address_3citystatecounty_provincepostal_codecountrylongitudelatitudephonewebsite_urlupdated_atcreated_at
02Avondale Brewing Comicro201 41st St SNaNNaNBirminghamAlabamaNaN35222-1932United States-86.77432233.5245212.057775e+09http://www.avondalebrewing.com2018-08-23T23:19:57.825Z2018-07-24T01:32:47.255Z
144Trim Tab Brewingmicro2721 5th Ave SNaNNaNBirminghamAlabamaNaN35233-3401United States-86.79140033.5128492.057031e+09http://www.trimtabbrewing.com2018-08-23T23:20:31.423Z2018-07-24T01:32:47.815Z
246Yellowhammer Brewerymicro2600 Clinton Ave WNaNNaNHuntsvilleAlabamaNaN35805-3046United States-86.59320134.7277522.569756e+09http://www.yellowhammerbrewery.com2018-08-23T23:20:33.102Z2018-07-24T01:32:47.838Z
355Bearpaw River Brewing Comicro4605 E Palmer Wasilla HwyNaNNaNWasillaAlaskaNaN99654-7679United States-149.41271061.575269NaNhttp://bearpawriverbrewing.com2018-08-23T23:20:40.743Z2018-07-24T01:32:47.967Z
476King Street Brewing Comicro9050 King StreetNaNNaNAnchorageAlaskaNaN99515United States-149.87907661.1384899.073365e+09http://www.kingstreetbrewing.com2018-08-23T23:20:57.179Z2018-07-24T01:32:48.301Z
\n", "
" ], "text/plain": [ " id name brewery_type street \\\n", "0 2 Avondale Brewing Co micro 201 41st St S \n", "1 44 Trim Tab Brewing micro 2721 5th Ave S \n", "2 46 Yellowhammer Brewery micro 2600 Clinton Ave W \n", "3 55 Bearpaw River Brewing Co micro 4605 E Palmer Wasilla Hwy \n", "4 76 King Street Brewing Co micro 9050 King Street \n", "\n", " address_2 address_3 city state county_province postal_code \\\n", "0 NaN NaN Birmingham Alabama NaN 35222-1932 \n", "1 NaN NaN Birmingham Alabama NaN 35233-3401 \n", "2 NaN NaN Huntsville Alabama NaN 35805-3046 \n", "3 NaN NaN Wasilla Alaska NaN 99654-7679 \n", "4 NaN NaN Anchorage Alaska NaN 99515 \n", "\n", " country longitude latitude phone \\\n", "0 United States -86.774322 33.524521 2.057775e+09 \n", "1 United States -86.791400 33.512849 2.057031e+09 \n", "2 United States -86.593201 34.727752 2.569756e+09 \n", "3 United States -149.412710 61.575269 NaN \n", "4 United States -149.879076 61.138489 9.073365e+09 \n", "\n", " website_url updated_at \\\n", "0 http://www.avondalebrewing.com 2018-08-23T23:19:57.825Z \n", "1 http://www.trimtabbrewing.com 2018-08-23T23:20:31.423Z \n", "2 http://www.yellowhammerbrewery.com 2018-08-23T23:20:33.102Z \n", "3 http://bearpawriverbrewing.com 2018-08-23T23:20:40.743Z \n", "4 http://www.kingstreetbrewing.com 2018-08-23T23:20:57.179Z \n", "\n", " created_at \n", "0 2018-07-24T01:32:47.255Z \n", "1 2018-07-24T01:32:47.815Z \n", "2 2018-07-24T01:32:47.838Z \n", "3 2018-07-24T01:32:47.967Z \n", "4 2018-07-24T01:32:48.301Z " ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "breweries_data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the postal code is sometimes in the longer format (for example, _35222-1932_) compare to the zip codes that we have in our lookup table (for example, 35222). We will convert them to the shorter format by taking the first 5 characters ([:5]) of the string of the postal_code column." ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "breweries_data_with_zip = (\n", " breweries_data\n", " .assign(zip_code = lambda x : x.postal_code.str[:5])\n", ")" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamebrewery_typestreetaddress_2address_3citystatecounty_provincepostal_codecountrylongitudelatitudephonewebsite_urlupdated_atcreated_atzip_code
02Avondale Brewing Comicro201 41st St SNaNNaNBirminghamAlabamaNaN35222-1932United States-86.77432233.5245212.057775e+09http://www.avondalebrewing.com2018-08-23T23:19:57.825Z2018-07-24T01:32:47.255Z35222
144Trim Tab Brewingmicro2721 5th Ave SNaNNaNBirminghamAlabamaNaN35233-3401United States-86.79140033.5128492.057031e+09http://www.trimtabbrewing.com2018-08-23T23:20:31.423Z2018-07-24T01:32:47.815Z35233
246Yellowhammer Brewerymicro2600 Clinton Ave WNaNNaNHuntsvilleAlabamaNaN35805-3046United States-86.59320134.7277522.569756e+09http://www.yellowhammerbrewery.com2018-08-23T23:20:33.102Z2018-07-24T01:32:47.838Z35805
355Bearpaw River Brewing Comicro4605 E Palmer Wasilla HwyNaNNaNWasillaAlaskaNaN99654-7679United States-149.41271061.575269NaNhttp://bearpawriverbrewing.com2018-08-23T23:20:40.743Z2018-07-24T01:32:47.967Z99654
476King Street Brewing Comicro9050 King StreetNaNNaNAnchorageAlaskaNaN99515United States-149.87907661.1384899.073365e+09http://www.kingstreetbrewing.com2018-08-23T23:20:57.179Z2018-07-24T01:32:48.301Z99515
\n", "
" ], "text/plain": [ " id name brewery_type street \\\n", "0 2 Avondale Brewing Co micro 201 41st St S \n", "1 44 Trim Tab Brewing micro 2721 5th Ave S \n", "2 46 Yellowhammer Brewery micro 2600 Clinton Ave W \n", "3 55 Bearpaw River Brewing Co micro 4605 E Palmer Wasilla Hwy \n", "4 76 King Street Brewing Co micro 9050 King Street \n", "\n", " address_2 address_3 city state county_province postal_code \\\n", "0 NaN NaN Birmingham Alabama NaN 35222-1932 \n", "1 NaN NaN Birmingham Alabama NaN 35233-3401 \n", "2 NaN NaN Huntsville Alabama NaN 35805-3046 \n", "3 NaN NaN Wasilla Alaska NaN 99654-7679 \n", "4 NaN NaN Anchorage Alaska NaN 99515 \n", "\n", " country longitude latitude phone \\\n", "0 United States -86.774322 33.524521 2.057775e+09 \n", "1 United States -86.791400 33.512849 2.057031e+09 \n", "2 United States -86.593201 34.727752 2.569756e+09 \n", "3 United States -149.412710 61.575269 NaN \n", "4 United States -149.879076 61.138489 9.073365e+09 \n", "\n", " website_url updated_at \\\n", "0 http://www.avondalebrewing.com 2018-08-23T23:19:57.825Z \n", "1 http://www.trimtabbrewing.com 2018-08-23T23:20:31.423Z \n", "2 http://www.yellowhammerbrewery.com 2018-08-23T23:20:33.102Z \n", "3 http://bearpawriverbrewing.com 2018-08-23T23:20:40.743Z \n", "4 http://www.kingstreetbrewing.com 2018-08-23T23:20:57.179Z \n", "\n", " created_at zip_code \n", "0 2018-07-24T01:32:47.255Z 35222 \n", "1 2018-07-24T01:32:47.815Z 35233 \n", "2 2018-07-24T01:32:47.838Z 35805 \n", "3 2018-07-24T01:32:47.967Z 99654 \n", "4 2018-07-24T01:32:48.301Z 99515 " ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "breweries_data_with_zip.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Joining the tables\n", "\n", "The joining of the table is based on a joined key. In this case we want to use the 5-digits zip code as the lookup or join key. In the previous step with shorten the longer zip codes to the shorter 5 digits format, and now we will make sure that the lookup table also have it in the same format. \n", "* Start with the zip loopup table\n", "* Add a column zip_code that is based on the value of the column _zip_\n", "* Convert the numeric value into string (_astype(str)_), \n", "* Pad the string with zeros when the number is shorter than 5 digits (_zfill(5)_)." ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [], "source": [ "zip_lookup_as_string = (\n", " zip_lookup\n", " .assign(\n", " zip_code = lambda x : x.zip\n", " .astype(str)\n", " .str\n", " .zfill(5)\n", " )\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The join itself is simple. \n", "* Start with the breweries table that you want to enrich \n", "* Join using _merge_ with the second zip loopup table \n", "* Define the key column with the same name (zip_code), and we use it using the _on_ argument\n", "* Lastly, we want to have all breweries, even if we don't find the zip code in the lookup table. Therefore, we are using _LEFT_ join using the _how_ argument. " ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [], "source": [ "enriched_breweries_data = (\n", " breweries_data_with_zip\n", " .merge(\n", " zip_lookup_as_string, \n", " on='zip_code', \n", " how='left'\n", " )\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have now many more columns as all the columns of both tables are joined to the enriched table. We will ask the Jupyter notebook to show us all the columns by removing the default maximum number of columns to display. \n", "\n", "In the table below we can see all the columns. If the same column name is found in both tables and it wasn't the column that was used for the join or merge, the column of first (\"left\") table will be appended with x (city_x, for example), and the column of the second (\"right\") table will be appended with y (city_y, for example)." ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamebrewery_typestreetaddress_2address_3city_xstatecounty_provincepostal_codecountrylongitudelatitudephonewebsite_urlupdated_atcreated_atzip_codeziplatlngcity_ystate_idstate_namezctaparent_zctapopulationdensitycounty_fipscounty_namecounty_weightscounty_names_allcounty_fips_allimprecisemilitarytimezone
02Avondale Brewing Comicro201 41st St SNaNNaNBirminghamAlabamaNaN35222-1932United States-86.77432233.5245212.057775e+09http://www.avondalebrewing.com2018-08-23T23:19:57.825Z2018-07-24T01:32:47.255Z3522235222.033.52409-86.77025BirminghamALAlabamaTrueNaN9033.0815.81073.0Jefferson{'01073':100}Jefferson01073FalseFalseAmerica/Chicago
144Trim Tab Brewingmicro2721 5th Ave SNaNNaNBirminghamAlabamaNaN35233-3401United States-86.79140033.5128492.057031e+09http://www.trimtabbrewing.com2018-08-23T23:20:31.423Z2018-07-24T01:32:47.815Z3523335233.033.50876-86.80194BirminghamALAlabamaTrueNaN1715.0300.71073.0Jefferson{'01073':100}Jefferson01073FalseFalseAmerica/Chicago
246Yellowhammer Brewerymicro2600 Clinton Ave WNaNNaNHuntsvilleAlabamaNaN35805-3046United States-86.59320134.7277522.569756e+09http://www.yellowhammerbrewery.com2018-08-23T23:20:33.102Z2018-07-24T01:32:47.838Z3580535805.034.70858-86.62125HuntsvilleALAlabamaTrueNaN21200.0949.71089.0Madison{'01089':100}Madison01089FalseFalseAmerica/Chicago
355Bearpaw River Brewing Comicro4605 E Palmer Wasilla HwyNaNNaNWasillaAlaskaNaN99654-7679United States-149.41271061.575269NaNhttp://bearpawriverbrewing.com2018-08-23T23:20:40.743Z2018-07-24T01:32:47.967Z9965499654.061.45483-149.90045WasillaAKAlaskaTrueNaN62135.040.42170.0Matanuska-Susitna{'02170':100}Matanuska-Susitna02170FalseFalseAmerica/Anchorage
476King Street Brewing Comicro9050 King StreetNaNNaNAnchorageAlaskaNaN99515United States-149.87907661.1384899.073365e+09http://www.kingstreetbrewing.com2018-08-23T23:20:57.179Z2018-07-24T01:32:48.301Z9951599515.061.11739-149.88889AnchorageAKAlaskaTrueNaN23402.0818.82020.0Anchorage{'02020':100}Anchorage02020FalseFalseAmerica/Anchorage
...............................................................................................................
7445345Barrel Brothers Brewing Companymicro399 Business Park Ct Ste 506NaNNaNWindsorCaliforniaNaN95492-6652United StatesNaNNaN7.076969e+09http://www.barrelbrothersbrewing.com2018-08-11T21:35:55.480Z2018-07-24T01:32:52.148Z9549295492.038.53034-122.81716WindsorCACaliforniaTrueNaN29920.0579.06097.0Sonoma{'06097':100}Sonoma06097FalseFalseAmerica/Los_Angeles
7446352Bay Bridge Brewing Comicro688 Marsat Ct Ste BNaNNaNChula VistaCaliforniaNaN91911-4697United StatesNaNNaN6.199347e+09http://www.baybridgebrewing.com2018-08-11T21:35:55.704Z2018-07-24T01:32:52.238Z9191191911.032.60738-117.05405Chula VistaCACaliforniaTrueNaN85365.02736.26073.0San Diego{'06073':100}San Diego06073FalseFalseAmerica/Los_Angeles
7447367Benchmark Brewing Comicro6190 Fairmount Ave Ste GNaNNaNSan DiegoCaliforniaNaN92120-3428United StatesNaNNaN6.197953e+09http://www.benchmarkbrewing.com2018-08-11T21:35:56.157Z2018-07-24T01:32:52.420Z9212092120.032.79468-117.07114San DiegoCACaliforniaTrueNaN29142.01501.76073.0San Diego{'06073':100}San Diego06073FalseFalseAmerica/Los_Angeles
7448477Chino Valley Brewerymicro1609 E. Grove Ave, Unit 109NaNNaNOntarioCaliforniaNaN91761-5786United StatesNaNNaN9.512917e+09http://www.chinovalleybrewery.com2018-08-11T21:35:59.331Z2018-07-24T01:32:53.774Z9176191761.034.03459-117.59212OntarioCACaliforniaTrueNaN61124.0754.06071.0San Bernardino{'06071':100}San Bernardino06071FalseFalseAmerica/Los_Angeles
7449509Crooked Goat Brewingmicro120 Morris St Ste 120NaNNaNSebastopolCaliforniaNaN95472-3867United StatesNaNNaN7.078274e+09http://www.crookedgoatbrewing.com2018-08-11T21:36:00.652Z2018-07-24T01:32:54.205Z9547295472.038.39817-122.86574SebastopolCACaliforniaTrueNaN30762.0157.86097.0Sonoma{'06097':100}Sonoma06097FalseFalseAmerica/Los_Angeles
\n", "

7450 rows × 36 columns

\n", "
" ], "text/plain": [ " id name brewery_type \\\n", "0 2 Avondale Brewing Co micro \n", "1 44 Trim Tab Brewing micro \n", "2 46 Yellowhammer Brewery micro \n", "3 55 Bearpaw River Brewing Co micro \n", "4 76 King Street Brewing Co micro \n", "... ... ... ... \n", "7445 345 Barrel Brothers Brewing Company micro \n", "7446 352 Bay Bridge Brewing Co micro \n", "7447 367 Benchmark Brewing Co micro \n", "7448 477 Chino Valley Brewery micro \n", "7449 509 Crooked Goat Brewing micro \n", "\n", " street address_2 address_3 city_x \\\n", "0 201 41st St S NaN NaN Birmingham \n", "1 2721 5th Ave S NaN NaN Birmingham \n", "2 2600 Clinton Ave W NaN NaN Huntsville \n", "3 4605 E Palmer Wasilla Hwy NaN NaN Wasilla \n", "4 9050 King Street NaN NaN Anchorage \n", "... ... ... ... ... \n", "7445 399 Business Park Ct Ste 506 NaN NaN Windsor \n", "7446 688 Marsat Ct Ste B NaN NaN Chula Vista \n", "7447 6190 Fairmount Ave Ste G NaN NaN San Diego \n", "7448 1609 E. Grove Ave, Unit 109 NaN NaN Ontario \n", "7449 120 Morris St Ste 120 NaN NaN Sebastopol \n", "\n", " state county_province postal_code country longitude \\\n", "0 Alabama NaN 35222-1932 United States -86.774322 \n", "1 Alabama NaN 35233-3401 United States -86.791400 \n", "2 Alabama NaN 35805-3046 United States -86.593201 \n", "3 Alaska NaN 99654-7679 United States -149.412710 \n", "4 Alaska NaN 99515 United States -149.879076 \n", "... ... ... ... ... ... \n", "7445 California NaN 95492-6652 United States NaN \n", "7446 California NaN 91911-4697 United States NaN \n", "7447 California NaN 92120-3428 United States NaN \n", "7448 California NaN 91761-5786 United States NaN \n", "7449 California NaN 95472-3867 United States NaN \n", "\n", " latitude phone website_url \\\n", "0 33.524521 2.057775e+09 http://www.avondalebrewing.com \n", "1 33.512849 2.057031e+09 http://www.trimtabbrewing.com \n", "2 34.727752 2.569756e+09 http://www.yellowhammerbrewery.com \n", "3 61.575269 NaN http://bearpawriverbrewing.com \n", "4 61.138489 9.073365e+09 http://www.kingstreetbrewing.com \n", "... ... ... ... \n", "7445 NaN 7.076969e+09 http://www.barrelbrothersbrewing.com \n", "7446 NaN 6.199347e+09 http://www.baybridgebrewing.com \n", "7447 NaN 6.197953e+09 http://www.benchmarkbrewing.com \n", "7448 NaN 9.512917e+09 http://www.chinovalleybrewery.com \n", "7449 NaN 7.078274e+09 http://www.crookedgoatbrewing.com \n", "\n", " updated_at created_at zip_code zip \\\n", "0 2018-08-23T23:19:57.825Z 2018-07-24T01:32:47.255Z 35222 35222.0 \n", "1 2018-08-23T23:20:31.423Z 2018-07-24T01:32:47.815Z 35233 35233.0 \n", "2 2018-08-23T23:20:33.102Z 2018-07-24T01:32:47.838Z 35805 35805.0 \n", "3 2018-08-23T23:20:40.743Z 2018-07-24T01:32:47.967Z 99654 99654.0 \n", "4 2018-08-23T23:20:57.179Z 2018-07-24T01:32:48.301Z 99515 99515.0 \n", "... ... ... ... ... \n", "7445 2018-08-11T21:35:55.480Z 2018-07-24T01:32:52.148Z 95492 95492.0 \n", "7446 2018-08-11T21:35:55.704Z 2018-07-24T01:32:52.238Z 91911 91911.0 \n", "7447 2018-08-11T21:35:56.157Z 2018-07-24T01:32:52.420Z 92120 92120.0 \n", "7448 2018-08-11T21:35:59.331Z 2018-07-24T01:32:53.774Z 91761 91761.0 \n", "7449 2018-08-11T21:36:00.652Z 2018-07-24T01:32:54.205Z 95472 95472.0 \n", "\n", " lat lng city_y state_id state_name zcta \\\n", "0 33.52409 -86.77025 Birmingham AL Alabama True \n", "1 33.50876 -86.80194 Birmingham AL Alabama True \n", "2 34.70858 -86.62125 Huntsville AL Alabama True \n", "3 61.45483 -149.90045 Wasilla AK Alaska True \n", "4 61.11739 -149.88889 Anchorage AK Alaska True \n", "... ... ... ... ... ... ... \n", "7445 38.53034 -122.81716 Windsor CA California True \n", "7446 32.60738 -117.05405 Chula Vista CA California True \n", "7447 32.79468 -117.07114 San Diego CA California True \n", "7448 34.03459 -117.59212 Ontario CA California True \n", "7449 38.39817 -122.86574 Sebastopol CA California True \n", "\n", " parent_zcta population density county_fips county_name \\\n", "0 NaN 9033.0 815.8 1073.0 Jefferson \n", "1 NaN 1715.0 300.7 1073.0 Jefferson \n", "2 NaN 21200.0 949.7 1089.0 Madison \n", "3 NaN 62135.0 40.4 2170.0 Matanuska-Susitna \n", "4 NaN 23402.0 818.8 2020.0 Anchorage \n", "... ... ... ... ... ... \n", "7445 NaN 29920.0 579.0 6097.0 Sonoma \n", "7446 NaN 85365.0 2736.2 6073.0 San Diego \n", "7447 NaN 29142.0 1501.7 6073.0 San Diego \n", "7448 NaN 61124.0 754.0 6071.0 San Bernardino \n", "7449 NaN 30762.0 157.8 6097.0 Sonoma \n", "\n", " county_weights county_names_all county_fips_all imprecise military \\\n", "0 {'01073':100} Jefferson 01073 False False \n", "1 {'01073':100} Jefferson 01073 False False \n", "2 {'01089':100} Madison 01089 False False \n", "3 {'02170':100} Matanuska-Susitna 02170 False False \n", "4 {'02020':100} Anchorage 02020 False False \n", "... ... ... ... ... ... \n", "7445 {'06097':100} Sonoma 06097 False False \n", "7446 {'06073':100} San Diego 06073 False False \n", "7447 {'06073':100} San Diego 06073 False False \n", "7448 {'06071':100} San Bernardino 06071 False False \n", "7449 {'06097':100} Sonoma 06097 False False \n", "\n", " timezone \n", "0 America/Chicago \n", "1 America/Chicago \n", "2 America/Chicago \n", "3 America/Anchorage \n", "4 America/Anchorage \n", "... ... \n", "7445 America/Los_Angeles \n", "7446 America/Los_Angeles \n", "7447 America/Los_Angeles \n", "7448 America/Los_Angeles \n", "7449 America/Los_Angeles \n", "\n", "[7450 rows x 36 columns]" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.set_option('display.max_columns', None)\n", "enriched_breweries_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, that we have the enriched table, we can analyze the joined data and explore the different counties across the US:\n", "* Start with the enriched breweries data above\n", "* Group the breweries by county_name\n", "* For each group add the State ID \n", "* count the number of breweries, \n", "* sum up the populations of each zip code area in each group\n", "* and calculate the average population density in the county \n", "* Sort that list by the population size" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statebrewry_countpopulation_sumdensity_average
county_name
San DiegoCA1546059002.01670.298052
Los AngelesCA1264529555.02834.088095
CookIL984510406.05011.613265
KingWA1173519428.02407.258120
OrangeCA883261503.01574.422727
...............
ClearwaterID1164.05.800000
KoochichingMN1151.0334.400000
HardingNM1139.00.100000
WabashaMN188.029.500000
KeweenawMI187.01.000000
\n", "

959 rows × 4 columns

\n", "
" ], "text/plain": [ " state brewry_count population_sum density_average\n", "county_name \n", "San Diego CA 154 6059002.0 1670.298052\n", "Los Angeles CA 126 4529555.0 2834.088095\n", "Cook IL 98 4510406.0 5011.613265\n", "King WA 117 3519428.0 2407.258120\n", "Orange CA 88 3261503.0 1574.422727\n", "... ... ... ... ...\n", "Clearwater ID 1 164.0 5.800000\n", "Koochiching MN 1 151.0 334.400000\n", "Harding NM 1 139.0 0.100000\n", "Wabasha MN 1 88.0 29.500000\n", "Keweenaw MI 1 87.0 1.000000\n", "\n", "[959 rows x 4 columns]" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " enriched_breweries_data\n", " .groupby('county_name')\n", " .agg(\n", " state=('state_id', 'min'), \n", " brewry_count=('id', 'count'),\n", " population_sum=('population', 'sum'),\n", " density_average=('density', 'mean')\n", " )\n", " .sort_values(by='population_sum', ascending=False)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that _san Diego_ is the largest county in terms of population and also a beer county with 154 different brewries in it. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's change the sort key to find the counties with the most breweries" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statebrewry_countpopulation_sumdensity_average
county_name
San DiegoCA1546059002.01670.298052
Los AngelesCA1264529555.02834.088095
KingWA1173519428.02407.258120
CookIL984510406.05011.613265
JeffersonAL931951501.0770.348387
...............
FlaglerFL143813.0247.300000
Fond du LacWI110579.037.900000
PitkinCO110653.08.900000
PineMN19609.021.600000
AccomackVA12899.058.800000
\n", "

959 rows × 4 columns

\n", "
" ], "text/plain": [ " state brewry_count population_sum density_average\n", "county_name \n", "San Diego CA 154 6059002.0 1670.298052\n", "Los Angeles CA 126 4529555.0 2834.088095\n", "King WA 117 3519428.0 2407.258120\n", "Cook IL 98 4510406.0 5011.613265\n", "Jefferson AL 93 1951501.0 770.348387\n", "... ... ... ... ...\n", "Flagler FL 1 43813.0 247.300000\n", "Fond du Lac WI 1 10579.0 37.900000\n", "Pitkin CO 1 10653.0 8.900000\n", "Pine MN 1 9609.0 21.600000\n", "Accomack VA 1 2899.0 58.800000\n", "\n", "[959 rows x 4 columns]" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " enriched_breweries_data\n", " .groupby('county_name')\n", " .agg(\n", " state=('state_id', 'min'), \n", " brewry_count=('id', 'count'),\n", " population_sum=('population', 'sum'),\n", " density_average=('density', 'mean')\n", " )\n", " .sort_values(by='brewry_count', ascending=False)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you remember the map of the US that we saw in the previous section, it is now more clear the Cook county in IL is likely the dark area we saw in our hexbin visualization of the data, as a dense population of breweries. \n", "\n", "We can now ask ourselves where do we have the most brewries per population and add this column to our table" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statebrewry_countpopulation_sumdensity_averagebrewry_per_population
county_name
KeweenawMI187.01.00000011.494253
WabashaMN188.029.50000011.363636
HardingNM1139.00.1000007.194245
KoochichingMN1151.0334.4000006.622517
ClearwaterID1164.05.8000006.097561
..................
CabarrusNC5299927.0256.8000000.016671
Fort BendTX6371516.0472.5833330.016150
ChesapeakeVA165603.0155.1000000.015243
GuadalupeTX7494106.0113.8285710.014167
HidalgoTX4287487.0798.0500000.013914
\n", "

959 rows × 5 columns

\n", "
" ], "text/plain": [ " state brewry_count population_sum density_average \\\n", "county_name \n", "Keweenaw MI 1 87.0 1.000000 \n", "Wabasha MN 1 88.0 29.500000 \n", "Harding NM 1 139.0 0.100000 \n", "Koochiching MN 1 151.0 334.400000 \n", "Clearwater ID 1 164.0 5.800000 \n", "... ... ... ... ... \n", "Cabarrus NC 5 299927.0 256.800000 \n", "Fort Bend TX 6 371516.0 472.583333 \n", "Chesapeake VA 1 65603.0 155.100000 \n", "Guadalupe TX 7 494106.0 113.828571 \n", "Hidalgo TX 4 287487.0 798.050000 \n", "\n", " brewry_per_population \n", "county_name \n", "Keweenaw 11.494253 \n", "Wabasha 11.363636 \n", "Harding 7.194245 \n", "Koochiching 6.622517 \n", "Clearwater 6.097561 \n", "... ... \n", "Cabarrus 0.016671 \n", "Fort Bend 0.016150 \n", "Chesapeake 0.015243 \n", "Guadalupe 0.014167 \n", "Hidalgo 0.013914 \n", "\n", "[959 rows x 5 columns]" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " enriched_breweries_data\n", " .groupby('county_name')\n", " .agg(\n", " state=('state_id', 'min'), \n", " brewry_count=('id', 'count'),\n", " population_sum=('population', 'sum'),\n", " density_average=('density', 'mean')\n", " )\n", " .assign(brewry_per_population = lambda x : x.brewry_count / x.population_sum * 1000)\n", " .sort_values(by='brewry_per_population', ascending=False)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see, as it is often the case, that we have on the top and the bottom of the table counties with very few brewries. The top of the table of brewries per 1000 people is held by Keweenaw that was last on our previous table of counties by population. To avoid this, we can filter (using _query_) our table to counties that have more than 5 brewries." ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statebrewry_countpopulation_sumdensity_averagebrewry_per_population
county_name
SchuylerNY715117.026.2857140.463055
GraftonNH725969.028.7142860.269552
WindsorVT728073.036.2285710.249350
WaldoME728697.028.3571430.243928
GrandCO730992.03.4857140.225865
..................
St. CharlesMO7356115.0426.1714290.019657
KingsCA301706298.014137.4166670.017582
GwinnettGA6349573.0737.7166670.017164
Fort BendTX6371516.0472.5833330.016150
GuadalupeTX7494106.0113.8285710.014167
\n", "

299 rows × 5 columns

\n", "
" ], "text/plain": [ " state brewry_count population_sum density_average \\\n", "county_name \n", "Schuyler NY 7 15117.0 26.285714 \n", "Grafton NH 7 25969.0 28.714286 \n", "Windsor VT 7 28073.0 36.228571 \n", "Waldo ME 7 28697.0 28.357143 \n", "Grand CO 7 30992.0 3.485714 \n", "... ... ... ... ... \n", "St. Charles MO 7 356115.0 426.171429 \n", "Kings CA 30 1706298.0 14137.416667 \n", "Gwinnett GA 6 349573.0 737.716667 \n", "Fort Bend TX 6 371516.0 472.583333 \n", "Guadalupe TX 7 494106.0 113.828571 \n", "\n", " brewry_per_population \n", "county_name \n", "Schuyler 0.463055 \n", "Grafton 0.269552 \n", "Windsor 0.249350 \n", "Waldo 0.243928 \n", "Grand 0.225865 \n", "... ... \n", "St. Charles 0.019657 \n", "Kings 0.017582 \n", "Gwinnett 0.017164 \n", "Fort Bend 0.016150 \n", "Guadalupe 0.014167 \n", "\n", "[299 rows x 5 columns]" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " enriched_breweries_data\n", " .groupby('county_name')\n", " .agg(\n", " state=('state_id', 'min'), \n", " brewry_count=('id', 'count'),\n", " population_sum=('population', 'sum'),\n", " density_average=('density', 'mean')\n", " )\n", " .assign(brewry_per_population = lambda x : x.brewry_count / x.population_sum * 1000)\n", " .query(\"brewry_count > 5\")\n", " .sort_values(by='brewry_per_population', ascending=False)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the winner is Schuyler county in New York, with 7 brewries and a 0.46 brewry for every 1,000 people" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Geographic Mapping\n", "\n", "The merge that we did allows us now to have geo location information for all the breweries, including the ones that didn't have it in the original data set, as we have the geo location of the zip code area. \n", "\n", "We can also add layers on real maps using the library GeoPandas. Let's start with installing the library to our environment. " ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting geopandas\n", " Downloading geopandas-0.8.1-py2.py3-none-any.whl (962 kB)\n", "\u001b[K |████████████████████████████████| 962 kB 1.2 MB/s \n", "\u001b[?25hCollecting pyproj>=2.2.0\n", " Downloading pyproj-3.0.0.post1-cp38-cp38-macosx_10_9_x86_64.whl (7.4 MB)\n", "\u001b[K |████████████████████████████████| 7.4 MB 7.4 MB/s \n", "\u001b[?25hCollecting shapely\n", " Downloading Shapely-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl (1.0 MB)\n", "\u001b[K |████████████████████████████████| 1.0 MB 7.9 MB/s \n", "\u001b[?25hCollecting fiona\n", " Downloading Fiona-1.8.18-cp38-cp38-macosx_10_9_x86_64.whl (14.8 MB)\n", "\u001b[K |████████████████████████████████| 14.8 MB 5.2 MB/s \n", "\u001b[?25hRequirement already satisfied: pandas>=0.23.0 in /Users/guy/miniconda3/lib/python3.8/site-packages (from geopandas) (1.1.2)\n", "Requirement already satisfied: certifi in /Users/guy/miniconda3/lib/python3.8/site-packages (from pyproj>=2.2.0->geopandas) (2020.6.20)\n", "Requirement already satisfied: six>=1.7 in /Users/guy/miniconda3/lib/python3.8/site-packages (from fiona->geopandas) (1.14.0)\n", "Requirement already satisfied: attrs>=17 in /Users/guy/miniconda3/lib/python3.8/site-packages (from fiona->geopandas) (20.2.0)\n", "Collecting munch\n", " Downloading munch-2.5.0-py2.py3-none-any.whl (10 kB)\n", "Collecting cligj>=0.5\n", " Downloading cligj-0.7.1-py3-none-any.whl (7.1 kB)\n", "Collecting click-plugins>=1.0\n", " Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)\n", "Requirement already satisfied: click<8,>=4.0 in /Users/guy/miniconda3/lib/python3.8/site-packages (from fiona->geopandas) (7.1.2)\n", "Requirement already satisfied: pytz>=2017.2 in /Users/guy/miniconda3/lib/python3.8/site-packages (from pandas>=0.23.0->geopandas) (2020.1)\n", "Requirement already satisfied: python-dateutil>=2.7.3 in /Users/guy/miniconda3/lib/python3.8/site-packages (from pandas>=0.23.0->geopandas) (2.8.1)\n", "Requirement already satisfied: numpy>=1.15.4 in /Users/guy/miniconda3/lib/python3.8/site-packages (from pandas>=0.23.0->geopandas) (1.19.2)\n", "Installing collected packages: pyproj, shapely, munch, cligj, click-plugins, fiona, geopandas\n", "Successfully installed click-plugins-1.1.1 cligj-0.7.1 fiona-1.8.18 geopandas-0.8.1 munch-2.5.0 pyproj-3.0.0.post1 shapely-1.7.1\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install geopandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also need to install a library to handle geo coordinates" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting descartes\n", " Downloading descartes-1.1.0-py3-none-any.whl (5.8 kB)\n", "Requirement already satisfied: matplotlib in /Users/guy/miniconda3/lib/python3.8/site-packages (from descartes) (3.3.2)\n", "Requirement already satisfied: cycler>=0.10 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (0.10.0)\n", "Requirement already satisfied: numpy>=1.15 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (1.19.2)\n", "Requirement already satisfied: certifi>=2020.06.20 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (2020.6.20)\n", "Requirement already satisfied: pillow>=6.2.0 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (7.2.0)\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (2.4.7)\n", "Requirement already satisfied: python-dateutil>=2.1 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (2.8.1)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/guy/miniconda3/lib/python3.8/site-packages (from matplotlib->descartes) (1.2.0)\n", "Requirement already satisfied: six in /Users/guy/miniconda3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib->descartes) (1.14.0)\n", "Installing collected packages: descartes\n", "Successfully installed descartes-1.1.0\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install descartes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will import the library" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [], "source": [ "import geopandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Create a data frame that is designed for geo data\n", "* Start with the enriched breweries data above\n", "* Define the geometry of the data from \n", "* x as the longitude (_lng_ column)\n", "* y as the latitude (_lat_ column)" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [], "source": [ "gdf = (\n", " geopandas\n", " .GeoDataFrame(\n", " enriched_breweries_data, \n", " geometry=geopandas\n", " .points_from_xy(\n", " enriched_breweries_data.lng, \n", " enriched_breweries_data.lat)\n", " )\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a geo dataframe for the world map from the built-in dataset of GeoPandas library" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [], "source": [ "world = (\n", " geopandas\n", " .read_file(\n", " geopandas\n", " .datasets\n", " .get_path('naturalearth_lowres')\n", " )\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Start with the world data frame\n", "* Filter it to use only the USA parts\n", "* Focus on the geometry boundaries of the map\n", "* Plot the map\n", "* using black color\n", "* and thin lines (0.2)\n", "* Now, plot the breweries data \n", "* on the above map \n", "* using red dots \n", "* and one pixel for each" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-01-14T11:17:22.539610\n image/svg+xml\n \n \n Matplotlib v3.3.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# We restrict to USA\n", "ax = (\n", " world\n", " [world.iso_a3 == 'USA']\n", " ['geometry']\n", " .boundary\n", " .plot(\n", " color='black', \n", " edgecolor='black', \n", " linewidth=0.2\n", " )\n", ")\n", "\n", "( \n", " gdf\n", " .plot(\n", " ax=ax, \n", " color='red',\n", " markersize = 1\n", " )\n", ");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a good start, but we can't really use it. Let's make it more usable to know where is the beer hub in the US.\n", "\n", "* Create a 2D histogram based on the enriched breweries data \n", "* using x as latitude (_lat_ column),\n", "* y as longtitude (_lng_ column),\n", "* and 1000 bins for the histogram\n", "* Focus only on the main land using its coordinates\n", "* Then, create a smooth heat map from the histogram " ] }, { "cell_type": "code", "execution_count": 212, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy import ndimage\n", "\n", "heatmap, xedges, yedges = np.histogram2d(\n", " enriched_breweries_data['lat'], \n", " enriched_breweries_data['lng'],\n", " bins=1000, \n", " range=[\n", " [25, 50], # North-South extent of US\n", " [-125, -65] # East-West extent of US, \n", " ]\n", ")\n", "extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]\n", "logheatmap = np.log(heatmap)\n", "logheatmap[np.isneginf(logheatmap)] = 0\n", "logheatmap = ndimage.filters.gaussian_filter(logheatmap, 30, mode='nearest') # smooth out peaks\n" ] }, { "cell_type": "code", "execution_count": 215, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-01-14T12:57:54.924750\n image/svg+xml\n \n \n Matplotlib v3.3.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = (\n", " world\n", " [world.iso_a3 == 'USA']\n", " ['geometry']\n", " .boundary\n", " .plot(\n", " color='k', \n", " edgecolor='black', \n", " linewidth=0.5\n", " )\n", ")\n", "\n", "ax.imshow(logheatmap, cmap='coolwarm', extent=extent)\n", "ax.invert_yaxis()\n", "ax.set(xlim=[-125, -65], ylim=[25, 50]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can clearly see the hubs in San Diego, New York, Illinois, and another one in Colorado." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3-final" }, "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 }