{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# HW1: Datatypes and Wrangling\n", "\n", "Hector Corrada Bravo\n", "\n", "Feb 2, 2020" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Types\n", "\n", "_1) Provide a URL to the dataset._\n", "\n", "\n", "I downloaded my dataset from http://www.hcbravo.org/IntroDataSci/misc/BPD_Arrests.csv\n", "\n", "_2) Explain why you chose this dataset._ \n", "\n", "I am interested in studying how rates of arrests in different parts of Baltimore are related to demographic statistics.\n", "\n", "_3) What are the entities in this dataset? How many are there?_\n", "\n", "Entities are specific arrests. There are 104528.\n", "\n", "_4) How many attributes are there in this dataset?_\n", "\n", "There are 15 attributes.\n", "\n", "_5) What is the datatype of each attribute (categorical -ordered or unordered-, numeric -discrete or continuous-, datetime, geolocation, other)? Write a short sentence stating how you determined the type of each attribute. Do this for at least 5 attributes, if your dataset contains more than 10 attributes, choose 10 of them to describe._\n", "\n", "| Num | Name | Type | Description |\n", "|-----|------|------|-------------|\n", "| 1 | `arrest` | categorical | Identifier of each arrest, takes values from finite set |\n", "| 2 | `age` | numeric continuous | Ages are numeric values measured in time units |\n", "| 3 | `race` | categorical unordered | Can take value from finite set of possible races |\n", "| 4 | `sex` | categorical unordered | Can take value from finite set of possible sexes |\n", "| 5 | `arrestDate` | datetime | Specifies date of arrest |\n", "| 6 | `arrestTime` | datetime | Specifies time of arrest |\n", "| 7 | `arrestLocation` | other - address | Street address of arrest |\n", "| 8 | `incidentOffense` | categorical unordered | Can take value from finite set of possible offenses |\n", "| 9 | `incidentLocation` | other - address | Stree address if incident |\n", "| 10 | `charge` | categorical unordered | Can take value from finite set of possible charges |\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_6) Write python code that loads the dataset using function `pd.read_csv`. Were you able to load the data successfully? If no, why not?_" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
arrestageracesexarrestDatearrestTimearrestLocationincidentOffenseincidentLocationchargechargeDescriptiondistrictpostneighborhoodLocation 1
011126858.023BM01/01/201100:00:00NaNUnknown OffenseNaN3 0233Cds:P W/I Dist:Narc || Cds:Poss W/Intent Dist:...NaNNaNNaNNaN
111127013.037BM01/01/201100:01:002000 Wilkens Ave79-OtherWilkens Av & S Payson St1 1425Reckless Endangerment || Hand Gun ViolationSOUTHERN934.0Carrollton Ridge(39.2814026274, -76.6483635135)
211126887.046BM01/01/201100:01:002800 Mayfield AveUnknown OffenseNaNNaNUnknown ChargeNORTHEASTERN415.0Belair-Edison(39.3227699160, -76.5735750473)
311126873.050BM01/01/201100:04:002100 Ashburton St79-Other2100 Ashburton St1 1106Reg Firearm:Illegal Possession || HgvWESTERN735.0Panway/Braddish Avenue(39.3117196723, -76.6623546313)
411126968.033BM01/01/201100:05:004000 Wilsby AveUnknown Offense1700 Aliceanna StNaNUnknown ChargeNORTHERN525.0Pen Lucy(39.3382885254, -76.6045667070)
511127041.041BM01/01/201100:05:002900 Spellman Rd81-Recovered Property2900 Spelman Rd1 1425Reckless Endangerment || Handgun ViolationSOUTHERN924.0Cherry Hill(39.2449886230, -76.6273582432)
611126932.029BM01/01/201100:05:00800 N Monroe St79-Other800 N Monroe St1 5212Handgun On Person || Handgun ViolationWESTERN724.0Midtown-Edmondson(39.2979815407, -76.6475113571)
711126940.020WM01/01/201100:05:005200 Moravia RdUnknown OffenseNaN1 5200Deadly Weapon-Int/Injure || Aggravated AssaultNORTHEASTERN436.0Frankford(39.3235271620, -76.5496555072)
811127051.024BM01/01/201100:07:002400 Gainsdbourgh Ct54-Armed Person2400 Gainsborough Ct1 1106Reg Firearm:Illegal Possession || Firearms Vio...NaNNaNNaNNaN
911127018.053BM01/01/201100:15:003300 Woodland Ave54-Armed Person3300 Woodland Av1 1425Reckless Endangerment || HgvNORTHWESTERN614.0Central Park Heights(39.3436773374, -76.6727297618)
\n", "
" ], "text/plain": [ " arrest age race sex arrestDate arrestTime arrestLocation \\\n", "0 11126858.0 23 B M 01/01/2011 00:00:00 NaN \n", "1 11127013.0 37 B M 01/01/2011 00:01:00 2000 Wilkens Ave \n", "2 11126887.0 46 B M 01/01/2011 00:01:00 2800 Mayfield Ave \n", "3 11126873.0 50 B M 01/01/2011 00:04:00 2100 Ashburton St \n", "4 11126968.0 33 B M 01/01/2011 00:05:00 4000 Wilsby Ave \n", "5 11127041.0 41 B M 01/01/2011 00:05:00 2900 Spellman Rd \n", "6 11126932.0 29 B M 01/01/2011 00:05:00 800 N Monroe St \n", "7 11126940.0 20 W M 01/01/2011 00:05:00 5200 Moravia Rd \n", "8 11127051.0 24 B M 01/01/2011 00:07:00 2400 Gainsdbourgh Ct \n", "9 11127018.0 53 B M 01/01/2011 00:15:00 3300 Woodland Ave \n", "\n", " incidentOffense incidentLocation charge \\\n", "0 Unknown Offense NaN 3 0233 \n", "1 79-Other Wilkens Av & S Payson St 1 1425 \n", "2 Unknown Offense NaN NaN \n", "3 79-Other 2100 Ashburton St 1 1106 \n", "4 Unknown Offense 1700 Aliceanna St NaN \n", "5 81-Recovered Property 2900 Spelman Rd 1 1425 \n", "6 79-Other 800 N Monroe St 1 5212 \n", "7 Unknown Offense NaN 1 5200 \n", "8 54-Armed Person 2400 Gainsborough Ct 1 1106 \n", "9 54-Armed Person 3300 Woodland Av 1 1425 \n", "\n", " chargeDescription district post \\\n", "0 Cds:P W/I Dist:Narc || Cds:Poss W/Intent Dist:... NaN NaN \n", "1 Reckless Endangerment || Hand Gun Violation SOUTHERN 934.0 \n", "2 Unknown Charge NORTHEASTERN 415.0 \n", "3 Reg Firearm:Illegal Possession || Hgv WESTERN 735.0 \n", "4 Unknown Charge NORTHERN 525.0 \n", "5 Reckless Endangerment || Handgun Violation SOUTHERN 924.0 \n", "6 Handgun On Person || Handgun Violation WESTERN 724.0 \n", "7 Deadly Weapon-Int/Injure || Aggravated Assault NORTHEASTERN 436.0 \n", "8 Reg Firearm:Illegal Possession || Firearms Vio... NaN NaN \n", "9 Reckless Endangerment || Hgv NORTHWESTERN 614.0 \n", "\n", " neighborhood Location 1 \n", "0 NaN NaN \n", "1 Carrollton Ridge (39.2814026274, -76.6483635135) \n", "2 Belair-Edison (39.3227699160, -76.5735750473) \n", "3 Panway/Braddish Avenue (39.3117196723, -76.6623546313) \n", "4 Pen Lucy (39.3382885254, -76.6045667070) \n", "5 Cherry Hill (39.2449886230, -76.6273582432) \n", "6 Midtown-Edmondson (39.2979815407, -76.6475113571) \n", "7 Frankford (39.3235271620, -76.5496555072) \n", "8 NaN NaN \n", "9 Central Park Heights (39.3436773374, -76.6727297618) " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "url = \"http://www.hcbravo.org/IntroDataSci/misc/BPD_Arrests.csv\"\n", "arrest_tab = pd.read_csv(url)\n", "arrest_tab.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wrangling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1) My pipeline computes average arrest age (ignoring ages <= 0), for each district and writes them in increasing order. It would be useful to see which districts tend to arrest younger individuals." ] }, { "cell_type": "code", "execution_count": 16, "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", "
districtage
2NORTHEASTERN30.431111
6SOUTHERN32.346947
7SOUTHWESTERN32.454487
5SOUTHEASTERN32.515476
0CENTRAL33.056902
3NORTHERN33.128878
1EASTERN34.140232
8WESTERN34.364334
4NORTHWESTERN34.627681
\n", "
" ], "text/plain": [ " district age\n", "2 NORTHEASTERN 30.431111\n", "6 SOUTHERN 32.346947\n", "7 SOUTHWESTERN 32.454487\n", "5 SOUTHEASTERN 32.515476\n", "0 CENTRAL 33.056902\n", "3 NORTHERN 33.128878\n", "1 EASTERN 34.140232\n", "8 WESTERN 34.364334\n", "4 NORTHWESTERN 34.627681" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_ages = (arrest_tab[['district','age']]\n", " .query('age > 0')\n", " .groupby(['district'])\n", " .agg({'age': 'mean'})\n", " .reset_index()\n", " .sort_values(['age'])\n", ")\n", "mean_ages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1) This barplot shows the average arrest age per district (ignoring ages <= 0)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/hcorrada/opt/miniconda3/envs/cmsc320/lib/python3.6/site-packages/plotnine/utils.py:284: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n", " ndistinct = ids.apply(len_unique, axis=0).as_matrix()\n", "/Users/hcorrada/opt/miniconda3/envs/cmsc320/lib/python3.6/site-packages/pandas/core/generic.py:5191: FutureWarning: Attribute 'is_copy' is deprecated and will be removed in a future version.\n", " object.__getattribute__(self, name)\n", "/Users/hcorrada/opt/miniconda3/envs/cmsc320/lib/python3.6/site-packages/pandas/core/generic.py:5192: FutureWarning: Attribute 'is_copy' is deprecated and will be removed in a future version.\n", " return object.__setattr__(self, name, value)\n", "/Users/hcorrada/opt/miniconda3/envs/cmsc320/lib/python3.6/site-packages/plotnine/positions/position.py:188: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n", " intervals = data[xminmax].drop_duplicates().as_matrix().flatten()\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from plotnine import *\n", "\n", "(ggplot(mean_ages, aes(x='district', y='age')) +\n", " geom_bar(stat='identity') +\n", " coord_flip())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }