-
Notifications
You must be signed in to change notification settings - Fork 2
/
Visualization2_Theft.py
29 lines (21 loc) · 1.21 KB
/
Visualization2_Theft.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def visualization_theft():
crime_data = pd.read_csv('csv_files/Crimes_2021_to_Present.csv')
theft_data = crime_data[crime_data['Primary Type'] == 'THEFT']
theft_count = theft_data.groupby('RegionName').size().reset_index(name='CrimeCount')
housing_data = pd.read_csv('csv_files/neighborhood_data_2017_2019.csv')
housing_data_long = housing_data.melt(id_vars=['date'], var_name='Neighborhood', value_name='HousingPrice')
housing_data_long['date'] = pd.to_datetime(housing_data_long['date'])
avg_housing_prices = housing_data_long.groupby('Neighborhood')['HousingPrice'].mean().reset_index()
merged_data_theft = theft_count.merge(avg_housing_prices, left_on='RegionName', right_on='Neighborhood')
merged_data_theft['CrimeQuartile'] = pd.qcut(merged_data_theft['CrimeCount'], 4, labels=['Q1', 'Q2', 'Q3', 'Q4'])
plt.figure(figsize=(8, 4))
sns.boxplot(x='CrimeQuartile', y='HousingPrice', data=merged_data_theft, width = 0.5, palette='rocket')
plt.title('Theft Crimes vs Housing Prices by Quartile')
plt.show()
def main():
visualization_theft()
if __name__ == "__main__":
main()