Tuesday, April 11, 2017

台北市住宅竊盜件數統計分析洞察報告

台北市住宅竊盜件數統計分析洞察報告

台北市住宅竊盜件數統計分析洞察報告

104年01月-106年02月

資料來源:臺北市政府警察局刑事警察大隊

資料最後更新時間:2017-03-13 19:56:55

資料連結

資料集內容描述

該資料集為臺北市政府警察局刑事警察大隊所做之台北市住宅竊盜件數原始資料。 大部分有效資料集中於 104年01月-106年02月。 內容中有「發生日期」、「發生時段」與「發生地點」三項主要項目。
本報告欲找出那一個行政區的住宅竊盜最嚴重。 以及那個時段發生的住宅竊盜案最多及最少。 以下先進行資料預處理。
In [1]:
# 首先先將之前已經整理過的資料(df_time1.csv檔)讀入
#
import pandas as pd
df = pd.read_csv("台北市10401-10602住宅竊盜點位資訊.csv", encoding='big5')
print('筆數', df['編號'].count())
df.head()
筆數 1293
Out[1]:
編號 案類 發生日期 發生時段 發生地點
0 1 住宅竊盜 970609 01~03 台北市信義區松隆里松山路615巷1 ~ 30號
1 2 住宅竊盜 991013 22~24 台北市內湖區成功路4段331 ~ 360號
2 3 住宅竊盜 991024 13~15 台北市南港區東新里興南街52巷1 ~ 30號
3 4 住宅竊盜 1010601 07~09 台北市大安區誠安里忠孝東路3段251巷10弄1 ~ 30號
4 5 住宅竊盜 1010606 10~12 台北市中山區通北街65巷2弄1 ~ 30號
In [2]:
# 資料預處理
#
del df['案類']
df.head()
Out[2]:
編號 發生日期 發生時段 發生地點
0 1 970609 01~03 台北市信義區松隆里松山路615巷1 ~ 30號
1 2 991013 22~24 台北市內湖區成功路4段331 ~ 360號
2 3 991024 13~15 台北市南港區東新里興南街52巷1 ~ 30號
3 4 1010601 07~09 台北市大安區誠安里忠孝東路3段251巷10弄1 ~ 30號
4 5 1010606 10~12 台北市中山區通北街65巷2弄1 ~ 30號
In [3]:
# 我們可以利用'發生地點'產生'發生地點行政區',藉此以行政區為基準做出統計資料。
# 以 df['發生地點']中字串之第4~6個字,作為 df['發生地點行政區']之內容。
#
for i in range(len(df)):
    df.loc[i,'發生地點行政區'] = df['發生地點'][i][3:6] 
del df['發生地點']           # 去除 '發生地點', 欄位   
df.head()
Out[3]:
編號 發生日期 發生時段 發生地點行政區
0 1 970609 01~03 信義區
1 2 991013 22~24 內湖區
2 3 991024 13~15 南港區
3 4 1010601 07~09 大安區
4 5 1010606 10~12 中山區

分析⽅法

以下進行統計分析,分別進行:

  • 各行政區住宅竊盜件數總和及統計
  • 不同時段發生的住宅竊盜件數

A.各行政區住宅竊盜件數總和及統計

In [4]:
# A.各行政區住宅竊盜件數總和及統計
#
df3 = df.groupby('發生地點行政區').count()
del df3['發生日期'],df3['發生時段']
df3 = df3.rename(columns = {'編號':'件數'})
df3 = df3.sort_values('件數', ascending=False)
df3['比率'] = round(df3['件數']/df3['件數'].sum()*100, 2)
df3
Out[4]:
件數 比率
發生地點行政區
中山區 177 13.69
士林區 140 10.83
內湖區 130 10.05
北投區 129 9.98
萬華區 124 9.59
大安區 113 8.74
中正區 96 7.42
松山區 96 7.42
文山區 92 7.12
信義區 82 6.34
大同區 59 4.56
南港區 55 4.25
In [5]:
# 平均、最大、最小
#
print('最多件數', df3['件數'].max())
print('最少件數', df3['件數'].min())
print('平均件數', df3['件數'].mean())
最多件數 177
最少件數 55
平均件數 107.75
In [6]:
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
plt.rcParams['font.family'] = 'SimHei'

df3.plot(kind='bar', title='台北市住宅竊盜件數長條圖 (97年06月09日 ~ 106年2月27日)', fontsize=15, figsize=(15,5))
Out[6]:
<matplotlib.axes._subplots.AxesSubplot at 0x111077e10>
In [7]:
df3['件數'].plot(kind='pie', title='台北市住宅竊盜件數圓餅圖 (97年06月09日 ~ 106年2月27日)', autopct='%1.1f%%', startangle=270, fontsize=14, figsize=(10,10))
Out[7]:
<matplotlib.axes._subplots.AxesSubplot at 0x1136d1748>

B.不同時段發生的住宅竊盜件數

In [8]:
# B. 得出在 97年06月09日 ~ 106年2月27日之間,不同時段發生的住宅竊盜件數
#    df_ti (time inmterval)
#
df_ti = df.groupby('發生時段').count()
del df_ti['發生日期'],df_ti['發生地點行政區']
df_ti = df_ti.rename(columns = {'編號':'件數'})
df_ti['比率'] = round(df_ti['件數']/df_ti['件數'].sum()*100, 2)
df_ti
Out[8]:
件數 比率
發生時段
01~03 123 9.51
04~06 98 7.58
07~09 166 12.84
10~12 222 17.17
13~15 179 13.84
16~18 160 12.37
19~21 176 13.61
22~24 169 13.07
In [9]:
# 長條圖
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
plt.rcParams['font.family'] = 'SimHei'

df_ti.sort_values(by='件數', ascending=False).plot(kind='bar', title='台北市 97年06月09日 ~ 106年2月27日之間,不同時段發生的住宅竊盜件數', figsize=(10,5), fontsize=19)
Out[9]:
<matplotlib.axes._subplots.AxesSubplot at 0x113b9b940>
In [10]:
# 樞紐分析表( '發生時段' vs '發生地點行政區')
#
df_pt2 = df.pivot_table(values='編號',index='發生時段', columns='發生地點行政區', aggfunc='count',fill_value='0')
print('台北市 97年06月09日 ~ 106年2月27日之間,各行政區相對於發生時段的住宅竊盜件數')
df_pt2
台北市 97年06月09日 ~ 106年2月27日之間,各行政區相對於發生時段的住宅竊盜件數
Out[10]:
發生地點行政區 中山區 中正區 信義區 內湖區 北投區 南港區 士林區 大同區 大安區 文山區 松山區 萬華區
發生時段
01~03 22 11 7 8 14 3 16 7 8 9 6 12
04~06 14 7 10 14 12 3 6 6 5 7 3 11
07~09 24 13 8 18 10 10 14 9 16 11 16 17
10~12 22 17 10 21 24 10 19 8 27 16 28 20
13~15 17 9 15 21 23 5 22 12 17 13 10 15
16~18 16 11 5 16 24 6 23 5 15 11 8 20
19~21 26 14 13 17 9 10 24 7 10 10 16 20
22~24 36 14 14 15 13 8 16 5 15 15 9 9
In [11]:
df_pt2.plot(kind='area', title='台北市 97年06月09日 ~ 106年2月27日之間,各行政區相對於發生時段的住宅竊盜件數 (堆疊面積圖)', figsize=(15,8), fontsize=17)
Out[11]:
<matplotlib.axes._subplots.AxesSubplot at 0x111077da0>

分析洞察結果

A. 各行政區住宅竊盜件數總和及統計

在這段期間,最多住宅竊盜件數的行政區是中山區,共177件,佔總件數的13.7%。最少件數住宅竊盜件數的行政區是南港區,只有55件,佔總件數的4.25%。每個行政區平均件數為107.75件。最多件數的行政區比最少件數的行政區,件數為 3.22倍 (177/55),或許是中山區有比較多的特種行業有關,不過這個推論還需要相關數據以資佐證。
最少件數的行政區為南港區,共55件,佔總件數的4.25%,與59件(4.56%)的大同區同樣都是住宅比例較多,較為單純的行政區。同樣的,也是需要相關數據來證實。

B. 不同時段發生的住宅竊盜件數

在這段期間,10~12這段期間,共發生222件為最多,佔總件數的17.17%。而最少發生件數的時段是04~06這段時間,只有98件,佔總件數的7.58%。這讓我們知道,住宅最容易被竊的時段是早上上班上學以後10~12時的時段,與我們一般的瞭解,凌晨時分才是宵小猖獗時間的認知恰好相反。凌晨時分(01~03, 04~06)的兩個時段,件數比率都低於總件數的10%。
另外,由樞紐分析表及堆疊面積圖得知,各行政區的趨勢大致上相同。
結論就是:畢竟宵小可能還是覺得早上大家都上班上學後,家中空無一人的時候才是最好下手的時段。而小偷也是人,凌晨時分也是需要休息的。
In [ ]: