{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Shooting Events in Philadelphia, PA (2015 to 2023)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "import carto2gpd\n", "from folium.plugins import HeatMap, MarkerCluster\n", "import folium\n", "import geopandas as gpd\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import os\n", "import osmnx as ox" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Using OpenDataPhilly's API, I accessed the data on shooting events." ] }, { "cell_type": "code", "execution_count": 63, "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", "
geometrycartodb_idobjectidyeardc_keycodedate_timeracesex...offender_injuredoffender_deceasedlocationlatinopoint_xpoint_ydistinsideoutsidefatal
0POINT (-75.24507 39.96569)187728062022202219019227.04012022-04-22T00:00:00Z19:36:00BM...NN200 BLOCK N FELTON ST0.0-75.24507039.965688190.01.00.0
1POINT (-75.24559 39.97038)287728072022202219019249.04012022-04-22T00:00:00Z22:31:00BM...NN6300 BLOCK GIRARD AVE0.0-75.24558839.970376190.01.00.0
2POINT (-75.24276 39.98001)387728082022202219019654.04012022-04-25T00:00:00Z08:05:00BM...NN6100 BLOCK W OXFORD ST0.0-75.24275639.980014190.01.00.0
3POINT (-75.23637 39.96480)487728092022202219020571.04012022-04-30T00:00:00Z18:26:00BM...NN200 BLOCK N 58TH ST0.0-75.23636539.964798191.00.00.0
4POINT (-75.23284 39.96565)587728102022202219023257.04112022-05-15T00:00:00Z21:29:00BM...NN5600 BLOCK VINE ST0.0-75.23283639.965655190.01.00.0
..................................................................
14404POINT (-75.16850 39.99893)1440587718152021202139050068.01112021-09-18T00:00:00Z12:44:00BM...NN2200 BLOCK W CAMBRIA ST0.0-75.16850039.998927390.01.01.0
14405POINT (-75.16381 39.99836)1440687718162021202139050228.01112021-09-19T00:00:00Z11:12:00BM...NN2000 BLOCK W CAMBRIA ST0.0-75.16381139.998360390.01.01.0
14406POINT (-75.15433 40.01967)1440787718172021202139050716.01162021-09-21T00:00:00Z17:14:00BM...NN1700 BLOCK SAINT PAUL ST0.0-75.15432640.019668390.01.01.0
14407POINT (-75.16315 40.00838)1440887718182021202139051064.01112021-09-23T00:00:00Z20:07:00BM...NN3500 BLOCK N 21ST ST0.0-75.16315440.008377390.01.01.0
14408POINT (-75.18036 40.00967)1440987718192021202139051442.04012021-09-25T00:00:00Z18:30:00BF...NN3100 BLOCK HENRY AVE0.0-75.18035940.009666390.01.00.0
\n", "

13683 rows × 23 columns

\n", "
" ], "text/plain": [ " geometry cartodb_id objectid year dc_key \\\n", "0 POINT (-75.24507 39.96569) 1 8772806 2022 202219019227.0 \n", "1 POINT (-75.24559 39.97038) 2 8772807 2022 202219019249.0 \n", "2 POINT (-75.24276 39.98001) 3 8772808 2022 202219019654.0 \n", "3 POINT (-75.23637 39.96480) 4 8772809 2022 202219020571.0 \n", "4 POINT (-75.23284 39.96565) 5 8772810 2022 202219023257.0 \n", "... ... ... ... ... ... \n", "14404 POINT (-75.16850 39.99893) 14405 8771815 2021 202139050068.0 \n", "14405 POINT (-75.16381 39.99836) 14406 8771816 2021 202139050228.0 \n", "14406 POINT (-75.15433 40.01967) 14407 8771817 2021 202139050716.0 \n", "14407 POINT (-75.16315 40.00838) 14408 8771818 2021 202139051064.0 \n", "14408 POINT (-75.18036 40.00967) 14409 8771819 2021 202139051442.0 \n", "\n", " code date_ time race sex ... offender_injured \\\n", "0 401 2022-04-22T00:00:00Z 19:36:00 B M ... N \n", "1 401 2022-04-22T00:00:00Z 22:31:00 B M ... N \n", "2 401 2022-04-25T00:00:00Z 08:05:00 B M ... N \n", "3 401 2022-04-30T00:00:00Z 18:26:00 B M ... N \n", "4 411 2022-05-15T00:00:00Z 21:29:00 B M ... N \n", "... ... ... ... ... .. ... ... \n", "14404 111 2021-09-18T00:00:00Z 12:44:00 B M ... N \n", "14405 111 2021-09-19T00:00:00Z 11:12:00 B M ... N \n", "14406 116 2021-09-21T00:00:00Z 17:14:00 B M ... N \n", "14407 111 2021-09-23T00:00:00Z 20:07:00 B M ... N \n", "14408 401 2021-09-25T00:00:00Z 18:30:00 B F ... N \n", "\n", " offender_deceased location latino point_x \\\n", "0 N 200 BLOCK N FELTON ST 0.0 -75.245070 \n", "1 N 6300 BLOCK GIRARD AVE 0.0 -75.245588 \n", "2 N 6100 BLOCK W OXFORD ST 0.0 -75.242756 \n", "3 N 200 BLOCK N 58TH ST 0.0 -75.236365 \n", "4 N 5600 BLOCK VINE ST 0.0 -75.232836 \n", "... ... ... ... ... \n", "14404 N 2200 BLOCK W CAMBRIA ST 0.0 -75.168500 \n", "14405 N 2000 BLOCK W CAMBRIA ST 0.0 -75.163811 \n", "14406 N 1700 BLOCK SAINT PAUL ST 0.0 -75.154326 \n", "14407 N 3500 BLOCK N 21ST ST 0.0 -75.163154 \n", "14408 N 3100 BLOCK HENRY AVE 0.0 -75.180359 \n", "\n", " point_y dist inside outside fatal \n", "0 39.965688 19 0.0 1.0 0.0 \n", "1 39.970376 19 0.0 1.0 0.0 \n", "2 39.980014 19 0.0 1.0 0.0 \n", "3 39.964798 19 1.0 0.0 0.0 \n", "4 39.965655 19 0.0 1.0 0.0 \n", "... ... ... ... ... ... \n", "14404 39.998927 39 0.0 1.0 1.0 \n", "14405 39.998360 39 0.0 1.0 1.0 \n", "14406 40.019668 39 0.0 1.0 1.0 \n", "14407 40.008377 39 0.0 1.0 1.0 \n", "14408 40.009666 39 0.0 1.0 0.0 \n", "\n", "[13683 rows x 23 columns]" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get shooting data from Open Data Philly's API\n", "url = \"https://phl.carto.com/api/v2/sql\"\n", "table_name = \"shootings\"\n", "df = carto2gpd.get(url, table_name)\n", "\n", "df = df.loc[df['year'] != 2023] # Use only full year's worth of data\n", "\n", "df" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The line plot below shows a steady amount of shooting events from 2015 to 2019, with a sporadic increase in shooting events from 2019 to 2020." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1UAAAIdCAYAAADVg1dzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACC+ElEQVR4nO3dd3hUVf7H8U8qIY00SCCFBBAQQg+9BiwICuruCoqiYFnL4gqrPzvsKpZdC2DBhgV30UUsu6KirBCqtNAJBqSkQgLpE0LqzO+PmCFjAiQkk5lk3q/n4UnOvXcm3zMnCfPJPfdcJ5PJZBIAAAAA4JI427oAAAAAAGjOCFUAAAAA0ACEKgAAAABoAEIVAAAAADQAoQoAAAAAGoBQBQAAAAANQKgCAAAAgAYgVAEAAABAAxCqADRL3Lf8HF4LoOnxcwegOkIVgPPav3+/HnnkEY0ZM0a9e/fWuHHj9NRTTyk1NdWmda1Zs0aPPvpoozzX0qVLNWLECPXu3VuLFy8+73Fr167V7bffrpiYGPXq1UtXXnml5s+fr6ysLIvjunXrptdff71RaruY0tJSvfDCC1q5cqV522OPPaaxY8c2yddvLNu2bVO3bt0s/nXv3l39+/fX1KlTtXbt2hrHbtu27YLPWX0c6vqYurjtttt022231esxlzImdXnMl19+qW7duiktLa1ez10Xvx2Pbt26qXfv3po4caLee+89GY1Gi+PPnDmjfv36qUePHsrMzKzz1zEYDBo3bpyOHj0qqTKoLF++XNddd5369euncePG6bnnnlNhYaHF444dO6Z77rlHAwYM0ODBg/XEE0+ooKDgvF/nhRdeqHXcNmzYUGtf77zzzvM+V20/dw3xww8/6Pe//7369++v0aNH67HHHqvxe+XUqVOaM2eOBg8erP79++vBBx+s8TpnZ2frqaeeUmxsrPr166cbb7xR3333ncUxZ8+e1T/+8Q/FxsaqT58+mjJlijZs2GBxzIIFC/S3v/2tUfoGOBJXWxcAwD4tW7ZMzz//vAYPHqy//OUvateunVJSUrRkyRKtXr1aH374oXr27GmT2j766KNGeZ7CwkK9+OKLGj16tO68806FhYXVetxXX32lxx57TFOmTNEdd9yh1q1b68iRI3r33XcVFxenL774Qn5+fo1SU32cOnVKH330kV544QXztvvvv1/Tp09v8loaw9y5c83fUyaTSfn5+frggw90//3365133tHo0aPr/FzLly9XSEiItUq1C2PGjNHy5cvVrl07qzz/73//e/3hD38wt8+ePavVq1fr5ZdfVkFBgf7yl7+Y93333Xfy8PCQl5eXVqxYoT/96U91+hrPPfecYmNj1blzZ0nSkiVLtGDBAt15550aOnSokpOTtWjRIv3yyy/68MMP5eTkpIKCAt1xxx1q166d/vGPfyg7O1svvfSSMjIy9MEHH9T4Gu+++64++ugjDRo0qMa+xMREtWnTRu+++67Fdh8fn/PWXNvP3aVatWqVHnroIU2ZMkUPPfSQsrKy9Nprr+n222/Xl19+qVatWqm8vFx33323ioqK9Ne//lXl5eV65ZVXNHPmTP3nP/+Rm5ubSktLdeedd6qgoEAPPviggoODtXr1as2ePVulpaW6/vrrJUmPP/64Nm7cqL/85S+KjIzUV199pXvvvVcff/yxYmJiJEl//OMfdfXVV+uqq67S0KFDG9xHwFEQqgDUsHPnTj333HOaNm2annzySfP2wYMHa9y4cbrxxhv1+OOP6+uvv7ZhlQ2Xn58vo9GoK6+8UgMHDjzvcW+++aauvfZaPfPMM+ZtQ4YMUUxMjCZPnqzPP/9cd911V1OUfFERERG2LuGSdenSRX379rXYFhMTozFjxujjjz+uV6j67fO0RAEBAQoICLDa84eEhNR4HYcOHapjx45p2bJlevDBB+Xm5iZJ+uKLLzRixAh5e3trxYoVuu++++Ti4nLB509ISNDXX3+tuLg4SZLRaNS7776rKVOmmAPbsGHD5Ofnp4ceekgHDhxQr1699Omnn6qgoED/+c9/zP0PDg7WPffco/j4eHM4SE1N1Ysvvqi4uLjzhqSff/5Z3bp1s9n3y+LFizV69GiL3y2dOnXSH/7wB8XFxWn8+PH6/vvvlZiYqG+++UaXXXaZJOnyyy/Xtddeq++++06TJ0/WunXr9PPPP2vFihXq3bu3pMrX7sSJE1qyZImuv/56paSkaNWqVZo3b55uueUWSZW/x3bt2qVPPvnE/Lp5enpq+vTpevHFF/Xf//63iV8RoPli+h+AGt5//335+Phozpw5NfYFBAToscce01VXXWUxJee7777TjTfeqH79+mn48OGaO3eu8vPzzftff/11devWrcbzVZ+mlZaWpm7dumnVqlV68MEH1a9fPw0cOFBPPvmkzpw5I6ly+tX27du1ffv2i07p2rx5s2655RbzFKG//OUvOnnypKTKqVNV06ueeOKJWmurkpWVVev1E927d9fjjz+u6Ohoi+2FhYV68sknNWjQIPXr108PPvigsrOzLY652OslVU6/vPPOO81Tfu6991798ssv5tdq3Lhxkir/+lzVl99OGxs7dqxee+01/f3vf9ewYcPUu3dv3XnnnTp+/LjF1/rqq680YcIE9erVS5MmTdKWLVvUo0cPffnll5Iq3/AuWrRIY8eOVXR0tMaOHatXX31VZWVl533dGoO3t7eioqJ04sQJi+3Hjh3TnXfeqT59+mj48OF6+eWXVV5ebt5/sWmYP/74o2655Rb169dP0dHRGj9+vP71r39ZHHPixAn96U9/0oABAzR8+HB9+OGHtT7XihUrNHHiREVHR2vMmDF6/fXXLWr5rbFjx2rBggV64YUXNGjQIA0aNEiPPPKIcnNzaxz75Zdf6uqrrzaPS/WpWrVN/1uxYoVuvPFG9e3bV71799bkyZNrTAFrqOjoaJ05c8b8/Xrs2DHt3r1bsbGxmjRpkjIyMsxB6ULeeecdDR48WMHBwZIqf24mTZqka6+91uK4qKgoSTJPO960aZMGDBhgEShHjhwpLy8vi9fnhRdeUEpKipYuXarLL7+81hp+/vnn8+6rzfl+7qQL/76pjdFo1PDhw3XTTTfV2t+UlBRzf6OiosyBSqr8A0Tnzp3N/fX29taUKVPUq1cvi+eKjIw0P09ISIg+//xzTZo0ybzf2dlZrq6uKi0ttXjcddddp0OHDmn9+vV1e2EAEKoAWDKZTNq0aZOGDh2q1q1b13rM+PHj9ac//Une3t6SKv/aOnv2bPXp00evvfaaHnjgAf3www+67bbbVFxcXO8a5s2bp9DQUC1evFh33XWXvvjiC7399tvmfT169FCPHj20fPny805B/O9//6uZM2cqODhYr776qh5//HHt3r1bU6ZMUXZ2tsaMGaM33nhDknTfffdp+fLl561nzJgx+vbbb/XAAw/om2++sbiW4Y477tCQIUMsjv/4449VVlamRYsWafbs2Vq7dq3FNQp1eb22bt2qm2++WUajUc8995zmz5+vkydPaurUqTp69KjatWtnUX/V57X5+OOPdezYMb3wwguaP3++Dhw4oMcee8y8/z//+Y8ee+wx9e/fX4sXL9bVV1+t+++/XxUVFeZj3nvvPS1btkwPPPCAPvjgA918881asmSJeVyspbS0VGlpaTXOwL3wwgsaMGCA3n77bV111VV677339O9//7tOz7lu3To98MAD6tmzpxYvXqzXX39doaGhevbZZ7Vr1y5JUlFRkW699VYlJibqmWee0dy5c7VixQrt3r3b4rneeecdPf300xo6dKjefvttTZs2Te+9957mzp17wRo++eQT7dy5U88//7wefvhhbdiwQXfddZfFtUonT57Uu+++qz//+c967bXXZDKZNGvWrBoBvcqyZcs0d+5cjRs3Tu+8845eeuklubm56ZFHHqkRShvi+PHj8vT0VGBgoCTp888/l4+Pj8aNG6d+/fqpU6dOFx2LM2fOaO3atRo/frx5m6+vr55++mkNGDDA4tjVq1dLkjlUHD161Bw8qjg7OyssLExJSUnmbQ899JC+/vrr856FPnv2rJKTk5WSkqJJkyYpOjpasbGxev/998+7CMX5fu4u9vumNs7Oznrsscd0xRVX1Nrfrl27mvsbGRlZ4/ERERHmP44MGzZMzzzzjJycnMz7y8rKtG7dOvPr5u7url69esnb21tGo1EnTpzQc889p5SUFE2dOtXiuUNCQtSvX79mPxsBaEpM/wNgITc3VyUlJee9vui38vPz9dZbb+kPf/iD5s2bZ97etWtXTZs2TV9++aV5qkldjR492rwQxdChQ7V582atW7dOf/nLX9SlSxdzmDvflB2j0aiXXnpJw4YN04IFC8zb+/fvrwkTJuiDDz7QI488Yv4LdURExAWn/zz77LMyGo1avXq1fvzxR/Njxo4dqxkzZtS4dqdXr176xz/+Ya5/37595r8o1/X1euWVVxQeHq4lS5aYp1GNGDFCV155pV5//XUtXLjQov4ePXqct35fX18tXrzY/DwpKSl6/fXXlZubK39/fy1atEixsbGaP3++pMq/+ru5uemVV14xP8f27dvVs2dP/e53v5MkDRo0SK1btzaPRWMwGo3mMzzl5eVKT0/X4sWLlZOTU+N7aPr06br//vslVU5hiouL09atW3Xrrbde9OscOXJE119/vcXU1n79+mnw4MHasWOH+vfvr6+++konTpzQf//7X/NZzN69e+vKK680P8ZgMOitt97SlClT9NRTT0mqHCM/Pz899dRTmjFjhsXZheqcnJz04YcfmqelBQQE6IEHHtCGDRs0ZswY8+vx5ptvmq83atWqlWbMmKE9e/aYz5ZUl5qaqpkzZ+qBBx4wbwsLC9ONN96oXbt2qUOHDhd9baqrPh4mk0lZWVlauXKl1q5dqzvvvFNOTk4qLy/X119/rYkTJ6pVq1aSpBtvvFGvvvqqUlNTFR4eXutzx8fHq6yszDxV7Xx27dql9957T1dccYX5tSwoKJCXl1eNY728vCzOnleFkvM5dOiQjEajkpOT9ec//1lt2rTRmjVr9NJLL6mgoECzZ8+u8Rh3d/caP3d1/X1TF0lJSfrHP/6hnj17atSoUeb+duzYsdb+Vp3Br83f//53JScn680336yx75133tHChQslVV47V9v1Zr169dI333xTp7oBEKoA/Iazc+UJ7OpnKS5kz549Ki0t1XXXXWexPSYmRqGhodq2bVu9Q9VvA05ISIjS09Pr/Pjjx4/r9OnTNaYvRkREqF+/fvVeBc7Hx0evvfaa0tLStH79em3btk3btm3TRx99pM8++0zvv/+++vfvbz7+t39pDw8PN69MVpfX6/rrr9f+/fv1wAMPWFyX4uvrq9jY2HpPyenVq5fF81SFwLNnz6qgoEAnTpzQn//8Z4vHTJw40SJUDR48WK+88opuueUWXXnllRo1atRFA8xvp8C5uLhY/CX9t+64444a2wIDA/XUU0/VuJ6q6voPqTKghIaGXnD1t+qqrn8rKipSSkqKjh8/rv3790uSeTpjfHy8wsPDLaaFtm/f3uJ7c/fu3Tp79qzGjh1r0deqKWGbN28+b6iKjY21uM5n7NixcnNzU3x8vDlU+fv7mwOVJHNAMRgMtT5n1dlHg8GgpKQkJSUlacuWLRb9qo/FixfXWBGzVatWmjJlih588EFJ0vr163X69GldddVV5td/3LhxevXVV/XZZ59ZLGZRXdWUxQv98SY+Pl733nuvIiIi9Nxzz1nsq+37yGQyXfD767c6deqk9957T7169ZK/v7+kyj+CFBcX6/3339ddd911wQUrqjTW75ujR49qxowZcnd316JFi8y/i8/Xrwtt/8c//qF//vOfuueee2qcCZMqv99iYmJ04MABvf7668rIyND7779vcUxoaKiys7N19uzZ885aAHAOoQqABT8/P3l5eV1wulBRUZFKS0vl5+dnvq4iKCioxnFBQUHnfQN4Ib/9D9zZ2ble94TJy8u7YE0HDx6sd01S5RvAadOmadq0aTIajfrxxx/1+OOPa/78+eZrj6TKC73PV39dXi+DwSCTydRor2ltr6dUeSYiJydHksxTuaq0bdvWon3XXXfJy8tLX3zxhf7+97/rxRdfVNeuXfXEE0/UukJY9WtPqrzwwgu68cYbz1vn3/72N/N0ThcXF7Vp00YdOnSo9Y1jQ75HcnJyNG/ePP34449ycnJSx44dzUG4+jjVtghE27ZtzctdV32f3XPPPbV+nVOnTp23ht+u2Ofs7Cw/Pz+LYPjb76Oq1+G3y5lXSUlJ0dy5c7V161a5urqqU6dO5lB4KfdUuummm8zX+zg5OcnLy0thYWHmxSmkygUqJGnmzJk1Hv/FF19o1qxZcnd3r7Gv6nv4fG/Wv/32Wz322GOKiorS+++/b7G6pre3d40l1qXK30v1WfHR19fXfDaoujFjxmjFihU6evRonRawaIzfN1u3btWsWbPk5eWlDz74wOIMn4+Pz3n7+9vQV1JSoscee0zfffed7rrrrvOG2qrvi4EDB8rHx0dPPvmkdu7cafEHoarvP4PBQKgC6oBQBaCGESNGaNu2bSopKTFP6anuyy+/1HPPPadPPvlEbdq0kVS5mEP1v6pL0unTp81vDqreEFZUVJjPmlxo6kpDVL0B++29XqpqqvqrdF388MMPmjdvnj799FOL6zicnZ111VVXaceOHfrss8/q/Hx1eb18fHzk5OR03vobc/n2qjehv73u47dtZ2dnc6DMzs7W+vXr9fbbb2vWrFn66aefarxxbteunT7//HOLbRebUhoVFVXjQntrePjhh3X06FF9+OGH6t+/v9zd3XX27FmtWLHCfIy/v7+Sk5NrPLbqDbRU+aZckl5++eVar3mp7U12bc8jVf5c5ObmXvJqfkajUffcc4/c3Nz02WefqUePHnJ1ddWRI0cu+bqYdu3aXXA8srOztWHDBk2ZMkUTJ0602Ldv3z69/PLL+vHHHzVhwoQaj636GSwoKKjR5yVLlujll1/WwIEDtXjx4hrBISoqyrz4QhWj0ai0tDRdddVVde7fgQMHtH//fk2dOtUiuFdd11jX3xMN/X2zcuVKPf7444qMjNSSJUtqBMOoqCj9/PPPNR6XkpJiMX3SYDDo7rvv1p49e/TYY49pxowZFsenpqZq69atmjRpksXv9aoxzsjIsDg+Pz9fTk5ONrldBNAcsVAFgBpmzpypvLw8i+sDqmRnZ2vJkiXq2LGj+vbtqz59+sjd3b3GjTDj4+N14sQJ87S4qmtvqq+GVbUoQH1VnWk5n6ioKLVt27ZGTampqdqzZ4/FVL2Lueyyy5SXl6elS5fWuj8pKemi125UV5fXy9PTU9HR0fruu+8spmEaDAatW7fO/Nfkiy1ZXRchISGKiIjQ//73P4vtP/zwg0V76tSp5muuAgMDdeONN2ratGkyGAy1/hW96qL46v/qE2ataefOnbr66qs1ZMgQcxisuuat6izQkCFDlJaWZp4WKFWe4dqzZ4+53adPH7m5uSkzM9Oin1XXo13oprwbN260WHFtzZo1Ki8vv+T7AuXm5ur48eP6/e9/r969e8vV1bXWfjWm//znPyorK9Mdd9yhwYMHW/y7/fbb1aZNG3366ae1Prbq+q7fvpH/97//rZdeeknjx483r0L6W8OHD9eOHTvMZ1mlytfzzJkzGj58eJ3rT0xM1F//+ldt3brVYvt3332nDh06nPePAL/9uWvI75v169fr0UcfVb9+/fTpp5/WeqZtxIgROnr0qI4cOWLeduTIER09etTc3/Lyct177706cOCAFixYUCNQSZVnj5966inzQhhVNm7cKKlyNdPqMjIyFBQUVOuZRgA1caYKQA19+/bVn//8Zy1cuFBHjx7VDTfcIH9/f/3yyy/64IMPdObMGb377rvmv2Lec889euONN+Tm5qZx48YpLS1NixYtUpcuXczTvUaPHq0XXnhBTz/9tO6++25lZGTojTfeqPWC84vx9fXV7t27zct+V539qeLs7Kw5c+bo8ccf1+zZs3X99dcrNzdXb7zxhtq0aVPrG47z6dSpk+655x698847OnHihCZNmqSQkBBlZ2frv//9r7Zs2XLepbZrU9fX6y9/+YvuvPNO3XXXXbr11ltVVlamd999V6WlpeYbq1a94dyyZYs6d+6sPn361LmOKk5OTnrwwQf18MMPa968ebryyiuVmJhovri9KsAOHDhQH3zwgYKCgtSvXz9lZmbqww8/1KBBg6x6ryRr6N27t1auXKmePXsqJCREu3fv1jvvvCMnJyedPXtWkjR58mR9/PHH+tOf/qTZs2fL29tbb731lkU48ff311133aVFixapsLBQgwcPVmZmphYtWiQnJ6cab1Kry8jI0H333afp06fr5MmTevXVVzVixAgNHjz4kvoUGBio0NBQLVu2TCEhIfL19dWmTZvMfwyo6pdUeV1fQEBAg+9p9uWXX6pHjx7q1KlTjX3u7u6aMGGCPv30Ux09erTGWdmYmBh5eHho165d5kVWTp8+rRdeeEGhoaG69dZba0ybi4iIUEBAgG655Rb961//0owZM/SnP/1JeXl5eumllzRq1Cj169evzvVPmDBB77//vv7v//5PDz30kDkYrV27VgsWLDjvHy1q+7m7lN83JSUlevLJJ+Xl5aV7771XR48etdgfEhKikJAQTZgwQW+//bbuvvtu83S+V155RV27djWvnrhs2TLFx8drypQpat++vUX4lyp/pw8aNEiDBw/Ws88+q4KCAnXq1Elbt27V+++/rylTptQYo507d2rkyJF1fj0BR0eoAlCr++67Tz169NCyZcv0wgsvKC8vTyEhIRo1apTuvfdei5XEZs2apaCgIP3rX//SihUr5Ofnp/Hjx+uhhx4yz8WPiorS3//+d7311lu655571LlzZz377LN69tln613btGnTdODAAd1999164YUXaiz6IFWuQObl5aV33nlHDzzwgLy9vTVy5EjNmTOnxvVCFzNnzhxdfvnlWrFihebPn6/CwkL5+voqJiZGn3/++QXfPNemLq/X0KFD9eGHH+q1117TnDlz5O7urpiYGP397383L37g7e2tGTNmaPny5Vq3bp02b95crzqqXHfddSoqKtL777+vL774QpdddpmefPJJPfnkk+brKv785z/L3d1dX3zxhd588035+Pho7Nix571mw569+OKLFt97kZGR+tvf/qavv/5a8fHxkipDwdKlS/X888/rueeek5OTk2666SaFh4dbTI2sejP+ySefaMmSJWrTpo2GDh2qOXPmXHCRg4kTJ8rX11cPPfSQPD09dcMNN9S62lx9LF68WM8995wee+wxubu7q0uXLnrrrbf0/PPPKz4+XrfddpskacqUKbrhhhv04osvXvLX2rt3r44cOaL/+7//O+8xN9xwgz799FMtX75cTzzxhMW+1q1ba9SoUVq/fr15wZP169eruLhY6enpmjZtWo3nq7omLyAgQB9//LF5OXovLy+NHz/+grXUxtPTU0uXLtWCBQu0aNEi5ebm6rLLLtMb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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Organize counts of shootings by year\n", "by_year = df.groupby('year').size().reset_index(name='Count')\n", "\n", "# Set up the plot and plot the line graph\n", "sns.set_style(\"darkgrid\")\n", "plt.figure(figsize=(10, 6))\n", "sns.lineplot(x='year', y='Count', data=by_year, marker='o', color='#5eccab', linewidth=2.5)\n", "plt.xlabel('Year')\n", "plt.ylabel('Count')\n", "plt.title('Count of Shootings - Philadelphia, PA (2015 to 2023)')\n", "plt.gca().set_facecolor('black')\n", "plt.tick_params(colors='black')\n", "plt.xlabel('Year', color='black')\n", "plt.ylabel('Count', color='black')\n", "plt.show()\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Using Folium, I plotted all of the data points, colored by the year they occurred. I leveraged marker clustering so that way not all ~14,000 points appeared on the map at once, but rather you can zoom into an area of interest. Using a tooltip, I added information about the year, age, sex, and race of the offender, if the offender was injured or deceased, and whether an officer was involved." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import folium\n", "from folium.plugins import MarkerCluster\n", "\n", "# Filter out rows with missing geometries\n", "df2 = df.dropna(subset=['point_x', 'point_y'])\n", "\n", "# Create a map centered on the calculated location\n", "f = folium.Map(location=[39.99, -75.13], zoom_start=10, tiles='Cartodb dark_matter')\n", "\n", "# Define a colormap for different years\n", "cm = {\n", " 2015: '#546319',\n", " 2016: '#c0affb',\n", " 2017: '#e6a176',\n", " 2018: '#00678a',\n", " 2019: '#984464',\n", " 2020: '#5eccab',\n", " 2021: '#cdcdcd',\n", " 2022: '#ddcc77'\n", "}\n", "\n", "# Create a marker cluster to help with map performance and aesthetics\n", "marker_cluster = MarkerCluster().add_to(f)\n", "\n", "# Iterate over the filtered dataframe rows\n", "for index, row in df2.iterrows():\n", " latitude = row['point_y']\n", " longitude = row['point_x']\n", " year = row['year']\n", " color = cm.get(year, year)\n", " race = row['race']\n", " sex = row['sex']\n", " age = row['age']\n", " officer_involved = row['officer_involved']\n", " offender_injured = row['offender_injured']\n", " offender_deceased = row['offender_deceased']\n", " tooltip = f\"Year: {year}
Race: {race}
Age: {age}
Sex: {sex}
Officer Involved: {officer_involved}
Offender Injured: {offender_injured}
Offender Deceased: {offender_deceased}\"\n", " \n", " folium.CircleMarker(\n", " location=[latitude, longitude],\n", " radius=5,\n", " alpha=0.5,\n", " color=color,\n", " fill=True,\n", " fill_color=color,\n", " tooltip=tooltip\n", " ).add_to(marker_cluster)\n", "\n", "# Add title to the map\n", "title_html = '''\n", "

Shootings - Philadelphia, PA (2015 - 2022)

\n", " '''\n", "f.get_root().html.add_child(folium.Element(title_html))\n", "\n", "# Fit the map bounds to include all the markers\n", "f.fit_bounds(marker_cluster.get_bounds())\n", "\n", "# Display the map\n", "f\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "I decided as another visualization, I wanted to make a heat map of fatal shootings. Heat maps are another great way of visualizing density of events. I filtered the data to only include fatal shooting events, and then used Folium again to create the heat map." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "where = f\"fatal = '1'\"\n", "fatal = carto2gpd.get(url, table_name, where=where)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "fatal['point_y'] = fatal.point_y\n", "fatal['point_x'] = fatal.point_x\n", "coords = fatal[['point_y', 'point_x']]\n", "\n", "# eliminate rows with missing values\n", "coords = coords.dropna()" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = folium.Map(\n", " location=[39.99, -75.13],\n", " tiles='Cartodb dark_matter',\n", " zoom_start=11)\n", "\n", "title_html = '''\n", "

Fatal Shootings - Philadelphia, PA (2015 - 2023)

\n", " '''\n", "m.get_root().html.add_child(folium.Element(title_html))\n", "\n", "\n", "HeatMap(coords).add_to(m)\n", "\n", "m" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.13" } }, "nbformat": 4, "nbformat_minor": 2 }