仍是有点懒,本应早点写第二集。按类型去分析数据并无获得规律性的东西。咱们再来看看元数据。
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类型但案件时逐年下降的。
按类型按年的案件走势