日付を表す文字列や数値情報から、日付型の列を生成する方法を解説します。時系列分析を行う前段階として利用します。
説明
- 日付を表す情報が文字列や数値としてデータに存在するとき、それを用いて日付列を生成するスクリプトです。
- まず、format_str関数を用いて、元データの年・月・日の3列から「年/月/日」の形でつなげた1つの文字列を作成します。
- その後、str_to_date関数を用いて、文字列(string)型の列を日付(date)型に変換します。
入出力イメージ
- 入力
- 出力
使い方
- 計算元となるデータを用意し、「Python script」アイコンを繋げます。 (例では、顧客データ.dftから日付情報を数値列として抽出し、計算元のデータとしています。このデータは、共有ワークスペース>サンプル>Alkano>顧客データ.dft にあります。)
計算元データに年・月・日列が数値列として存在しています。
- 「Python script」アイコンの編集画面を開き、スクリプト部分を以下で置き換えます。
入出力設定は変更しません。
- Python script
from msi.common.dataframe import DataFrame, cbind, rbind, merge, select, is_valid, format_str from msi.common.dataframe.params import Axis, Merge, DType, Agg from msi.common.dataframe.special_values import Na, Error, NegativeInf, PositiveInf # format_str関数を利用して数値列を文字列に変換します datestr_col = format_str("%d/%d/%d", table["年"], table["月"], table["日"]) # 日付の文字列を日付型に変換します date_col = datestr_col.str_to_date("%Y/%-m/%-d") # 列名を変更します date_col.colnames[0] = "日付" # 元データと結合します result = cbind(table, date_col)
- 「Python script」アイコンを実行します。終了後、可視化画面で結果を確認すると、元データに日付型の列が追加されていることが確認できます。 (例では、「日付」という列名のデータが元データに追加されていることがわかります。)
分析への応用
時系列切り出しや時系列欠損補間などの、Alkanoの時系列分析を行う前段階として利用する
OnePoint
format_str関数では、指定した書式で文字列を生成することができます。2個目以降の引数の値を利用して、1個目の引数で指定されたフォーマットの文字列を生成します。例えば年月日の他に時間がある場合には、
datestr_col = format_str("%d/%d/%d %d:%d:%d", table["年"], table["月"], table["日"], table["時"], table["分"], table["秒"])
のように指定することができます。また、%d/%d/%d
の部分を%d/%02d/%02d
にすると、月と日を0埋めした2桁表記に指定することができます。- 元データの列型がstringやcategoryなどの文字列型の場合、1個目の引数で
%d
の代わりに%s
と記述します。
- 元データの列型がstringやcategoryなどの文字列型の場合、1個目の引数で
str_to_date関数では、文字列から日付型列を生成することができます。引数で入力フォーマットを指定します。年は
%Y
(4桁表記)または%y
(下位2桁表記)、月は%m
(0埋めされた表記)または%-m
(0埋めされていない表記)、日も%d
(0埋めされた表記)または%-d
(0埋めされていない表記)を指定できます。今回の場合、format_str関数で生成される文字列は2013/1/2
のように年は4桁表記、月と日は0埋めされていない表記なので、%Y/%-m/%-d
と指定しています。- 時間を含む日時型への変換関数
str_to_datetime
も存在します。詳細はMSI DataFrame マニュアルで「str_to_datetime」を検索してください。
- 時間を含む日時型への変換関数