LoginSignup
0
1

More than 1 year has passed since last update.

データの前処理まとめ1(時間型)

Posted at

データ分析をかじり始めたので、学んだことをまとめていきます。
主にkaggleのデータを使います。
今回使うデータはkaggleのNew York City Taxi Fare Predictionです。
train.csvの容量が大きかったので、データ数を5500ほどに削減して利用しました。

1.時間型データを変換するまでの流れ

1.1必要なライブラリをimport

import.ipynb
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ファイルの読み込み

read_csv.ipynb
df = pd.read_csv('train.csv', nrows=5500)

1.3必要なデータ以外を削除、データの情報を表示

use_data.ipynb
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データの変換

tr_data.ipynb
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)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1