{ "cells": [ { "cell_type": "markdown", "id": "a860826e", "metadata": {}, "source": [ "# Week 12, Prep notebook (Part 2) -- Extra Altair stuff, we'll do a subset of these things!\n", "\n", "So, the last lecture we ended passing data through Python to Altair to output as vega-lite. What is the benefit to using Python for data analysis? Well, for some of us Python is our bestie and so we want to hang out with it the most. For others, the benefit is that we can do data cleaning in Python and then put the cleaned data into our plots.\n", "\n", "Let's work through a few examples:\n", "\n", "1. With the buildings dataset\n", "1. With the corgis dataset" ] }, { "cell_type": "code", "execution_count": 1, "id": "9225a116", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import altair as alt\n", "import matplotlib.pyplot as plt # just in case" ] }, { "cell_type": "markdown", "id": "603ef36f", "metadata": {}, "source": [ "## 1. Altair with the buildings dataset\n", "\n", "Ok! So one dataset we know has some cleaning that needs to happen is the buildings dataset, so let's read this in and take a look to remember:" ] }, { "cell_type": "code", "execution_count": 2, "id": "a6fd9dae", "metadata": {}, "outputs": [], "source": [ "data_url = 'https://github.com/UIUC-iSchool-DataViz/is445_data/raw/main/building_inventory.csv'\n", "buildings = pd.read_csv(data_url)" ] }, { "cell_type": "code", "execution_count": 3, "id": "163d4d2a", "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", "
Agency NameLocation NameAddressCityZip codeCountyCongress DistCongressional Full NameRep DistRep Full Name...Bldg StatusYear AcquiredYear ConstructedSquare FootageTotal FloorsFloors Above GradeFloors Below GradeUsage DescriptionUsage Description 2Usage Description 3
0Department of Natural ResourcesAnderson Lake Conservation Area - Fulton CountyAnderson Lake C.a.Astoria61501Fulton17Cheri Bustos93Hammond Norine K....In Use19751975144110UnusualUnusualNot provided
1Department of Natural ResourcesAnderson Lake Conservation Area - Fulton CountyAnderson Lake C.a.Astoria61501Fulton17Cheri Bustos93Hammond Norine K....In Use20042004144110UnusualUnusualNot provided
2Department of Natural ResourcesAnderson Lake Conservation Area - Fulton CountyAnderson Lake C.a.Astoria61501Fulton17Cheri Bustos93Hammond Norine K....In Use20042004144110UnusualUnusualNot provided
3Department of Natural ResourcesAnderson Lake Conservation Area - Fulton CountyAnderson Lake C.a.Astoria61501Fulton17Cheri Bustos93Hammond Norine K....In Use20042004144110UnusualUnusualNot provided
4Department of Natural ResourcesAnderson Lake Conservation Area - Fulton CountyAnderson Lake C.a.Astoria61501Fulton17Cheri Bustos93Hammond Norine K....In Use20042004144110UnusualUnusualNot provided
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " Agency Name \\\n", "0 Department of Natural Resources \n", "1 Department of Natural Resources \n", "2 Department of Natural Resources \n", "3 Department of Natural Resources \n", "4 Department of Natural Resources \n", "\n", " Location Name Address \\\n", "0 Anderson Lake Conservation Area - Fulton County Anderson Lake C.a. \n", "1 Anderson Lake Conservation Area - Fulton County Anderson Lake C.a. \n", "2 Anderson Lake Conservation Area - Fulton County Anderson Lake C.a. \n", "3 Anderson Lake Conservation Area - Fulton County Anderson Lake C.a. \n", "4 Anderson Lake Conservation Area - Fulton County Anderson Lake C.a. \n", "\n", " City Zip code County Congress Dist Congressional Full Name Rep Dist \\\n", "0 Astoria 61501 Fulton 17 Cheri Bustos 93 \n", "1 Astoria 61501 Fulton 17 Cheri Bustos 93 \n", "2 Astoria 61501 Fulton 17 Cheri Bustos 93 \n", "3 Astoria 61501 Fulton 17 Cheri Bustos 93 \n", "4 Astoria 61501 Fulton 17 Cheri Bustos 93 \n", "\n", " Rep Full Name ... Bldg Status Year Acquired Year Constructed \\\n", "0 Hammond Norine K. ... In Use 1975 1975 \n", "1 Hammond Norine K. ... In Use 2004 2004 \n", "2 Hammond Norine K. ... In Use 2004 2004 \n", "3 Hammond Norine K. ... In Use 2004 2004 \n", "4 Hammond Norine K. ... In Use 2004 2004 \n", "\n", " Square Footage Total Floors Floors Above Grade Floors Below Grade \\\n", "0 144 1 1 0 \n", "1 144 1 1 0 \n", "2 144 1 1 0 \n", "3 144 1 1 0 \n", "4 144 1 1 0 \n", "\n", " Usage Description Usage Description 2 Usage Description 3 \n", "0 Unusual Unusual Not provided \n", "1 Unusual Unusual Not provided \n", "2 Unusual Unusual Not provided \n", "3 Unusual Unusual Not provided \n", "4 Unusual Unusual Not provided \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "buildings.head()" ] }, { "cell_type": "markdown", "id": "7d1f1afe", "metadata": {}, "source": [ "Let's make a quick plot with matplotlib to see what might need to be cleaned:" ] }, { "cell_type": "code", "execution_count": 4, "id": "11dc9147", "metadata": {}, "outputs": [ { "data": { "image/png": "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CRPi2WefrfWYP/zhD3H88cfHj3/84zjssMNi+PDhcd1118V7771X53W2b9++zzUCAAAAANCyTZm5JOavKEkbm7+iJK6YuThHFdGSZbX81/Dhw9Nejxw5Mu11KpWKysrKjM5XUlISlZWV0bt377Tx3r17x/r162s9ZuXKlfHMM89Ex44d45FHHomSkpL4yle+Eps2baqzr8pNN90U3/ve9zKqCQAAAACAg8fK4m1pM1SqVCZJzFteHKtKyi0FRlYyDlVmz57dJAWkUqm011XhTG12794dqVQq7r///igoKIiIiFtvvTX+4R/+IX7+859Hp06dahwzderUuOaaa6pfl5WVRb9+/RrxHQAAAAAA0Byt2VRR7/bVG4UqZCfjUOVjH/tYo164sLAw8vLyasxK2bBhQ43ZK1X69OkThx12WHWgEvFBD5YkSeKtt96KYcOG1TimQ4cO0aFDh0atHQAAAACA5m9Aj871bh/YU6BCdjLuqdLY2rdvH6NGjYpZs2aljc+aNStOPvnkWo8ZM2ZMvPPOO7Ft27bqsddffz3atGkThx9+eJPWCwAAAABAyzK4qGuMG1YUeXutjpSXSsW4YUVmqZC1nIUqERHXXHNN/OpXv4p77rknli1bFldffXWsXbs2Lr/88oj4YOmuSZMmVe9/4YUXRs+ePePSSy+NpUuXxrx58+Jf//Vf44tf/GKtS38BAAAAANC6TZs4MsYMLUwbGzO0MKZNHFnHEVC3jJf/agoXXHBBbNy4Mb7//e/HunXrYsSIEfHYY4/FgAEDIiJi3bp1sXbt2ur9u3btGrNmzYorrrgijj/++OjZs2ecf/75ceONN+bqLQAAAAAA0IwVdG4XMyafGKtKymP1xvIY2LOLGSrss1SSJEmuiziQysrKoqCgIEpLSyM/Pz/X5QAAAAAAADmUTW6wz8t/rVixIp544ol47733IiKilWUzAAAAAABAK5N1qLJx48b4xCc+EcOHD49Pf/rTsW7duoiIuOyyy+Laa69t9AIBAAAAAACag6xDlauvvjratm0ba9eujc6dO1ePX3DBBfH44483anEAAAAAAADNRdaN6p988sl44okn4vDDD08bHzZsWKxZs6bRCgMAAAAAAGhOsp6pUl5enjZDpUpJSUl06NChUYoCAAAAAABobrIOVcaNGxczZsyofp1KpWL37t3xk5/8JMaP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ABkQqlCtQ4cO8d3vfjc6dOiQ61IgY+5bWir3Li2R+5aWyr1LS+S+paVy79ISuW9pqdy7udHqGtUDAAAAAADsCzNVAAAAAAAAMiBUAQAAAAAAyIBQBQAAAAAAIANCFQAAAAAAgAwIVYiIiDvuuCMGDRoUHTt2jFGjRsXTTz+d65JoxW666aY44YQT4pBDDolevXrFueeeG6+99lraPpdcckmkUqm0n49+9KNp+2zfvj2uuOKKKCwsjC5dusTZZ58db7311oF8K7QyN9xwQ4378tBDD63eniRJ3HDDDdG3b9/o1KlTnHrqqfHqq6+mncN9y4E2cODAGvdtKpWKr371qxHheUvzMW/evDjrrLOib9++kUql4tFHH03b3ljP2M2bN8dFF10UBQUFUVBQEBdddFFs2bKlid8dB6v67tudO3fGN77xjTj66KOjS5cu0bdv35g0aVK88847aec49dRTazyHP//5z6ft476lsTX0zG2szwfuXRpTQ/dtbZ95U6lU/OQnP6nexzOXAy2T78B8zm1+hCrEgw8+GFdddVV861vfisWLF8fYsWPjjDPOiLVr1+a6NFqpuXPnxle/+tV4/vnnY9asWbFr166YMGFClJeXp+33qU99KtatW1f989hjj6Vtv+qqq+KRRx6JBx54IJ555pnYtm1bnHnmmVFZWXkg3w6tzFFHHZV2X7788svV23784x/HrbfeGrfffnssWLAgDj300Dj99NNj69at1fu4bznQFixYkHbPzpo1KyIi/vEf/7F6H89bmoPy8vI49thj4/bbb691e2M9Yy+88MJYsmRJPP744/H444/HkiVL4qKLLmry98fBqb77tqKiIhYtWhTf/va3Y9GiRfHwww/H66+/HmeffXaNfb/0pS+lPYfvvvvutO3uWxpbQ8/ciMb5fODepTE1dN/ueb+uW7cu7rnnnkilUnHeeeel7eeZy4GUyXdgPuc2Qwmt3oknnphcfvnlaWMf/vCHk+uvvz5HFUG6DRs2JBGRzJ07t3rs4osvTs4555w6j9myZUvSrl275IEHHqgee/vtt5M2bdokjz/+eFOWSyv23e9+Nzn22GNr3bZ79+7k0EMPTX74wx9Wj73//vtJQUFBctdddyVJ4r6lebjyyiuTIUOGJLt3706SxPOW5ikikkceeaT6dWM9Y5cuXZpERPL8889X7/Pcc88lEZH8/e9/b+J3xcFu7/u2Ni+88EISEcmaNWuqxz72sY8lV155ZZ3HuG9parXdu43x+cC9S1PK5Jl7zjnnJKeddlramGcuubb3d2A+5zZPZqq0cjt27IiFCxfGhAkT0sYnTJgQzz77bI6qgnSlpaUREdGjR4+08Tlz5kSvXr1i+PDh8aUvfSk2bNhQvW3hwoWxc+fOtHu7b9++MWLECPc2TWr58uXRt2/fGDRoUHz+85+PlStXRkTEqlWrYv369Wn3ZIcOHeJjH/tY9T3pviXXduzYEb/5zW/ii1/8YqRSqepxz1uau8Z6xj733HNRUFAQJ510UvU+H/3oR6OgoMD9zAFRWloaqVQqunXrljZ+//33R2FhYRx11FFx3XXXpf1lqvuWXNnfzwfuXXLp3XffjT//+c8xefLkGts8c8mlvb8D8zm3eWqb6wLIrZKSkqisrIzevXunjffu3TvWr1+fo6rg/yRJEtdcc02ccsopMWLEiOrxM844I/7xH/8xBgwYEKtWrYpvf/vbcdppp8XChQujQ4cOsX79+mjfvn1079497XzubZrSSSedFDNmzIjhw4fHu+++GzfeeGOcfPLJ8eqrr1bfd7U9b9esWRMR4b4l5x599NHYsmVLXHLJJdVjnre0BI31jF2/fn306tWrxvl79erlfqbJvf/++3H99dfHhRdeGPn5+dXjX/jCF2LQoEFx6KGHxiuvvBJTp06Nv/3tb9XLNbpvyYXG+Hzg3iWXfv3rX8chhxwSn/vc59LGPXPJpdq+A/M5t3kSqhARkfbXqBEf/CPeewxy4Wtf+1q89NJL8cwzz6SNX3DBBdX/PWLEiDj++ONjwIAB8ec//7nGh6I9ubdpSmeccUb1fx999NExevToGDJkSPz617+ubty5L89b9y0HyvTp0+OMM86Ivn37Vo953tKSNMYztrb93c80tZ07d8bnP//52L17d9xxxx1p2770pS9V//eIESNi2LBhcfzxx8eiRYviuOOOiwj3LQdeY30+cO+SK/fcc0984QtfiI4dO6aNe+aSS3V9Bxbhc25zY/mvVq6wsDDy8vJqJJIbNmyokYDCgXbFFVfEH/7wh5g9e3Ycfvjh9e7bp0+fGDBgQCxfvjwiIg499NDYsWNHbN68OW0/9zYHUpcuXeLoo4+O5cuXx6GHHhoRUe/z1n1LLq1Zsyb+53/+Jy677LJ69/O8pTlqrGfsoYceGu+++26N8xcXF7ufaTI7d+6M888/P1atWhWzZs1Km6VSm+OOOy7atWuX9hx235Jr+/L5wL1Lrjz99NPx2muvNfi5N8IzlwOnru/AfM5tnoQqrVz79u1j1KhR1dMYq8yaNStOPvnkHFVFa5ckSXzta1+Lhx9+OJ566qkYNGhQg8ds3Lgx3nzzzejTp09ERIwaNSratWuXdm+vW7cuXnnlFfc2B8z27dtj2bJl0adPn+op5Hvekzt27Ii5c+dW35PuW3Lp3nvvjV69esVnPvOZevfzvKU5aqxn7OjRo6O0tDReeOGF6n3++te/RmlpqfuZJlEVqCxfvjz+53/+J3r27NngMa+++mrs3Lmz+jnsvqU52JfPB+5dcmX69OkxatSoOPbYYxvc1zOXptbQd2A+5zZTjdz4nhbogQceSNq1a5dMnz49Wbp0aXLVVVclXbp0SVavXp3r0mil/uVf/iUpKChI5syZk6xbt676p6KiIkmSJNm6dWty7bXXJs8++2yyatWqZPbs2cno0aOTww47LCkrK6s+z+WXX54cfvjhyf/8z/8kixYtSk477bTk2GOPTXbt2pWrt8ZB7tprr03mzJmTrFy5Mnn++eeTM888MznkkEOqn6c//OEPk4KCguThhx9OXn755WTixIlJnz593LfkXGVlZdK/f//kG9/4Rtq45y3NydatW5PFixcnixcvTiIiufXWW5PFixcna9asSZKk8Z6xn/rUp5Jjjjkmee6555LnnnsuOfroo5MzzzzzgL9fDg713bc7d+5Mzj777OTwww9PlixZkva5d/v27UmSJMmKFSuS733ve8mCBQuSVatWJX/+85+TD3/4w8nIkSPdtzSp+u7dxvx84N6lMTX0WSFJkqS0tDTp3Llzcuedd9Y43jOXXGjoO7Ak8Tm3ORKqkCRJkvz85z9PBgwYkLRv3z457rjjkrlz5+a6JFqxiKj15957702SJEkqKiqSCRMmJEVFRUm7du2S/v37JxdffHGydu3atPO89957yde+9rWkR48eSadOnZIzzzyzxj7QmC644IKkT58+Sbt27ZK+ffsmn/vc55JXX321evvu3buT7373u8mhhx6adOjQIRk3blzy8ssvp53DfUsuPPHEE0lEJK+99lrauOctzcns2bNr/Xxw8cUXJ0nSeM/YjRs3Jl/4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34ivf/3rMWPGjHjjjTfi+eefr25mf+GFF0abNm1i8uTJsXTp0njsscfi5ptvTrvOSSedFJ07d45vfvObsWLFivjtb38b9913X9b1fuELX4jCwsI455xz4umnn45Vq1bF3Llz48orr4y33norIiKuvPLK+OEPfxiPPPJI/P3vf4+vfOUrsWXLln36/QAAAPtPqAIAADSZvn37xvz586OysjI++clPxogRI+LKK6+MgoKCaNOmTbRp0yYeeOCBWLhwYYwYMSKuvvrq+MlPfpL1dXbs2BG/+c1vajS9r3LeeefFb37zm9ixY0d8+9vfjmuvvTa+853vxBFHHBEXXHBBbNiwISIiunbtGn/84x9j6dKlMXLkyPjWt75VY+myHj16xG9+85t47LHH4uijj46ZM2fGDTfckHXNnTt3jnnz5kX//v3jc5/7XBxxxBHxxS9+Md57773qmSvXXnttTJo0KS655JIYPXp0HHLIIfHZz34262sBAACNI5VksmgwAABAK7V69eoYNGhQLF68OD7ykY/kuhwAACCHzFQBAAAAAADIgFAFAAAAAAAgA5b/AgAAAAAAyICZKgAAAAAAABkQqgAAAAAAAGRAqAIAAAAAAJABoQoAAAAAAEAGhCoAAAAAAAAZEKoAAAAAAABkQKgCAAAAAACQAaEKAAAAAABABoQqAAAAAAAAGfj/AQq53ek4KnnRAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "buildings.plot(x='Year Acquired', y='Square Footage', figsize=(20,5),kind='scatter')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "84c825ab", "metadata": {}, "source": [ "So, if we remember to when we first saw this dataset, we had a bunch of zeros that we decided we should tag as missing data with an NaN. Let's clean this dataframe:" ] }, { "cell_type": "code", "execution_count": 5, "id": "065324a3", "metadata": {}, "outputs": [], "source": [ "buildings.loc[buildings['Year Acquired'] == 0,'Year Acquired'] = np.nan\n", "buildings.loc[buildings['Square Footage'] == 0,'Square Footage'] = np.nan" ] }, { "cell_type": "markdown", "id": "e12bea6c", "metadata": {}, "source": [ "And then re-make this plot:" ] }, { "cell_type": "code", "execution_count": 6, "id": "b13d1297", "metadata": {}, "outputs": [ { "data": { "image/png": "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ifsIoC36zne+ox49emj69Ol64YUX1KFDBz355JPat2+f9u7dK4l7CKAts3KNkLiHANoKwzA0depUjRo1SoMGDZIk1zncpUsXj3m7dOmiXbt2uebhXgLJgqBKApszZ45+/OMfezwtIh3LYeo0aNAgFRcX68wzz9S6des0ZMgQSccK3nszDMN0OoDE8cc//lErV67U22+/rR49eqi0tFS33XabTjzxRF1wwQV+l/M+/7lGAMnJyjWC+wig7UlPT9ff//53TZo0Sfn5+UpNTdUFF1ygiy66KOiy3EMAyc/qNYJ7CKBtuOOOO/Tpp5/6jFSTfM9xK+c39xJIRKT/SlAff/yxtmzZoptvvjnovEOGDFF6erq2bt0qSTrhhBP09ddf+8xXWVnpE1EGkDgOHTqkn//853ryySd16aWX6rTTTtMdd9yha665Ro8//rikY+f/kSNHdODAAY9lKyoqXOc/1wggOVm5RpjhPgJoG4YOHaoNGzaopqZGe/fu1Xvvvafq6mr16tVLEvcQQFsX7BphhnsIIPnceeedevvtt7V48WKdfPLJruknnHCCJPmMJvG+T+BeAsmCoEqCmj17toYOHarTTz896Lyff/65mpqadOKJJ0qSRowYodraWq1atco1zyeffKLa2lqNHDkyam0GEF1NTU1qampSSornpT01NVUtLS2Sjv0YSk9Pdw3Bl6S9e/dq48aNrvOfawSQnKxcI8xwHwG0Lbm5uSoqKtLWrVu1Zs0aXX755ZK4hwBwjL9rhBnuIYDkYRiG7rjjDi1YsEAffvihT0DVmfrP/T7hyJEjWrJkiev85l4CyYT0X3Gmvr5e27Ztc/29Y8cObdiwQfn5+erevbskqa6uTm+++aaeeOIJn+W3b9+uV199Vd///vdVWFioTZs26Z577tHgwYNVUlIiSRowYIC+973v6ZZbbtELL7wgSfrJT36iSy65RP3792+FtQQQqmDXiHPOOUc/+9nPlJmZqR49emjJkiWaN2+ennzySUnHfgRNmjRJ99xzjwoKCpSfn69p06bp1FNPdaX+4RoBJK5wrxHcRwDJK9j14c0331RRUZG6d++uzz77THfddZfGjx/vKibLPQSQ3MK9RnAPASS322+/Xa+99pr+8Y9/qGPHjq4RKbm5ucrMzJTD4dDdd9+tRx99VMXFxSouLtajjz6qrKwsXXvtta55uZdA0jAQVxYvXmxI8vl3/fXXu+Z54YUXjMzMTKOmpsZn+fLycmPMmDFGfn6+0a5dO6NPnz7G5MmTjerqao/5qqurjR//+MdGx44djY4dOxo//vGPjQMHDkR57QCEK9g1Yu/evcYNN9xgdO3a1Wjfvr3Rv39/44knnjBaWlpc73Ho0CHjjjvuMPLz843MzEzjkksuMcrLyz0+h2sEkJjCvUZwHwEkr2DXh6effto4+eSTjfT0dKN79+7GL3/5S+Pw4cMe78E9BJC8wr1GcA8BJDez64MkY+7cua55WlpajAcffNA44YQTjIyMDGPMmDHGZ5995vE+3EsgWTgMwzBaIXYDAAAAAAAAAACQ0KipAgAAAAAAAAAAYAFBFQAAAAAAAAAAAAsIqgAAAAAAAAAAAFhAUAUAAAAAAAAAAMACgioAAAAAAAAAAAAWEFQBAAAAAAAAAACwgKAKAAAAAAAAAACABQRVAAAAACDCHnroIZ1xxhlRee8bbrhB48ePj8p7AwAAAAiMoAoAAACAsBiGoQsuuEAXXnihz2uzZs1Sbm6uysvLW7VNjz76qFJTU/Xb3/62VT/Xadq0afrggw9i8tkAAAAAooegCgAAAICwOBwOzZ07V5988oleeOEF1/QdO3bovvvu09NPP63u3btH9DObmpoCvj537lzde++9mjNnTkQ/16rs7GwVFBT4ff3IkSOt2BoAAAAAkUJQBQAAAEDYunXrpqefflrTpk3Tjh07ZBiGJk2apPPPP1/Dhg3T97//fWVnZ6tLly667rrrVFVV5Vr2vffe06hRo9SpUycVFBTokksu0fbt212v79y5Uw6HQ3/961917rnnqn379nrllVf8tmXJkiU6dOiQfv3rX6uhoUGlpaUer7e0tOh3v/ud+vbtq4yMDHXv3l2/+c1vXK+vWrVKgwcPVvv27XXmmWfqrbfeksPh0IYNGyRJL7/8sjp16uTxngsXLpTD4XD97Z3+y5mya8aMGeratav69esnSdqzZ4+uueYa5eXlqaCgQJdffrl27tzpWq65uVlTp051bZt7771XhmEE3R8AAAAAooOgCgAAAICIuP7663X++efrxhtv1DPPPKONGzfq6aef1jnnnKMzzjhDa9as0Xvvvaevv/5aV199tWu5hoYGTZ06VatXr9YHH3yglJQUXXHFFWppafF4//vuu0+TJ0/W5s2bTVONOc2ePVsTJkxQenq6JkyYoNmzZ3u8Pn36dP3ud7/Tr371K23atEmvvfaaunTp4mrLJZdcov79+2vt2rV66KGHNG3atIhsnw8++ECbN2/WokWL9M9//lONjY0aO3assrOzVVpaqqVLlyo7O1vf+973XCNZnnjiCc2ZM0ezZ8/W0qVLtX//fr311lsRaQ8AAAAA+9Ji3QAAAAAAyePFF1/UoEGD9PHHH+tvf/ubZs+erSFDhujRRx91zTNnzhx169ZNX3zxhfr166errrrK4z1mz56tzp07a9OmTRo0aJBr+t13360rr7wy4OfX1dXp73//u5YvXy5J+p//+R+VlJRo5syZysnJ0cGDB/X000/rmWee0fXXXy9J6tOnj0aNGiVJevXVV9Xc3Kw5c+YoKytLAwcO1O7du/XTn/407G3ToUMHvfTSS2rXrp1rO6SkpOill15yjXKZO3euOnXqpI8++kjjxo3TU089penTp7u20fPPP69///vfYbcFAAAAQGgYqQIAAAAgYjp37qyf/OQnGjBggK644gqtXbtWixcvVnZ2tuvfd77zHUlypfjavn27rr32WvXu3Vs5OTnq1auXJPkUtz/zzDODfv5rr72m3r176/TTT5cknXHGGerdu7def/11SdLmzZt1+PBhnX/++abLb968WaeffrqysrJc00aMGGFzK5g79dRTXQEVSVq7dq22bdumjh07urZNfn6+vvnmG23fvl21tbXau3evx+enpaVZ2g4AAAAAooORKgAAAAAiKi0tTWlpx35qtLS06NJLL9Xvfvc7n/lOPPFESdKll16qbt266U9/+pO6du2qlpYWDRo0yKeYe4cOHYJ+9pw5c/T555+7Pt/ZhtmzZ+snP/mJMjMzAy5vpV5JSkqKz3xNTU1Bl/Nuf0tLi4YOHapXX33VZ96ioqKg7wcAAACg9RFUAQAAABA1Q4YM0d///nf17NnTI9DhVF1drc2bN+uFF17Q6NGjJUlLly4N6bM+++wzrVmzRh999JHy8/Nd02tqajRmzBht3LhRxcXFyszM1AcffKCbb77Z5z1OOeUU/eUvf9GhQ4dcAZiVK1d6zFNUVKSDBw+qoaHBFShxFrG3Y8iQIXrjjTfUuXNn5eTkmM5z4oknauXKlRozZowk6ejRo1q7dq2GDBli+/MAAAAAhI/0XwAAAACi5vbbb9f+/fs1YcIErVq1SmVlZXr//fd10003qbm5WXl5eSooKNCLL76obdu26cMPP9TUqVND+qzZs2dr2LBhGjNmjAYNGuT6N2rUKI0YMUKzZ89W+/btdd999+nee+/VvHnztH37dq1cudJVzP7aa69VSkqKJk2apE2bNundd9/V448/7vE5w4cPV1ZWln7+859r27Zteu211/Tyyy/bbu+Pf/xjFRYW6vLLL9fHH3+sHTt2aMmSJbrrrru0e/duSdJdd92l3/72t3rrrbf03//+V7fddptqampC2j4AAAAAwkdQBQAAAEDUdO3aVcuWLVNzc7MuvPBCDRo0SHfddZdyc3OVkpKilJQUvf7661q7dq0GDRqkKVOm6LHHHrP9OUeOHNErr7ziU/Te6aqrrtIrr7yiI0eO6Fe/+pXuuecePfDAAxowYICuueYaVVRUSJKys7P1zjvvaNOmTRo8eLB+8Ytf+KQuy8/P1yuvvKJ3331Xp556qubPn6+HHnrIdpuzsrJUWlqq7t2768orr9SAAQN000036dChQ66RK/fcc48mTpyoG264QSNGjFDHjh11xRVX2P4sAAAAAJHhMKwkDQYAAACANmrnzp3q1auX1q9frzPOOCPWzQEA4P9v545pAAAAEIb5d42FfTytjQUAOLJUAQAAAAAACEQVAAAAAACAwP0XAAAAAABAYKkCAAAAAAAQiCoAAAAAAACBqAIAAAAAABCIKgAAAAAAAIGoAgAAAAAAEIgqAAAAAAAAgagCAAAAAAAQiCoAAAAAAACBqAIAAAAAABAMdxJqzsKvsdEAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "buildings.plot(x='Year Acquired', y='Square Footage', figsize=(20,5),kind='scatter')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "36e727e0", "metadata": {}, "source": [ "Hey that looks much better! Though, we probably want a log-scale on the y-axis, just to be safe:" ] }, { "cell_type": "code", "execution_count": 7, "id": "ddd631cc", "metadata": {}, "outputs": [ { "data": { "image/png": "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4gY9NsBio3dHERERERERERERERFR8NMbNwjxYpuIiIiIiIiIiIiIiIiCAgMsREREREREREREREREBvXYAEteXh5GjhyJiRMn+ropREREREREREREREQUYFiDhTVYiIiIiIiIiIiIiIjoB6zBQkRERERERERERERE5CEMsBARERERERERERERERnUYwMsrMFCRERERERERERERESuYg0W1mAhIiIiIiIiIiIiIqIfsAYLERERERERERERERGRhzDAQkREREREREREREREZBADLERERERERERERERERAaF+boBvmYrQdPU1OTjlhARERERERERERERka/Z4gVaJex7bIAlLy8PeXl5uHDhAgAgJSXFxy0iIiIiIiIiIiIiIiJ/cfbsWcTFxSk+bxG0QjBBrqurCydOnECfPn1gsVh83RzTNDU1ISUlBUePHkVsbKyvm0NEfobXCCJSw2sEEanhNYKI1PAaQURqeI2gQCEIAs6ePYuBAwciJES50kqPncFiExISgsGDB/u6GR4TGxvLixURKeI1gojU8BpBRGp4jSAiNbxGEJEaXiMoEKjNXLFhkXsiIiIiIiIiIiIiIiKDGGAhIiIiIiIiIiIiIiIyiAGWINW7d2889thj6N27t6+bQkR+iNcIIlLDawQRqeE1gojU8BpBRGp4jaBg0+OL3BMRERERERERERERERnFGSxEREREREREREREREQGMcBCRERERERERERERERkEAMsREREREREREREREREBjHAQkREREREREREREREZBADLH5sw4YNuOGGGzBw4EBYLBasXbtW8rzFYpH979lnn7UvM3PmTKfn/9//+3+S9dTX1+POO+9EXFwc4uLicOedd6KhocEL75CI3KF1jWhubsb999+PwYMHIzIyEiNGjMDf/vY3yTLnz5/Hr3/9ayQmJiI6Ohpz5szBsWPHJMvwGkEUmMy4RvB7BFHw0rpGnD59Gj//+c8xcOBAREVF4ZprrkFZWZlkGX6PIApOZlwf+B2CKHg9/fTTmDhxIvr06YPk5GTMnTsXpaWlkmUEQcDjjz+OgQMHIjIyEjNnzsT+/fsly/B7BAULBlj8WEtLC8aMGYNXXnlF9vmTJ09K/lu1ahUsFgt++tOfSpa75557JMu9+uqrkudvv/127N69G1988QW++OIL7N69G3feeafH3hcRmUPrGvGb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OH/+vGQd/B5BFJzcvT7wOwRRcJO7PgAQVq9ebV+mq6tLeOyxx4T+/fsLvXv3FqZPny7s3btXsh5+j6BgYREEQfBCHIeIiIiIiIiIiIiIiChosAYLERERERERERERERGRQQywEBERERERERERERERGcQACxERERERERERERERkUEMsBARERERERERERERERnEAAsREREREREREREREZFBDLAQEREREREREREREREZxAALERERERERERERERGRQQywEBERERERedDjjz+OsWPHemTdP//5zzF37lyPrJuIiIiIiNQxwEJERERERKYRBAE//vGPcfXVVzs9t2LFCsTFxaGqqsqrbXrqqacQGhqK5cuXe3W7NosWLcLXX3/tk20TEREREZHnMMBCRERERESmsVgsWL16NbZt24ZXX33V/nhlZSUeeeQRvPTSS0hNTTV1m+3t7arPr169GosXL8aqVatM3a5eMTExSEhIUHz+woULXmwNERERERGZhQEWIiIiIiIyVUpKCl566SUsWrQIlZWVEAQBCxcuxJVXXolJkybhJz/5CWJiYtCvXz/ceeedqK2ttb/2iy++QE5ODvr27YuEhARcf/31OHTokP35w4cPw2Kx4N///jdmzpyJiIgIvP3224ptKSgoQFtbG5544gm0tLRgw4YNkue7urrwzDPPIDMzE71790Zqair+/Oc/258vKirCuHHjEBERgQkTJuDjjz+GxWLB7t27AQD/+Mc/0LdvX8k6165dC4vFYv/bMUWYLa3X008/jYEDB2LYsGEAgOPHj+O2226D1WpFQkICbrzxRhw+fNj+us7OTjz88MP2fbN48WIIgqB5PIiIiIiIyDMYYCEiIiIiItPddddduPLKK7FgwQK88sor2LdvH1566SXMmDEDY8eOxY4dO/DFF1/g9OnT+NnPfmZ/XUtLCx5++GFs374dX3/9NUJCQnDTTTehq6tLsv5HHnkEDzzwAA4cOCCbjsxm5cqVmDdvHsLDwzFv3jysXLlS8vzSpUvxzDPP4I9//CNKSkrw7rvvol+/fva2XH/99Rg+fDh27tyJxx9/HIsWLTJl/3z99dc4cOAA1q9fj08//RStra2YNWsWYmJisGHDBmzatAkxMTG45ppr7DNcnn/+eaxatQorV67Epk2bcObMGXz88cemtIeIiIiIiIwL83UDiIiIiIgoOL322msYNWoUNm7ciA8++AArV67E+PHj8dRTT9mXWbVqFVJSUnDw4EEMGzYMP/3pTyXrWLlyJZKTk1FSUoJRo0bZH3/ooYdw8803q26/qakJH374IQoLCwEA//Vf/4Xs7Gy8/PLLiI2NxdmzZ/HSSy/hlVdewV133QUAGDp0KHJycgAA77zzDjo7O7Fq1SpERUXhkksuwbFjx/CrX/3K7X0THR2NN954A7169bLvh5CQELzxxhv22S+rV69G37598e2332L27Nl48cUXsXTpUvs++vvf/44vv/zS7bYQEREREZFrOIOFiIiIiIg8Ijk5Gffeey9GjBiBm266CTt37kR+fj5iYmLs//3oRz8CAHsasEOHDuH2229HRkYGYmNjkZ6eDgCoqqqSrHvChAma23/33XeRkZGBMWPGAADGjh2LjIwM/Otf/wIAHDhwAOfPn8eVV14p+/oDBw5gzJgxiIqKsj82ZcoUg3tB3qWXXmoPrgDAzp07UV5ejj59+tj3TXx8PM6dO4dDhw6hsbERJ0+elGw/LCxM134gIiIiIiLP4AwWIiIiIiLymLCwMISFdf/s6Orqwg033IBnnnnGabkBAwYAAG644QakpKTg9ddfx8CBA9HV1YVRo0Y5FYKPjo7W3PaqVauwf/9++/ZtbVi5ciXuvfdeREZGqr5eT32TkJAQp+Xa29s1X+fY/q6uLlx22WV45513nJZNSkrSXB8REREREXkfAyxEREREROQV48ePx4cffoi0tDRJ0MOmrq4OBw4cwKuvvopp06YBADZt2uTStvbu3YsdO3bg22+/RXx8vP3xhoYGTJ8+Hfv27UNWVhYiIyPx9ddf4+6773Zax8iRI/HWW2+hra3NHozZunWrZJmkpCScPXsWLS0t9qDJ7t27Dbd3/PjxWLNmDZKTkxEbGyu7zIABA7B161ZMnz4dANDR0YGdO3di/PjxhrdHRERERETuY4owIiIiIiLyitzcXJw5cwbz5s1DUVERKioq8NVXX+EXv/gFOjs7YbVakZCQgNdeew3l5eX45ptv8PDDD7u0rZUrV2LSpEmYPn06Ro0aZf8vJycHU6ZMwcqVKxEREYFHHnkEixcvxptvvolDhw5h69atWLlyJQDg9ttvR0hICBYuXIiSkhJ8/vnneO655yTbmTx5MqKiovD73/8e5eXlePfdd/GPf/zDcHvvuOMOJCYm4sYbb8TGjRtRWVmJgoICPPjggzh27BgA4MEHH8Ty5cvx8ccf4/vvv8d9992HhoYGl/YPERERERG5jwEWIiIiIiLyioEDB2Lz5s3o7OzE1VdfjVGjRuHBBx9EXFwcQkJCEBISgn/961/YuXMnRo0ahd/85jd49tlnDW/nwoULePvtt+3F4B399Kc/xdtvv40LFy7gj3/8I377299i2bJlGDFiBG677TZUV1cDAGJiYvCf//wHJSUlGDduHP7whz84pTeLj4/H22+/jc8//xyXXnop3nvvPTz++OOG2xwVFYUNGzYgNTUVN998M0aMGIFf/OIX+P/buWMahmEoiqK/AAIiDLIGhglY4WCgoWAWHtutc59UKcs5BOz96v211nfRMsao3ntd11Xneda2bdVai98CAAD+4/X+5bAwAAAANeesfd/rvu86juPp7wAAAA+yYAEAAAAAAAgJLAAAAAAAACEnwgAAAAAAAEIWLAAAAAAAACGBBQAAAAAAICSwAAAAAAAAhAQWAAAAAACAkMACAAAAAAAQElgAAAAAAABCAgsAAAAAAEBIYAEAAAAAAAgJLAAAAAAAAKEP/bnkp7Ik9tkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "buildings.plot(x='Year Acquired', y='Square Footage', figsize=(20,5),kind='scatter',logy=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "9c3f78fe", "metadata": {}, "source": [ "Nice. \n", "\n", "Ok, now that we have our data cleaned, we can further transform our data by creating a statistics dataframe out of our data:" ] }, { "cell_type": "code", "execution_count": 8, "id": "f58325ec", "metadata": {}, "outputs": [], "source": [ "stats = buildings.groupby(\"Year Acquired\")[\"Square Footage\"].describe()" ] }, { "cell_type": "code", "execution_count": 9, "id": "e5010562", "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", "
countmeanstdmin25%50%75%max
Year Acquired
1753.01.01200.000000NaN1200.01200.01200.01200.001200.0
1802.02.02220.0000001943.129435846.01533.02220.02907.003594.0
1810.03.01344.3333331809.945948216.0300.5385.01908.503432.0
1832.01.0120000.000000NaN120000.0120000.0120000.0120000.00120000.0
1837.01.010302.000000NaN10302.010302.010302.010302.0010302.0
...........................
2015.020.015254.65000029153.085290144.0696.03152.010590.25105000.0
2016.010.030483.90000061864.1804911152.02464.03352.53793.00184000.0
2017.01.06720.000000NaN6720.06720.06720.06720.006720.0
2018.04.04290.0000005153.6443421455.01455.01852.54687.5012000.0
2019.02.0760.0000000.000000760.0760.0760.0760.00760.0
\n", "

171 rows × 8 columns

\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "Year Acquired \n", "1753.0 1.0 1200.000000 NaN 1200.0 1200.0 \n", "1802.0 2.0 2220.000000 1943.129435 846.0 1533.0 \n", "1810.0 3.0 1344.333333 1809.945948 216.0 300.5 \n", "1832.0 1.0 120000.000000 NaN 120000.0 120000.0 \n", "1837.0 1.0 10302.000000 NaN 10302.0 10302.0 \n", "... ... ... ... ... ... \n", "2015.0 20.0 15254.650000 29153.085290 144.0 696.0 \n", "2016.0 10.0 30483.900000 61864.180491 1152.0 2464.0 \n", "2017.0 1.0 6720.000000 NaN 6720.0 6720.0 \n", "2018.0 4.0 4290.000000 5153.644342 1455.0 1455.0 \n", "2019.0 2.0 760.000000 0.000000 760.0 760.0 \n", "\n", " 50% 75% max \n", "Year Acquired \n", "1753.0 1200.0 1200.00 1200.0 \n", "1802.0 2220.0 2907.00 3594.0 \n", "1810.0 385.0 1908.50 3432.0 \n", "1832.0 120000.0 120000.00 120000.0 \n", "1837.0 10302.0 10302.00 10302.0 \n", "... ... ... ... \n", "2015.0 3152.0 10590.25 105000.0 \n", "2016.0 3352.5 3793.00 184000.0 \n", "2017.0 6720.0 6720.00 6720.0 \n", "2018.0 1852.5 4687.50 12000.0 \n", "2019.0 760.0 760.00 760.0 \n", "\n", "[171 rows x 8 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats" ] }, { "cell_type": "markdown", "id": "7db1700c", "metadata": {}, "source": [ "And make some plots with this transformed dataset:" ] }, { "cell_type": "code", "execution_count": 10, "id": "4881ae1e", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(10,3)) # using matplotlib to make figure & axes objects\n", "ax.plot(stats['max'],marker='.', label='Max') # plotting the 'max' column of stats\n", "ax.plot(stats['min'],marker='.', label='Min') # plotting the 'min' column of stats\n", "ax.set_xlabel(\"Year Acquired\") # setting the x-label to be Year Acquired\n", "ax.set_ylabel(\"Max Square Footage\") # setting y-label to be Max Square Footage\n", "ax.set_yscale('log')\n", "ax.legend() # placing the labels in a legend that i added to the plots\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "549e3534", "metadata": {}, "source": [ "So, this is a case were we not have a very different dataframe from were we started. Its not that we necessarily *can't* make this kind of plot using the original dataframe with vega-lite, but if we are already doing analysis and transforms in Python with our data, we can then use Altair to export the results of this analysis to share with others. So, let's get to it! First, let's re-make this plot with Altair:" ] }, { "cell_type": "code", "execution_count": 11, "id": "8af4bdb8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first, just one line\n", "lines = alt.Chart(stats).mark_line().encode(\n", " alt.X(\"Year Acquired:O\"),\n", " #alt.X('max:Q'),\n", " alt.Y(\"max:Q\")\n", ")\n", "lines" ] }, { "cell_type": "markdown", "id": "f2fae385", "metadata": {}, "source": [ "https://altair-viz.github.io/user_guide/data.html#including-index-data" ] }, { "cell_type": "code", "execution_count": 12, "id": "1268b19b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first, just one line\n", "lines = alt.Chart(stats.reset_index()).mark_line().encode(\n", " alt.X(\"Year Acquired:Q\"),\n", " #alt.X('max:Q'),\n", " alt.Y(\"max:Q\")\n", ").properties(\n", " width=800\n", ")\n", "lines" ] }, { "cell_type": "code", "execution_count": 13, "id": "4ac10448", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first, just one line\n", "lines = alt.Chart(stats.reset_index()).mark_line().encode(\n", " alt.X(\"Year Acquired:O\"),\n", " alt.Y(\"max:Q\")\n", ").properties(\n", " width=800\n", ")\n", "lines" ] }, { "cell_type": "code", "execution_count": 14, "id": "01ba212c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first, just one line\n", "lines = alt.Chart(stats.reset_index()).mark_line().encode(\n", " alt.X(\"Year Acquired:T\"),\n", " alt.Y(\"max:Q\")\n", ").properties(\n", " width=800\n", ")\n", "lines" ] }, { "cell_type": "code", "execution_count": 15, "id": "0251d0b4", "metadata": {}, "outputs": [], "source": [ "stats.index = pd.to_datetime(stats.index.astype('int'), format='%Y')" ] }, { "cell_type": "code", "execution_count": 16, "id": "885483a0", "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", "
countmeanstdmin25%50%75%max
Year Acquired
1753-01-011.01200.000000NaN1200.01200.01200.01200.001200.0
1802-01-012.02220.0000001943.129435846.01533.02220.02907.003594.0
1810-01-013.01344.3333331809.945948216.0300.5385.01908.503432.0
1832-01-011.0120000.000000NaN120000.0120000.0120000.0120000.00120000.0
1837-01-011.010302.000000NaN10302.010302.010302.010302.0010302.0
...........................
2015-01-0120.015254.65000029153.085290144.0696.03152.010590.25105000.0
2016-01-0110.030483.90000061864.1804911152.02464.03352.53793.00184000.0
2017-01-011.06720.000000NaN6720.06720.06720.06720.006720.0
2018-01-014.04290.0000005153.6443421455.01455.01852.54687.5012000.0
2019-01-012.0760.0000000.000000760.0760.0760.0760.00760.0
\n", "

171 rows × 8 columns

\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "Year Acquired \n", "1753-01-01 1.0 1200.000000 NaN 1200.0 1200.0 \n", "1802-01-01 2.0 2220.000000 1943.129435 846.0 1533.0 \n", "1810-01-01 3.0 1344.333333 1809.945948 216.0 300.5 \n", "1832-01-01 1.0 120000.000000 NaN 120000.0 120000.0 \n", "1837-01-01 1.0 10302.000000 NaN 10302.0 10302.0 \n", "... ... ... ... ... ... \n", "2015-01-01 20.0 15254.650000 29153.085290 144.0 696.0 \n", "2016-01-01 10.0 30483.900000 61864.180491 1152.0 2464.0 \n", "2017-01-01 1.0 6720.000000 NaN 6720.0 6720.0 \n", "2018-01-01 4.0 4290.000000 5153.644342 1455.0 1455.0 \n", "2019-01-01 2.0 760.000000 0.000000 760.0 760.0 \n", "\n", " 50% 75% max \n", "Year Acquired \n", "1753-01-01 1200.0 1200.00 1200.0 \n", "1802-01-01 2220.0 2907.00 3594.0 \n", "1810-01-01 385.0 1908.50 3432.0 \n", "1832-01-01 120000.0 120000.00 120000.0 \n", "1837-01-01 10302.0 10302.00 10302.0 \n", "... ... ... ... \n", "2015-01-01 3152.0 10590.25 105000.0 \n", "2016-01-01 3352.5 3793.00 184000.0 \n", "2017-01-01 6720.0 6720.00 6720.0 \n", "2018-01-01 1852.5 4687.50 12000.0 \n", "2019-01-01 760.0 760.00 760.0 \n", "\n", "[171 rows x 8 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats" ] }, { "cell_type": "code", "execution_count": 17, "id": "9190d3a7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first, just one line\n", "lines = alt.Chart(stats.reset_index()).mark_line().encode(\n", " alt.X(\"Year Acquired:T\"),\n", " alt.Y(\"max:Q\")\n", ").properties(\n", " width=800\n", ")\n", "lines" ] }, { "cell_type": "markdown", "id": "330be54d", "metadata": {}, "source": [ "Now, let's add in the min line, to do that we need to make a layered plot:" ] }, { "cell_type": "code", "execution_count": 25, "id": "3fe9c641", "metadata": {}, "outputs": [], "source": [ "#https://github.com/altair-viz/altair/issues/968\n", "# base = alt.Chart(df.reset_index()).encode(x='x')\n", "\n", "# alt.layer(\n", "# base.mark_line(color='blue').encode(y='squared'),\n", "# base.mark_line(color='red').encode(y='cubed')\n", "# )" ] }, { "cell_type": "code", "execution_count": 18, "id": "840551db", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#https://github.com/altair-viz/altair/issues/968\n", "lines = alt.Chart(stats.reset_index()).encode(\n", " alt.X('Year Acquired:T')\n", ").properties(\n", " width=800\n", ")\n", "\n", "lines = alt.layer(\n", " lines.mark_line(color='blue').encode(y='max:Q'),\n", " lines.mark_line(color='red').encode(y='min:Q')\n", ")\n", "lines" ] }, { "cell_type": "markdown", "id": "ed574ce5", "metadata": {}, "source": [ "Let's set a log scale for each of these:" ] }, { "cell_type": "code", "execution_count": 19, "id": "bb8ee898", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lines = alt.Chart(stats.reset_index()).encode(\n", " alt.X('Year Acquired:T')\n", ").properties(\n", " width=800\n", ")\n", "\n", "lines = alt.layer(\n", " lines.mark_line(color='blue').encode(\n", " alt.Y('max:Q',scale=alt.Scale(type='log'))\n", " ),\n", " lines.mark_line(color='red').encode(\n", " alt.Y('min:Q',scale=alt.Scale(type='log'))\n", " )\n", ")\n", "lines" ] }, { "cell_type": "markdown", "id": "fef337d5", "metadata": {}, "source": [ "Neat! Let's save this plot:" ] }, { "cell_type": "code", "execution_count": 20, "id": "640400f1", "metadata": {}, "outputs": [], "source": [ "myJekyllDir = '/Users/jnaiman/jnaiman.github.io/assets/json/'\n", "#myJekyllDir = '/Users/jillnaiman/jnaiman.github.io/assets/json/'\n", "\n", "## if on PL there is an extra step:\n", "# myJekyllDir = './'\n", "## and then download and move" ] }, { "cell_type": "code", "execution_count": 21, "id": "8f97a42d", "metadata": {}, "outputs": [], "source": [ "lines.properties(width='container').save(myJekyllDir+\"buildings_sqft.json\") \n", "# non-faceted chart, so can save with responsive size" ] }, { "cell_type": "markdown", "id": "74353b93", "metadata": {}, "source": [ "Before moving on, we can make this [\"easily\" interactive with simple pans/zooms](https://altair-viz.github.io/altair-tutorial/notebooks/06-Selections.html):" ] }, { "cell_type": "code", "execution_count": 22, "id": "99247a34", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lines = alt.Chart(stats.reset_index()).encode(\n", " alt.X('Year Acquired:T')\n", ").properties(\n", " width=800\n", ")\n", "\n", "lines = alt.layer(\n", " lines.mark_line(color='blue').encode(\n", " alt.Y('max:Q',scale=alt.Scale(type='log'))\n", " ),\n", " lines.mark_line(color='red').encode(\n", " alt.Y('min:Q',scale=alt.Scale(type='log'))\n", " )\n", ").interactive()\n", "lines" ] }, { "cell_type": "markdown", "id": "7b38ee01", "metadata": {}, "source": [ "Let's re-save this again:" ] }, { "cell_type": "code", "execution_count": 23, "id": "f9d1ee08", "metadata": {}, "outputs": [], "source": [ "lines.properties(width='container').save(myJekyllDir+\"buildings_sqft.json\") " ] }, { "cell_type": "markdown", "id": "5ae31660", "metadata": {}, "source": [ "### A few extra things we may/maynot get to" ] }, { "cell_type": "markdown", "id": "49fe7456", "metadata": {}, "source": [ "#### 1. Adding a mouse over for both lines (skip this one)\n", "\n", "Porting from: https://altair-viz.github.io/gallery/multiline_tooltip.html#multi-line-tooltip" ] }, { "cell_type": "code", "execution_count": 24, "id": "cd9b094f", "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", "
minmax
Year Acquired
1753-01-011200.01200.0
1802-01-01846.03594.0
1810-01-01216.03432.0
1832-01-01120000.0120000.0
1837-01-0110302.010302.0
\n", "
" ], "text/plain": [ " min max\n", "Year Acquired \n", "1753-01-01 1200.0 1200.0\n", "1802-01-01 846.0 3594.0\n", "1810-01-01 216.0 3432.0\n", "1832-01-01 120000.0 120000.0\n", "1837-01-01 10302.0 10302.0" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats_min = stats[['min','max']]\n", "stats_min.head()" ] }, { "cell_type": "code", "execution_count": 25, "id": "aef08f04", "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", "
Year AcquiredStatisticstat
01753-01-01min1200.0
11802-01-01min846.0
21810-01-01min216.0
31832-01-01min120000.0
41837-01-01min10302.0
\n", "
" ], "text/plain": [ " Year Acquired Statistic stat\n", "0 1753-01-01 min 1200.0\n", "1 1802-01-01 min 846.0\n", "2 1810-01-01 min 216.0\n", "3 1832-01-01 min 120000.0\n", "4 1837-01-01 min 10302.0" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# easier for multi-line plots\n", "source = stats_min.reset_index().melt('Year Acquired', \n", " var_name='Statistic', value_name='stat')\n", "source.head()" ] }, { "cell_type": "code", "execution_count": 26, "id": "6983346f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The basic line\n", "line = alt.Chart(source).mark_line(interpolate='basis').encode(\n", " alt.Y('stat:Q',scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color='Statistic:N'\n", ")\n", "line" ] }, { "cell_type": "code", "execution_count": 27, "id": "b2f53fa7-b47d-4e35-ac18-a824c3e2313e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0malt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselection_point\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'str | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[Any]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mbind\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[Binding | str]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mempty\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[bool]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mexpr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[Expr]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mencodings\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[list[SingleDefUnitChannel_T]]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfields\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[list[str]]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[str]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclear\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[str | bool]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mresolve\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[SelectionResolution_T]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtoggle\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[str | bool]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnearest\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Optional[bool]'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Any'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;34m'Parameter'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Create a point selection parameter. Selection parameters define data queries that are driven by direct manipulation from user input (e.g., mouse clicks or drags). Point selection parameters are used to select multiple discrete data values; the first value is selected on click and additional values toggled on shift-click. To select a continuous range of data values on drag interval selection parameters (`selection_interval`) can be used instead.\n", "\n", "Parameters\n", "----------\n", "name : string (optional)\n", " The name of the parameter. If not specified, a unique name will be\n", " created.\n", "value : any (optional)\n", " The default value of the parameter. If not specified, the parameter\n", " will be created without a default value.\n", "bind : :class:`Binding`, str (optional)\n", " Binds the parameter to an external input element such as a slider,\n", " selection list or radio button group.\n", "empty : boolean (optional)\n", " For selection parameters, the predicate of empty selections returns\n", " True by default. Override this behavior, by setting this property\n", " 'empty=False'.\n", "expr : :class:`Expr` (optional)\n", " An expression for the value of the parameter. This expression may\n", " include other parameters, in which case the parameter will\n", " automatically update in response to upstream parameter changes.\n", "encodings : List[str] (optional)\n", " A list of encoding channels. The corresponding data field values\n", " must match for a data tuple to fall within the selection.\n", "fields : List[str] (optional)\n", " A list of field names whose values must match for a data tuple to\n", " fall within the selection.\n", "on : string (optional)\n", " A Vega event stream (object or selector) that triggers the selection.\n", " For interval selections, the event stream must specify a start and end.\n", "clear : string or boolean (optional)\n", " Clears the selection, emptying it of all values. This property can\n", " be an Event Stream or False to disable clear. Default is 'dblclick'.\n", "resolve : enum('global', 'union', 'intersect') (optional)\n", " With layered and multi-view displays, a strategy that determines\n", " how selections' data queries are resolved when applied in a filter\n", " transform, conditional encoding rule, or scale domain.\n", " One of:\n", "\n", " * 'global': only one brush exists for the entire SPLOM. When the\n", " user begins to drag, any previous brushes are cleared, and a\n", " new one is constructed.\n", " * 'union': each cell contains its own brush, and points are\n", " highlighted if they lie within any of these individual brushes.\n", " * 'intersect': each cell contains its own brush, and points are\n", " highlighted only if they fall within all of these individual\n", " brushes.\n", "\n", " The default is 'global'.\n", "toggle : string or boolean (optional)\n", " Controls whether data values should be toggled (inserted or\n", " removed from a point selection) or only ever inserted into\n", " point selections.\n", " One of:\n", "\n", " * True (default): the toggle behavior, which corresponds to\n", " \"event.shiftKey\". As a result, data values are toggled\n", " when the user interacts with the shift-key pressed.\n", " * False: disables toggling behaviour; the selection will\n", " only ever contain a single data value corresponding\n", " to the most recent interaction.\n", " * A Vega expression which is re-evaluated as the user interacts.\n", " If the expression evaluates to True, the data value is\n", " toggled into or out of the point selection. If the expression\n", " evaluates to False, the point selection is first cleared, and\n", " the data value is then inserted. For example, setting the\n", " value to the Vega expression True will toggle data values\n", " without the user pressing the shift-key.\n", "\n", "nearest : boolean (optional)\n", " When true, an invisible voronoi diagram is computed to accelerate\n", " discrete selection. The data value nearest the mouse cursor is\n", " added to the selection. The default is False, which means that\n", " data values must be interacted with directly (e.g., clicked on)\n", " to be added to the selection.\n", "**kwds :\n", " Additional keywords to control the selection.\n", "\n", "Returns\n", "-------\n", "parameter: Parameter\n", " The parameter object that can be used in chart creation.\n", "\u001b[0;31mFile:\u001b[0m /opt/anaconda3/envs/DataViz2/lib/python3.10/site-packages/altair/vegalite/v5/api.py\n", "\u001b[0;31mType:\u001b[0m function" ] } ], "source": [ "alt.selection_point?" ] }, { "cell_type": "code", "execution_count": 28, "id": "414bf80a-b58d-4547-870b-a220a636cb9b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a selection that chooses the nearest point & selects based on x-value\n", "nearest = alt.selection_point(nearest=True, on='mousemove',\n", " fields=['Year Acquired'], empty=False)\n", "\n", "# The basic line\n", "# given that we want to be accurate to the data, we probably don't want to interpolate\n", "line = alt.Chart(source).mark_line().encode(\n", " alt.Y('stat:Q',scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color='Statistic:N'\n", ")\n", "\n", "# Transparent selectors across the chart. This is what tells us\n", "# the x-value of the cursor\n", "selectors = alt.Chart(source).mark_point().encode(\n", " x='Year Acquired:T',\n", " opacity=alt.value(0),\n", ").add_params(\n", " nearest\n", ")\n", "\n", "# Draw points on the line, and highlight based on selection\n", "points = line.mark_point().encode(\n", " opacity=alt.condition(nearest, alt.value(1), alt.value(0))\n", ")\n", "\n", "# Draw text labels near the points, and highlight based on selection\n", "text = line.mark_text(align='left', dx=5, dy=-5).encode(\n", " text=alt.condition(nearest, 'stat:Q', alt.value(' '))\n", ")\n", "\n", "# Draw a rule at the location of the selection\n", "rules = alt.Chart(source).mark_rule(color='gray').encode(\n", " x='Year Acquired:T',\n", ").transform_filter(\n", " nearest\n", ")\n", "\n", "# Put the five layers into a chart and bind the data\n", "alt.layer(\n", " line, selectors, points, rules, text\n", ").properties(\n", " width=600, height=300\n", ")" ] }, { "cell_type": "markdown", "id": "fd7f0ca1", "metadata": {}, "source": [ "#### 2. Deciding what statistic to plot (do this one)\n", "\n", "Porting from: https://altair-viz.github.io/user_guide/interactions.html#binding-adding-data-driven-inputs\n", "\n", "With update from \"mouseover\" to \"mousemove\": https://github.com/altair-viz/altair/issues/3257 " ] }, { "cell_type": "code", "execution_count": 29, "id": "3a31a0d7", "metadata": {}, "outputs": [], "source": [ "source2 = stats.reset_index().melt('Year Acquired', \n", " var_name='Statistic', value_name='stat')\n" ] }, { "cell_type": "code", "execution_count": 30, "id": "ad4af787", "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", "
Year AcquiredStatisticstat
01753-01-01count1.0
11802-01-01count2.0
21810-01-01count3.0
31832-01-01count1.0
41837-01-01count1.0
\n", "
" ], "text/plain": [ " Year Acquired Statistic stat\n", "0 1753-01-01 count 1.0\n", "1 1802-01-01 count 2.0\n", "2 1810-01-01 count 3.0\n", "3 1832-01-01 count 1.0\n", "4 1837-01-01 count 1.0" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "source2.head()" ] }, { "cell_type": "code", "execution_count": 31, "id": "7f2b49c4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "line = alt.Chart(source2).mark_line().encode(\n", " alt.Y('stat:Q',scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color='Statistic:N'\n", ")\n", "line" ] }, { "cell_type": "markdown", "id": "e9cc32dd", "metadata": {}, "source": [ "We see the above has some issues -- could be due to our scale choice, let's try w/o the log scale:" ] }, { "cell_type": "code", "execution_count": 32, "id": "e58a2ca1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "line = alt.Chart(source2).mark_line().encode(\n", " alt.Y('stat:Q'),#,scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color='Statistic:N'\n", ")\n", "line" ] }, { "cell_type": "markdown", "id": "242b9324", "metadata": {}, "source": [ "So, we probably have some zeros to attend to:" ] }, { "cell_type": "code", "execution_count": 33, "id": "a3405511", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "source2['stat'].min()" ] }, { "cell_type": "code", "execution_count": 34, "id": "aa1f907d", "metadata": {}, "outputs": [], "source": [ "source2.loc[source2['stat'] == 0,'stat'] = np.nan" ] }, { "cell_type": "code", "execution_count": 35, "id": "5026d0dd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "line = alt.Chart(source2).mark_line().encode(\n", " alt.Y('stat:Q',scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color='Statistic:N'\n", ")\n", "line" ] }, { "cell_type": "code", "execution_count": null, "id": "fcc35eed", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "input_dropdown = alt.binding_select(options=['50%','mean','min','max','std'], \n", " name='Statistic')\n", "selection = alt.selection_point(fields=['Statistic'], bind=input_dropdown)\n", "color = alt.condition(selection,\n", " alt.Color('Statistic:N', legend=None),\n", " alt.value('lightgray'))\n", "\n", "line = alt.Chart(source2).mark_line().encode(\n", " alt.Y('stat:Q',scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color=color\n", ").add_params(\n", " selection\n", ")\n", "line" ] }, { "cell_type": "markdown", "id": "107578c3", "metadata": {}, "source": [ "A little hard to see some of those lines when they are \"behind\" others -- we can also mess with our opacity as well:" ] }, { "cell_type": "code", "execution_count": 53, "id": "dcfcdc85", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "input_dropdown = alt.binding_select(options=['50%','mean','min','max','std'], \n", " name='Statistic')\n", "selection = alt.selection_point(fields=['Statistic'], bind=input_dropdown)\n", "color = alt.condition(selection,\n", " alt.Color('Statistic:N', legend=None),\n", " alt.value('lightgray'))\n", "opacity = alt.condition(selection, alt.value(1.0), alt.value(0.25))\n", "\n", "line = alt.Chart(source2).mark_line().encode(\n", " alt.Y('stat:Q',scale=alt.Scale(type='log')),\n", " x='Year Acquired:T',\n", " color=color,\n", " opacity=opacity\n", ").add_params(\n", " selection\n", ")\n", "line" ] }, { "cell_type": "markdown", "id": "9c3d1148", "metadata": {}, "source": [ "If we like this, we can save it as well:" ] }, { "cell_type": "code", "execution_count": 54, "id": "dd271d1d", "metadata": {}, "outputs": [], "source": [ "line.properties(width='container').save(myJekyllDir+\"buildings_sqft_stats.json\") " ] }, { "cell_type": "markdown", "id": "13531926", "metadata": {}, "source": [ "## 2. Corgis Dataset examples (we often times don't get to this, at least on the first day)" ] }, { "cell_type": "markdown", "id": "753601a0", "metadata": {}, "source": [ "Let's start by reading in this dataset and taking a look -- we'll start with the number of corgis born over time:" ] }, { "cell_type": "code", "execution_count": 55, "id": "7b21af27", "metadata": {}, "outputs": [], "source": [ "corgs = pd.read_csv('https://raw.githubusercontent.com/UIUC-iSchool-DataViz/is445_bcubcg_fall2022/main/data/corgs_per_country_over_time_columns_2020.csv')" ] }, { "cell_type": "code", "execution_count": 56, "id": "48c29e18", "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", "
YearsUnited StatesBrazilRussiaJapanVietnamGermanyFranceUnited KingdomItaly...CroatiaNew ZealandIrelandLithuaniaUruguayLatviaSloveniaEstoniaNetherlands AntillesKosovo
01917000000010...0000000000
11918000000000...0000000000
21919000000000...0000000001
31920000000000...0000000000
41921000000000...0000000000
\n", "

5 rows × 41 columns

\n", "
" ], "text/plain": [ " Years United States Brazil Russia Japan Vietnam Germany France \\\n", "0 1917 0 0 0 0 0 0 0 \n", "1 1918 0 0 0 0 0 0 0 \n", "2 1919 0 0 0 0 0 0 0 \n", "3 1920 0 0 0 0 0 0 0 \n", "4 1921 0 0 0 0 0 0 0 \n", "\n", " United Kingdom Italy ... Croatia New Zealand Ireland Lithuania \\\n", "0 1 0 ... 0 0 0 0 \n", "1 0 0 ... 0 0 0 0 \n", "2 0 0 ... 0 0 0 0 \n", "3 0 0 ... 0 0 0 0 \n", "4 0 0 ... 0 0 0 0 \n", "\n", " Uruguay Latvia Slovenia Estonia Netherlands Antilles Kosovo \n", "0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 \n", "2 0 0 0 0 0 1 \n", "3 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 \n", "\n", "[5 rows x 41 columns]" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corgs.head()" ] }, { "cell_type": "markdown", "id": "3ac38572", "metadata": {}, "source": [ "So, this shows the number of corgis born over time in different countries. The easiest plot we can think of is probably a line chart of each country over time. First, let's start with the United States:" ] }, { "cell_type": "code", "execution_count": 57, "id": "c7b01113", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linecorg = alt.Chart(corgs).mark_line().encode(\n", " alt.X('Years:Q'),\n", " alt.Y('United States:Q')\n", ")\n", "linecorg" ] }, { "cell_type": "markdown", "id": "367ff0b1", "metadata": {}, "source": [ "Here again, we probably want to specify that we have time units:" ] }, { "cell_type": "code", "execution_count": 58, "id": "fa4a063e", "metadata": {}, "outputs": [], "source": [ "corgs['Years'] = pd.to_datetime(corgs['Years'].astype('int'), format='%Y')" ] }, { "cell_type": "code", "execution_count": 59, "id": "a95ce9c1", "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", "
YearsUnited StatesBrazilRussiaJapanVietnamGermanyFranceUnited KingdomItaly...CroatiaNew ZealandIrelandLithuaniaUruguayLatviaSloveniaEstoniaNetherlands AntillesKosovo
01917-01-01000000010...0000000000
11918-01-01000000000...0000000000
21919-01-01000000000...0000000001
31920-01-01000000000...0000000000
41921-01-01000000000...0000000000
..................................................................
992016-01-012290217205455282...8309000271772
1002017-01-012130260212860104...4300200825101
1012018-01-01198032903422552...6300000161256
1022019-01-01118018900306212...0000000161251
1032020-01-012016000000...00000000017
\n", "

104 rows × 41 columns

\n", "
" ], "text/plain": [ " Years United States Brazil Russia Japan Vietnam Germany \\\n", "0 1917-01-01 0 0 0 0 0 0 \n", "1 1918-01-01 0 0 0 0 0 0 \n", "2 1919-01-01 0 0 0 0 0 0 \n", "3 1920-01-01 0 0 0 0 0 0 \n", "4 1921-01-01 0 0 0 0 0 0 \n", ".. ... ... ... ... ... ... ... \n", "99 2016-01-01 229 0 217 2 0 54 \n", "100 2017-01-01 213 0 260 2 1 28 \n", "101 2018-01-01 198 0 329 0 3 42 \n", "102 2019-01-01 118 0 189 0 0 30 \n", "103 2020-01-01 2 0 16 0 0 0 \n", "\n", " France United Kingdom Italy ... Croatia New Zealand Ireland \\\n", "0 0 1 0 ... 0 0 0 \n", "1 0 0 0 ... 0 0 0 \n", "2 0 0 0 ... 0 0 0 \n", "3 0 0 0 ... 0 0 0 \n", "4 0 0 0 ... 0 0 0 \n", ".. ... ... ... ... ... ... ... \n", "99 55 28 2 ... 8 3 0 \n", "100 60 10 4 ... 4 3 0 \n", "101 25 5 2 ... 6 3 0 \n", "102 62 1 2 ... 0 0 0 \n", "103 0 0 0 ... 0 0 0 \n", "\n", " Lithuania Uruguay Latvia Slovenia Estonia Netherlands Antilles \\\n", "0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 \n", ".. ... ... ... ... ... ... \n", "99 9 0 0 0 27 17 \n", "100 0 2 0 0 8 25 \n", "101 0 0 0 0 16 12 \n", "102 0 0 0 0 16 12 \n", "103 0 0 0 0 0 0 \n", "\n", " Kosovo \n", "0 0 \n", "1 0 \n", "2 1 \n", "3 0 \n", "4 0 \n", ".. ... \n", "99 72 \n", "100 101 \n", "101 56 \n", "102 51 \n", "103 17 \n", "\n", "[104 rows x 41 columns]" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corgs" ] }, { "cell_type": "code", "execution_count": 60, "id": "1c063665", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linecorg = alt.Chart(corgs).mark_line().encode(\n", " alt.X('Years:T'),\n", " alt.Y('United States:Q')\n", ")\n", "linecorg" ] }, { "cell_type": "markdown", "id": "4a16ad92", "metadata": {}, "source": [ "That looks better! To make multiple lines for each country, we want to probably use the `melt` operation we did before. To do that, we need to make years the index:" ] }, { "cell_type": "code", "execution_count": 61, "id": "b5f349e5", "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", "
United StatesBrazilRussiaJapanVietnamGermanyFranceUnited KingdomItalySouth Africa...CroatiaNew ZealandIrelandLithuaniaUruguayLatviaSloveniaEstoniaNetherlands AntillesKosovo
Years
1917-01-010000000100...0000000000
1918-01-010000000000...0000000000
1919-01-010000000000...0000000001
1920-01-010000000000...0000000000
1921-01-010000000000...0000000000
\n", "

5 rows × 40 columns

\n", "
" ], "text/plain": [ " United States Brazil Russia Japan Vietnam Germany France \\\n", "Years \n", "1917-01-01 0 0 0 0 0 0 0 \n", "1918-01-01 0 0 0 0 0 0 0 \n", "1919-01-01 0 0 0 0 0 0 0 \n", "1920-01-01 0 0 0 0 0 0 0 \n", "1921-01-01 0 0 0 0 0 0 0 \n", "\n", " United Kingdom Italy South Africa ... Croatia New Zealand \\\n", "Years ... \n", "1917-01-01 1 0 0 ... 0 0 \n", "1918-01-01 0 0 0 ... 0 0 \n", "1919-01-01 0 0 0 ... 0 0 \n", "1920-01-01 0 0 0 ... 0 0 \n", "1921-01-01 0 0 0 ... 0 0 \n", "\n", " Ireland Lithuania Uruguay Latvia Slovenia Estonia \\\n", "Years \n", "1917-01-01 0 0 0 0 0 0 \n", "1918-01-01 0 0 0 0 0 0 \n", "1919-01-01 0 0 0 0 0 0 \n", "1920-01-01 0 0 0 0 0 0 \n", "1921-01-01 0 0 0 0 0 0 \n", "\n", " Netherlands Antilles Kosovo \n", "Years \n", "1917-01-01 0 0 \n", "1918-01-01 0 0 \n", "1919-01-01 0 1 \n", "1920-01-01 0 0 \n", "1921-01-01 0 0 \n", "\n", "[5 rows x 40 columns]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corgs = corgs.set_index('Years')\n", "corgs.head()" ] }, { "cell_type": "markdown", "id": "ae2eed0f", "metadata": {}, "source": [ "Now we can \"melt\" like before:" ] }, { "cell_type": "code", "execution_count": 62, "id": "86f8e8c7", "metadata": {}, "outputs": [], "source": [ "corg_source = corgs.reset_index().melt('Years', \n", " var_name='Country', value_name='country')" ] }, { "cell_type": "code", "execution_count": 63, "id": "d5b017d8", "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", "
YearsCountrycountry
01917-01-01United States0
11918-01-01United States0
21919-01-01United States0
31920-01-01United States0
41921-01-01United States0
\n", "
" ], "text/plain": [ " Years Country country\n", "0 1917-01-01 United States 0\n", "1 1918-01-01 United States 0\n", "2 1919-01-01 United States 0\n", "3 1920-01-01 United States 0\n", "4 1921-01-01 United States 0" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_source.head()" ] }, { "cell_type": "markdown", "id": "132438be", "metadata": {}, "source": [ "Now, let's try again with our multi-line plot:" ] }, { "cell_type": "code", "execution_count": 64, "id": "c3a49d72", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linecorg = alt.Chart(corg_source).mark_line().encode(\n", " alt.Y('country:Q'),\n", " x='Years:T',\n", " color='Country:N'\n", ")\n", "linecorg" ] }, { "cell_type": "markdown", "id": "ace87bce", "metadata": {}, "source": [ "Since there is a large range of corgis born, we might try a log-scale on the y-axis:" ] }, { "cell_type": "code", "execution_count": 65, "id": "835b428c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linecorg = alt.Chart(corg_source).mark_line().encode(\n", " alt.Y('country:Q',scale=alt.Scale(type='log')),\n", " x='Years:T',\n", " color='Country:N'\n", ")\n", "linecorg" ] }, { "cell_type": "markdown", "id": "8bb9795c", "metadata": {}, "source": [ "Here we see that there is an issue -- this is probably because there are zeros in our dataset:" ] }, { "cell_type": "code", "execution_count": 66, "id": "315d3094", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_source['country'].min()" ] }, { "cell_type": "markdown", "id": "793c1a4c", "metadata": {}, "source": [ "Potentially, we can \"clean\" these by setting any zeros to NaN's, however in this case those 0's are meaningful -- they are telling us that a particular country has no corgis born in that year! Instead, we have a few different options. One thing we can do [is apply a](https://stackoverflow.com/questions/58032074/why-is-altair-returning-an-empty-chart-when-using-log-scale) [filter opperation](https://altair-viz.github.io/user_guide/transform/filter.html#filter-transform) on our data:" ] }, { "cell_type": "code", "execution_count": 67, "id": "4b21cdd7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linecorg = alt.Chart(corg_source).transform_filter(\n", " alt.datum.country > 0\n", ").mark_line().encode(\n", " alt.Y('country:Q',scale=alt.Scale(type='log')),\n", " x='Years:T',\n", " color='Country:N'\n", ")\n", "linecorg" ] }, { "cell_type": "markdown", "id": "ab762ef4", "metadata": {}, "source": [ "This doesn't really get to our issue though -- we are just filtering out those zero years/countries. In this case, instead of filtering, we probably want to use a symmetric log instead of a log for our scale;" ] }, { "cell_type": "code", "execution_count": 68, "id": "f4b2d163", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linecorg = alt.Chart(corg_source).mark_line().encode(\n", " alt.Y('country:Q',scale=alt.Scale(type='symlog')),\n", " x='Years:T',\n", " color='Country:N'\n", ")\n", "linecorg" ] }, { "cell_type": "markdown", "id": "d02700cc", "metadata": {}, "source": [ "Even with this though, we have sort of a messy plot -- even if we allowed for selections (like with the buildings dataset above) we still have many lines that \"fall off\" our legend which is not helpful.\n", "\n", "Since this is data in different countries, we could think that maybe a good idea would be some kind of map!\n", "\n", "First, let's see what mappable data \"comes with\" vega-datasets:" ] }, { "cell_type": "code", "execution_count": 69, "id": "a573129b", "metadata": {}, "outputs": [], "source": [ "from vega_datasets import data" ] }, { "cell_type": "code", "execution_count": 70, "id": "0cf9ef16", "metadata": {}, "outputs": [], "source": [ "#data.countries" ] }, { "cell_type": "code", "execution_count": 71, "id": "fb55844c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.world_110m" ] }, { "cell_type": "markdown", "id": "3620bf17", "metadata": {}, "source": [ "Let's try plotting both of these:" ] }, { "cell_type": "code", "execution_count": 72, "id": "05f5e5e9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='gray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "world" ] }, { "cell_type": "markdown", "id": "cbf21c56", "metadata": {}, "source": [ "So, one way we can plot data on this plot is to plot dots over each of the countries showing how many corgis have been born in each one. For this though [we probably need the latitude and longitude points](https://altair-viz.github.io/altair-tutorial/notebooks/09-Geographic-plots.html)." ] }, { "cell_type": "markdown", "id": "f6f40961", "metadata": {}, "source": [ "One way to do this is [using the OpenStreetMap project](https://gis.stackexchange.com/questions/212796/getting-latlon-extent-of-country-by-its-name-using-python):" ] }, { "cell_type": "code", "execution_count": 73, "id": "d01ac06f", "metadata": {}, "outputs": [], "source": [ "import requests\n", "def get_boundingbox_country(country, output_as='center'):\n", " \"\"\"\n", " get the bounding box of a country in EPSG4326 given a country name\n", "\n", " Parameters\n", " ----------\n", " country : str\n", " name of the country in english and lowercase\n", " output_as : 'str\n", " chose from 'boundingbox' or 'center'. \n", " - 'boundingbox' for [latmin, latmax, lonmin, lonmax]\n", " - 'center' for [latcenter, loncenter]\n", "\n", " Returns\n", " -------\n", " output : list\n", " list with coordinates as str\n", " \"\"\"\n", " # create url\n", " url = '{0}{1}{2}'.format('http://nominatim.openstreetmap.org/search?country=',\n", " country,\n", " '&format=json&polygon=0')\n", " response = requests.get(url).json()[0]\n", "\n", " # parse response to list\n", " if output_as == 'boundingbox':\n", " lst = response[output_as]\n", " output = [float(i) for i in lst]\n", " if output_as == 'center':\n", " lst = [response.get(key) for key in ['lat','lon']]\n", " output = [float(i) for i in lst]\n", " return output" ] }, { "cell_type": "markdown", "id": "c8473e93", "metadata": {}, "source": [ "We can call OpenStreetMaps in a few different ways, with country codes or names:" ] }, { "cell_type": "code", "execution_count": 74, "id": "8b7ba374", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(39.7837304, -100.445882)" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lat,long = get_boundingbox_country('usa')\n", "lat,long" ] }, { "cell_type": "code", "execution_count": 75, "id": "1b257c1c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(39.7837304, -100.445882)" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lat,long = get_boundingbox_country('us')\n", "lat,long" ] }, { "cell_type": "code", "execution_count": 76, "id": "d6fda5f6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(39.7837304, -100.445882)" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lat,long = get_boundingbox_country('United States')\n", "lat,long" ] }, { "cell_type": "markdown", "id": "eeb3cb21", "metadata": {}, "source": [ "There is no guarantee that the dataset is formatted with the correct country codes -- so we'd best check and see:" ] }, { "cell_type": "code", "execution_count": 77, "id": "50e6c74a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['United States', 'Brazil', 'Russia', 'Japan', 'Vietnam', 'Germany',\n", " 'France', 'United Kingdom', 'Italy', 'South Africa', 'Ukraine', 'Spain',\n", " 'Poland', 'Canada', 'Korea, North', 'Romania', 'Australia', 'Portugal',\n", " 'Belgium', 'Czech Republic', 'Hungary', 'Belarus', 'Sweden', 'Austria',\n", " 'Switzerland', 'Israel', 'Serbia', 'Denmark', 'Finland', 'Norway',\n", " 'Croatia', 'New Zealand', 'Ireland', 'Lithuania', 'Uruguay', 'Latvia',\n", " 'Slovenia', 'Estonia', 'Netherlands Antilles', 'Kosovo'],\n", " dtype='object')" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corgs.columns" ] }, { "cell_type": "code", "execution_count": 78, "id": "7cecb018", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "United States 39.7837304 -100.445882\n", "Brazil -10.3333333 -53.2\n", "Russia 64.6863136 97.7453061\n", "Japan 36.5748441 139.2394179\n", "Vietnam 15.9266657 107.9650855\n", "Germany 51.1638175 10.4478313\n", "France 46.603354 1.8883335\n", "United Kingdom 54.7023545 -3.2765753\n", "Italy 42.6384261 12.674297\n", "South Africa -28.8166236 24.991639\n", "Ukraine 49.4871968 31.2718321\n", "Spain 39.3260685 -4.8379791\n", "Poland 52.215933 19.134422\n", "Canada 61.0666922 -107.991707\n", "Korea, North 40.3736611 127.0870417\n", "Romania 45.9852129 24.6859225\n", "Australia -24.7761086 134.755\n", "Portugal 39.6621648 -8.1353519\n", "Belgium 50.6402809 4.6667145\n", "Czech Republic 49.7439047 15.3381061\n", "Hungary 47.1817585 19.5060937\n", "Belarus 53.4250605 27.6971358\n", "Sweden 59.6749712 14.5208584\n", "Austria 47.59397 14.12456\n", "Switzerland 46.7985624 8.2319736\n", "Israel 30.8124247 34.8594762\n", "Serbia 44.1534121 20.55144\n", "Denmark 55.670249 10.3333283\n", "Finland 63.2467777 25.9209164\n", "Norway 61.1529386 8.7876653\n", "Croatia 45.3658443 15.6575209\n", "New Zealand -41.5000831 172.8344077\n", "Ireland 52.865196 -7.9794599\n", "Lithuania 55.3500003 23.7499997\n", "Uruguay -32.8755548 -56.0201525\n", "Latvia 56.8406494 24.7537645\n", "Slovenia 46.1199444 14.8153333\n", "Estonia 58.7523778 25.3319078\n" ] }, { "ename": "IndexError", "evalue": "list index out of range", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[78], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m lat,long \u001b[38;5;241m=\u001b[39m [],[]\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m c \u001b[38;5;129;01min\u001b[39;00m corgs\u001b[38;5;241m.\u001b[39mcolumns:\n\u001b[0;32m----> 3\u001b[0m la,lo \u001b[38;5;241m=\u001b[39m \u001b[43mget_boundingbox_country\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mc\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(c,la,lo)\n\u001b[1;32m 5\u001b[0m lat\u001b[38;5;241m.\u001b[39mappend(la); long\u001b[38;5;241m.\u001b[39mappend(lo)\n", "Cell \u001b[0;32mIn[73], line 24\u001b[0m, in \u001b[0;36mget_boundingbox_country\u001b[0;34m(country, output_as)\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;66;03m# create url\u001b[39;00m\n\u001b[1;32m 21\u001b[0m url \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;132;01m{1}\u001b[39;00m\u001b[38;5;132;01m{2}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttp://nominatim.openstreetmap.org/search?country=\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 22\u001b[0m country,\n\u001b[1;32m 23\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m&format=json&polygon=0\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 24\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mrequests\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;66;03m# parse response to list\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m output_as \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mboundingbox\u001b[39m\u001b[38;5;124m'\u001b[39m:\n", "\u001b[0;31mIndexError\u001b[0m: list index out of range" ] } ], "source": [ "lat,long = [],[]\n", "for c in corgs.columns:\n", " la,lo = get_boundingbox_country(str(c))\n", " print(c,la,lo)\n", " lat.append(la); long.append(lo)" ] }, { "cell_type": "markdown", "id": "6a9839c8", "metadata": {}, "source": [ "Ah ha! We have an issue, let's see what it is:" ] }, { "cell_type": "code", "execution_count": 79, "id": "b8d24543", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Netherlands Antilles'" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c" ] }, { "cell_type": "markdown", "id": "07980335", "metadata": {}, "source": [ "In this case, we need to do some data cleaning. We can start from our \"source\" but instead, we probably want to start from the original dataframe, just to be consistent:" ] }, { "cell_type": "code", "execution_count": 80, "id": "be9cd957", "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", "
United StatesBrazilRussiaJapanVietnamGermanyFranceUnited KingdomItalySouth Africa...CroatiaNew ZealandIrelandLithuaniaUruguayLatviaSloveniaEstoniaNetherlandsKosovo
Years
1917-01-010000000100...0000000000
1918-01-010000000000...0000000000
1919-01-010000000000...0000000001
1920-01-010000000000...0000000000
1921-01-010000000000...0000000000
\n", "

5 rows × 40 columns

\n", "
" ], "text/plain": [ " United States Brazil Russia Japan Vietnam Germany France \\\n", "Years \n", "1917-01-01 0 0 0 0 0 0 0 \n", "1918-01-01 0 0 0 0 0 0 0 \n", "1919-01-01 0 0 0 0 0 0 0 \n", "1920-01-01 0 0 0 0 0 0 0 \n", "1921-01-01 0 0 0 0 0 0 0 \n", "\n", " United Kingdom Italy South Africa ... Croatia New Zealand \\\n", "Years ... \n", "1917-01-01 1 0 0 ... 0 0 \n", "1918-01-01 0 0 0 ... 0 0 \n", "1919-01-01 0 0 0 ... 0 0 \n", "1920-01-01 0 0 0 ... 0 0 \n", "1921-01-01 0 0 0 ... 0 0 \n", "\n", " Ireland Lithuania Uruguay Latvia Slovenia Estonia \\\n", "Years \n", "1917-01-01 0 0 0 0 0 0 \n", "1918-01-01 0 0 0 0 0 0 \n", "1919-01-01 0 0 0 0 0 0 \n", "1920-01-01 0 0 0 0 0 0 \n", "1921-01-01 0 0 0 0 0 0 \n", "\n", " Netherlands Kosovo \n", "Years \n", "1917-01-01 0 0 \n", "1918-01-01 0 0 \n", "1919-01-01 0 1 \n", "1920-01-01 0 0 \n", "1921-01-01 0 0 \n", "\n", "[5 rows x 40 columns]" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean = corgs.copy()\n", "#corg_clean = corg_clean.set_index('Years') # note -- don't have to do this again since we started with a rest index\n", "corg_clean = corg_clean.rename(columns={'Netherlands Antilles':\"Netherlands\"})\n", "corg_clean.head()" ] }, { "cell_type": "markdown", "id": "00761ecd", "metadata": {}, "source": [ "Let's try this again:" ] }, { "cell_type": "code", "execution_count": 81, "id": "189aa8dd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "United States 39.7837304 -100.445882\n", "Brazil -10.3333333 -53.2\n", "Russia 64.6863136 97.7453061\n", "Japan 36.5748441 139.2394179\n", "Vietnam 15.9266657 107.9650855\n", "Germany 51.1638175 10.4478313\n", "France 46.603354 1.8883335\n", "United Kingdom 54.7023545 -3.2765753\n", "Italy 42.6384261 12.674297\n", "South Africa -28.8166236 24.991639\n", "Ukraine 49.4871968 31.2718321\n", "Spain 39.3260685 -4.8379791\n", "Poland 52.215933 19.134422\n", "Canada 61.0666922 -107.991707\n", "Korea, North 40.3736611 127.0870417\n", "Romania 45.9852129 24.6859225\n", "Australia -24.7761086 134.755\n", "Portugal 39.6621648 -8.1353519\n", "Belgium 50.6402809 4.6667145\n", "Czech Republic 49.7439047 15.3381061\n", "Hungary 47.1817585 19.5060937\n", "Belarus 53.4250605 27.6971358\n", "Sweden 59.6749712 14.5208584\n", "Austria 47.59397 14.12456\n", "Switzerland 46.7985624 8.2319736\n", "Israel 30.8124247 34.8594762\n", "Serbia 44.1534121 20.55144\n", "Denmark 55.670249 10.3333283\n", "Finland 63.2467777 25.9209164\n", "Norway 61.1529386 8.7876653\n", "Croatia 45.3658443 15.6575209\n", "New Zealand -41.5000831 172.8344077\n", "Ireland 52.865196 -7.9794599\n", "Lithuania 55.3500003 23.7499997\n", "Uruguay -32.8755548 -56.0201525\n", "Latvia 56.8406494 24.7537645\n", "Slovenia 46.1199444 14.8153333\n", "Estonia 58.7523778 25.3319078\n", "Netherlands 52.24764975 5.541246849406163\n", "Kosovo 42.5869578 20.9021231\n" ] } ], "source": [ "lat,long = [],[]\n", "for c in corg_clean.columns:\n", " la,lo = get_boundingbox_country(str(c))\n", " print(c,la,lo)\n", " lat.append(la); long.append(lo)" ] }, { "cell_type": "code", "execution_count": 82, "id": "b0bce0ac", "metadata": {}, "outputs": [], "source": [ "#c" ] }, { "cell_type": "markdown", "id": "4a0879e8", "metadata": {}, "source": [ "~~Found another one:~~" ] }, { "cell_type": "code", "execution_count": 85, "id": "ea02bd7a", "metadata": {}, "outputs": [], "source": [ "# corg_clean = corgs.copy()\n", "# corg_clean = corg_clean.rename(columns={'Korea, North':\"North Korea\",'Netherlands Antilles':\"Netherlands\"})" ] }, { "cell_type": "code", "execution_count": 86, "id": "3aa7c25c", "metadata": {}, "outputs": [], "source": [ "# lat,long = [],[]\n", "# for c in corg_clean.columns:\n", "# la,lo = get_boundingbox_country(str(c))\n", "# print(c,la,lo)\n", "# lat.append(la); long.append(lo)" ] }, { "cell_type": "markdown", "id": "bb6973f2", "metadata": {}, "source": [ "Hurray! So, this is a case where being able to clean the data in Python was super useful. Let's try adding these as points to our map now that we have cleaned data." ] }, { "cell_type": "markdown", "id": "77da2776", "metadata": {}, "source": [ "One other data transformation we probably want to do is transpose this matrix so that we have countries as rows and corgis born per year as columns:" ] }, { "cell_type": "code", "execution_count": 87, "id": "18ab69a1", "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", "
Years1917-01-011918-01-011919-01-011920-01-011921-01-011922-01-011923-01-011924-01-011925-01-011926-01-01...2011-01-012012-01-012013-01-012014-01-012015-01-012016-01-012017-01-012018-01-012019-01-012020-01-01
United States0000000000...4084313762803012292131981182
Brazil0000000000...0000000000
Russia0000000000...898211512723721726032918916
Japan0000000000...0000022000
Vietnam0000000000...0000001300
\n", "

5 rows × 104 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 1918-01-01 1919-01-01 1920-01-01 1921-01-01 \\\n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years 1922-01-01 1923-01-01 1924-01-01 1925-01-01 1926-01-01 \\\n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years ... 2011-01-01 2012-01-01 2013-01-01 2014-01-01 \\\n", "United States ... 408 431 376 280 \n", "Brazil ... 0 0 0 0 \n", "Russia ... 89 82 115 127 \n", "Japan ... 0 0 0 0 \n", "Vietnam ... 0 0 0 0 \n", "\n", "Years 2015-01-01 2016-01-01 2017-01-01 2018-01-01 2019-01-01 \\\n", "United States 301 229 213 198 118 \n", "Brazil 0 0 0 0 0 \n", "Russia 237 217 260 329 189 \n", "Japan 0 2 2 0 0 \n", "Vietnam 0 0 1 3 0 \n", "\n", "Years 2020-01-01 \n", "United States 2 \n", "Brazil 0 \n", "Russia 16 \n", "Japan 0 \n", "Vietnam 0 \n", "\n", "[5 rows x 104 columns]" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t = corg_clean.T\n", "corg_clean_t.head()" ] }, { "cell_type": "markdown", "id": "4b6c0ef7", "metadata": {}, "source": [ "Since, technically, the index is no longer years, so we should be sure to name the index more intuatively: " ] }, { "cell_type": "code", "execution_count": 88, "id": "4fe7be97", "metadata": {}, "outputs": [], "source": [ "corg_clean_t.index.name = \"Country\"" ] }, { "cell_type": "code", "execution_count": 89, "id": "92c681dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Years'" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.axes[1].name" ] }, { "cell_type": "code", "execution_count": 90, "id": "b4404f0d", "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", "
Years1917-01-011918-01-011919-01-011920-01-011921-01-011922-01-011923-01-011924-01-011925-01-011926-01-01...2011-01-012012-01-012013-01-012014-01-012015-01-012016-01-012017-01-012018-01-012019-01-012020-01-01
Country
United States0000000000...4084313762803012292131981182
Brazil0000000000...0000000000
Russia0000000000...898211512723721726032918916
Japan0000000000...0000022000
Vietnam0000000000...0000001300
\n", "

5 rows × 104 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 1918-01-01 1919-01-01 1920-01-01 1921-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years 1922-01-01 1923-01-01 1924-01-01 1925-01-01 1926-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years ... 2011-01-01 2012-01-01 2013-01-01 2014-01-01 \\\n", "Country ... \n", "United States ... 408 431 376 280 \n", "Brazil ... 0 0 0 0 \n", "Russia ... 89 82 115 127 \n", "Japan ... 0 0 0 0 \n", "Vietnam ... 0 0 0 0 \n", "\n", "Years 2015-01-01 2016-01-01 2017-01-01 2018-01-01 2019-01-01 \\\n", "Country \n", "United States 301 229 213 198 118 \n", "Brazil 0 0 0 0 0 \n", "Russia 237 217 260 329 189 \n", "Japan 0 2 2 0 0 \n", "Vietnam 0 0 1 3 0 \n", "\n", "Years 2020-01-01 \n", "Country \n", "United States 2 \n", "Brazil 0 \n", "Russia 16 \n", "Japan 0 \n", "Vietnam 0 \n", "\n", "[5 rows x 104 columns]" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.head()" ] }, { "cell_type": "markdown", "id": "1b97f199", "metadata": {}, "source": [ "Now we can add in the lat/long for each country:" ] }, { "cell_type": "code", "execution_count": 91, "id": "6d5178a1", "metadata": {}, "outputs": [], "source": [ "corg_clean_t['Latitude'] = lat\n", "corg_clean_t['Longitude'] = long" ] }, { "cell_type": "code", "execution_count": 92, "id": "99b6bced", "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", "
Years1917-01-01 00:00:001918-01-01 00:00:001919-01-01 00:00:001920-01-01 00:00:001921-01-01 00:00:001922-01-01 00:00:001923-01-01 00:00:001924-01-01 00:00:001925-01-01 00:00:001926-01-01 00:00:00...2013-01-01 00:00:002014-01-01 00:00:002015-01-01 00:00:002016-01-01 00:00:002017-01-01 00:00:002018-01-01 00:00:002019-01-01 00:00:002020-01-01 00:00:00LatitudeLongitude
Country
United States0000000000...376280301229213198118239.783730-100.445882
Brazil0000000000...00000000-10.333333-53.200000
Russia0000000000...1151272372172603291891664.68631497.745306
Japan0000000000...0002200036.574844139.239418
Vietnam0000000000...0000130015.926666107.965086
\n", "

5 rows × 106 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 00:00:00 1918-01-01 00:00:00 1919-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1920-01-01 00:00:00 1921-01-01 00:00:00 1922-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1923-01-01 00:00:00 1924-01-01 00:00:00 1925-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1926-01-01 00:00:00 ... 2013-01-01 00:00:00 \\\n", "Country ... \n", "United States 0 ... 376 \n", "Brazil 0 ... 0 \n", "Russia 0 ... 115 \n", "Japan 0 ... 0 \n", "Vietnam 0 ... 0 \n", "\n", "Years 2014-01-01 00:00:00 2015-01-01 00:00:00 2016-01-01 00:00:00 \\\n", "Country \n", "United States 280 301 229 \n", "Brazil 0 0 0 \n", "Russia 127 237 217 \n", "Japan 0 0 2 \n", "Vietnam 0 0 0 \n", "\n", "Years 2017-01-01 00:00:00 2018-01-01 00:00:00 2019-01-01 00:00:00 \\\n", "Country \n", "United States 213 198 118 \n", "Brazil 0 0 0 \n", "Russia 260 329 189 \n", "Japan 2 0 0 \n", "Vietnam 1 3 0 \n", "\n", "Years 2020-01-01 00:00:00 Latitude Longitude \n", "Country \n", "United States 2 39.783730 -100.445882 \n", "Brazil 0 -10.333333 -53.200000 \n", "Russia 16 64.686314 97.745306 \n", "Japan 0 36.574844 139.239418 \n", "Vietnam 0 15.926666 107.965086 \n", "\n", "[5 rows x 106 columns]" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.head()" ] }, { "cell_type": "markdown", "id": "ffbdf81e", "metadata": {}, "source": [ "Now (finally) we can plot those points on our map using just the lat/long:" ] }, { "cell_type": "code", "execution_count": 93, "id": "8af51649", "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", "
YearsCountryLatitudeLongitude
0United States39.783730-100.445882
1Brazil-10.333333-53.200000
2Russia64.68631497.745306
3Japan36.574844139.239418
4Vietnam15.926666107.965086
\n", "
" ], "text/plain": [ "Years Country Latitude Longitude\n", "0 United States 39.783730 -100.445882\n", "1 Brazil -10.333333 -53.200000\n", "2 Russia 64.686314 97.745306\n", "3 Japan 36.574844 139.239418\n", "4 Vietnam 15.926666 107.965086" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_subset = corg_clean_t.reset_index()[['Country','Latitude','Longitude']]\n", "corg_subset.head()" ] }, { "cell_type": "code", "execution_count": 94, "id": "d2e22c68", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='gray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_subset).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " size=alt.value(100),\n", " tooltip='Country'\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "3f31fdc4", "metadata": {}, "source": [ "We probably want the size of the dot to be proportional to the actual number of corgis born." ] }, { "cell_type": "markdown", "id": "d51446fe", "metadata": {}, "source": [ "To start, let's just plot the total corgis born in a country:" ] }, { "cell_type": "code", "execution_count": 95, "id": "04940dd3", "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", "
Years1917-01-011918-01-011919-01-011920-01-011921-01-011922-01-011923-01-011924-01-011925-01-011926-01-01...2011-01-012012-01-012013-01-012014-01-012015-01-012016-01-012017-01-012018-01-012019-01-012020-01-01
Country
United States0000000000...4084313762803012292131981182
Brazil0000000000...0000000000
Russia0000000000...898211512723721726032918916
Japan0000000000...0000022000
Vietnam0000000000...0000001300
\n", "

5 rows × 104 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 1918-01-01 1919-01-01 1920-01-01 1921-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years 1922-01-01 1923-01-01 1924-01-01 1925-01-01 1926-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years ... 2011-01-01 2012-01-01 2013-01-01 2014-01-01 \\\n", "Country ... \n", "United States ... 408 431 376 280 \n", "Brazil ... 0 0 0 0 \n", "Russia ... 89 82 115 127 \n", "Japan ... 0 0 0 0 \n", "Vietnam ... 0 0 0 0 \n", "\n", "Years 2015-01-01 2016-01-01 2017-01-01 2018-01-01 2019-01-01 \\\n", "Country \n", "United States 301 229 213 198 118 \n", "Brazil 0 0 0 0 0 \n", "Russia 237 217 260 329 189 \n", "Japan 0 2 2 0 0 \n", "Vietnam 0 0 1 3 0 \n", "\n", "Years 2020-01-01 \n", "Country \n", "United States 2 \n", "Brazil 0 \n", "Russia 16 \n", "Japan 0 \n", "Vietnam 0 \n", "\n", "[5 rows x 104 columns]" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.loc[:, (corg_clean_t.columns != 'Longitude') & (corg_clean_t.columns != \"Latitude\")].head()" ] }, { "cell_type": "markdown", "id": "8812a49a", "metadata": {}, "source": [ "Now we can sum along the Country axis:" ] }, { "cell_type": "code", "execution_count": 96, "id": "f5aa8ea0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Country\n", "United States 16130\n", "Brazil 1\n", "Russia 1834\n", "Japan 7\n", "Vietnam 4\n", "Germany 892\n", "France 597\n", "United Kingdom 2649\n", "Italy 106\n", "South Africa 28\n", "Ukraine 19\n", "Spain 5\n", "Poland 859\n", "Canada 391\n", "Korea, North 5\n", "Romania 7\n", "Australia 891\n", "Portugal 7\n", "Belgium 110\n", "Czech Republic 271\n", "Hungary 8\n", "Belarus 38\n", "Sweden 2008\n", "Austria 29\n", "Switzerland 30\n", "Israel 32\n", "Serbia 2\n", "Denmark 2176\n", "Finland 4051\n", "Norway 1077\n", "Croatia 21\n", "New Zealand 1097\n", "Ireland 29\n", "Lithuania 29\n", "Uruguay 2\n", "Latvia 3\n", "Slovenia 1\n", "Estonia 97\n", "Netherlands 536\n", "Kosovo 649\n", "dtype: int64" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.loc[:, (corg_clean_t.columns != 'Longitude') & (corg_clean_t.columns != \"Latitude\")].sum(axis=1)" ] }, { "cell_type": "code", "execution_count": 97, "id": "ceffa58a", "metadata": {}, "outputs": [], "source": [ "corg_clean_t['Total Corg'] = corg_clean_t.loc[:, (corg_clean_t.columns != 'Longitude') & (corg_clean_t.columns != \"Latitude\")].sum(axis=1).values" ] }, { "cell_type": "code", "execution_count": 98, "id": "0e8c048e", "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", "
Years1917-01-01 00:00:001918-01-01 00:00:001919-01-01 00:00:001920-01-01 00:00:001921-01-01 00:00:001922-01-01 00:00:001923-01-01 00:00:001924-01-01 00:00:001925-01-01 00:00:001926-01-01 00:00:00...2014-01-01 00:00:002015-01-01 00:00:002016-01-01 00:00:002017-01-01 00:00:002018-01-01 00:00:002019-01-01 00:00:002020-01-01 00:00:00LatitudeLongitudeTotal Corg
Country
United States0000000000...280301229213198118239.783730-100.44588216130
Brazil0000000000...0000000-10.333333-53.2000001
Russia0000000000...1272372172603291891664.68631497.7453061834
Japan0000000000...002200036.574844139.2394187
Vietnam0000000000...000130015.926666107.9650864
\n", "

5 rows × 107 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 00:00:00 1918-01-01 00:00:00 1919-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1920-01-01 00:00:00 1921-01-01 00:00:00 1922-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1923-01-01 00:00:00 1924-01-01 00:00:00 1925-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1926-01-01 00:00:00 ... 2014-01-01 00:00:00 \\\n", "Country ... \n", "United States 0 ... 280 \n", "Brazil 0 ... 0 \n", "Russia 0 ... 127 \n", "Japan 0 ... 0 \n", "Vietnam 0 ... 0 \n", "\n", "Years 2015-01-01 00:00:00 2016-01-01 00:00:00 2017-01-01 00:00:00 \\\n", "Country \n", "United States 301 229 213 \n", "Brazil 0 0 0 \n", "Russia 237 217 260 \n", "Japan 0 2 2 \n", "Vietnam 0 0 1 \n", "\n", "Years 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 \\\n", "Country \n", "United States 198 118 2 \n", "Brazil 0 0 0 \n", "Russia 329 189 16 \n", "Japan 0 0 0 \n", "Vietnam 3 0 0 \n", "\n", "Years Latitude Longitude Total Corg \n", "Country \n", "United States 39.783730 -100.445882 16130 \n", "Brazil -10.333333 -53.200000 1 \n", "Russia 64.686314 97.745306 1834 \n", "Japan 36.574844 139.239418 7 \n", "Vietnam 15.926666 107.965086 4 \n", "\n", "[5 rows x 107 columns]" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.head()" ] }, { "cell_type": "markdown", "id": "a561485c", "metadata": {}, "source": [ "Let's again subset our data:" ] }, { "cell_type": "code", "execution_count": 99, "id": "a0e18e70", "metadata": {}, "outputs": [], "source": [ "corg_subset2 = corg_clean_t.reset_index()[['Country','Latitude','Longitude','Total Corg']]" ] }, { "cell_type": "code", "execution_count": 100, "id": "6ea03e09", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='gray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_subset2).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " size=alt.Size('Total Corg:Q'),\n", " tooltip='Country',\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "395f4c9e", "metadata": {}, "source": [ "By default, we see that there is some scale applied to the points where there are some that are very small. Let's see if we can mess with this:" ] }, { "cell_type": "code", "execution_count": 101, "id": "04936076", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='gray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_subset2).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " size=alt.Size('Total Corg:Q',scale=None),\n", " tooltip='Country',\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "2a3e1a96", "metadata": {}, "source": [ "Whoa! Now that seems to have gone the other way! Now we have so many overlapping points that its hard to see in \"high corgi\" areas like the UK. Let's try a log scale:" ] }, { "cell_type": "code", "execution_count": 102, "id": "33af2154", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='gray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_subset2).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " size=alt.Size('Total Corg:Q',scale=alt.Scale(type='log')),\n", " tooltip='Country',\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "7eba854d", "metadata": {}, "source": [ "Hey that looks better! Though, that blue is a bit hard to see, let's try messing with the colors:" ] }, { "cell_type": "code", "execution_count": 103, "id": "823bb08d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='lightgray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_subset2).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " size=alt.Size('Total Corg:Q',scale=alt.Scale(type='log')),\n", " tooltip='Country',\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "1745af2d", "metadata": {}, "source": [ "Neat! Now, wouldn't it be fun if we could see those data points \"grow\" over time. Let's look at our dataframe again:" ] }, { "cell_type": "code", "execution_count": 104, "id": "8c674e4f", "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", "
Years1917-01-01 00:00:001918-01-01 00:00:001919-01-01 00:00:001920-01-01 00:00:001921-01-01 00:00:001922-01-01 00:00:001923-01-01 00:00:001924-01-01 00:00:001925-01-01 00:00:001926-01-01 00:00:00...2014-01-01 00:00:002015-01-01 00:00:002016-01-01 00:00:002017-01-01 00:00:002018-01-01 00:00:002019-01-01 00:00:002020-01-01 00:00:00LatitudeLongitudeTotal Corg
Country
United States0000000000...280301229213198118239.783730-100.44588216130
Brazil0000000000...0000000-10.333333-53.2000001
Russia0000000000...1272372172603291891664.68631497.7453061834
Japan0000000000...002200036.574844139.2394187
Vietnam0000000000...000130015.926666107.9650864
\n", "

5 rows × 107 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 00:00:00 1918-01-01 00:00:00 1919-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1920-01-01 00:00:00 1921-01-01 00:00:00 1922-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1923-01-01 00:00:00 1924-01-01 00:00:00 1925-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1926-01-01 00:00:00 ... 2014-01-01 00:00:00 \\\n", "Country ... \n", "United States 0 ... 280 \n", "Brazil 0 ... 0 \n", "Russia 0 ... 127 \n", "Japan 0 ... 0 \n", "Vietnam 0 ... 0 \n", "\n", "Years 2015-01-01 00:00:00 2016-01-01 00:00:00 2017-01-01 00:00:00 \\\n", "Country \n", "United States 301 229 213 \n", "Brazil 0 0 0 \n", "Russia 237 217 260 \n", "Japan 0 2 2 \n", "Vietnam 0 0 1 \n", "\n", "Years 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 \\\n", "Country \n", "United States 198 118 2 \n", "Brazil 0 0 0 \n", "Russia 329 189 16 \n", "Japan 0 0 0 \n", "Vietnam 3 0 0 \n", "\n", "Years Latitude Longitude Total Corg \n", "Country \n", "United States 39.783730 -100.445882 16130 \n", "Brazil -10.333333 -53.200000 1 \n", "Russia 64.686314 97.745306 1834 \n", "Japan 36.574844 139.239418 7 \n", "Vietnam 15.926666 107.965086 4 \n", "\n", "[5 rows x 107 columns]" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t.head()" ] }, { "cell_type": "markdown", "id": "91d03087", "metadata": {}, "source": [ "Instead of total corgs overall, what we really want is total corgs over time. Luckily, our columns are in the correct date order:" ] }, { "cell_type": "code", "execution_count": 105, "id": "4b0fc8b4", "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", "
Years1917-01-01 00:00:001918-01-01 00:00:001919-01-01 00:00:001920-01-01 00:00:001921-01-01 00:00:001922-01-01 00:00:001923-01-01 00:00:001924-01-01 00:00:001925-01-01 00:00:001926-01-01 00:00:00...2013-01-01 00:00:002014-01-01 00:00:002015-01-01 00:00:002016-01-01 00:00:002017-01-01 00:00:002018-01-01 00:00:002019-01-01 00:00:002020-01-01 00:00:00LatitudeLongitude
Country
United States0000000000...376280301229213198118239.783730-100.445882
Brazil0000000000...00000000-10.333333-53.200000
Russia0000000000...1151272372172603291891664.68631497.745306
Japan0000000000...0002200036.574844139.239418
Vietnam0000000000...0000130015.926666107.965086
\n", "

5 rows × 106 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 00:00:00 1918-01-01 00:00:00 1919-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1920-01-01 00:00:00 1921-01-01 00:00:00 1922-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1923-01-01 00:00:00 1924-01-01 00:00:00 1925-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "\n", "Years 1926-01-01 00:00:00 ... 2013-01-01 00:00:00 \\\n", "Country ... \n", "United States 0 ... 376 \n", "Brazil 0 ... 0 \n", "Russia 0 ... 115 \n", "Japan 0 ... 0 \n", "Vietnam 0 ... 0 \n", "\n", "Years 2014-01-01 00:00:00 2015-01-01 00:00:00 2016-01-01 00:00:00 \\\n", "Country \n", "United States 280 301 229 \n", "Brazil 0 0 0 \n", "Russia 127 237 217 \n", "Japan 0 0 2 \n", "Vietnam 0 0 0 \n", "\n", "Years 2017-01-01 00:00:00 2018-01-01 00:00:00 2019-01-01 00:00:00 \\\n", "Country \n", "United States 213 198 118 \n", "Brazil 0 0 0 \n", "Russia 260 329 189 \n", "Japan 2 0 0 \n", "Vietnam 1 3 0 \n", "\n", "Years 2020-01-01 00:00:00 Latitude Longitude \n", "Country \n", "United States 2 39.783730 -100.445882 \n", "Brazil 0 -10.333333 -53.200000 \n", "Russia 16 64.686314 97.745306 \n", "Japan 0 36.574844 139.239418 \n", "Vietnam 0 15.926666 107.965086 \n", "\n", "[5 rows x 106 columns]" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2 = corg_clean_t.loc[:,(corg_clean_t.columns != 'Total Corg')].copy()\n", "corg_clean2.head()" ] }, { "cell_type": "code", "execution_count": 106, "id": "040a6c82", "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", "
Years1917-01-011918-01-011919-01-011920-01-011921-01-011922-01-011923-01-011924-01-011925-01-011926-01-01...2011-01-012012-01-012013-01-012014-01-012015-01-012016-01-012017-01-012018-01-012019-01-012020-01-01
Country
United States0000000000...4084313762803012292131981182
Brazil0000000000...0000000000
Russia0000000000...898211512723721726032918916
Japan0000000000...0000022000
Vietnam0000000000...0000001300
\n", "

5 rows × 104 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 1918-01-01 1919-01-01 1920-01-01 1921-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years 1922-01-01 1923-01-01 1924-01-01 1925-01-01 1926-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "\n", "Years ... 2011-01-01 2012-01-01 2013-01-01 2014-01-01 \\\n", "Country ... \n", "United States ... 408 431 376 280 \n", "Brazil ... 0 0 0 0 \n", "Russia ... 89 82 115 127 \n", "Japan ... 0 0 0 0 \n", "Vietnam ... 0 0 0 0 \n", "\n", "Years 2015-01-01 2016-01-01 2017-01-01 2018-01-01 2019-01-01 \\\n", "Country \n", "United States 301 229 213 198 118 \n", "Brazil 0 0 0 0 0 \n", "Russia 237 217 260 329 189 \n", "Japan 0 2 2 0 0 \n", "Vietnam 0 0 1 3 0 \n", "\n", "Years 2020-01-01 \n", "Country \n", "United States 2 \n", "Brazil 0 \n", "Russia 16 \n", "Japan 0 \n", "Vietnam 0 \n", "\n", "[5 rows x 104 columns]" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2.loc[:,(corg_clean2.columns != 'Latitude') & (corg_clean2.columns!='Longitude')].head()" ] }, { "cell_type": "code", "execution_count": 107, "id": "a242c754", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Years1917-01-011918-01-011919-01-011920-01-011921-01-011922-01-011923-01-011924-01-011925-01-011926-01-01...2011-01-012012-01-012013-01-012014-01-012015-01-012016-01-012017-01-012018-01-012019-01-012020-01-01
Country
United States0000000000...13982144131478915069153701559915812160101612816130
Brazil0000000000...1111111111
Russia0000000000...26234445958682310401300162918181834
Japan0000000000...3333357777
Vietnam0000000000...0000001444
Germany0000000000...428508589666738792820862892892
France0000000000...276302338375395450510535597597
United Kingdom111111351931...2509253125572579260526332643264826492649
Italy0000000000...818181949698102104106106
South Africa0000000000...19232428282828282828
Ukraine0000000000...891010121212181919
Spain0000000000...0000000055
Poland0000000000...337379460526617692748825859859
Canada0000000000...329344359364377383386390391391
Korea, North0000000000...0034445555
Romania0000000000...0000000077
Australia0000000000...814827844855861870879887891891
Portugal0000000000...0001233577
Belgium0000000000...6379949698104105107110110
Czech Republic0000000000...139150171188210233255264271271
Hungary0000000000...7778888888
Belarus0000000000...00000512213838
Sweden0000000000...1214134214611525164317911928198820072008
Austria0000000000...21222229292929292929
Switzerland0000000000...28292929303030303030
Israel0000000000...0008131721253232
Serbia0000000000...0000112222
Denmark0000000000...1549165317601856196720452115214821762176
Finland0000000000...2824296731103308350936953961404440484051
Norway0000000000...434503570669770873970105610771077
Croatia0000000000...000031115212121
New Zealand0000000000...1080108010821083108810911094109710971097
Ireland0000000000...29292929292929292929
Lithuania0000000000...552020202929292929
Uruguay0000000000...0000002222
Latvia0000000000...3333333333
Slovenia0000000000...1111111111
Estonia0000000000...11181824305765819797
Netherlands0000000000...323375417448470487512524536536
Kosovo0011111111...185204251288352424525581632649
\n", "

40 rows × 104 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 1918-01-01 1919-01-01 1920-01-01 1921-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "Germany 0 0 0 0 0 \n", "France 0 0 0 0 0 \n", "United Kingdom 1 1 1 1 1 \n", "Italy 0 0 0 0 0 \n", "South Africa 0 0 0 0 0 \n", "Ukraine 0 0 0 0 0 \n", "Spain 0 0 0 0 0 \n", "Poland 0 0 0 0 0 \n", "Canada 0 0 0 0 0 \n", "Korea, North 0 0 0 0 0 \n", "Romania 0 0 0 0 0 \n", "Australia 0 0 0 0 0 \n", "Portugal 0 0 0 0 0 \n", "Belgium 0 0 0 0 0 \n", "Czech Republic 0 0 0 0 0 \n", "Hungary 0 0 0 0 0 \n", "Belarus 0 0 0 0 0 \n", "Sweden 0 0 0 0 0 \n", "Austria 0 0 0 0 0 \n", "Switzerland 0 0 0 0 0 \n", "Israel 0 0 0 0 0 \n", "Serbia 0 0 0 0 0 \n", "Denmark 0 0 0 0 0 \n", "Finland 0 0 0 0 0 \n", "Norway 0 0 0 0 0 \n", "Croatia 0 0 0 0 0 \n", "New Zealand 0 0 0 0 0 \n", "Ireland 0 0 0 0 0 \n", "Lithuania 0 0 0 0 0 \n", "Uruguay 0 0 0 0 0 \n", "Latvia 0 0 0 0 0 \n", "Slovenia 0 0 0 0 0 \n", "Estonia 0 0 0 0 0 \n", "Netherlands 0 0 0 0 0 \n", "Kosovo 0 0 1 1 1 \n", "\n", "Years 1922-01-01 1923-01-01 1924-01-01 1925-01-01 1926-01-01 \\\n", "Country \n", "United States 0 0 0 0 0 \n", "Brazil 0 0 0 0 0 \n", "Russia 0 0 0 0 0 \n", "Japan 0 0 0 0 0 \n", "Vietnam 0 0 0 0 0 \n", "Germany 0 0 0 0 0 \n", "France 0 0 0 0 0 \n", "United Kingdom 1 3 5 19 31 \n", "Italy 0 0 0 0 0 \n", "South Africa 0 0 0 0 0 \n", "Ukraine 0 0 0 0 0 \n", "Spain 0 0 0 0 0 \n", "Poland 0 0 0 0 0 \n", "Canada 0 0 0 0 0 \n", "Korea, North 0 0 0 0 0 \n", "Romania 0 0 0 0 0 \n", "Australia 0 0 0 0 0 \n", "Portugal 0 0 0 0 0 \n", "Belgium 0 0 0 0 0 \n", "Czech Republic 0 0 0 0 0 \n", "Hungary 0 0 0 0 0 \n", "Belarus 0 0 0 0 0 \n", "Sweden 0 0 0 0 0 \n", "Austria 0 0 0 0 0 \n", "Switzerland 0 0 0 0 0 \n", "Israel 0 0 0 0 0 \n", "Serbia 0 0 0 0 0 \n", "Denmark 0 0 0 0 0 \n", "Finland 0 0 0 0 0 \n", "Norway 0 0 0 0 0 \n", "Croatia 0 0 0 0 0 \n", "New Zealand 0 0 0 0 0 \n", "Ireland 0 0 0 0 0 \n", "Lithuania 0 0 0 0 0 \n", "Uruguay 0 0 0 0 0 \n", "Latvia 0 0 0 0 0 \n", "Slovenia 0 0 0 0 0 \n", "Estonia 0 0 0 0 0 \n", "Netherlands 0 0 0 0 0 \n", "Kosovo 1 1 1 1 1 \n", "\n", "Years ... 2011-01-01 2012-01-01 2013-01-01 2014-01-01 \\\n", "Country ... \n", "United States ... 13982 14413 14789 15069 \n", "Brazil ... 1 1 1 1 \n", "Russia ... 262 344 459 586 \n", "Japan ... 3 3 3 3 \n", "Vietnam ... 0 0 0 0 \n", "Germany ... 428 508 589 666 \n", "France ... 276 302 338 375 \n", "United Kingdom ... 2509 2531 2557 2579 \n", "Italy ... 81 81 81 94 \n", "South Africa ... 19 23 24 28 \n", "Ukraine ... 8 9 10 10 \n", "Spain ... 0 0 0 0 \n", "Poland ... 337 379 460 526 \n", "Canada ... 329 344 359 364 \n", "Korea, North ... 0 0 3 4 \n", "Romania ... 0 0 0 0 \n", "Australia ... 814 827 844 855 \n", "Portugal ... 0 0 0 1 \n", "Belgium ... 63 79 94 96 \n", "Czech Republic ... 139 150 171 188 \n", "Hungary ... 7 7 7 8 \n", "Belarus ... 0 0 0 0 \n", "Sweden ... 1214 1342 1461 1525 \n", "Austria ... 21 22 22 29 \n", "Switzerland ... 28 29 29 29 \n", "Israel ... 0 0 0 8 \n", "Serbia ... 0 0 0 0 \n", "Denmark ... 1549 1653 1760 1856 \n", "Finland ... 2824 2967 3110 3308 \n", "Norway ... 434 503 570 669 \n", "Croatia ... 0 0 0 0 \n", "New Zealand ... 1080 1080 1082 1083 \n", "Ireland ... 29 29 29 29 \n", "Lithuania ... 5 5 20 20 \n", "Uruguay ... 0 0 0 0 \n", "Latvia ... 3 3 3 3 \n", "Slovenia ... 1 1 1 1 \n", "Estonia ... 11 18 18 24 \n", "Netherlands ... 323 375 417 448 \n", "Kosovo ... 185 204 251 288 \n", "\n", "Years 2015-01-01 2016-01-01 2017-01-01 2018-01-01 2019-01-01 \\\n", "Country \n", "United States 15370 15599 15812 16010 16128 \n", "Brazil 1 1 1 1 1 \n", "Russia 823 1040 1300 1629 1818 \n", "Japan 3 5 7 7 7 \n", "Vietnam 0 0 1 4 4 \n", "Germany 738 792 820 862 892 \n", "France 395 450 510 535 597 \n", "United Kingdom 2605 2633 2643 2648 2649 \n", "Italy 96 98 102 104 106 \n", "South Africa 28 28 28 28 28 \n", "Ukraine 12 12 12 18 19 \n", "Spain 0 0 0 0 5 \n", "Poland 617 692 748 825 859 \n", "Canada 377 383 386 390 391 \n", "Korea, North 4 4 5 5 5 \n", "Romania 0 0 0 0 7 \n", "Australia 861 870 879 887 891 \n", "Portugal 2 3 3 5 7 \n", "Belgium 98 104 105 107 110 \n", "Czech Republic 210 233 255 264 271 \n", "Hungary 8 8 8 8 8 \n", "Belarus 0 5 12 21 38 \n", "Sweden 1643 1791 1928 1988 2007 \n", "Austria 29 29 29 29 29 \n", "Switzerland 30 30 30 30 30 \n", "Israel 13 17 21 25 32 \n", "Serbia 1 1 2 2 2 \n", "Denmark 1967 2045 2115 2148 2176 \n", "Finland 3509 3695 3961 4044 4048 \n", "Norway 770 873 970 1056 1077 \n", "Croatia 3 11 15 21 21 \n", "New Zealand 1088 1091 1094 1097 1097 \n", "Ireland 29 29 29 29 29 \n", "Lithuania 20 29 29 29 29 \n", "Uruguay 0 0 2 2 2 \n", "Latvia 3 3 3 3 3 \n", "Slovenia 1 1 1 1 1 \n", "Estonia 30 57 65 81 97 \n", "Netherlands 470 487 512 524 536 \n", "Kosovo 352 424 525 581 632 \n", "\n", "Years 2020-01-01 \n", "Country \n", "United States 16130 \n", "Brazil 1 \n", "Russia 1834 \n", "Japan 7 \n", "Vietnam 4 \n", "Germany 892 \n", "France 597 \n", "United Kingdom 2649 \n", "Italy 106 \n", "South Africa 28 \n", "Ukraine 19 \n", "Spain 5 \n", "Poland 859 \n", "Canada 391 \n", "Korea, North 5 \n", "Romania 7 \n", "Australia 891 \n", "Portugal 7 \n", "Belgium 110 \n", "Czech Republic 271 \n", "Hungary 8 \n", "Belarus 38 \n", "Sweden 2008 \n", "Austria 29 \n", "Switzerland 30 \n", "Israel 32 \n", "Serbia 2 \n", "Denmark 2176 \n", "Finland 4051 \n", "Norway 1077 \n", "Croatia 21 \n", "New Zealand 1097 \n", "Ireland 29 \n", "Lithuania 29 \n", "Uruguay 2 \n", "Latvia 3 \n", "Slovenia 1 \n", "Estonia 97 \n", "Netherlands 536 \n", "Kosovo 649 \n", "\n", "[40 rows x 104 columns]" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2.loc[:,(corg_clean2.columns != 'Latitude') & (corg_clean2.columns!='Longitude')].cumsum(axis=1)" ] }, { "cell_type": "code", "execution_count": 108, "id": "efd62762", "metadata": {}, "outputs": [], "source": [ "corg_clean2.loc[:,(corg_clean2.columns != 'Latitude') & (corg_clean2.columns!='Longitude')] = \\\n", " corg_clean2.loc[:,(corg_clean2.columns != 'Latitude') & (corg_clean2.columns!='Longitude')].cumsum(axis=1)" ] }, { "cell_type": "code", "execution_count": 109, "id": "7d8f7724", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Years1917-01-01 00:00:001918-01-01 00:00:001919-01-01 00:00:001920-01-01 00:00:001921-01-01 00:00:001922-01-01 00:00:001923-01-01 00:00:001924-01-01 00:00:001925-01-01 00:00:001926-01-01 00:00:00...2013-01-01 00:00:002014-01-01 00:00:002015-01-01 00:00:002016-01-01 00:00:002017-01-01 00:00:002018-01-01 00:00:002019-01-01 00:00:002020-01-01 00:00:00LatitudeLongitude
Country
United States0000000000...147891506915370155991581216010161281613039.783730-100.445882
Brazil0000000000...11111111-10.333333-53.200000
Russia0000000000...4595868231040130016291818183464.68631497.745306
Japan0000000000...3335777736.574844139.239418
Vietnam0000000000...0000144415.926666107.965086
Germany0000000000...58966673879282086289289251.16381810.447831
France0000000000...33837539545051053559759746.6033541.888334
United Kingdom111111351931...2557257926052633264326482649264954.702354-3.276575
Italy0000000000...8194969810210410610642.63842612.674297
South Africa0000000000...2428282828282828-28.81662424.991639
Ukraine0000000000...101012121218191949.48719731.271832
Spain0000000000...0000005539.326068-4.837979
Poland0000000000...46052661769274882585985952.21593319.134422
Canada0000000000...35936437738338639039139161.066692-107.991707
Korea, North0000000000...3444555540.373661127.087042
Romania0000000000...0000007745.98521324.685923
Australia0000000000...844855861870879887891891-24.776109134.755000
Portugal0000000000...0123357739.662165-8.135352
Belgium0000000000...94969810410510711011050.6402814.666715
Czech Republic0000000000...17118821023325526427127149.74390515.338106
Hungary0000000000...7888888847.18175919.506094
Belarus0000000000...00051221383853.42506127.697136
Sweden0000000000...1461152516431791192819882007200859.67497114.520858
Austria0000000000...222929292929292947.59397014.124560
Switzerland0000000000...292930303030303046.7985628.231974
Israel0000000000...0813172125323230.81242534.859476
Serbia0000000000...0011222244.15341220.551440
Denmark0000000000...1760185619672045211521482176217655.67024910.333328
Finland0000000000...3110330835093695396140444048405163.24677825.920916
Norway0000000000...57066977087397010561077107761.1529398.787665
Croatia0000000000...003111521212145.36584415.657521
New Zealand0000000000...10821083108810911094109710971097-41.500083172.834408
Ireland0000000000...292929292929292952.865196-7.979460
Lithuania0000000000...202020292929292955.35000023.750000
Uruguay0000000000...00002222-32.875555-56.020153
Latvia0000000000...3333333356.84064924.753764
Slovenia0000000000...1111111146.11994414.815333
Estonia0000000000...182430576581979758.75237825.331908
Netherlands0000000000...41744847048751252453653652.2476505.541247
Kosovo0011111111...25128835242452558163264942.58695820.902123
\n", "

40 rows × 106 columns

\n", "
" ], "text/plain": [ "Years 1917-01-01 00:00:00 1918-01-01 00:00:00 1919-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "Germany 0 0 0 \n", "France 0 0 0 \n", "United Kingdom 1 1 1 \n", "Italy 0 0 0 \n", "South Africa 0 0 0 \n", "Ukraine 0 0 0 \n", "Spain 0 0 0 \n", "Poland 0 0 0 \n", "Canada 0 0 0 \n", "Korea, North 0 0 0 \n", "Romania 0 0 0 \n", "Australia 0 0 0 \n", "Portugal 0 0 0 \n", "Belgium 0 0 0 \n", "Czech Republic 0 0 0 \n", "Hungary 0 0 0 \n", "Belarus 0 0 0 \n", "Sweden 0 0 0 \n", "Austria 0 0 0 \n", "Switzerland 0 0 0 \n", "Israel 0 0 0 \n", "Serbia 0 0 0 \n", "Denmark 0 0 0 \n", "Finland 0 0 0 \n", "Norway 0 0 0 \n", "Croatia 0 0 0 \n", "New Zealand 0 0 0 \n", "Ireland 0 0 0 \n", "Lithuania 0 0 0 \n", "Uruguay 0 0 0 \n", "Latvia 0 0 0 \n", "Slovenia 0 0 0 \n", "Estonia 0 0 0 \n", "Netherlands 0 0 0 \n", "Kosovo 0 0 1 \n", "\n", "Years 1920-01-01 00:00:00 1921-01-01 00:00:00 1922-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "Germany 0 0 0 \n", "France 0 0 0 \n", "United Kingdom 1 1 1 \n", "Italy 0 0 0 \n", "South Africa 0 0 0 \n", "Ukraine 0 0 0 \n", "Spain 0 0 0 \n", "Poland 0 0 0 \n", "Canada 0 0 0 \n", "Korea, North 0 0 0 \n", "Romania 0 0 0 \n", "Australia 0 0 0 \n", "Portugal 0 0 0 \n", "Belgium 0 0 0 \n", "Czech Republic 0 0 0 \n", "Hungary 0 0 0 \n", "Belarus 0 0 0 \n", "Sweden 0 0 0 \n", "Austria 0 0 0 \n", "Switzerland 0 0 0 \n", "Israel 0 0 0 \n", "Serbia 0 0 0 \n", "Denmark 0 0 0 \n", "Finland 0 0 0 \n", "Norway 0 0 0 \n", "Croatia 0 0 0 \n", "New Zealand 0 0 0 \n", "Ireland 0 0 0 \n", "Lithuania 0 0 0 \n", "Uruguay 0 0 0 \n", "Latvia 0 0 0 \n", "Slovenia 0 0 0 \n", "Estonia 0 0 0 \n", "Netherlands 0 0 0 \n", "Kosovo 1 1 1 \n", "\n", "Years 1923-01-01 00:00:00 1924-01-01 00:00:00 1925-01-01 00:00:00 \\\n", "Country \n", "United States 0 0 0 \n", "Brazil 0 0 0 \n", "Russia 0 0 0 \n", "Japan 0 0 0 \n", "Vietnam 0 0 0 \n", "Germany 0 0 0 \n", "France 0 0 0 \n", "United Kingdom 3 5 19 \n", "Italy 0 0 0 \n", "South Africa 0 0 0 \n", "Ukraine 0 0 0 \n", "Spain 0 0 0 \n", "Poland 0 0 0 \n", "Canada 0 0 0 \n", "Korea, North 0 0 0 \n", "Romania 0 0 0 \n", "Australia 0 0 0 \n", "Portugal 0 0 0 \n", "Belgium 0 0 0 \n", "Czech Republic 0 0 0 \n", "Hungary 0 0 0 \n", "Belarus 0 0 0 \n", "Sweden 0 0 0 \n", "Austria 0 0 0 \n", "Switzerland 0 0 0 \n", "Israel 0 0 0 \n", "Serbia 0 0 0 \n", "Denmark 0 0 0 \n", "Finland 0 0 0 \n", "Norway 0 0 0 \n", "Croatia 0 0 0 \n", "New Zealand 0 0 0 \n", "Ireland 0 0 0 \n", "Lithuania 0 0 0 \n", "Uruguay 0 0 0 \n", "Latvia 0 0 0 \n", "Slovenia 0 0 0 \n", "Estonia 0 0 0 \n", "Netherlands 0 0 0 \n", "Kosovo 1 1 1 \n", "\n", "Years 1926-01-01 00:00:00 ... 2013-01-01 00:00:00 \\\n", "Country ... \n", "United States 0 ... 14789 \n", "Brazil 0 ... 1 \n", "Russia 0 ... 459 \n", "Japan 0 ... 3 \n", "Vietnam 0 ... 0 \n", "Germany 0 ... 589 \n", "France 0 ... 338 \n", "United Kingdom 31 ... 2557 \n", "Italy 0 ... 81 \n", "South Africa 0 ... 24 \n", "Ukraine 0 ... 10 \n", "Spain 0 ... 0 \n", "Poland 0 ... 460 \n", "Canada 0 ... 359 \n", "Korea, North 0 ... 3 \n", "Romania 0 ... 0 \n", "Australia 0 ... 844 \n", "Portugal 0 ... 0 \n", "Belgium 0 ... 94 \n", "Czech Republic 0 ... 171 \n", "Hungary 0 ... 7 \n", "Belarus 0 ... 0 \n", "Sweden 0 ... 1461 \n", "Austria 0 ... 22 \n", "Switzerland 0 ... 29 \n", "Israel 0 ... 0 \n", "Serbia 0 ... 0 \n", "Denmark 0 ... 1760 \n", "Finland 0 ... 3110 \n", "Norway 0 ... 570 \n", "Croatia 0 ... 0 \n", "New Zealand 0 ... 1082 \n", "Ireland 0 ... 29 \n", "Lithuania 0 ... 20 \n", "Uruguay 0 ... 0 \n", "Latvia 0 ... 3 \n", "Slovenia 0 ... 1 \n", "Estonia 0 ... 18 \n", "Netherlands 0 ... 417 \n", "Kosovo 1 ... 251 \n", "\n", "Years 2014-01-01 00:00:00 2015-01-01 00:00:00 2016-01-01 00:00:00 \\\n", "Country \n", "United States 15069 15370 15599 \n", "Brazil 1 1 1 \n", "Russia 586 823 1040 \n", "Japan 3 3 5 \n", "Vietnam 0 0 0 \n", "Germany 666 738 792 \n", "France 375 395 450 \n", "United Kingdom 2579 2605 2633 \n", "Italy 94 96 98 \n", "South Africa 28 28 28 \n", "Ukraine 10 12 12 \n", "Spain 0 0 0 \n", "Poland 526 617 692 \n", "Canada 364 377 383 \n", "Korea, North 4 4 4 \n", "Romania 0 0 0 \n", "Australia 855 861 870 \n", "Portugal 1 2 3 \n", "Belgium 96 98 104 \n", "Czech Republic 188 210 233 \n", "Hungary 8 8 8 \n", "Belarus 0 0 5 \n", "Sweden 1525 1643 1791 \n", "Austria 29 29 29 \n", "Switzerland 29 30 30 \n", "Israel 8 13 17 \n", "Serbia 0 1 1 \n", "Denmark 1856 1967 2045 \n", "Finland 3308 3509 3695 \n", "Norway 669 770 873 \n", "Croatia 0 3 11 \n", "New Zealand 1083 1088 1091 \n", "Ireland 29 29 29 \n", "Lithuania 20 20 29 \n", "Uruguay 0 0 0 \n", "Latvia 3 3 3 \n", "Slovenia 1 1 1 \n", "Estonia 24 30 57 \n", "Netherlands 448 470 487 \n", "Kosovo 288 352 424 \n", "\n", "Years 2017-01-01 00:00:00 2018-01-01 00:00:00 2019-01-01 00:00:00 \\\n", "Country \n", "United States 15812 16010 16128 \n", "Brazil 1 1 1 \n", "Russia 1300 1629 1818 \n", "Japan 7 7 7 \n", "Vietnam 1 4 4 \n", "Germany 820 862 892 \n", "France 510 535 597 \n", "United Kingdom 2643 2648 2649 \n", "Italy 102 104 106 \n", "South Africa 28 28 28 \n", "Ukraine 12 18 19 \n", "Spain 0 0 5 \n", "Poland 748 825 859 \n", "Canada 386 390 391 \n", "Korea, North 5 5 5 \n", "Romania 0 0 7 \n", "Australia 879 887 891 \n", "Portugal 3 5 7 \n", "Belgium 105 107 110 \n", "Czech Republic 255 264 271 \n", "Hungary 8 8 8 \n", "Belarus 12 21 38 \n", "Sweden 1928 1988 2007 \n", "Austria 29 29 29 \n", "Switzerland 30 30 30 \n", "Israel 21 25 32 \n", "Serbia 2 2 2 \n", "Denmark 2115 2148 2176 \n", "Finland 3961 4044 4048 \n", "Norway 970 1056 1077 \n", "Croatia 15 21 21 \n", "New Zealand 1094 1097 1097 \n", "Ireland 29 29 29 \n", "Lithuania 29 29 29 \n", "Uruguay 2 2 2 \n", "Latvia 3 3 3 \n", "Slovenia 1 1 1 \n", "Estonia 65 81 97 \n", "Netherlands 512 524 536 \n", "Kosovo 525 581 632 \n", "\n", "Years 2020-01-01 00:00:00 Latitude Longitude \n", "Country \n", "United States 16130 39.783730 -100.445882 \n", "Brazil 1 -10.333333 -53.200000 \n", "Russia 1834 64.686314 97.745306 \n", "Japan 7 36.574844 139.239418 \n", "Vietnam 4 15.926666 107.965086 \n", "Germany 892 51.163818 10.447831 \n", "France 597 46.603354 1.888334 \n", "United Kingdom 2649 54.702354 -3.276575 \n", "Italy 106 42.638426 12.674297 \n", "South Africa 28 -28.816624 24.991639 \n", "Ukraine 19 49.487197 31.271832 \n", "Spain 5 39.326068 -4.837979 \n", "Poland 859 52.215933 19.134422 \n", "Canada 391 61.066692 -107.991707 \n", "Korea, North 5 40.373661 127.087042 \n", "Romania 7 45.985213 24.685923 \n", "Australia 891 -24.776109 134.755000 \n", "Portugal 7 39.662165 -8.135352 \n", "Belgium 110 50.640281 4.666715 \n", "Czech Republic 271 49.743905 15.338106 \n", "Hungary 8 47.181759 19.506094 \n", "Belarus 38 53.425061 27.697136 \n", "Sweden 2008 59.674971 14.520858 \n", "Austria 29 47.593970 14.124560 \n", "Switzerland 30 46.798562 8.231974 \n", "Israel 32 30.812425 34.859476 \n", "Serbia 2 44.153412 20.551440 \n", "Denmark 2176 55.670249 10.333328 \n", "Finland 4051 63.246778 25.920916 \n", "Norway 1077 61.152939 8.787665 \n", "Croatia 21 45.365844 15.657521 \n", "New Zealand 1097 -41.500083 172.834408 \n", "Ireland 29 52.865196 -7.979460 \n", "Lithuania 29 55.350000 23.750000 \n", "Uruguay 2 -32.875555 -56.020153 \n", "Latvia 3 56.840649 24.753764 \n", "Slovenia 1 46.119944 14.815333 \n", "Estonia 97 58.752378 25.331908 \n", "Netherlands 536 52.247650 5.541247 \n", "Kosovo 649 42.586958 20.902123 \n", "\n", "[40 rows x 106 columns]" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2" ] }, { "cell_type": "code", "execution_count": 110, "id": "c7fda0a7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YearsCountry1917-01-01 00:00:001918-01-01 00:00:001919-01-01 00:00:001920-01-01 00:00:001921-01-01 00:00:001922-01-01 00:00:001923-01-01 00:00:001924-01-01 00:00:001925-01-01 00:00:00...2013-01-01 00:00:002014-01-01 00:00:002015-01-01 00:00:002016-01-01 00:00:002017-01-01 00:00:002018-01-01 00:00:002019-01-01 00:00:002020-01-01 00:00:00LatitudeLongitude
0United States000000000...147891506915370155991581216010161281613039.783730-100.445882
1Brazil000000000...11111111-10.333333-53.200000
2Russia000000000...4595868231040130016291818183464.68631497.745306
3Japan000000000...3335777736.574844139.239418
4Vietnam000000000...0000144415.926666107.965086
5Germany000000000...58966673879282086289289251.16381810.447831
6France000000000...33837539545051053559759746.6033541.888334
7United Kingdom1111113519...2557257926052633264326482649264954.702354-3.276575
8Italy000000000...8194969810210410610642.63842612.674297
9South Africa000000000...2428282828282828-28.81662424.991639
10Ukraine000000000...101012121218191949.48719731.271832
11Spain000000000...0000005539.326068-4.837979
12Poland000000000...46052661769274882585985952.21593319.134422
13Canada000000000...35936437738338639039139161.066692-107.991707
14Korea, North000000000...3444555540.373661127.087042
15Romania000000000...0000007745.98521324.685923
16Australia000000000...844855861870879887891891-24.776109134.755000
17Portugal000000000...0123357739.662165-8.135352
18Belgium000000000...94969810410510711011050.6402814.666715
19Czech Republic000000000...17118821023325526427127149.74390515.338106
20Hungary000000000...7888888847.18175919.506094
21Belarus000000000...00051221383853.42506127.697136
22Sweden000000000...1461152516431791192819882007200859.67497114.520858
23Austria000000000...222929292929292947.59397014.124560
24Switzerland000000000...292930303030303046.7985628.231974
25Israel000000000...0813172125323230.81242534.859476
26Serbia000000000...0011222244.15341220.551440
27Denmark000000000...1760185619672045211521482176217655.67024910.333328
28Finland000000000...3110330835093695396140444048405163.24677825.920916
29Norway000000000...57066977087397010561077107761.1529398.787665
30Croatia000000000...003111521212145.36584415.657521
31New Zealand000000000...10821083108810911094109710971097-41.500083172.834408
32Ireland000000000...292929292929292952.865196-7.979460
33Lithuania000000000...202020292929292955.35000023.750000
34Uruguay000000000...00002222-32.875555-56.020153
35Latvia000000000...3333333356.84064924.753764
36Slovenia000000000...1111111146.11994414.815333
37Estonia000000000...182430576581979758.75237825.331908
38Netherlands000000000...41744847048751252453653652.2476505.541247
39Kosovo001111111...25128835242452558163264942.58695820.902123
\n", "

40 rows × 107 columns

\n", "
" ], "text/plain": [ "Years Country 1917-01-01 00:00:00 1918-01-01 00:00:00 \\\n", "0 United States 0 0 \n", "1 Brazil 0 0 \n", "2 Russia 0 0 \n", "3 Japan 0 0 \n", "4 Vietnam 0 0 \n", "5 Germany 0 0 \n", "6 France 0 0 \n", "7 United Kingdom 1 1 \n", "8 Italy 0 0 \n", "9 South Africa 0 0 \n", "10 Ukraine 0 0 \n", "11 Spain 0 0 \n", "12 Poland 0 0 \n", "13 Canada 0 0 \n", "14 Korea, North 0 0 \n", "15 Romania 0 0 \n", "16 Australia 0 0 \n", "17 Portugal 0 0 \n", "18 Belgium 0 0 \n", "19 Czech Republic 0 0 \n", "20 Hungary 0 0 \n", "21 Belarus 0 0 \n", "22 Sweden 0 0 \n", "23 Austria 0 0 \n", "24 Switzerland 0 0 \n", "25 Israel 0 0 \n", "26 Serbia 0 0 \n", "27 Denmark 0 0 \n", "28 Finland 0 0 \n", "29 Norway 0 0 \n", "30 Croatia 0 0 \n", "31 New Zealand 0 0 \n", "32 Ireland 0 0 \n", "33 Lithuania 0 0 \n", "34 Uruguay 0 0 \n", "35 Latvia 0 0 \n", "36 Slovenia 0 0 \n", "37 Estonia 0 0 \n", "38 Netherlands 0 0 \n", "39 Kosovo 0 0 \n", "\n", "Years 1919-01-01 00:00:00 1920-01-01 00:00:00 1921-01-01 00:00:00 \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "5 0 0 0 \n", "6 0 0 0 \n", "7 1 1 1 \n", "8 0 0 0 \n", "9 0 0 0 \n", "10 0 0 0 \n", "11 0 0 0 \n", "12 0 0 0 \n", "13 0 0 0 \n", "14 0 0 0 \n", "15 0 0 0 \n", "16 0 0 0 \n", "17 0 0 0 \n", "18 0 0 0 \n", "19 0 0 0 \n", "20 0 0 0 \n", "21 0 0 0 \n", "22 0 0 0 \n", "23 0 0 0 \n", "24 0 0 0 \n", "25 0 0 0 \n", "26 0 0 0 \n", "27 0 0 0 \n", "28 0 0 0 \n", "29 0 0 0 \n", "30 0 0 0 \n", "31 0 0 0 \n", "32 0 0 0 \n", "33 0 0 0 \n", "34 0 0 0 \n", "35 0 0 0 \n", "36 0 0 0 \n", "37 0 0 0 \n", "38 0 0 0 \n", "39 1 1 1 \n", "\n", "Years 1922-01-01 00:00:00 1923-01-01 00:00:00 1924-01-01 00:00:00 \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "5 0 0 0 \n", "6 0 0 0 \n", "7 1 3 5 \n", "8 0 0 0 \n", "9 0 0 0 \n", "10 0 0 0 \n", "11 0 0 0 \n", "12 0 0 0 \n", "13 0 0 0 \n", "14 0 0 0 \n", "15 0 0 0 \n", "16 0 0 0 \n", "17 0 0 0 \n", "18 0 0 0 \n", "19 0 0 0 \n", "20 0 0 0 \n", "21 0 0 0 \n", "22 0 0 0 \n", "23 0 0 0 \n", "24 0 0 0 \n", "25 0 0 0 \n", "26 0 0 0 \n", "27 0 0 0 \n", "28 0 0 0 \n", "29 0 0 0 \n", "30 0 0 0 \n", "31 0 0 0 \n", "32 0 0 0 \n", "33 0 0 0 \n", "34 0 0 0 \n", "35 0 0 0 \n", "36 0 0 0 \n", "37 0 0 0 \n", "38 0 0 0 \n", "39 1 1 1 \n", "\n", "Years 1925-01-01 00:00:00 ... 2013-01-01 00:00:00 2014-01-01 00:00:00 \\\n", "0 0 ... 14789 15069 \n", "1 0 ... 1 1 \n", "2 0 ... 459 586 \n", "3 0 ... 3 3 \n", "4 0 ... 0 0 \n", "5 0 ... 589 666 \n", "6 0 ... 338 375 \n", "7 19 ... 2557 2579 \n", "8 0 ... 81 94 \n", "9 0 ... 24 28 \n", "10 0 ... 10 10 \n", "11 0 ... 0 0 \n", "12 0 ... 460 526 \n", "13 0 ... 359 364 \n", "14 0 ... 3 4 \n", "15 0 ... 0 0 \n", "16 0 ... 844 855 \n", "17 0 ... 0 1 \n", "18 0 ... 94 96 \n", "19 0 ... 171 188 \n", "20 0 ... 7 8 \n", "21 0 ... 0 0 \n", "22 0 ... 1461 1525 \n", "23 0 ... 22 29 \n", "24 0 ... 29 29 \n", "25 0 ... 0 8 \n", "26 0 ... 0 0 \n", "27 0 ... 1760 1856 \n", "28 0 ... 3110 3308 \n", "29 0 ... 570 669 \n", "30 0 ... 0 0 \n", "31 0 ... 1082 1083 \n", "32 0 ... 29 29 \n", "33 0 ... 20 20 \n", "34 0 ... 0 0 \n", "35 0 ... 3 3 \n", "36 0 ... 1 1 \n", "37 0 ... 18 24 \n", "38 0 ... 417 448 \n", "39 1 ... 251 288 \n", "\n", "Years 2015-01-01 00:00:00 2016-01-01 00:00:00 2017-01-01 00:00:00 \\\n", "0 15370 15599 15812 \n", "1 1 1 1 \n", "2 823 1040 1300 \n", "3 3 5 7 \n", "4 0 0 1 \n", "5 738 792 820 \n", "6 395 450 510 \n", "7 2605 2633 2643 \n", "8 96 98 102 \n", "9 28 28 28 \n", "10 12 12 12 \n", "11 0 0 0 \n", "12 617 692 748 \n", "13 377 383 386 \n", "14 4 4 5 \n", "15 0 0 0 \n", "16 861 870 879 \n", "17 2 3 3 \n", "18 98 104 105 \n", "19 210 233 255 \n", "20 8 8 8 \n", "21 0 5 12 \n", "22 1643 1791 1928 \n", "23 29 29 29 \n", "24 30 30 30 \n", "25 13 17 21 \n", "26 1 1 2 \n", "27 1967 2045 2115 \n", "28 3509 3695 3961 \n", "29 770 873 970 \n", "30 3 11 15 \n", "31 1088 1091 1094 \n", "32 29 29 29 \n", "33 20 29 29 \n", "34 0 0 2 \n", "35 3 3 3 \n", "36 1 1 1 \n", "37 30 57 65 \n", "38 470 487 512 \n", "39 352 424 525 \n", "\n", "Years 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 \\\n", "0 16010 16128 16130 \n", "1 1 1 1 \n", "2 1629 1818 1834 \n", "3 7 7 7 \n", "4 4 4 4 \n", "5 862 892 892 \n", "6 535 597 597 \n", "7 2648 2649 2649 \n", "8 104 106 106 \n", "9 28 28 28 \n", "10 18 19 19 \n", "11 0 5 5 \n", "12 825 859 859 \n", "13 390 391 391 \n", "14 5 5 5 \n", "15 0 7 7 \n", "16 887 891 891 \n", "17 5 7 7 \n", "18 107 110 110 \n", "19 264 271 271 \n", "20 8 8 8 \n", "21 21 38 38 \n", "22 1988 2007 2008 \n", "23 29 29 29 \n", "24 30 30 30 \n", "25 25 32 32 \n", "26 2 2 2 \n", "27 2148 2176 2176 \n", "28 4044 4048 4051 \n", "29 1056 1077 1077 \n", "30 21 21 21 \n", "31 1097 1097 1097 \n", "32 29 29 29 \n", "33 29 29 29 \n", "34 2 2 2 \n", "35 3 3 3 \n", "36 1 1 1 \n", "37 81 97 97 \n", "38 524 536 536 \n", "39 581 632 649 \n", "\n", "Years Latitude Longitude \n", "0 39.783730 -100.445882 \n", "1 -10.333333 -53.200000 \n", "2 64.686314 97.745306 \n", "3 36.574844 139.239418 \n", "4 15.926666 107.965086 \n", "5 51.163818 10.447831 \n", "6 46.603354 1.888334 \n", "7 54.702354 -3.276575 \n", "8 42.638426 12.674297 \n", "9 -28.816624 24.991639 \n", "10 49.487197 31.271832 \n", "11 39.326068 -4.837979 \n", "12 52.215933 19.134422 \n", "13 61.066692 -107.991707 \n", "14 40.373661 127.087042 \n", "15 45.985213 24.685923 \n", "16 -24.776109 134.755000 \n", "17 39.662165 -8.135352 \n", "18 50.640281 4.666715 \n", "19 49.743905 15.338106 \n", "20 47.181759 19.506094 \n", "21 53.425061 27.697136 \n", "22 59.674971 14.520858 \n", "23 47.593970 14.124560 \n", "24 46.798562 8.231974 \n", "25 30.812425 34.859476 \n", "26 44.153412 20.551440 \n", "27 55.670249 10.333328 \n", "28 63.246778 25.920916 \n", "29 61.152939 8.787665 \n", "30 45.365844 15.657521 \n", "31 -41.500083 172.834408 \n", "32 52.865196 -7.979460 \n", "33 55.350000 23.750000 \n", "34 -32.875555 -56.020153 \n", "35 56.840649 24.753764 \n", "36 46.119944 14.815333 \n", "37 58.752378 25.331908 \n", "38 52.247650 5.541247 \n", "39 42.586958 20.902123 \n", "\n", "[40 rows x 107 columns]" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2.reset_index()" ] }, { "cell_type": "markdown", "id": "a2e7245a", "metadata": {}, "source": [ "Now let's \"remelt\" the data into a format we can use for our plot:" ] }, { "cell_type": "code", "execution_count": 111, "id": "011a29fa", "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", "
CountryLongitudeLatitudeYearcumulative_sum
0United States-100.44588239.7837301917-01-010
1Brazil-53.200000-10.3333331917-01-010
2Russia97.74530664.6863141917-01-010
3Japan139.23941836.5748441917-01-010
4Vietnam107.96508615.9266661917-01-010
\n", "
" ], "text/plain": [ " Country Longitude Latitude Year cumulative_sum\n", "0 United States -100.445882 39.783730 1917-01-01 0\n", "1 Brazil -53.200000 -10.333333 1917-01-01 0\n", "2 Russia 97.745306 64.686314 1917-01-01 0\n", "3 Japan 139.239418 36.574844 1917-01-01 0\n", "4 Vietnam 107.965086 15.926666 1917-01-01 0" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_melt = corg_clean2.reset_index().melt(['Country','Longitude','Latitude'], \n", " var_name='Year', value_name='cumulative_sum')\n", "corg_melt.head()" ] }, { "cell_type": "markdown", "id": "b9dd0f22", "metadata": {}, "source": [ "Now we can make a little [slider in Altair](https://altair-viz.github.io/user_guide/interactions.html#selection-values-in-expressions) to change the date range for our circles interactively:" ] }, { "cell_type": "code", "execution_count": 112, "id": "b5ea8d6a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Timestamp('1917-01-01 00:00:00'), Timestamp('2020-01-01 00:00:00'))" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_melt['Year'].min(), corg_melt['Year'].max()" ] }, { "cell_type": "markdown", "id": "ccfc3675", "metadata": {}, "source": [ "Since sliders (at least at the time of writing) [can't have datetime inputs](https://stackoverflow.com/questions/62046930/altair-adding-date-slider-for-interactive-scatter-chart-pot) let's cheat a bit by making another column called \"year_int\":" ] }, { "cell_type": "code", "execution_count": 113, "id": "5724da74", "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", "
CountryLongitudeLatitudeYearcumulative_sumyear_int
0United States-100.44588239.7837301917-01-0101917
1Brazil-53.200000-10.3333331917-01-0101917
2Russia97.74530664.6863141917-01-0101917
3Japan139.23941836.5748441917-01-0101917
4Vietnam107.96508615.9266661917-01-0101917
\n", "
" ], "text/plain": [ " Country Longitude Latitude Year cumulative_sum year_int\n", "0 United States -100.445882 39.783730 1917-01-01 0 1917\n", "1 Brazil -53.200000 -10.333333 1917-01-01 0 1917\n", "2 Russia 97.745306 64.686314 1917-01-01 0 1917\n", "3 Japan 139.239418 36.574844 1917-01-01 0 1917\n", "4 Vietnam 107.965086 15.926666 1917-01-01 0 1917" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_melt['year_int'] = corg_melt['Year'].dt.year.astype('int')\n", "corg_melt.head()" ] }, { "cell_type": "markdown", "id": "acbfe05d", "metadata": {}, "source": [ "Note here to that for [equity selections we don't have to use == signs](https://stackoverflow.com/questions/68071713/in-altair-equality-condition-doesnt-work) in Altair (it won't work... just for fun I guess)." ] }, { "cell_type": "code", "execution_count": 117, "id": "07fa6c96-851c-4eab-a01b-bfdc496a58e7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0malt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselection_point\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mbind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mempty\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mexpr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mencodings\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfields\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclear\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mresolve\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtoggle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnearest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Create a point selection parameter. Selection parameters define data queries that are driven by direct manipulation from user input (e.g., mouse clicks or drags). Point selection parameters are used to select multiple discrete data values; the first value is selected on click and additional values toggled on shift-click. To select a continuous range of data values on drag interval selection parameters (`selection_interval`) can be used instead.\n", "\n", "Parameters\n", "----------\n", "name : string (optional)\n", " The name of the parameter. If not specified, a unique name will be\n", " created.\n", "value : any (optional)\n", " The default value of the parameter. If not specified, the parameter\n", " will be created without a default value.\n", "bind : :class:`Binding` (optional)\n", " Binds the parameter to an external input element such as a slider,\n", " selection list or radio button group.\n", "empty : boolean (optional)\n", " For selection parameters, the predicate of empty selections returns\n", " True by default. Override this behavior, by setting this property\n", " 'empty=False'.\n", "expr : :class:`Expr` (optional)\n", " An expression for the value of the parameter. This expression may\n", " include other parameters, in which case the parameter will\n", " automatically update in response to upstream parameter changes.\n", "encodings : List[str] (optional)\n", " A list of encoding channels. The corresponding data field values\n", " must match for a data tuple to fall within the selection.\n", "fields : List[str] (optional)\n", " A list of field names whose values must match for a data tuple to\n", " fall within the selection.\n", "on : string (optional)\n", " A Vega event stream (object or selector) that triggers the selection.\n", " For interval selections, the event stream must specify a start and end.\n", "clear : string or boolean (optional)\n", " Clears the selection, emptying it of all values. This property can\n", " be an Event Stream or False to disable clear. Default is 'dblclick'.\n", "resolve : enum('global', 'union', 'intersect') (optional)\n", " With layered and multi-view displays, a strategy that determines\n", " how selections' data queries are resolved when applied in a filter\n", " transform, conditional encoding rule, or scale domain.\n", " One of:\n", "\n", " * 'global': only one brush exists for the entire SPLOM. When the\n", " user begins to drag, any previous brushes are cleared, and a\n", " new one is constructed.\n", " * 'union': each cell contains its own brush, and points are\n", " highlighted if they lie within any of these individual brushes.\n", " * 'intersect': each cell contains its own brush, and points are\n", " highlighted only if they fall within all of these individual\n", " brushes.\n", "\n", " The default is 'global'.\n", "toggle : string or boolean (optional)\n", " Controls whether data values should be toggled (inserted or\n", " removed from a point selection) or only ever inserted into\n", " point selections.\n", " One of:\n", "\n", " * True (default): the toggle behavior, which corresponds to\n", " \"event.shiftKey\". As a result, data values are toggled\n", " when the user interacts with the shift-key pressed.\n", " * False: disables toggling behaviour; the selection will\n", " only ever contain a single data value corresponding\n", " to the most recent interaction.\n", " * A Vega expression which is re-evaluated as the user interacts.\n", " If the expression evaluates to True, the data value is\n", " toggled into or out of the point selection. If the expression\n", " evaluates to False, the point selection is first cleared, and\n", " the data value is then inserted. For example, setting the\n", " value to the Vega expression True will toggle data values\n", " without the user pressing the shift-key.\n", "\n", "nearest : boolean (optional)\n", " When true, an invisible voronoi diagram is computed to accelerate\n", " discrete selection. The data value nearest the mouse cursor is\n", " added to the selection. The default is False, which means that\n", " data values must be interacted with directly (e.g., clicked on)\n", " to be added to the selection.\n", "**kwds :\n", " Additional keywords to control the selection.\n", "\n", "Returns\n", "-------\n", "parameter: Parameter\n", " The parameter object that can be used in chart creation.\n", "\u001b[0;31mFile:\u001b[0m ~/anaconda3/envs/DataVizPL/lib/python3.8/site-packages/altair/vegalite/v5/api.py\n", "\u001b[0;31mType:\u001b[0m function" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alt.selection_point?" ] }, { "cell_type": "code", "execution_count": 119, "id": "56195c43", "metadata": {}, "outputs": [], "source": [ "slider = alt.binding_range(min=corg_melt['year_int'].min(), \n", " max=corg_melt['year_int'].max(), step=1, name='Max year:')\n", "#selector = alt.selection_single(name=\"SelectorName\", fields=['cutoff'],\n", "# bind=slider, init={'cutoff': 2000})\n", "# selector = alt.selection_single(name=\"SelectorName\", fields=['year_int'],\n", "# bind=slider, init={'year_int': 2000})\n", "selector = alt.selection_point(name=\"SelectorName\", fields=['year_int'],\n", " bind=slider, value=2000)" ] }, { "cell_type": "code", "execution_count": 121, "id": "1ded3b87", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='lightgray',\n", " stroke='white'\n", ").properties(\n", " width=800,\n", " height=500\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_melt).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " #size=alt.Size('Total Corg:Q',scale=alt.Scale(type='log')),\n", " size=alt.condition(\n", " #((alt.datum.year_int < selector.cutoff-10)&(alt.datum.year_int >= selector.cutoff)),\n", " #(alt.datum.year_int == selector.cutoff),\n", " #\"datum.year_int == selector.cutoff\",\n", " #alt.expr.datum['year_int'] < selector.cutoff,\n", " selector,\n", " alt.Size('cumulative_sum:Q',scale=None), alt.value(0)\n", " ),\n", " tooltip='Country',\n", "# ).add_selection(\n", "# selector\n", "# )\n", ").add_params(\n", " selector\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "24ddbe0b", "metadata": {}, "source": [ "One final thing, let's add in some info about what each dot means in our tooltip:" ] }, { "cell_type": "code", "execution_count": 122, "id": "1fdbcbdf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='lightgray',\n", " stroke='black'\n", ").properties(\n", " width=800,\n", " height=500\n", "#).project('mercator') # note we have a few projections we can use!\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_melt).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " #size=alt.Size('Total Corg:Q',scale=alt.Scale(type='log')),\n", " size=alt.condition(\n", " #((alt.datum.year_int < selector.year_int-10)&(alt.datum.year_int >= selector.year_int)),\n", " #(alt.datum.year_int < selector.year_int),\n", " #\"datum.year_int == selector.year_int\",\n", " #alt.expr.datum['year_int'] < selector.year_int,\n", " selector,\n", " alt.Size('cumulative_sum:Q',scale=None), alt.value(0)\n", " ),\n", " tooltip=['Country','cumulative_sum'],\n", ").add_params(\n", " selector\n", ")\n", "\n", "world + points" ] }, { "cell_type": "markdown", "id": "2c24cdbf", "metadata": {}, "source": [ "Looks nice! Let's save it:" ] }, { "cell_type": "code", "execution_count": 123, "id": "0e4e3f7e", "metadata": {}, "outputs": [], "source": [ "chart_out = world + points\n", "\n", "chart_out.properties(width='container').save(myJekyllDir+\"corgis_dotchart_world.json\") " ] }, { "cell_type": "markdown", "id": "3794475b", "metadata": {}, "source": [ "We note that when we run this though, we get a few artifacts. We can try to \"smooth\" the transitions with a bit of interpolation:" ] }, { "cell_type": "code", "execution_count": 124, "id": "65c23b3d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0malt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselection_point\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mbind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mempty\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mexpr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mencodings\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfields\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclear\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mresolve\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtoggle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnearest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUndefined\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Create a point selection parameter. Selection parameters define data queries that are driven by direct manipulation from user input (e.g., mouse clicks or drags). Point selection parameters are used to select multiple discrete data values; the first value is selected on click and additional values toggled on shift-click. To select a continuous range of data values on drag interval selection parameters (`selection_interval`) can be used instead.\n", "\n", "Parameters\n", "----------\n", "name : string (optional)\n", " The name of the parameter. If not specified, a unique name will be\n", " created.\n", "value : any (optional)\n", " The default value of the parameter. If not specified, the parameter\n", " will be created without a default value.\n", "bind : :class:`Binding` (optional)\n", " Binds the parameter to an external input element such as a slider,\n", " selection list or radio button group.\n", "empty : boolean (optional)\n", " For selection parameters, the predicate of empty selections returns\n", " True by default. Override this behavior, by setting this property\n", " 'empty=False'.\n", "expr : :class:`Expr` (optional)\n", " An expression for the value of the parameter. This expression may\n", " include other parameters, in which case the parameter will\n", " automatically update in response to upstream parameter changes.\n", "encodings : List[str] (optional)\n", " A list of encoding channels. The corresponding data field values\n", " must match for a data tuple to fall within the selection.\n", "fields : List[str] (optional)\n", " A list of field names whose values must match for a data tuple to\n", " fall within the selection.\n", "on : string (optional)\n", " A Vega event stream (object or selector) that triggers the selection.\n", " For interval selections, the event stream must specify a start and end.\n", "clear : string or boolean (optional)\n", " Clears the selection, emptying it of all values. This property can\n", " be an Event Stream or False to disable clear. Default is 'dblclick'.\n", "resolve : enum('global', 'union', 'intersect') (optional)\n", " With layered and multi-view displays, a strategy that determines\n", " how selections' data queries are resolved when applied in a filter\n", " transform, conditional encoding rule, or scale domain.\n", " One of:\n", "\n", " * 'global': only one brush exists for the entire SPLOM. When the\n", " user begins to drag, any previous brushes are cleared, and a\n", " new one is constructed.\n", " * 'union': each cell contains its own brush, and points are\n", " highlighted if they lie within any of these individual brushes.\n", " * 'intersect': each cell contains its own brush, and points are\n", " highlighted only if they fall within all of these individual\n", " brushes.\n", "\n", " The default is 'global'.\n", "toggle : string or boolean (optional)\n", " Controls whether data values should be toggled (inserted or\n", " removed from a point selection) or only ever inserted into\n", " point selections.\n", " One of:\n", "\n", " * True (default): the toggle behavior, which corresponds to\n", " \"event.shiftKey\". As a result, data values are toggled\n", " when the user interacts with the shift-key pressed.\n", " * False: disables toggling behaviour; the selection will\n", " only ever contain a single data value corresponding\n", " to the most recent interaction.\n", " * A Vega expression which is re-evaluated as the user interacts.\n", " If the expression evaluates to True, the data value is\n", " toggled into or out of the point selection. If the expression\n", " evaluates to False, the point selection is first cleared, and\n", " the data value is then inserted. For example, setting the\n", " value to the Vega expression True will toggle data values\n", " without the user pressing the shift-key.\n", "\n", "nearest : boolean (optional)\n", " When true, an invisible voronoi diagram is computed to accelerate\n", " discrete selection. The data value nearest the mouse cursor is\n", " added to the selection. The default is False, which means that\n", " data values must be interacted with directly (e.g., clicked on)\n", " to be added to the selection.\n", "**kwds :\n", " Additional keywords to control the selection.\n", "\n", "Returns\n", "-------\n", "parameter: Parameter\n", " The parameter object that can be used in chart creation.\n", "\u001b[0;31mFile:\u001b[0m ~/anaconda3/envs/DataVizPL/lib/python3.8/site-packages/altair/vegalite/v5/api.py\n", "\u001b[0;31mType:\u001b[0m function" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alt.selection_point?" ] }, { "cell_type": "code", "execution_count": 125, "id": "d0c34d9d", "metadata": {}, "outputs": [], "source": [ "slider = alt.binding_range(min=corg_melt['year_int'].min(), \n", " max=corg_melt['year_int'].max(), step=1, name='Max year:')\n", "# selector = alt.selection_single(name=\"SelectorName\", fields=['year_int'],\n", "# bind=slider, init={'year_int': corg_melt['year_int'].min()},\n", "# nearest=True)\n", "\n", "selector = alt.selection_point(name=\"SelectorName\", fields=['year_int'],\n", " bind=slider, value=corg_melt['year_int'].min(), #init={'year_int': corg_melt['year_int'].min()},\n", " nearest=True)" ] }, { "cell_type": "code", "execution_count": 126, "id": "4467f02f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geo = alt.topo_feature(data.world_110m.url, feature='countries')\n", "\n", "# US states background\n", "world = alt.Chart(geo).mark_geoshape(\n", " fill='lightgray',\n", " stroke='black'\n", ").properties(\n", " width=800,\n", " height=500\n", "#).project('mercator') # note we have a few projections we can use!\n", ").project('equirectangular') # note we have a few projections we can use!\n", "\n", "points = alt.Chart(corg_melt).mark_circle().encode(\n", " longitude='Longitude:Q',\n", " latitude='Latitude:Q',\n", " #size=alt.Size('Total Corg:Q',scale=alt.Scale(type='log')),\n", " size=alt.condition(\n", " #((alt.datum.year_int < selector.year_int-10)&(alt.datum.year_int >= selector.year_int)),\n", " #(alt.datum.year_int < selector.year_int),\n", " #\"datum.year_int == selector.year_int\",\n", " #alt.expr.datum['year_int'] < selector.year_int,\n", " selector,\n", " alt.Size('cumulative_sum:Q',scale=None), alt.value(0)\n", " ),\n", " tooltip=['Country','cumulative_sum'],\n", ").add_params(\n", " selector\n", "#).add_selection(\n", "# selector\n", ")\n", "\n", "world + points" ] }, { "cell_type": "code", "execution_count": 127, "id": "925dd8fc", "metadata": {}, "outputs": [], "source": [ "chart_out = world + points\n", "\n", "chart_out.properties(width='container').save(myJekyllDir+\"corgis_dotchart_world_smooth.json\") " ] }, { "cell_type": "markdown", "id": "240f2707", "metadata": {}, "source": [ "Groovy!\n", "\n", "One thing to note here is how much of the data cleaning and transformation we ended up doing in Python. In theory one probably *could* do this in Altair/vega-lite, but not without a lot of headache and in Python, we have the option of checking each \"stage\" of our data transformation so we can make sure it makes sense -- in vega-lite/Altair, we don't really have this option (as easily)." ] }, { "cell_type": "markdown", "id": "e385a097", "metadata": {}, "source": [ "### Corgi data and choropleth\n", "\n", "One final thing (well, not final final, there are infinite things we can do!) is to instead of plotting points on a map, we can color the a map of the world by the population of corgis at a particular time. \n", "\n", "This is called a [choropleth map](https://altair-viz.github.io/gallery/choropleth.html), and this is probably the last time I will EVER spell that correctly :D \n", "\n", "These can be [a little tricky in Altair](https://altair-viz.github.io/altair-tutorial/notebooks/09-Geographic-plots.html#colored-choropleths) since you have to map between pre-determined names of countries (as stored in the vegadataset world map) and however your data is stored." ] }, { "cell_type": "markdown", "id": "a5583f3d", "metadata": {}, "source": [ "Let's start with just coloring our mappable data based on the total corgis born. First, based on the [documentation about how to do this](https://altair-viz.github.io/altair-tutorial/notebooks/09-Geographic-plots.html#colored-choropleths) we know that we have to match up the world-map ID with whatever ID for each country as listed in our dataset. There are also some [other transformation-related things to be aware of](https://stackoverflow.com/questions/59224026/how-to-add-a-slider-to-a-choropleth-in-altair) that we'll cover after we deal with the ID look up stuff.\n", "\n", "\n", "Let's dig a bit deeper with geopandas:" ] }, { "cell_type": "code", "execution_count": 201, "id": "e2d642c1-cf9d-4473-8af9-771469e107b1", "metadata": {}, "outputs": [], "source": [ "# import fiona\n", "# fiona.supported_drivers" ] }, { "cell_type": "code", "execution_count": 202, "id": "4393182c", "metadata": {}, "outputs": [], "source": [ "import geopandas" ] }, { "cell_type": "code", "execution_count": 203, "id": "f350e176", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/world-110m.json'" ] }, "execution_count": 203, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.world_110m.url" ] }, { "cell_type": "code", "execution_count": 204, "id": "3b7784d1", "metadata": {}, "outputs": [], "source": [ "#gdf = geopandas.read_file(data.world_110m.url,include_fields=['name'],layer='countries', driver='GeoJSON')\n", "gdf = geopandas.read_file(data.world_110m.url,layer='countries')" ] }, { "cell_type": "code", "execution_count": 205, "id": "822936ff", "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", "
idgeometry
04POLYGON ((61.20961 35.64925, 62.23202 35.27011...
124MULTIPOLYGON (((23.91324 -10.92658, 24.01764 -...
28POLYGON ((20.59041 41.85586, 20.46440 41.51565...
3784POLYGON ((51.57952 24.24479, 51.75592 24.29387...
432MULTIPOLYGON (((-66.95887 -54.89756, -67.56368...
.........
172548MULTIPOLYGON (((167.51508 -16.59835, 167.18027...
173887POLYGON ((52.38592 16.38285, 52.19152 15.93771...
174710POLYGON ((28.21888 -32.77244, 27.46287 -33.227...
175894POLYGON ((32.75853 -9.23064, 33.23013 -9.67747...
176716POLYGON ((31.19251 -22.25149, 30.65971 -22.151...
\n", "

177 rows × 2 columns

\n", "
" ], "text/plain": [ " id geometry\n", "0 4 POLYGON ((61.20961 35.64925, 62.23202 35.27011...\n", "1 24 MULTIPOLYGON (((23.91324 -10.92658, 24.01764 -...\n", "2 8 POLYGON ((20.59041 41.85586, 20.46440 41.51565...\n", "3 784 POLYGON ((51.57952 24.24479, 51.75592 24.29387...\n", "4 32 MULTIPOLYGON (((-66.95887 -54.89756, -67.56368...\n", ".. ... ...\n", "172 548 MULTIPOLYGON (((167.51508 -16.59835, 167.18027...\n", "173 887 POLYGON ((52.38592 16.38285, 52.19152 15.93771...\n", "174 710 POLYGON ((28.21888 -32.77244, 27.46287 -33.227...\n", "175 894 POLYGON ((32.75853 -9.23064, 33.23013 -9.67747...\n", "176 716 POLYGON ((31.19251 -22.25149, 30.65971 -22.151...\n", "\n", "[177 rows x 2 columns]" ] }, "execution_count": 205, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf" ] }, { "cell_type": "markdown", "id": "2f520b97", "metadata": {}, "source": [ "So, here we see that there is this ID -- this matches up with each country, for example:" ] }, { "cell_type": "code", "execution_count": 206, "id": "773ec570", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 206, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf.iloc[0]['geometry']" ] }, { "cell_type": "code", "execution_count": 207, "id": "894e919d", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 207, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf.iloc[1]['geometry']" ] }, { "cell_type": "markdown", "id": "229e1e69", "metadata": {}, "source": [ "Are both countries! But how to find out which ones?" ] }, { "cell_type": "markdown", "id": "f59b2829", "metadata": {}, "source": [ "To do that, we have to map the ID's to their [world country codes](https://documentation-resources.opendatasoft.com/explore/dataset/natural-earth-countries-110m/information/). Luckily, that is [already done for us](https://github.com/alisle/world-110m-country-codes)." ] }, { "cell_type": "code", "execution_count": 208, "id": "33b6169f", "metadata": {}, "outputs": [], "source": [ "country_codes = pd.read_json('https://raw.githubusercontent.com/alisle/world-110m-country-codes/master/world-110m-country-codes.json')" ] }, { "cell_type": "code", "execution_count": 209, "id": "67f8b834", "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", "
codeidname
0AF4Afghanistan
1AL8Albania
2DZ12Algeria
3AO24Angola
4AQ10Antarctica
\n", "
" ], "text/plain": [ " code id name\n", "0 AF 4 Afghanistan\n", "1 AL 8 Albania\n", "2 DZ 12 Algeria\n", "3 AO 24 Angola\n", "4 AQ 10 Antarctica" ] }, "execution_count": 209, "metadata": {}, "output_type": "execute_result" } ], "source": [ "country_codes.head()" ] }, { "cell_type": "code", "execution_count": 210, "id": "9815d0cf", "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", "
codename
id
4AFAfghanistan
8ALAlbania
12DZAlgeria
24AOAngola
10AQAntarctica
\n", "
" ], "text/plain": [ " code name\n", "id \n", "4 AF Afghanistan\n", "8 AL Albania\n", "12 DZ Algeria\n", "24 AO Angola\n", "10 AQ Antarctica" ] }, "execution_count": 210, "metadata": {}, "output_type": "execute_result" } ], "source": [ "country_codes = country_codes.set_index('id')\n", "country_codes.head()" ] }, { "cell_type": "code", "execution_count": 211, "id": "d8faba63", "metadata": {}, "outputs": [], "source": [ "gdf['id'] = gdf['id'].astype('int64')" ] }, { "cell_type": "code", "execution_count": 212, "id": "030f9911", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 4\n", "1 24\n", "2 8\n", "3 784\n", "4 32\n", "Name: id, dtype: int64" ] }, "execution_count": 212, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf['id'].head()" ] }, { "cell_type": "markdown", "id": "a8009388", "metadata": {}, "source": [ "Let's merge these two tables together by the country ID so that we can get the name." ] }, { "cell_type": "code", "execution_count": 213, "id": "7f1b4a8a", "metadata": {}, "outputs": [], "source": [ "gdf_comb = gdf.join(country_codes, on='id')" ] }, { "cell_type": "code", "execution_count": 214, "id": "3387468c", "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", "
idgeometrycodename
04POLYGON ((61.20961 35.64925, 62.23202 35.27011...AFAfghanistan
124MULTIPOLYGON (((23.91324 -10.92658, 24.01764 -...AOAngola
28POLYGON ((20.59041 41.85586, 20.46440 41.51565...ALAlbania
3784POLYGON ((51.57952 24.24479, 51.75592 24.29387...AEUnited Arab Emirates
432MULTIPOLYGON (((-66.95887 -54.89756, -67.56368...ARArgentina
...............
172548MULTIPOLYGON (((167.51508 -16.59835, 167.18027...VUVanuatu
173887POLYGON ((52.38592 16.38285, 52.19152 15.93771...YEYemen
174710POLYGON ((28.21888 -32.77244, 27.46287 -33.227...ZASouth Africa
175894POLYGON ((32.75853 -9.23064, 33.23013 -9.67747...ZMZambia
176716POLYGON ((31.19251 -22.25149, 30.65971 -22.151...ZWZimbabwe
\n", "

177 rows × 4 columns

\n", "
" ], "text/plain": [ " id geometry code \\\n", "0 4 POLYGON ((61.20961 35.64925, 62.23202 35.27011... AF \n", "1 24 MULTIPOLYGON (((23.91324 -10.92658, 24.01764 -... AO \n", "2 8 POLYGON ((20.59041 41.85586, 20.46440 41.51565... AL \n", "3 784 POLYGON ((51.57952 24.24479, 51.75592 24.29387... AE \n", "4 32 MULTIPOLYGON (((-66.95887 -54.89756, -67.56368... AR \n", ".. ... ... ... \n", "172 548 MULTIPOLYGON (((167.51508 -16.59835, 167.18027... VU \n", "173 887 POLYGON ((52.38592 16.38285, 52.19152 15.93771... YE \n", "174 710 POLYGON ((28.21888 -32.77244, 27.46287 -33.227... ZA \n", "175 894 POLYGON ((32.75853 -9.23064, 33.23013 -9.67747... ZM \n", "176 716 POLYGON ((31.19251 -22.25149, 30.65971 -22.151... ZW \n", "\n", " name \n", "0 Afghanistan \n", "1 Angola \n", "2 Albania \n", "3 United Arab Emirates \n", "4 Argentina \n", ".. ... \n", "172 Vanuatu \n", "173 Yemen \n", "174 South Africa \n", "175 Zambia \n", "176 Zimbabwe \n", "\n", "[177 rows x 4 columns]" ] }, "execution_count": 214, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf_comb" ] }, { "cell_type": "markdown", "id": "315eb159", "metadata": {}, "source": [ "Let's re-load our data to start from \"clean\":" ] }, { "cell_type": "code", "execution_count": 215, "id": "c63d4c21", "metadata": {}, "outputs": [], "source": [ "corgs = pd.read_csv('https://raw.githubusercontent.com/UIUC-iSchool-DataViz/is445_bcubcg_fall2022/main/data/corgs_per_country_over_time_columns_2020.csv')" ] }, { "cell_type": "markdown", "id": "e02e38be", "metadata": {}, "source": [ "Clean this data with known naming issues:" ] }, { "cell_type": "code", "execution_count": 216, "id": "67c50b6f", "metadata": {}, "outputs": [], "source": [ "corg_clean = corgs.rename(columns={'Netherlands Antilles':\"Netherlands\"})" ] }, { "cell_type": "markdown", "id": "ee5cc513", "metadata": {}, "source": [ "And transpose it:" ] }, { "cell_type": "code", "execution_count": 217, "id": "98adf91d", "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", "
YearsCountry191719181919192019211922192319241925...2011201220132014201520162017201820192020
0United States000000000...4084313762803012292131981182
1Brazil000000000...0000000000
2Russia000000000...898211512723721726032918916
3Japan000000000...0000022000
4Vietnam000000000...0000001300
\n", "

5 rows × 105 columns

\n", "
" ], "text/plain": [ "Years Country 1917 1918 1919 1920 1921 1922 1923 1924 1925 \\\n", "0 United States 0 0 0 0 0 0 0 0 0 \n", "1 Brazil 0 0 0 0 0 0 0 0 0 \n", "2 Russia 0 0 0 0 0 0 0 0 0 \n", "3 Japan 0 0 0 0 0 0 0 0 0 \n", "4 Vietnam 0 0 0 0 0 0 0 0 0 \n", "\n", "Years ... 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 \n", "0 ... 408 431 376 280 301 229 213 198 118 2 \n", "1 ... 0 0 0 0 0 0 0 0 0 0 \n", "2 ... 89 82 115 127 237 217 260 329 189 16 \n", "3 ... 0 0 0 0 0 2 2 0 0 0 \n", "4 ... 0 0 0 0 0 0 1 3 0 0 \n", "\n", "[5 rows x 105 columns]" ] }, "execution_count": 217, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean_t = corg_clean.set_index('Years').T\n", "corg_clean_t.index.name = 'Country'\n", "corg_clean2 = corg_clean_t.reset_index()\n", "corg_clean2.head()" ] }, { "cell_type": "markdown", "id": "3e3a2ed6", "metadata": {}, "source": [ "We could turn this into a cumulative sum, but instead, let's leave as is this time and focus on making a chorolpeth plot that shows the corgis born *in that year* instead of a cumulative sum." ] }, { "cell_type": "markdown", "id": "ca5cd0ad", "metadata": {}, "source": [ "Now let's see how many of these columns match up with the names that we have in our corgi table:" ] }, { "cell_type": "code", "execution_count": 218, "id": "b624152c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['United States', 'Brazil', 'Russia', 'Japan', 'Vietnam', 'Germany',\n", " 'France', 'United Kingdom', 'Italy', 'South Africa', 'Ukraine',\n", " 'Spain', 'Poland', 'Canada', 'Korea, North', 'Romania',\n", " 'Australia', 'Portugal', 'Belgium', 'Czech Republic', 'Hungary',\n", " 'Belarus', 'Sweden', 'Austria', 'Switzerland', 'Israel', 'Serbia',\n", " 'Denmark', 'Finland', 'Norway', 'Croatia', 'New Zealand',\n", " 'Ireland', 'Lithuania', 'Uruguay', 'Latvia', 'Slovenia', 'Estonia',\n", " 'Netherlands', 'Kosovo'], dtype=object)" ] }, "execution_count": 218, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2['Country'].unique()" ] }, { "cell_type": "code", "execution_count": 219, "id": "6c382c1c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "no Russia\n", "no Vietnam\n", "no Korea, North\n", "no Kosovo\n" ] } ], "source": [ "for c in corg_clean2['Country'].unique():\n", " if c not in gdf_comb['name'].values:\n", " print('no',c)" ] }, { "cell_type": "markdown", "id": "d572b6ca", "metadata": {}, "source": [ "So, once again, it seems that we are missing some names. Let's see if we can get close with some fuzzy matching:" ] }, { "cell_type": "code", "execution_count": 220, "id": "52b28496", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['Afghanistan', 'Angola', 'Albania', 'United Arab Emirates',\n", " 'Argentina', 'Armenia', 'Antarctica',\n", " 'French Southern Territories', 'Australia', 'Austria',\n", " 'Azerbaijan', 'Burundi', 'Belgium', 'Benin', 'Burkina Faso',\n", " 'Bangladesh', 'Bulgaria', 'Bahamas', 'Bosnia and Herzegovina',\n", " 'Belarus', 'Belize', 'Bolivia, Plurinational State of', 'Brazil',\n", " 'Brunei Darussalam', 'Bhutan', 'Botswana',\n", " 'Central African Republic', 'Canada', 'Switzerland', 'Chile',\n", " 'China', \"Cote d'Ivoire\", 'Cameroon',\n", " 'Congo, the Democratic Republic of the', 'Congo', 'Colombia',\n", " 'Costa Rica', 'Cuba', nan, 'Cyprus', 'Czech Republic', 'Germany',\n", " 'Djibouti', 'Denmark', 'Dominican Republic', 'Algeria', 'Ecuador',\n", " 'Egypt', 'Eritrea', 'Spain', 'Estonia', 'Ethiopia', 'Finland',\n", " 'Fiji', 'Falkland Islands (Malvinas)', 'France', 'Gabon',\n", " 'United Kingdom', 'Georgia', 'Ghana', 'Guinea', 'Gambia',\n", " 'Guinea-Bissau', 'Equatorial Guinea', 'Greece', 'Greenland',\n", " 'Guatemala', 'Guyana', 'Honduras', 'Croatia', 'Haiti', 'Hungary',\n", " 'Indonesia', 'India', 'Ireland', 'Iran, Islamic Republic of',\n", " 'Iraq', 'Iceland', 'Israel', 'Italy', 'Jamaica', 'Jordan', 'Japan',\n", " 'Kazakhstan', 'Kenya', 'Kyrgyzstan', 'Cambodia',\n", " 'Korea, Republic of', nan, 'Kuwait',\n", " \"Lao People's Democratic Republic\", 'Lebanon', 'Liberia', 'Libya',\n", " 'Sri Lanka', 'Lesotho', 'Lithuania', 'Luxembourg', 'Latvia',\n", " 'Morocco', 'Moldova, Republic of', 'Madagascar', 'Mexico',\n", " 'Macedonia, the former Yugoslav Republic of', 'Mali', 'Myanmar',\n", " 'Montenegro', 'Mongolia', 'Mozambique', 'Mauritania', 'Malawi',\n", " 'Malaysia', 'Namibia', 'New Caledonia', 'Niger', 'Nigeria',\n", " 'Nicaragua', 'Netherlands', 'Norway', 'Nepal', 'New Zealand',\n", " 'Oman', 'Pakistan', 'Panama', 'Peru', 'Philippines',\n", " 'Papua New Guinea', 'Poland', 'Puerto Rico',\n", " \"Korea, Democratic People's Republic of\", 'Portugal', 'Paraguay',\n", " nan, 'Qatar', 'Romania', 'Russian Federation', 'Rwanda',\n", " 'Western Sahara', 'Saudi Arabia', 'Sudan', 'South Sudan',\n", " 'Senegal', 'Solomon Islands', 'Sierra Leone', 'El Salvador', nan,\n", " 'Somalia', 'Serbia', 'Suriname', 'Slovakia', 'Slovenia', 'Sweden',\n", " 'Swaziland', 'Syrian Arab Republic', 'Chad', 'Togo', 'Thailand',\n", " 'Tajikistan', 'Turkmenistan', 'Timor-Leste', 'Trinidad and Tobago',\n", " 'Tunisia', 'Turkey', 'Taiwan, Province of China',\n", " 'Tanzania, United Republic of', 'Uganda', 'Ukraine', 'Uruguay',\n", " 'United States', 'Uzbekistan', 'Venezuela, Bolivarian Republic of',\n", " 'Viet Nam', 'Vanuatu', 'Yemen', 'South Africa', 'Zambia',\n", " 'Zimbabwe'], dtype=object)" ] }, "execution_count": 220, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf_comb['name'].values" ] }, { "cell_type": "code", "execution_count": 221, "id": "0bcec1ef", "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", "
idgeometrycodename
168840MULTIPOLYGON (((-155.68896 18.91661, -155.9373...USUnited States
\n", "
" ], "text/plain": [ " id geometry code \\\n", "168 840 MULTIPOLYGON (((-155.68896 18.91661, -155.9373... US \n", "\n", " name \n", "168 United States " ] }, "execution_count": 221, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf_comb.loc[gdf_comb['name']=='United States']" ] }, { "cell_type": "code", "execution_count": 222, "id": "69131f0a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Russia Russian Federation\n", "found ['Russian Federation'] for Russia\n", "Vietnam Viet Nam\n", "found ['Viet Nam'] for Vietnam\n", "no match Korea, North\n", "no match Kosovo\n" ] } ], "source": [ "for c in corg_clean2['Country'].unique():\n", " if c not in gdf_comb['name'].values: # if not in there, look for fuzzy\n", " #print('no',c)\n", " country_match = []\n", " for cc in gdf_comb['name'].values:\n", " #if c in cc: # there is an NaN\n", " if type(cc)==str:\n", " c2 = \"\".join(c.split()).lower()\n", " cc2 = \"\".join(cc.split()).lower()\n", " if c2 in cc2:\n", " country_match.append(cc)\n", " print(c,cc)\n", " if len(country_match) >0:\n", " print('found', country_match, 'for',c)\n", " else:\n", " print('no match',c)\n", " " ] }, { "cell_type": "code", "execution_count": 223, "id": "c4cdfe95", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "found ['Russian Federation'] for Russia\n", "found ['Viet Nam'] for Vietnam\n", "no match Korea, North\n", "no match Kosovo\n" ] } ], "source": [ "# store these names to be the same as in our dataset\n", "for c in corg_clean2['Country'].unique():\n", " if c not in gdf_comb['name'].values: # if not in there, look for fuzzy\n", " #print('no',c)\n", " country_match = []\n", " for cc in gdf_comb['name'].values:\n", " #if c in cc: # there is an NaN\n", " if type(cc)==str:\n", " c2 = \"\".join(c.split()).lower()\n", " cc2 = \"\".join(cc.split()).lower()\n", " if c2 in cc2:\n", " country_match.append(cc)\n", " #print(c,cc)\n", " if len(country_match) >0:\n", " print('found', country_match, 'for',c)\n", " if len(country_match)==1: # only one\n", " gdf_comb.loc[gdf_comb['name']==country_match[0],'name'] = c # replace\n", " else:\n", " print('no match',c)" ] }, { "cell_type": "markdown", "id": "7a2cca7a", "metadata": {}, "source": [ "Missing ids for North Korea and Kosovo, in our original corgi dataset, but let's add the IDs that we can to our corgi dataset:" ] }, { "cell_type": "code", "execution_count": 224, "id": "f4485747-5bdf-4e6a-9700-8b707f47418e", "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", "
YearsCountry191719181919192019211922192319241925...2011201220132014201520162017201820192020
0United States000000000...4084313762803012292131981182
1Brazil000000000...0000000000
2Russia000000000...898211512723721726032918916
3Japan000000000...0000022000
4Vietnam000000000...0000001300
\n", "

5 rows × 105 columns

\n", "
" ], "text/plain": [ "Years Country 1917 1918 1919 1920 1921 1922 1923 1924 1925 \\\n", "0 United States 0 0 0 0 0 0 0 0 0 \n", "1 Brazil 0 0 0 0 0 0 0 0 0 \n", "2 Russia 0 0 0 0 0 0 0 0 0 \n", "3 Japan 0 0 0 0 0 0 0 0 0 \n", "4 Vietnam 0 0 0 0 0 0 0 0 0 \n", "\n", "Years ... 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 \n", "0 ... 408 431 376 280 301 229 213 198 118 2 \n", "1 ... 0 0 0 0 0 0 0 0 0 0 \n", "2 ... 89 82 115 127 237 217 260 329 189 16 \n", "3 ... 0 0 0 0 0 2 2 0 0 0 \n", "4 ... 0 0 0 0 0 0 1 3 0 0 \n", "\n", "[5 rows x 105 columns]" ] }, "execution_count": 224, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_clean2.head()" ] }, { "cell_type": "code", "execution_count": 225, "id": "6c1a1dd4", "metadata": {}, "outputs": [], "source": [ "#corg_clean2.join?" ] }, { "cell_type": "code", "execution_count": 226, "id": "3de8ad00", "metadata": {}, "outputs": [], "source": [ "corg_join = corg_clean2.reset_index().merge(gdf_comb,right_on='name',left_on='Country')" ] }, { "cell_type": "code", "execution_count": 227, "id": "abeb7b75", "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", "
indexCountry19171918191919201921192219231924...201520162017201820192020idgeometrycodename
00United States00000000...3012292131981182840MULTIPOLYGON (((-155.68896 18.91661, -155.9373...USUnited States
11Brazil00000000...00000076POLYGON ((-57.62398 -30.21667, -56.29196 -28.8...BRBrazil
22Russia00000000...23721726032918916643MULTIPOLYGON (((142.09162 45.96708, 141.90802 ...RURussia
33Japan00000000...022000392MULTIPOLYGON (((133.01593 32.70419, 132.36432 ...JPJapan
44Vietnam00000000...001300704POLYGON ((108.04968 21.55193, 106.71407 20.697...VNVietnam
\n", "

5 rows × 110 columns

\n", "
" ], "text/plain": [ " index Country 1917 1918 1919 1920 1921 1922 1923 1924 ... \\\n", "0 0 United States 0 0 0 0 0 0 0 0 ... \n", "1 1 Brazil 0 0 0 0 0 0 0 0 ... \n", "2 2 Russia 0 0 0 0 0 0 0 0 ... \n", "3 3 Japan 0 0 0 0 0 0 0 0 ... \n", "4 4 Vietnam 0 0 0 0 0 0 0 0 ... \n", "\n", " 2015 2016 2017 2018 2019 2020 id \\\n", "0 301 229 213 198 118 2 840 \n", "1 0 0 0 0 0 0 76 \n", "2 237 217 260 329 189 16 643 \n", "3 0 2 2 0 0 0 392 \n", "4 0 0 1 3 0 0 704 \n", "\n", " geometry code name \n", "0 MULTIPOLYGON (((-155.68896 18.91661, -155.9373... US United States \n", "1 POLYGON ((-57.62398 -30.21667, -56.29196 -28.8... BR Brazil \n", "2 MULTIPOLYGON (((142.09162 45.96708, 141.90802 ... RU Russia \n", "3 MULTIPOLYGON (((133.01593 32.70419, 132.36432 ... JP Japan \n", "4 POLYGON ((108.04968 21.55193, 106.71407 20.697... VN Vietnam \n", "\n", "[5 rows x 110 columns]" ] }, "execution_count": 227, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_join.head()" ] }, { "cell_type": "markdown", "id": "72b6b71b", "metadata": {}, "source": [ "Now that we have merged everything together, let's simplify this table a bit. We know that we want a year slider, so let's change our columns from datetime to years:" ] }, { "cell_type": "code", "execution_count": 228, "id": "3b4ca36c", "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", "
Country191719181919192019211922192319241925...201220132014201520162017201820192020id
0United States000000000...4313762803012292131981182840
1Brazil000000000...00000000076
2Russia000000000...8211512723721726032918916643
3Japan000000000...000022000392
4Vietnam000000000...000001300704
\n", "

5 rows × 106 columns

\n", "
" ], "text/plain": [ " Country 1917 1918 1919 1920 1921 1922 1923 1924 1925 ... \\\n", "0 United States 0 0 0 0 0 0 0 0 0 ... \n", "1 Brazil 0 0 0 0 0 0 0 0 0 ... \n", "2 Russia 0 0 0 0 0 0 0 0 0 ... \n", "3 Japan 0 0 0 0 0 0 0 0 0 ... \n", "4 Vietnam 0 0 0 0 0 0 0 0 0 ... \n", "\n", " 2012 2013 2014 2015 2016 2017 2018 2019 2020 id \n", "0 431 376 280 301 229 213 198 118 2 840 \n", "1 0 0 0 0 0 0 0 0 0 76 \n", "2 82 115 127 237 217 260 329 189 16 643 \n", "3 0 0 0 0 2 2 0 0 0 392 \n", "4 0 0 0 0 0 1 3 0 0 704 \n", "\n", "[5 rows x 106 columns]" ] }, "execution_count": 228, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_join_small = corg_join.copy()\n", "corg_join_small = corg_join_small.drop(['index','code','name','geometry'],axis=1)\n", "corg_join_small.head()" ] }, { "cell_type": "markdown", "id": "4f9f28d7", "metadata": {}, "source": [ "Before making this interactive in anyway, let's first make a static plot. This will help us explore [some of the transformations that we need to do](https://stackoverflow.com/questions/59224026/how-to-add-a-slider-to-a-choropleth-in-altair) to get this whole thing to work." ] }, { "cell_type": "markdown", "id": "f6a61aa3", "metadata": {}, "source": [ "Let's start with a black-background map:" ] }, { "cell_type": "code", "execution_count": 229, "id": "5270bd44-5051-4863-98a9-4b25cb8d8b03", "metadata": {}, "outputs": [], "source": [ "####xx = alt.Chart(source)" ] }, { "cell_type": "code", "execution_count": 230, "id": "23285674-7238-4cf9-8ce4-c838e5cb2029", "metadata": {}, "outputs": [], "source": [ "###xx.mark_geoshape?" ] }, { "cell_type": "code", "execution_count": 231, "id": "fdd14d47-a720-45f0-af47-c166e272edc4", "metadata": {}, "outputs": [], "source": [ "#world" ] }, { "cell_type": "code", "execution_count": 232, "id": "208ed743-ea8d-488a-8663-8f44c35a18c2", "metadata": {}, "outputs": [], "source": [ "#source = alt.topo_feature(data.world_110m.url, 'countries')\n", "\n", "# input_dropdown = alt.binding_select(options=[\n", "# \"albers\",\n", "# \"albersUsa\",\n", "# \"azimuthalEqualArea\",\n", "# \"azimuthalEquidistant\",\n", "# \"conicEqualArea\",\n", "# \"conicEquidistant\",\n", "# \"equalEarth\",\n", "# \"equirectangular\",\n", "# \"gnomonic\",\n", "# \"mercator\",\n", "# \"naturalEarth1\",\n", "# \"orthographic\",\n", "# \"stereographic\",\n", "# \"transverseMercator\"\n", "# ], name='Projection ')\n", "# param_projection = alt.param(value=\"equalEarth\", bind=input_dropdown)\n", "\n", "# alt.Chart(source, width=500, height=300).mark_geoshape(\n", "# fill='lightgray',\n", "# stroke='gray'\n", "# ).project(\n", "# type=alt.expr(param_projection.name)\n", "# ).add_params(param_projection)" ] }, { "cell_type": "code", "execution_count": 233, "id": "18b8427a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 233, "metadata": {}, "output_type": "execute_result" } ], "source": [ "world = alt.topo_feature(data.world_110m.url, \"countries\")\n", "\n", "background = alt.Chart(world).mark_geoshape(fill=\"black\").project(\n", " \"equirectangular\"\n", ")\n", "background" ] }, { "cell_type": "markdown", "id": "69162b6d", "metadata": {}, "source": [ "Let's add the forground, and in this case, just pick one year to plot. To select this year, let's first change the type of our columns:" ] }, { "cell_type": "code", "execution_count": 234, "id": "d6fb7a4c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Country', 1917, 1918, 1919, 1920, 1921,\n", " 1922, 1923, 1924, 1925,\n", " ...\n", " 2012, 2013, 2014, 2015, 2016, 2017,\n", " 2018, 2019, 2020, 'id'],\n", " dtype='object', length=106)" ] }, "execution_count": 234, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_join_small.columns" ] }, { "cell_type": "code", "execution_count": 235, "id": "85f93c64", "metadata": {}, "outputs": [], "source": [ "corg_join_small.columns = corg_join_small.columns.astype('str')" ] }, { "cell_type": "code", "execution_count": 236, "id": "9c79d7ca", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Country', '1917', '1918', '1919', '1920', '1921', '1922', '1923',\n", " '1924', '1925',\n", " ...\n", " '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020',\n", " 'id'],\n", " dtype='object', length=106)" ] }, "execution_count": 236, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_join_small.columns" ] }, { "cell_type": "code", "execution_count": 237, "id": "5850ee25", "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", "
Country2019id
0United States118840
1Brazil076
2Russia189643
3Japan0392
4Vietnam0704
\n", "
" ], "text/plain": [ " Country 2019 id\n", "0 United States 118 840\n", "1 Brazil 0 76\n", "2 Russia 189 643\n", "3 Japan 0 392\n", "4 Vietnam 0 704" ] }, "execution_count": 237, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corg_join_small_2019 = corg_join_small[['Country','2019','id']]\n", "corg_join_small_2019.head()" ] }, { "cell_type": "code", "execution_count": 238, "id": "3cf73021", "metadata": {}, "outputs": [], "source": [ "columns = ['2019']" ] }, { "cell_type": "code", "execution_count": 239, "id": "7d407956", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 239, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreground = alt.Chart(world).mark_geoshape(\n", ").transform_lookup(\n", " lookup='id',\n", " from_=alt.LookupData(corg_join_small_2019, 'id', columns)\n", ").encode(\n", " color = alt.Color('2019:Q', scale=alt.Scale(scheme='blues'))\n", ")\n", "background+foreground" ] }, { "cell_type": "markdown", "id": "a8c16888", "metadata": {}, "source": [ "Next, let's use a [transform_fold](https://altair-viz.github.io/user_guide/transform/fold.html) operation to \"unwrap\" our data into a `year` variable and a `Corgs_Born` variable. This is very similar to the \"melting\" operations we did above, but now, it will be done \"on the fly\" in vega-lite/Altair with each year selection.\n", "\n", "To do that, we need to specify which columns to use. In our current case, we just have the 2019 column as what we want to transform by \"folding\":" ] }, { "cell_type": "code", "execution_count": 240, "id": "83bb3b4d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 240, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreground = alt.Chart(world).mark_geoshape(\n", ").transform_lookup(\n", " lookup='id',\n", " from_=alt.LookupData(corg_join_small_2019, 'id', columns)\n", ").transform_fold( # this is so that we can do continuous updates\n", " columns, as_=['year', 'Corgs_Born']\n", ").encode(\n", " color = alt.Color('Corgs_Born:Q', scale=alt.Scale(scheme='blues'))\n", ")\n", "background+foreground" ] }, { "cell_type": "markdown", "id": "f47ed4e2", "metadata": {}, "source": [ "So, this works for one year, but we want multiple years. For this we need a slider like we had above:" ] }, { "cell_type": "code", "execution_count": 245, "id": "f92d367f", "metadata": {}, "outputs": [], "source": [ "slider = alt.binding_range(min=1917, max=2020, step=1, name='Year: ')\n", "# select_year = alt.selection_single(name=\"year\", fields=['year'], # will operate on a \"year\" variable calculated \"on the fly\"\n", "# bind=slider, init={'year': 2006})\n", "\n", "select_year = alt.selection_point(name=\"year\", fields=['year'], # will operate on a \"year\" variable calculated \"on the fly\"\n", " bind=slider, value = 2006)" ] }, { "cell_type": "markdown", "id": "0f57cf59", "metadata": {}, "source": [ "Which years columns to use now? Well, all of them!" ] }, { "cell_type": "code", "execution_count": 246, "id": "e84f9357", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['1917', '1918', '1919', '1920', '1921'], dtype='\n", " #altair-viz-a6d1fd1dab2c481abe3a358886f8e4f9.vega-embed {\n", " width: 100%;\n", " display: flex;\n", " }\n", "\n", " #altair-viz-a6d1fd1dab2c481abe3a358886f8e4f9.vega-embed details,\n", " #altair-viz-a6d1fd1dab2c481abe3a358886f8e4f9.vega-embed details summary {\n", " position: relative;\n", " }\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 247, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreground = alt.Chart(world).mark_geoshape(\n", ").transform_lookup(\n", " lookup='id',\n", " from_=alt.LookupData(corg_join_small, 'id', columns)\n", ").transform_fold( # this is so that we can do continuous updates\n", " columns, as_=['year', 'Corgs_Born']\n", ").encode(\n", " color = alt.Color('Corgs_Born:Q', scale=alt.Scale(scheme='blues'))\n", ").add_params(\n", " select_year\n", ").transform_filter(\n", " select_year\n", ")\n", "background+foreground" ] }, { "cell_type": "markdown", "id": "ad653963", "metadata": {}, "source": [ "But wait! That doesn't work how we think it should... as we can see by the colorbar -- we are getting NaN's. That is because as discussed above, the slider is expecting integers and `year` is a string. We got around this before by having an `year_int` column, but now we want to do this \"on the fly\" -- we can accomplish this by adding another transformation to our Altair specs:" ] }, { "cell_type": "code", "execution_count": 248, "id": "ab8dd3d4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 248, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreground = alt.Chart(world).mark_geoshape(\n", ").transform_lookup(\n", " lookup='id',\n", " from_=alt.LookupData(corg_join_small, 'id', columns)\n", ").transform_fold( # this is so that we can do continuous updates\n", " columns, as_=['year', 'Corgs_Born']\n", ").transform_calculate(\n", " year='parseInt(datum.year)',\n", ").encode(\n", " color = alt.Color('Corgs_Born:Q', scale=alt.Scale(scheme='blues'))\n", ").add_params(\n", " select_year\n", ").transform_filter(\n", " select_year\n", ")\n", "background+foreground" ] }, { "cell_type": "markdown", "id": "8a8d9471", "metadata": {}, "source": [ "Nice! One last thing -- let's make it a bit bigger and maybe change the colormap:" ] }, { "cell_type": "code", "execution_count": 249, "id": "f7424df9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 249, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreground = alt.Chart(world).mark_geoshape(\n", ").transform_lookup(\n", " lookup='id',\n", " from_=alt.LookupData(corg_join_small, 'id', columns)\n", ").transform_fold( # this is so that we can do continuous updates\n", " columns, as_=['year', 'Corgs_Born']\n", ").transform_calculate(\n", " year='parseInt(datum.year)',\n", ").encode(\n", " color = alt.Color('Corgs_Born:Q', scale=alt.Scale(scheme='viridis')),\n", ").add_params(\n", " select_year\n", ").transform_filter(\n", " select_year\n", ")\n", "choro_corg = (background+foreground).properties(\n", " width=700,\n", " height=400\n", ")\n", "choro_corg" ] }, { "cell_type": "markdown", "id": "5d34ae4f", "metadata": {}, "source": [ "I lied! One last-last thing, [let's add in our tooltip](https://stackoverflow.com/questions/65987572/adding-dynamic-tooltip-and-title-to-choropleth-with-slider-in-altair):" ] }, { "cell_type": "code", "execution_count": 251, "id": "94c06b48-5940-4f32-8747-13df7fa4449f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['1917', '1918', '1919', '1920', '1921', '1922', '1923', '1924',\n", " '1925', '1926', '1927', '1928', '1929', '1930', '1931', '1932',\n", " '1933', '1934', '1935', '1936', '1937', '1938', '1939', '1940',\n", " '1941', '1942', '1943', '1944', '1945', '1946', '1947', '1948',\n", " '1949', '1950', '1951', '1952', '1953', '1954', '1955', '1956',\n", " '1957', '1958', '1959', '1960', '1961', '1962', '1963', '1964',\n", " '1965', '1966', '1967', '1968', '1969', '1970', '1971', '1972',\n", " '1973', '1974', '1975', '1976', '1977', '1978', '1979', '1980',\n", " '1981', '1982', '1983', '1984', '1985', '1986', '1987', '1988',\n", " '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996',\n", " '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004',\n", " '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012',\n", " '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020',\n", " '2021'], dtype='\n", " #altair-viz-38f62e6d9081436eb3ec20e247f87ac2.vega-embed {\n", " width: 100%;\n", " display: flex;\n", " }\n", "\n", " #altair-viz-38f62e6d9081436eb3ec20e247f87ac2.vega-embed details,\n", " #altair-viz-38f62e6d9081436eb3ec20e247f87ac2.vega-embed details summary {\n", " position: relative;\n", " }\n", "\n", "
\n", "" ], "text/plain": [ "alt.LayerChart(...)" ] }, "execution_count": 253, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreground = alt.Chart(world).mark_geoshape(\n", ").transform_lookup(\n", " lookup='id',\n", " from_=alt.LookupData(corg_join_small, 'id', columns.tolist()+['Country']) # add country\n", ").transform_fold( # this is so that we can do continuous updates\n", " columns, as_=['year', 'Corgs_Born'] # add in country\n", ").transform_calculate(\n", " year='parseInt(datum.year)',\n", ").encode(\n", " color = alt.Color('Corgs_Born:Q', scale=alt.Scale(scheme='viridis')),\n", " tooltip=['Country:N','Corgs_Born:Q'] # data types might not be necessary\n", ").add_params(\n", " select_year\n", ").transform_filter(\n", " select_year\n", ")\n", "choro_corg = (background+foreground).properties(\n", " width=700,\n", " height=400\n", ")\n", "choro_corg" ] }, { "cell_type": "markdown", "id": "33e22cb0", "metadata": {}, "source": [ "Let's save it with a contain width tag!" ] }, { "cell_type": "code", "execution_count": 254, "id": "ecaab709", "metadata": {}, "outputs": [], "source": [ "chart_out = background+foreground\n", "\n", "chart_out.properties(width='container').save(myJekyllDir+\"corgis_choro_world.json\") " ] }, { "cell_type": "code", "execution_count": null, "id": "b6cf0caf", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "c337295a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "6d816ca9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "450fa51e", "metadata": {}, "source": [ "## Optional:\n", "\n", "Maybe try saving with HTML just as an example? https://altair-viz.github.io/user_guide/saving_charts.html" ] }, { "cell_type": "markdown", "id": "927b1453", "metadata": {}, "source": [ "https://stackoverflow.com/questions/59224026/how-to-add-a-slider-to-a-choropleth-in-altair" ] } ], "metadata": { "kernelspec": { "display_name": "DataViz2", "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.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }