データ分析をかじり始めたので、学んだことをまとめていきます。
主にkaggleのデータを使います。
今回使うデータはkaggleのNew York City Taxi Fare Predictionです。
train.csvの容量が大きかったので、データ数を5500ほどに削減して利用しました。
#1.時間型データを変換するまでの流れ
##1.1必要なライブラリをimport
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
import seaborn as sns
##1.2ファイルの読み込み
df = pd.read_csv('train.csv', nrows=5500)
##1.3必要なデータ以外を削除、データの情報を表示
df = df.loc[:,'fare_amount','pickup_datetime']
df.info()
#以下出力結果
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5500 entries, 0 to 5499
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 fare_amount 5500 non-null float64
1 pickup_datetime 5500 non-null object
dtypes: float64(1), object(1)
memory usage: 86.1+ KB
ここでpickup_datetimeの型がobject型であることがわかります。
しかし、基本的に数値型に変換しなければモデルの入力に用いることができないため、pickup_datetimeの型を変換する必要があります。
##1.4データの変換
df['pickup_datetime'] = pd.to_datetime(df['pickup_datetime'], format="%Y-%m-%d %H:%:M:%S UTC")
df['pickup_datetime'].head()
#以下出力結果
0 2009-06-15 17:26:21
1 2010-01-05 16:52:16
2 2011-08-18 00:35:00
3 2012-04-21 04:30:42
4 2010-03-09 07:51:00
Name: pickup_datetime, dtype: datetime64[ns]
これでモデルの入力に用いることができる型に変換できました。
#2.その後の処理
以上の処理から得られたデータにより、様々な特徴量を得ることができます。
例えば、単純に月を特徴量に加えるだけでも、季節性をモデルに反映させることが期待できます。季節性が売り上げに大きく絡む商品の需要予測などに役立ちそうです。(*十分なデータがある場合)
注意点としては、線形モデルでは周期的な変数から上手く傾向を捉えられない場合があるとのことです。(GBDTなどの決定木系は悪影響は出にくい)
いずれにせよ、目的変数からどういった特徴量が有効か、傾向を捉えるために十分なデータがあるか、あとは用いるモデルとデータとの兼ね合い辺りを考えると良さそうです。
#参考文献
門脇、阪田、保坂、平松 「Kaggleで勝つデータ分析の技術」 技術評論社 (2019/10/9)