IT系メモ

興味のあったことや、勉強したことなどをメモしていきます。

Pythonグラフ描画にAltairを使ってみる

matplotlibがデファクトになっているが、調整するのにかなり時間がかかるため、Altairを変わりに使ってみた。

matplotlibではNumpyであってもとりあえず描画してくれるが、AltairはPandasでなければならない。公式サイトでギャラリーを見る際には、元のDataFrameがわからなければ、何を指定しているのかわからないので、JupyterLabで表示しながら試すことをおすすめする。

 

Altairのメリット

  1. 色使いがよい。
  2. デフォルトの描画のセンスがいい
  3. 棒グラフが太くない
  4. 複数のグラフを並べやすい

 

Altairのデメリット

  1. ネット検索で例が少ない。(日本語でも英語でも)
  2. 細かい調整をする際の手間がかかる
  3. 下で動いているvegaを知らないとわからないことがある。
  4. 描画速度は早くない。

 

f:id:qpci32siekqd:20190407215154j:plain

 

デフォルトでの記載が多いように思うが、matplotlibでも結局複数行に渡って記載することになっていくので、グループ分けがされており、一度理解してしまえば整理されており読みやすい。

描画したいDataFrameと、グラフの種類、X軸とY軸のデータ指定と、ここまではそれほど複雑ではない。

 

f:id:qpci32siekqd:20190407223341j:plain

colorは色の名前を指定するように最初思うだろうが、データ名を指定すると、勝手に色分けしてくれる。色を指定したい場合は別途設定が必要となる。

 

f:id:qpci32siekqd:20190407223756j:plain

DataFrameではなく、URLでデータを取ってきた場合は、データの型を指定する必要がある。

Q:何枚、何個など数えた数

O:並び順に意味があるもの。大きさでLL→L→Sといった具合

N:性別や血液型など、分類データ

T:時刻データ

 

f:id:qpci32siekqd:20190407224630j:plain

ざっくりと最初にデータを見たいときは、省略形で問題ないが、より細かく設定したい場合は、省略しない形で記載する。

 

f:id:qpci32siekqd:20190407224922j:plain

複数の描画方法で、1つにに重ねたい場合があるが、プロットを複数用意して、+でかけばいい。直感的でわかりやすい。

 

f:id:qpci32siekqd:20190407225126j:plain

encodeの中でデータを演算することができる。ちょっとプロットすると数が多すぎてわかりにくくなったときに使える。

markpoint()のオプションはかなりあるが、設定すればどうなるか詳しい説明がなく、まだよくわかっていない。

 

f:id:qpci32siekqd:20190407225747j:plain

altair.Xに細かい設定があるので、そこに合わせてtitleやscaleを設定する。

 

f:id:qpci32siekqd:20190407231619j:plain

複数のグラフを並べるときは、Altair.hconcat()やrepeat()を使う。

自動化の話

WindowsGUIアプリの自動化をしようとするとWIN32APIを使うことになるが、pywinautoかWIN32APIを叩くかになる。Windowsハンドラを調べるとしても、可読性が良くない。

機械学習が時間がかかるわりに画像関係か、既に数値化できているもの以外に適用する方法が難しい。Photoshopにすら組み込むのが難しい。

普段エクセルを使わない場合は、matplotlibで満足できるだろうが、人に見せるためのグラフを描くとなったときにmatplotlibのデフォルトで吐き出すグラフが駄目で調整に時間を取られてしまう。

 

欠損データなどに対しての前処理を自動化できるのを機械学習で解決できるのを期待しているわけだが、以前からあるようにエクセルでグラフを描いて、変なデータに対して処理するところまでは人力で従来から変わらず、その後の学習結果についても100%の保証がないので、ここまでいけばゴールというのが決めきれない。

 

もう一つ、物体を動かすことに対して自動化が進んでいない。
自動運転は注目されているが、自動運転車から荷物の積み下ろしはできない。
調理家電は出てきているが、冷蔵庫から食材を取り出すところは自動化できない。
工場で不良品の食材をリジェクトできるが、冷蔵庫内の食材はリジェクトするには種類が多すぎる。

 

プロジェクト計画やタスク管理を自動化できればいいのだが、今の所上手くいってない。スマフォを使ってスキマ時間を人から奪って生産性を上げるといった、いかにして休みなく人を動かすか、という方法でしか生産性を上げられていない。

 

グラフやプレゼン資料の色の調整に時間が取られるので、いくつかの候補を自動で作成して人がその中から選ぶようになればいいが、駄目だった時は人が細かいところまで調整しないといけなくなっている。

 

ネット企業に思ったことメモ

何を発明したのか

  1. 他人にスマフォ代金と充電するための電気代と通信費を払ってもらえる。
    サービス部分は無料かもしれないが、インフラ含め、人・企業で分担することで成り立っている。
    (図書館で無料でコンピュータが使えるとしても利用率は低い)

  2. いいねやRTなど、1人の小さな労働を、世界規模の人数にすることでお金に変えている。

  3. 広告費というお金を払うことで、新しいピラミッドを作った。

  4. いくら払ってくれれば、いくら儲かります、という約束不要というPV。

その他

  1. 機械学習で個々人に合わせてサービスを提供してくれるというが、企業側が考えるお金を払ってくれるクラスタに入っていない限り、利便性を得られない。
    (少数多品種のソフトは作られないが、製造側には少数多品種がいかにもこれから対応すべきことのように言い、自身のピラミッドを維持する)

  2. モノを移動するのは苦手。
    家庭内の家事に関しては、今のスマフォだけでは対応できない。
    衣服と水をモーターで動かす洗濯機と、風でゴミを移動させる掃除機やルンバの次が出てきていない。