投資ネタTweetさて、何の商品でも季節性というものを見たくなることがあります。猛暑銘柄と呼ばれているものは本当に夏に上がるのかというのを見る時に、その季節性が一目瞭然な感じで見られると嬉しいでしょう。某端末ではシーズングラフと確か呼ばれていたと思うのですが、私が使っている四季報やSBIにはそんなチャートがなかったので作ってみないといけないなぁと思っていましたが、実際に考えると毎年日数違うし面倒だなぁと思って、作らぬままでした。本日気になる銘柄があったので作ってみたのですが、ちょっと僕には難しい部分があったので、相談がてらに記事にしてみようと思います。データはSBIからcsvでダウンロードしたデータを使い、PCはwindows10です。作業はほぼPandasを使って行い、最後にmatplotlibでグラフにしています。CSVを読み込み、処理するさて、まずはCSVファイルを読み込みます。訂正(2018年9月23日)下に既述したように、キリンさんからの指摘により読み込みを変更。parse_datesというパラメーターで、文字列を日付に換えられる。qiitaの記事では'Date'になっていたが、今試すと['Date']という形で記述する必要があった。overflowの記事。df.sort_index().copy()さてこのデータを見ると以下のようになっています。データフレームのインデックスを日付にしたい。いうことでそのままここに出てきた日付をインデックスに指定すると、下のようにうまく行きません。いうわけで、ちょっと日付データをいじくることになります。すると上のようにうまく日付がインデックスに表示されます。日付が上が新しい日付となっているので、それを下が新しい日付に変更します。あと、使うのは終値だけなのですが、途中まで寂しい感じがするので、移動平均と出来高をつけておきます。日付の部分ですが、pandasで読むときに指定するとできるようです。キリンさんご指摘ありがとうございました。日付のパースはこれが良さそうです。データの形を定義してあげたほうがいいですね。9]].copy()欲しいシーズングラフは、年別のデータを作るとできるので、年と日付のデータを付け加えてみましょう。df.index.day))まぁうまく行きそうにないけど、pivot_tableにすると以下のようになります。['year'])まぁ、文字列ヤシこうなるわなーという感じです。作戦変更:いったんデータを分けて再び合体させる日付では年ごとに休みも違うので、なんかかくかくするかもしれないので、それを日数にして、多少のずれには目をつぶるというつくり方の方が簡単なような気がしましたのでそうします。年ごとのデータに分けて、最初の日から番号をつけて、再び同じデータフレームにして返し、ピボットテーブルを作ればシーズングラフができそうです。何年のデータがあるかを確認します。2010年~のデータがあることが分かったので、その年ごとにデータフレームを分けます。ナンバリング用の関数を作り、各データごとに実行します。してできたデータを、合体させてピボットテーブルを作ります。季節性が見やすいように、各年の最初の値を100とするシーズンチャートを作ります。True)まとめ何とか完成することができました。各年ごとに分けてナンバリングしてまた合体させるというところを何とかうまくできないものかなぁと思っています。教えてやろうという心の広い方がおられれば、ぜひコメント欄でもDMでも頂ければ幸いです。このチャートちょっと季節性ありそうですねぇ。実はもうちょっと加工したいのですが、今日はこの辺で。内包表記が依然として上手く使いこなせない。週間)そういや若いころにはやりたいことがたくさんあったなぁと思い出し、40という微妙な年齢で退職。その後はいろいろなことを調べながら、何をしようか考えているおっさんが書くブログ。Python】スクレイピングでファイルをダウンロードするときのメモPythonでBinanceのAPIを使って価格情報を取得するWordCloudの可視化をplotlyに。(18)はてなブログをはじめよう!mazarimonoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。