こんにちは、まゆみです。
Pandas についての記事をシリーズで書いています。
今回は第30回目になります。
前々回から、Pandasの日付や時間に関するモジュールを扱って書いています。
今回の記事でも引き続き時間に関するモジュールを書いていきますね。
今回の記事では、『.to_datetime()』メソッドについて書いていきます
では、さっそく始めていきます
#.to_datetime()メソッド
前々回の記事では、『TimeStamp』について
前回の記事では『DatetimeIndex』について扱いましたが、
TimeStampは、ある1点の時間に関するデータ
DatetimeIndexは複数の時間に関するデータ(TimeStampが複数集まったもの)
なので、
TimeStamp を作る時は、文字列型データを
DatetimeIndexを作る時は、リスト型データを
それぞれ引数として渡しました。
.to_datetime()メソッドは、引数として渡すものによって、
上記に上げたようなPandasの時間に関するオブジェクトを作ってくれるメソッドになります。
言葉で説明するより、実際にコードを書いて結果を示した方が分かりやすいと思うので、さっそく書いていきます
##.to_datetime()メソッドに1つの値を引数として渡す
.to_datetime()メソッドに1つの値を渡すと、TimeStampオブジェクトが作られます。
引数として渡すものは、文字列でも、dateオブジェクトでも、datetimeオブジェクトでも構いません。
複数の値をリストにして渡す
.to_datetime()メソッドに複数の値を入れたリストを引数として渡すと、DatetimeIndexを返してくれます。
##Seriesを渡す
引用元:Pandasドキュメント
また、実際の場面では、Series を引数として渡すことも多いと思います。
Seriesを引数と渡すとどのように結果が返ってくるか見てみましょう
それぞれの値が色んなフォーマットで書かれたSeriesをtimesという変数に代入しました。
そのtimesというSeriesを.to_datetime()の引数として渡すと、全ての値をちゃんとフォーマットして返してくれます。
#.to_datetime()メソッドの弱点
.to_datetime()メソッドは、Pandasの時間に関するオブジェクトに変換してくれますが、では、『時間に変換しようが無いとき』はどうしたら良いのでしょうか?
例えば
"Hello!" という文字列は、年月日に変換できませんよね
また
2020/2/31
は存在しません
実際、データを分析しようとするときは、エラーを出す原因となっている部分は取り除いたり何かしらの処理を施さなければいけません。
上記のスクショのように、エラーが出てしまってはそこからのプロセスを進めることができません。
##.to_datetime()のパラメーター errors
そこで、エラーを出さずに、エラーの原因となっているところを目で分かるようにします。
引用元:Pandasドキュメント
エラーで画面が真っ赤になるのではなく、エラーの原因となっている『Hello』や『2000/2/30』を『NaT』と表示してくれるので、のちの処理がしやすくなります
.to_datetime()のパラメーターerrorsの引数を『coerce』(ちなみにcoerceは強制という意味の英語です。)にしてみます。
#UNIXタイムも.to_datetime()で変換できる?
UNIX時間とは
1970年1月1日の真夜中0時からの経過秒数によって、時間を表す方法です。
※興味のある方はwikipediaで詳しく読んでみてくださいね。
では、このようなUNIX時間もPandasの.to_datetime()で変換する事ができるでしょうか?
ちなみに引数の"s" はsecond(秒)のsです
#まとめ
では今回の.to_datetime()についての記事を締めくくらせていただきます。
次回は、.date_range()という時の期間を指定するメソッドを紹介していきますね。