使用pandas玩kaggle數據(二)

仍是有點懶,本應早點寫第二集。按類型去分析數據並無獲得規律性的東西。咱們再來看看元數據。
Dates是案件發生的時間,案件是否具備時間規律,隨着時間在增加或者減小呢?
clipboard.pngspa

時間序列

基於這個思路,建立以時間爲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

時走勢圖
clipboard.pngutf-8

日走勢圖
clipboard.pngpandas

月走勢圖
clipboard.pngit

年走勢圖
clipboard.pngio

和其它列結合分析

上面的分析代表,單純的時間趨勢並不存在,那麼在限定其它因素狀況下的時間走勢關係是否存在呢?
咱們先從警區入手。按警區劃分案件,而後統計每一個警區的案件走勢。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()

按警區按年的案件走勢
clipboard.pngimport

按星期幾按年的案件走勢
clipboard.pngcli

這兩張圖也並無太多的規律,但下面這張圖讓咱們看到了一絲但願。如BAD CHECK類型但案件時逐年下降的。

按類型按年的案件走勢
clipboard.png

相關文章
相關標籤/搜索