こんにちは、まゆみです。
Pandasについての記事をシリーズで書いています。
今回は第31回目になります。
今回の記事では、
.date_range()を使って
ある時点から別のある時点までの日を基にしたインデックスを作ったり
時間を基にしたインデックスを作ったり
営業日のみのインデックスを作ったり
の方法を書いていきます
ちょっとした英単語と、ルールを覚えれば概要は簡単にマスターできますので安心してくださいね。
では、さっそく始めていきます
#.date_range メソッドの概要
引用元:Pandasドキュメント
.date_range()メソッドは、色々なパラメーターを渡すことができますが、
start
end
periods
の組み合わせのうち、2つを組み合わせないとエラーが出ます。
また、ドキュメントに
『Return a fixed frequency DatetimeIndex』
と書いていますが、翻訳すると『定められた頻度のDatetimeIndexを返す』になります。
後述しますが、パラメーターfreq =に色々な引数を取ることによって、
日単位の
時間単位の
月単位の
と『どの頻度でインデックスの数字を増やしていくか』を決めることができます。
それが、Pandasドキュメントの『a fixed frequency』の意味になります
#.date_range()のパラメーター『start』『end』『period』
先ほど、.date_range()メソッドは、start, end, periodのパラメーターのうち、2つを使わないとエラーが出ると書きました
.date_rangeはある『期間』のDatetimeIndexを返してくれるので、期間を指定するには、
始まりと終わりの地点を決めるか
始まりの地点を決めて、いくつの要素でインデックスを作るか
終わりの地点を決めて、いくつの要素でインデックスをつくるか
を決めなければ、『期間』を定めることができません。
なので、2つのパラメーターが必要なのです。
では、2つのパラメーターの組み合わせで実際にどのようなDatetimeIndexができるのかコードを書きながら解説していきますね。
パラメーター start とend の組み合わせ
start で始まりの地点を
end で終わりの地点を定めます。
start の値とendの値は範囲に含まれます。
パラメーター freq
パラメーターfreqはfrequency = 頻度という意味です。
1時間おきのインデックスを作りたいのか
2時間おきのインデックスを作りたいのか
1日おきのインデックスを作りたいのか
を定めるパラメーターになります。
デフォルト値は"D" でDay、つまり何も書かなければ一日おきのインデックスができることになります。
少し例を書きますと
freq = "D"
freq = "2D" (2日おきのインデックス)
freq = "H" (1時間おきのインデックス)
freq = "6H" (6時間おきのインデックス)
freq = "B" (Business day つまり営業日のみ(月~金)のインデックス)
となります。
もっと他にも引数があります。
詳しくは、Pandasドキュメントに載っていますので、興味のある方は参考にどうぞ
コードを書いてみる
freq="D"はデフォルト値でもあるので、書かなくても結果は上記と同じです。
2日おきのインデックスを作りたい時は
同様に、freq の引数を"H"にすれば、1時間おきですし、"2H"にすれば2時間おきのインデックスと言ったように、単位と数字の組み合わせで色々なインデックスを作ることができます。
freq = "W"と引数を渡すと、週単位のインデックスが作れますが、果たして何曜日から始まるかも大事な点ですよね。
デフォルト値は SUN つまり日曜日になります。
freq = "W" と書くと、毎日曜日のインデックスを作れます。
日曜日以外の曜日を指定したい時は
freq = "W-曜日"
を書けば大丈夫です。
2020/03/12 から 2020/04/12 の期間の火曜日のみのインデックスを作りました。
##パラメーター start と periods の組み合わせ
先ほどの解説で、パラメーターstart の意味は分かられたと思います
periods は『いくつのTimeStamp』を返してほしいかを引数に取るパラメーターになります
では、2021/4/5日から20日分のインデックスを作ってみましょう
(1日おきのインデックスを作る時はfreq="D"は書かなくてもよい)
土日を除く営業日(Business day)のインデックスも作ってみますね。
2021/04/05 が月曜日になります。
2021/04/10 と2021/04/11は週末なので、除かれてインデックスが作られています
パラメーターend とperiods の組みあわせ
start とperiods の組み合わせと考え方は基本的に同じです。
ただ、end でインデックスの最後の日時を決め、そこからいくつ遡るかをperiods に引数として渡せばOKです。
#まとめ
今回の記事では、.date_range()を扱わせていただきました。
引数として渡す値の組み合わせによって、色々なDatetimeIndexが作れますので、色々と試してみてくださいね。
お役に立てれば幸いです。