File size: 2,595 Bytes
eeef81e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import matplotlib.pyplot as plt
import pandas as pd


def group_by_category(df):
    grouped = df.groupby(['CATEGORY']).size().to_frame('Crimes')
    labels = ['Trespassing', 'Vehicle theft', 'General Theft',
              'Damage to Property', 'Robbery', 'Homicide']
    p = grouped.plot.pie(y='Crimes', labels=labels, autopct='%1.1f%%')
    p.set_title('Crimes Percentage Grouped By Category')
    p.get_legend().remove()
    plt.savefig('../charts/category.png')

def group_by_time_of_day(df):
    grouped = df.groupby(['TIME_OF_DAY']).size().to_frame('Crimes')
    p = grouped.plot.pie(y='Crimes', labels=['Day', 'Evening', 'Night'], autopct='%1.1f%%')
    p.set_title('Crimes Percentage Grouped By Time of Day')
    p.get_legend().remove()
    plt.savefig('../charts/time_of_day.png')

def group_by_day_of_the_week(df):
    grouped = df.groupby(['DAY_OF_THE_WEEK']).size().to_frame('Crimes')
    labels = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    p = grouped.plot.pie(y='Crimes', labels=labels, autopct='%1.1f%%')
    p.set_title('Crimes Percentage Grouped By Day of The Week')
    p.get_legend().remove()
    plt.savefig('../charts/day_of_the_week.png')

def group_by_month(df):
    grouped = df.groupby(['MONTH']).size().to_frame('Size')
    grouped['Percentage'] = 100 * grouped['Size'] / len(df)
    grouped = grouped.drop(columns='Size')
    p = grouped.plot.bar()
    p.set_title('Crimes Percentage Grouped By Month')
    p.set_ylabel('Percentage of Crimes')
    p.set_xlabel('Month')
    p.get_legend().remove()
    plt.savefig('../charts/month.png')

def group_by_year(df):
    grouped = df.groupby(['YEAR']).size().to_frame('Crimes')
    p = grouped.plot.pie(y='Crimes', autopct='%1.1f%%')
    p.set_title('Crimes Percentage Grouped By Year')
    p.get_legend().remove()
    plt.savefig('../charts/year.png')

def group_by_territory(df):
    grouped = df.groupby(['PDQ']).size().to_frame('Size')
    grouped['Percentage'] = 100 * grouped['Size'] / len(df)
    grouped = grouped.drop(columns='Size')
    grouped.index = grouped.index.astype(int)
    p = grouped.plot.bar()
    p.set_title('Crimes Percentage Grouped By Territory')
    p.set_ylabel('Percentage of Crimes')
    p.set_xlabel('Territory Number')
    p.get_legend().remove()
    plt.savefig('../charts/territory.png')


if __name__ == '__main__':
    df = pd.read_csv('../data/crimes_dataset_processed_incomplete.csv')
    group_by_territory(df)
    group_by_year(df)
    group_by_month(df)
    group_by_time_of_day(df)
    group_by_day_of_the_week(df)
    group_by_category(df)