2019年8月14日グラフ描画してみよう今現在の仕事で、グラフ描画する可能性があるので、少し練習してみようと思います。題材について突然ですが、私は確定拠出型年金に加入しています。証券会社はSBI証券にしています。いわゆるiDecoというやつです。グラフ描画するのは、iDecoの運用商品と、日経平均です。日々の運用商品データは、CSVとしてSBI証券が提供していまして、それを題材として使用します。私が保存を始めたのは2017年ぐらいからですので、そこからのデータをグラフ表示しようと思います。ディープラーニングをしようと思ってました。今でもしようと思ってますが、なかなか苦戦中。その話はまた別の機会に。Macrotrendsというところのデータを加工してグラフ描画をしています。ここのは日経本体と違い、Macrotrendsのデータだ、とブログに書けば使用していいらしいので使用しています。グラフ描画ライブラリの種類Pythonによるグラフ描画ライブラリは、以下があるようです。MatplotlibseabornAltairMatplotlibPythonでのグラフ描画ライブラリとしては定番です。検索するとたくさん出てきます。多くのライブラリが、Matplotlibを元にしています。元々が有名な、MATLABをベースにしているそうです。seabornベースはMatplotlibな、グラフ描画ライブラリです。統計データの表示に特化しているそうです。デフォルトできれいな画面を描画できる、のかと思ったのですが、そうではないらしいです。本記事では、seabornを一部使用してグラフ描画しています。理由としては、有名そうだから、というところです。グラフ描画は特に、サンプル見ながらでないと出力するのが難しいです。有名そうなライブラリだと、サンプルが豊富だろう、という理由で選びました。使ってみた感想としては、何を使ってるかよく分からない、というところです。Matplotlibもそうなのですが、暗黙的に「plt」とかが出てきて、どこで何を操作すればいいのか、あるいはなぜここで呼び出す必要があるのか、がいまいち分からないです。AltairVega-Lite、というデータフォーマット(JSON)を用いて描画するタイプのライブラリです。どちらかというと私の好みなのですが、今回はMatplotlibベースで処理してみることにしました。両方覚えるのがつらかったという事情もあります。PandasとはPandasとは、データ分析用ライブラリです。ここでは、グラフ用データの格納場所として使用しています。いうか、Matplotlibに統合しているといっていいぐらい、密結合していると思います。使った感想としては、Python的なライブラリではなく、癖がありすぎる気がします。操作すればこうなるはずだ、という予測がことごとく外れる感じです。それでも便利なのは確かなので使用しています。グラフ描画の前準備グラフ描画をするにあたり、いろいろと前準備が必要になりました。その準備内容について、先に記述しておきます。環境グラフ描画をしてみた環境は以下の通りです。Matplotlib系、seabornもそうですが、日本語フォントが入っていないようです。先に日本語を表示できるようにフォントを格納しておきます。~/.cache/matplotlib/fontList*.jsonあとはソースコード中で以下のように、日本語フォントを指定しておきます。以下はseabornを使用した際の書き方です。sns.set(font='IPAGothic')エラー表示をつぶすプログラムを起動すると、以下のエラーが出ました。FutureWarning)このエラーは、結局のところ、上記のメッセージ通り、以下をソースコードに追加することで解決しました。register_matplotlib_convertersregister_matplotlib_converters()PandasとMatplotlibで、時刻処理が競合しているものと理解しました。上記だと、Pandas側でMatplotlib側を取り込んでいるような処理になるようですが、これをしたくない人は(いるかどうか分かりませんが)どうするんですかね、、と少しだけ気になりました。私がデータを持っている2017年以降だけ取得し、JSONにしておきます。JSONにするのかというと、単に私の勉強のためだけです。nikkei_csv2json.py具体的な加工方法は以下プログラムでJSONを生成しました。csv2json(csv_file)‘nikkei-225-index-historical-chart-data.csv’から./nikkei-225-index-historical-chart-data.jsonを生成するプログラムです。処理は見ての通りですが、Python3のcsv.readerで読みだして、jsonで出力しているだけです。具体的なデータは以下になっています。[y1...]]というデータです。]]おわりに長くなったので、いったん切ります。次回は、やっとグラフ表示を行います。執筆者:torochan関連記事リモート実家帰りしてみるこのご時世、実家には直接帰れないけど、1月には一応実家帰り的な感じでリモート実家帰りをしようかと思いました。...言語別ログイン機能パスワード保存処理方針ちょっと前に、ログイン機能を作成した際、パスワードを暗号化するか、という議論を目にしたことがありました。最近、Webアプリケーションを作成する仕事が、少しずつですがあります。その際に使用するのは、殆どの場合「テーブル」です。前回、AESで暗号化する実装をしてみた際、知らない暗号モードが増えたなと思いました。タイプVからタイプGに変えてみた家のインターネットはいままで、光回線ではありましたが、昔のVSDLのままでした。タイプVというやつです。