0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Pandas】.date_range() の使い方を優しく教えます no.31

Posted at

見出しを追加 (72).png

こんにちは、まゆみです。

Pandasについての記事をシリーズで書いています。

今回は第31回目になります。

今回の記事では、

.date_range()を使って

ある時点から別のある時点までの日を基にしたインデックスを作ったり

時間を基にしたインデックスを作ったり

営業日のみのインデックスを作ったり

の方法を書いていきます

ちょっとした英単語と、ルールを覚えれば概要は簡単にマスターできますので安心してくださいね。

では、さっそく始めていきます

#.date_range メソッドの概要

スクリーンショット 2021-04-05 071508.jpg
引用元:Pandasドキュメント

.date_range()メソッドは、色々なパラメーターを渡すことができますが、

start

end

periods

の組み合わせのうち、2つを組み合わせないとエラーが出ます。

また、ドキュメントに

『Return a fixed frequency DatetimeIndex』

と書いていますが、翻訳すると『定められた頻度のDatetimeIndexを返す』になります。

見出しを追加 (71).png

後述しますが、パラメーターfreq =に色々な引数を取ることによって、

日単位の

時間単位の

月単位の

『どの頻度でインデックスの数字を増やしていくか』を決めることができます。

それが、Pandasドキュメントの『a fixed frequency』の意味になります

#.date_range()のパラメーター『start』『end』『period』

先ほど、.date_range()メソッドは、start, end, periodのパラメーターのうち、2つを使わないとエラーが出ると書きました

.date_rangeはある『期間』のDatetimeIndexを返してくれるので、期間を指定するには、

始まりと終わりの地点を決めるか

始まりの地点を決めて、いくつの要素でインデックスを作るか

終わりの地点を決めて、いくつの要素でインデックスをつくるか

を決めなければ、『期間』を定めることができません。

なので、2つのパラメーターが必要なのです。

では、2つのパラメーターの組み合わせで実際にどのようなDatetimeIndexができるのかコードを書きながら解説していきますね。

パラメーター start とend の組み合わせ

1.png

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ドキュメントに載っていますので、興味のある方は参考にどうぞ

コードを書いてみる

スクリーンショット 2021-04-05 075902.jpg

freq="D"はデフォルト値でもあるので、書かなくても結果は上記と同じです。

2日おきのインデックスを作りたい時は

スクリーンショット 2021-04-05 080010.jpg

同様に、freq の引数を"H"にすれば、1時間おきですし、"2H"にすれば2時間おきのインデックスと言ったように、単位と数字の組み合わせで色々なインデックスを作ることができます。

##週を意味する"W"を使うときの注意点
見出しを追加 (73).png

freq = "W"と引数を渡すと、週単位のインデックスが作れますが、果たして何曜日から始まるかも大事な点ですよね。

デフォルト値は SUN つまり日曜日になります。

freq = "W" と書くと、毎日曜日のインデックスを作れます。
スクリーンショット 2021-04-05 082611.jpg

見出しを追加 (74).png

日曜日以外の曜日を指定したい時は

freq = "W-曜日"

を書けば大丈夫です。

スクリーンショット 2021-04-05 083313.jpg

2020/03/12 から 2020/04/12 の期間の火曜日のみのインデックスを作りました。

##パラメーター start と periods の組み合わせ
先ほどの解説で、パラメーターstart の意味は分かられたと思います

periods は『いくつのTimeStamp』を返してほしいかを引数に取るパラメーターになります

では、2021/4/5日から20日分のインデックスを作ってみましょう

スクリーンショット 2021-04-05 084734.jpg

(1日おきのインデックスを作る時はfreq="D"は書かなくてもよい)

土日を除く営業日(Business day)のインデックスも作ってみますね。

スクリーンショット 2021-04-05 085124.jpg

2021/04/05 が月曜日になります。

2021/04/10 と2021/04/11は週末なので、除かれてインデックスが作られています

パラメーターend とperiods の組みあわせ

start とperiods の組み合わせと考え方は基本的に同じです。

ただ、end でインデックスの最後の日時を決め、そこからいくつ遡るかをperiods に引数として渡せばOKです。

スクリーンショット 2021-04-05 090152.jpg

#まとめ

今回の記事では、.date_range()を扱わせていただきました。

引数として渡す値の組み合わせによって、色々なDatetimeIndexが作れますので、色々と試してみてくださいね。

お役に立てれば幸いです。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?