閲覧頂き、ありがとうございます。
matplotlibを用いたデータ作図で困っていることがあり、質問させて頂きます。
少し長いですが、お付き合いいただければ幸いです。
実現したいこと
現在CSVデータを元にして、matplotlibを用いて作図をしています。
pythonのpandasを用いて、CSVデータより以下のデータフレームを作成しました。
(そのデータフレーム名は「data」とします。)
作成したdataの『trade_date』をX軸、『volume』をY軸として、
添付画像①(理想とする図)のような棒グラフを作成したいと考えています。
具体的に実現したいことは、以下の内容です
- trade_dateでソートされている
- trade_date毎にvolumeの合計値を出ている
データフレーム名:data
列1 | trade_date | volume |
---|---|---|
1013 | 20220606 | 45.0 |
1379 | 20220606 | 3735.0 |
1852 | 20220606 | 5206.0 |
2884 | 20220603 | 139.0 |
3247 | 20220603 | 1798.0 |
3699 | 20220603 | 4650.0 |
4662 | 20220602 | 540.0 |
5037 | 20220602 | 628.0 |
5438 | 20220602 | 501.0 |
5517 | 20220601 | 941.0 |
5609 | 20220601 | 735.0 |
6048 | 20220601 | 74.0 |
7178 | 20220531 | 188.0 |
7496 | 20220531 | 567.0 |
7883 | 20220531 | 106.0 |
現状の進捗状況
とりあえずdataを.plot.barで作成してみました。
添付画像②(現状)のように、
- 日付はdataを上から見ていくだけ
- index毎に棒グラフが作成される
という成果となりました。
data.plot.bar(x='trade_date',y='volume')
疑問点
理想とする図を作成するには、『data』を以下の『data_2』のように、
更にPandasにて前処理をするしか方法はないでしょうか?
- trade_dateでソートしておく(日付の若い順にしておく)
- trade_date毎にvolumeの合計値を出しておく
データフレーム名:data_2
trade_date | volume |
---|---|
20220531 | 861 |
20220601 | 1750 |
20220602 | 1669 |
20220603 | 6587 |
20220606 | 8986 |
元の保持している時系列データから、dataまでに4回整形処理をしております。
なので、もう1回整形処理すれば解決するのは理解できるのですが、
ゴリ押し過ぎて無理やりやってる感が良くないように考えています。
このままだと想定しているコードの完成形が尋常じゃなく長くなりそうなので、一度質問してみようと考えて投稿致しました。
エクセルでの資料作成の経験とVBAを少し触ったことがあるくらいで、pythonだったら更に楽にデータ整形と資料作成ができると思って勉強し始めております。
面倒なことはpythonに丸投げしたいという考えです。
時系列情報の保管から見直そうとも検討しております。
追加で必要な情報がありましたら、お伝え下さい。追記致します。
以上、ご協力いただける方がいらっしゃいましたら、コメントよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/07 15:19