DATA201_projects/python_project_2.ipynb

569 lines
50 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a8d466b1",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"pd.set_option('display.max_columns', None)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1feb2733",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_6745/2268714868.py:1: DtypeWarning: Columns (18,20) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df = pd.read_csv('~/Downloads/NYPD_Complaint_Data_Historic.csv')\n"
]
}
],
"source": [
"df = pd.read_csv('~/Downloads/NYPD_Complaint_Data_Historic.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5b1cdbba",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['CMPLNT_NUM', 'CMPLNT_FR_DT', 'CMPLNT_FR_TM', 'CMPLNT_TO_DT',\n",
" 'CMPLNT_TO_TM', 'ADDR_PCT_CD', 'RPT_DT', 'KY_CD', 'OFNS_DESC', 'PD_CD',\n",
" 'PD_DESC', 'CRM_ATPT_CPTD_CD', 'LAW_CAT_CD', 'BORO_NM',\n",
" 'LOC_OF_OCCUR_DESC', 'PREM_TYP_DESC', 'JURIS_DESC', 'JURISDICTION_CODE',\n",
" 'PARKS_NM', 'HADEVELOPT', 'HOUSING_PSA', 'X_COORD_CD', 'Y_COORD_CD',\n",
" 'SUSP_AGE_GROUP', 'SUSP_RACE', 'SUSP_SEX', 'TRANSIT_DISTRICT',\n",
" 'Latitude', 'Longitude', 'Lat_Lon', 'PATROL_BORO', 'STATION_NAME',\n",
" 'VIC_AGE_GROUP', 'VIC_RACE', 'VIC_SEX'],\n",
" dtype='object')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns\n",
"# df.dtypes\n",
"# df.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "1ac30b35",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# According to the data dictionary, CMPLNT_NUM (Complaint Number) is randomly generated and persistent.\n",
"# Is it unique?\n",
"\n",
"df['CMPLNT_NUM'].is_unique"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f0c76e18",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False 7821537\n",
"True 3962\n",
"dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# It's not unique. That's unexpected.\n",
"\n",
"df.duplicated(subset = 'CMPLNT_NUM').value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "253ab2f0",
"metadata": {},
"outputs": [],
"source": [
"# Since CMPLNT_NUM is not unique, we can't use it as an index.\n",
"# Let's drop it.\n",
"\n",
"df.drop('CMPLNT_NUM', axis = 1, inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "7859f04c",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CMPLNT_FR_DT</th>\n",
" <th>CMPLNT_FR_TM</th>\n",
" <th>CMPLNT_TO_DT</th>\n",
" <th>CMPLNT_TO_TM</th>\n",
" <th>ADDR_PCT_CD</th>\n",
" <th>RPT_DT</th>\n",
" <th>KY_CD</th>\n",
" <th>OFNS_DESC</th>\n",
" <th>PD_CD</th>\n",
" <th>PD_DESC</th>\n",
" <th>CRM_ATPT_CPTD_CD</th>\n",
" <th>LAW_CAT_CD</th>\n",
" <th>BORO_NM</th>\n",
" <th>LOC_OF_OCCUR_DESC</th>\n",
" <th>PREM_TYP_DESC</th>\n",
" <th>JURIS_DESC</th>\n",
" <th>JURISDICTION_CODE</th>\n",
" <th>PARKS_NM</th>\n",
" <th>HADEVELOPT</th>\n",
" <th>HOUSING_PSA</th>\n",
" <th>X_COORD_CD</th>\n",
" <th>Y_COORD_CD</th>\n",
" <th>SUSP_AGE_GROUP</th>\n",
" <th>SUSP_RACE</th>\n",
" <th>SUSP_SEX</th>\n",
" <th>TRANSIT_DISTRICT</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" <th>Lat_Lon</th>\n",
" <th>PATROL_BORO</th>\n",
" <th>STATION_NAME</th>\n",
" <th>VIC_AGE_GROUP</th>\n",
" <th>VIC_RACE</th>\n",
" <th>VIC_SEX</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>12/31/2019</td>\n",
" <td>17:30:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>32.0</td>\n",
" <td>12/31/2019</td>\n",
" <td>118</td>\n",
" <td>DANGEROUS WEAPONS</td>\n",
" <td>793.0</td>\n",
" <td>WEAPONS POSSESSION 3</td>\n",
" <td>COMPLETED</td>\n",
" <td>FELONY</td>\n",
" <td>MANHATTAN</td>\n",
" <td>NaN</td>\n",
" <td>STREET</td>\n",
" <td>N.Y. POLICE DEPT</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>999937.0</td>\n",
" <td>238365.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>40.820927</td>\n",
" <td>-73.943324</td>\n",
" <td>(40.82092679700002, -73.94332421899996)</td>\n",
" <td>PATROL BORO MAN NORTH</td>\n",
" <td>NaN</td>\n",
" <td>UNKNOWN</td>\n",
" <td>UNKNOWN</td>\n",
" <td>E</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>12/29/2019</td>\n",
" <td>16:31:00</td>\n",
" <td>12/29/2019</td>\n",
" <td>16:54:00</td>\n",
" <td>47.0</td>\n",
" <td>12/29/2019</td>\n",
" <td>113</td>\n",
" <td>FORGERY</td>\n",
" <td>729.0</td>\n",
" <td>FORGERY,ETC.,UNCLASSIFIED-FELO</td>\n",
" <td>COMPLETED</td>\n",
" <td>FELONY</td>\n",
" <td>BRONX</td>\n",
" <td>NaN</td>\n",
" <td>STREET</td>\n",
" <td>N.Y. POLICE DEPT</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1022508.0</td>\n",
" <td>261990.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>40.885701</td>\n",
" <td>-73.861640</td>\n",
" <td>(40.885701406000074, -73.86164032499995)</td>\n",
" <td>PATROL BORO BRONX</td>\n",
" <td>NaN</td>\n",
" <td>UNKNOWN</td>\n",
" <td>UNKNOWN</td>\n",
" <td>E</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12/15/2019</td>\n",
" <td>18:45:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>109.0</td>\n",
" <td>12/29/2019</td>\n",
" <td>578</td>\n",
" <td>HARRASSMENT 2</td>\n",
" <td>638.0</td>\n",
" <td>HARASSMENT,SUBD 3,4,5</td>\n",
" <td>COMPLETED</td>\n",
" <td>VIOLATION</td>\n",
" <td>QUEENS</td>\n",
" <td>FRONT OF</td>\n",
" <td>STREET</td>\n",
" <td>N.Y. POLICE DEPT</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1034178.0</td>\n",
" <td>209758.0</td>\n",
" <td>25-44</td>\n",
" <td>UNKNOWN</td>\n",
" <td>M</td>\n",
" <td>NaN</td>\n",
" <td>40.742281</td>\n",
" <td>-73.819824</td>\n",
" <td>(40.74228115600005, -73.81982408)</td>\n",
" <td>PATROL BORO QUEENS NORTH</td>\n",
" <td>NaN</td>\n",
" <td>25-44</td>\n",
" <td>WHITE HISPANIC</td>\n",
" <td>F</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CMPLNT_FR_DT CMPLNT_FR_TM CMPLNT_TO_DT CMPLNT_TO_TM ADDR_PCT_CD \\\n",
"0 12/31/2019 17:30:00 NaN NaN 32.0 \n",
"1 12/29/2019 16:31:00 12/29/2019 16:54:00 47.0 \n",
"2 12/15/2019 18:45:00 NaN NaN 109.0 \n",
"\n",
" RPT_DT KY_CD OFNS_DESC PD_CD \\\n",
"0 12/31/2019 118 DANGEROUS WEAPONS 793.0 \n",
"1 12/29/2019 113 FORGERY 729.0 \n",
"2 12/29/2019 578 HARRASSMENT 2 638.0 \n",
"\n",
" PD_DESC CRM_ATPT_CPTD_CD LAW_CAT_CD BORO_NM \\\n",
"0 WEAPONS POSSESSION 3 COMPLETED FELONY MANHATTAN \n",
"1 FORGERY,ETC.,UNCLASSIFIED-FELO COMPLETED FELONY BRONX \n",
"2 HARASSMENT,SUBD 3,4,5 COMPLETED VIOLATION QUEENS \n",
"\n",
" LOC_OF_OCCUR_DESC PREM_TYP_DESC JURIS_DESC JURISDICTION_CODE \\\n",
"0 NaN STREET N.Y. POLICE DEPT 0.0 \n",
"1 NaN STREET N.Y. POLICE DEPT 0.0 \n",
"2 FRONT OF STREET N.Y. POLICE DEPT 0.0 \n",
"\n",
" PARKS_NM HADEVELOPT HOUSING_PSA X_COORD_CD Y_COORD_CD SUSP_AGE_GROUP \\\n",
"0 NaN NaN NaN 999937.0 238365.0 NaN \n",
"1 NaN NaN NaN 1022508.0 261990.0 NaN \n",
"2 NaN NaN NaN 1034178.0 209758.0 25-44 \n",
"\n",
" SUSP_RACE SUSP_SEX TRANSIT_DISTRICT Latitude Longitude \\\n",
"0 NaN NaN NaN 40.820927 -73.943324 \n",
"1 NaN NaN NaN 40.885701 -73.861640 \n",
"2 UNKNOWN M NaN 40.742281 -73.819824 \n",
"\n",
" Lat_Lon PATROL_BORO \\\n",
"0 (40.82092679700002, -73.94332421899996) PATROL BORO MAN NORTH \n",
"1 (40.885701406000074, -73.86164032499995) PATROL BORO BRONX \n",
"2 (40.74228115600005, -73.81982408) PATROL BORO QUEENS NORTH \n",
"\n",
" STATION_NAME VIC_AGE_GROUP VIC_RACE VIC_SEX \n",
"0 NaN UNKNOWN UNKNOWN E \n",
"1 NaN UNKNOWN UNKNOWN E \n",
"2 NaN 25-44 WHITE HISPANIC F "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(3)\n",
"# df.columns\n",
"# df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "5fd666ad",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"BORO CRIME_CLASS\n",
"BRONX MISDEMEANOR 1000078\n",
" FELONY 466248\n",
" VIOLATION 227655\n",
"BROOKLYN MISDEMEANOR 1249836\n",
" FELONY 754414\n",
" VIOLATION 308893\n",
"MANHATTAN MISDEMEANOR 1075687\n",
" FELONY 597184\n",
" VIOLATION 209421\n",
"QUEENS MISDEMEANOR 826883\n",
" FELONY 516528\n",
" VIOLATION 218301\n",
"STATEN ISLAND MISDEMEANOR 210270\n",
" FELONY 81032\n",
" VIOLATION 70589\n",
"Name: CRIME_CLASS, dtype: int64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Question 1\n",
"\n",
"# How does each borough compare according to the class of crime committed?\n",
"# But first, rename some columns to make the table more readable.\n",
"\n",
"df.rename(columns = {'LAW_CAT_CD': 'CRIME_CLASS', 'BORO_NM': 'BORO'}, inplace = True)\n",
"df.groupby(['BORO'])['CRIME_CLASS'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "3cbcbd7c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='BORO,CRIME_CLASS'>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAAHmCAYAAABXrguzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABijUlEQVR4nO3dedytc73/8dfbUBSiUI5po0ESmarTjOpwVJrE1pzSQCNFpbmk0ogGldQ5RRxlSJ0GkTRTZI4QUj+SdCplev/++F5r77XXXvfa97budX2vxfv5eOyHta5r3ff1cV/rWutzfYfPV7aJiIiIiDtmmdoBREREREyzJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY6iaTEk6QtK1ks6b5eufI+kCSedL+sqk44uIiIhYEtWsMyXpccDfgC/Z3nQJr30AcAywne0bJK1p+9o24oyIiIiYSdWWKdunA3/u3yZpI0n/K+ksST+UtHGz62XAYbZvaH42iVRERERU18UxU4cDr7a9FbAv8Mlm+wOBB0r6kaSfStqhWoQRERERjeVqB9BP0krAo4BjJfU2373573LAA4AnAOsAP5S0qe2/tBxmRERExAKdSqYoLWV/sf2wIfuuBn5q+xbgckkXU5KrX7QYX0RERMQiOtXNZ/uvlERpFwAVmze7jwe2bbavTun2u6xGnBERERE9tUsjHAX8BHiQpKsl7QE8F9hD0jnA+cDOzcu/DVwv6QLgVOCNtq+vEXdERERET9XSCBERERHTrlPdfBERERHTJslURERExBiqzeZbffXVPW/evFqHj4iIiJi1s84660+21xi2r1oyNW/ePM4888xah4+IiIiYNUm/m2lfuvkiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixlBtbb6485u3/8lz9ruuOGinOftdERERcyktUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjWGIyJekISddKOm+G/c+V9Ovm348lbT73YUZERER002xapo4Edhix/3Lg8bY3A94DHD4HcUVERERMhSXWmbJ9uqR5I/b/uO/pT4F15iCuiIiIiKkw12Om9gC+Nce/MyIiIqKz5qwCuqRtKcnUY0a8Zk9gT4D11ltvrg4dERERUc2ctExJ2gz4HLCz7etnep3tw21vbXvrNdZYYy4OHREREVHV2MmUpPWArwHPt/2b8UOKiIiImB5L7OaTdBTwBGB1SVcD7wCWB7D9aeDtwH2AT0oCuNX21pMKOCIiIqJLZjObb/4S9r8UeOmcRRQRERExRVIBPSIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMy9UOICK6ad7+J8/J77nioJ3m5PdERHRVWqYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixpBkKiIiImIMSaYiIiIixrDEZErSEZKulXTeDPsl6ROSLpX0a0lbzn2YEREREd00m5apI4EdRuzfEXhA829P4FPjhxURERExHZaYTNk+HfjziJfsDHzJxU+BVSWtNVcBRkRERHTZXIyZWhu4qu/51c22iIiIiDu95ebgd2jINg99obQnpSuQ9dZbb1a/fN7+J9/hwPpdcdBOc/J7IiIiIvrNRcvU1cC6fc/XAa4Z9kLbh9ve2vbWa6yxxhwcOiIiIqKuuUimTgRe0MzqeyRwo+0/zMHvjYiIiOi8JXbzSToKeAKwuqSrgXcAywPY/jTwTeA/gUuBfwAvnlSwEREREV2zxGTK9vwl7Dew15xFFBERETFFUgE9IiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgxJpiIiIiLGkGQqIiIiYgzL1Q4gIiLm1rz9T56z33XFQTvN2e+KuLOaVcuUpB0kXSzpUkn7D9l/L0knSTpH0vmSXjz3oUZERER0zxKTKUnLAocBOwKbAPMlbTLwsr2AC2xvDjwB+LCku81xrBERERGdM5uWqYcDl9q+zPbNwNHAzgOvMbCyJAErAX8Gbp3TSCMiIiI6aDbJ1NrAVX3Pr2629TsUeDBwDXAu8Frbt89JhBEREREdNptkSkO2eeD5fwBnA/8GPAw4VNIqi/0iaU9JZ0o687rrrlvKUCMiIiK6ZzbJ1NXAun3P16G0QPV7MfA1F5cClwMbD/4i24fb3tr21musscYdjTkiIiKiM2aTTP0CeICkDZpB5bsBJw685kpgewBJ9wUeBFw2l4FGREREdNES60zZvlXS3sC3gWWBI2yfL+kVzf5PA+8BjpR0LqVbcD/bf5pg3BERERGdMKuinba/CXxzYNun+x5fAzx5bkOLiIiI6L4sJxMRERExhiRTEREREWNIMhURERExhiRTEREREWNIMhURERExhlnN5ou4s5i3/8lz9ruuOGinOftdERExvdIyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGJFMRERERY0gyFRERETGGWSVTknaQdLGkSyXtP8NrniDpbEnnS/rB3IYZERER0U3LLekFkpYFDgOeBFwN/ELSibYv6HvNqsAngR1sXylpzQnFGxEREdEps2mZejhwqe3LbN8MHA3sPPCa3YGv2b4SwPa1cxtmRERERDfNJplaG7iq7/nVzbZ+DwRWk3SapLMkvWCuAoyIiIjosiV28wEass1Dfs9WwPbAisBPJP3U9m8W+UXSnsCeAOutt97SRxsRd2nz9j95zn7XFQftNGe/KyLu2mbTMnU1sG7f83WAa4a85n9t/932n4DTgc0Hf5Htw21vbXvrNdZY447GHBEREdEZs0mmfgE8QNIGku4G7AacOPCaE4DHSlpO0j2ARwAXzm2oEREREd2zxG4+27dK2hv4NrAscITt8yW9otn/adsXSvpf4NfA7cDnbJ83ycAjIiIiumA2Y6aw/U3gmwPbPj3w/EPAh+YutIiIiIjuSwX0iIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYw6wWOo6IiBjXvP1PnpPfc8VBO83J74mYK2mZioiIiBhDkqmIiIiIMSSZioiIiBhDkqmIiIiIMSSZioiIiBhDkqmIiIiIMSSZioiIiBhDkqmIiIiIMSSZioiIiBhDKqDfAaniGxERET1pmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYQ5KpiIiIiDEkmYqIiIgYw6ySKUk7SLpY0qWS9h/xum0k3Sbp2XMXYkRERER3LTGZkrQscBiwI7AJMF/SJjO87gPAt+c6yIiIiIiumk3L1MOBS21fZvtm4Ghg5yGvezVwHHDtHMYXERER0WmzSabWBq7qe351s20BSWsDzwA+PXehRURERHTfbJIpDdnmgecfA/azfdvIXyTtKelMSWded911swwxIiIioruWm8VrrgbW7Xu+DnDNwGu2Bo6WBLA68J+SbrV9fP+LbB8OHA6w9dZbDyZkEREREVNnNsnUL4AHSNoA+D2wG7B7/wtsb9B7LOlI4BuDiVRERETEndESkynbt0ramzJLb1ngCNvnS3pFsz/jpCIiIuIuazYtU9j+JvDNgW1DkyjbLxo/rIiIiIjpkAroEREREWNIMhURERExhiRTEREREWNIMhURERExhiRTEREREWNIMhURERExhiRTEREREWNIMhURERExhiRTEREREWNIMhURERExhiRTEREREWNIMhURERExhiRTEREREWNIMhURERExhuVqBxARMG//k+fk91xx0E5z8nsiImL20jIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjSDIVERERMYYkUxERERFjWK52ADE35u1/8pz9risO2mnOfldERMSd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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# A quick visualization of the above\n",
"\n",
"df.groupby(['BORO'])['CRIME_CLASS'].value_counts().plot(kind = 'bar', figsize = (10, 5))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "b07d2228",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6761"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# df.head(25)\n",
"# df['OFNS_DESC'].isna().sum()\n",
"df['PD_DESC'].isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "1ef4d375",
"metadata": {},
"outputs": [],
"source": [
"# Question 2\n",
"\n",
"# Some incidents occurred in NYC parks, playgrounds or greenspaces.\n",
"# What crimes were reported most often and where?\n",
"\n",
"# Again, let's begin by renaming columns.\n",
"\n",
"df.rename(columns = {'PARKS_NM': 'PUBLIC_SPACE',\n",
" 'PD_DESC': 'DESCRIPTION',\n",
" 'ADDR_PCT_CD': 'PRECINCT',\n",
" 'Lat_Lon': 'LOCATION',\n",
" 'CMPLNT_FR_DT': 'DATE',\n",
" 'CMPLNT_FR_TM': 'TIME'\n",
" }, inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "b838819a",
"metadata": {},
"outputs": [],
"source": [
"# PD_DESC and OFNS_DESC are both descriptions of the incident.\n",
"# The former is more granular, according to the data dictionary.\n",
"# Also, it has fewer NaNs."
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "e9c16848",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CENTRAL PARK 1856\n",
"FLUSHING MEADOWS CORONA PARK 1532\n",
"CONEY ISLAND BEACH & BOARDWALK 1161\n",
"WASHINGTON SQUARE PARK 1063\n",
"RIVERSIDE PARK 680\n",
"PROSPECT PARK 616\n",
"UNION SQUARE PARK 599\n",
"MARCUS GARVEY PARK 469\n",
"RANDALL'S ISLAND PARK 454\n",
"SARA D. ROOSEVELT PARK 395\n",
"BRYANT PARK 354\n",
"ST. MARY'S PARK BRONX 354\n",
"CLAREMONT PARK 348\n",
"MACOMBS DAM PARK 341\n",
"CROTONA PARK 319\n",
"Name: PUBLIC_SPACE, dtype: int64"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Let's choose public spaces to compare.\n",
"\n",
"# df.head()\n",
"df['PUBLIC_SPACE'].sort_values(ascending = False).value_counts().head(15)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "91ae572a",
"metadata": {},
"outputs": [],
"source": [
"# Each of the top four have more than 1000 incidents.\n",
"# We'll pick Central Park and Coney Island."
]
}
],
"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.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}