仍是有點懶,本應早點寫第二集。按類型去分析數據並無獲得規律性的東西。咱們再來看看元數據。
Dates是案件發生的時間,案件是否具備時間規律,隨着時間在增加或者減小呢?
spa
基於這個思路,建立以時間爲index的DataFrame,其中index選用數據中的'Dates'列做爲index,爲方便按時間操做,將'Dates'列轉換爲DatetimeIndex類型。
按年月日格式化時間key,按key進行分類,咱們獲得每日發生的案件統計走勢圖。code
# -*- coding: utf-8 -*- __author__ = 'longtaiye' import pandas as pd import numpy as np import matplotlib.pyplot as plt #讀取數據 df = pd.read_csv('/Users/longtaiye/Documents/ml-learn/train.csv') #設置pandas打印格式 pd.set_option('display.width', 300) #以日期爲index建立新的DataFrame dateDF = pd.DataFrame(np.asarray(df), index=pd.to_datetime(df['Dates']), columns=df.columns) #按年月日統計案件發生規律 key1 = lambda x:x.strftime("%Y-%m-%d") dateDF['Category'].groupby(key1).count().plot(figsize=(26, 10)) plt.show()
依照相同的方法能夠獲得時走勢、日走勢、月走勢、年走勢圖,從圖上看並無什麼規律性。ip
時走勢圖
utf-8
日走勢圖
pandas
月走勢圖
it
年走勢圖
io
上面的分析代表,單純的時間趨勢並不存在,那麼在限定其它因素狀況下的時間走勢關係是否存在呢?
咱們先從警區入手。按警區劃分案件,而後統計每一個警區的案件走勢。class
# -*- coding: utf-8 -*- __author__ = 'longtaiye' import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.read_csv('/Users/longtaiye/Documents/ml-learn/train.csv') pd.set_option('display.width', 300) dateDF = pd.DataFrame(np.asarray(df), index=pd.to_datetime(df['Dates']), columns=df.columns) #按警區劃分 groups = dateDF.groupby('PdDistrict') ii = 1 key = lambda x:x.strftime("%Y") plt.figure(figsize=(20, 12)) for name, group in groups: subplot = plt.subplot(4, 4, ii) subplot.plot(group.groupby(key).count()) plt.title(name) ii+=1 plt.show()
按警區按年的案件走勢
import
按星期幾按年的案件走勢
cli
這兩張圖也並無太多的規律,但下面這張圖讓咱們看到了一絲但願。如BAD CHECK類型但案件時逐年下降的。
按類型按年的案件走勢