Pythonと本と子供と雑談と

いつからはじめても遅くない

雑誌WEB+DB Pressに「Pythonでデータ可視化」を書かせていただきました

記事の概要

雑誌WEB+DB PressのVol.118(8月24日発売)に「Pythonでデータ可視化」とのタイトルで記事を書かせていただきました。内容はオープンデータを取得(Pandas)・前処理(Pandas)・可視化(PlotlyExpress)した後に可視化ウェブアプリケーションをDashで作成するという内容です。Pythonの入門的な本を読んで、ちょっとデータ分析してみるかと思われている方向けの記事です。

実際のコードも(最後のアプリケーションを除いて)紙面に掲載されているので、JupyterLabなどにコードを入力し、グラフを描画したり、アプリケーションを動かしたりして頂けますと、幸いです。

扱ったのは次の3つのデータです。

  • COVID-19(CSVファイル)
  • 家計調査(CSVファイル)
  • 日本の財政データ(EXCELデータ)

WEB+DB PRESS Vol.118

WEB+DB PRESS Vol.118

  • 発売日: 2020/08/24
  • メディア: Kindle

御礼

COVID-19のデータはジャッグジャパン株式会社様が作られているデータを利用させていただきました。快く利用をご承認いただきありがとうございました。家計調査、日本の財政データは総務省様、財務省様の発表されているデータを使わせていただきました。今は、新型コロナウィルスの流行で大変な時期だと思いますが、データの更新をしていただき感謝しております。

また、@iisaka51さん、@ksntさん、@malo21stさんには記事のレビューをしていただきました。ありがとうございました。多くのアドバイスをいただきました。全てを反映することはできませんでしたが、よりよい記事にすることができたと思います。

また、編集のみなさまにも感謝です。最初のころに編成を変えていただいたり、大幅にページオーバーした原稿を削っていただいたり、みなさまのサポート無しでは記事は完成することはありませんでした。

記事に関してもう少し

記事では、Pandasの使い方に少し触れ、実際に3つのデータを前処理して使いやすくした後、PlotlyExpressを使ってデータを可視化し、最後にDashでウェブアプリケーションを作成します。ウェブアプリケーションは紙面の都合でCOVID-19のみとなっていますが、短いコードで複雑に動作するグラフやアプリケーションが作成できることを実感していただき、自分も何か作ってみようと思っていただけると幸いです。

リアルタイムで更新されるデータを扱う試み

COVID-19のデータはリアルタイムで日々更新されており、実際に扱うと、本誌に載せた以外の修正を加えないといけない可能性があります。実際に記事を書いていた時も、何度かここはコード、文章ともに書き直しました。リアルタイムで更新されるデータの面白さを味わえる、このデータを扱うことにしてくださった編集さんの思い切りの良さに感謝です。

今のところ、大きなコードの修正がある場合は、githubで共有したノートブックで対応させていただこうかという話になっております。また、全然違う処理が必要な場合、リポジトリにプルリクいただいたりすると、リアルタイム感があってよいとのアイデアも出ていました。なのでプルリクいただけると嬉しいです。

扱ったデータに関して

今回扱ったデータはCSVファイル2つと、EXCELファイル1つです。それらを前処理して可視化していくわけですが「オープンデータで丁度良いデータを探すのが難しい」ということは、記事に書かれていない真実だったりします。記事では可視化の際に、ちょっとしたPandasのメソッドでデータを扱いやすくするとかやっていますが、こういうのが出来つつ(自分が)興味を持てそうなデータを探すのは結構難しいと思います。

また、エクセルファイルになると難易度がかなり上がると実感していただけますが、やはり作成の自由度が高い分、処理は難しくなります。しかしまぁ、Pandasだけでこんなことができるのだなぁ、Pandas便利と思っていただけると幸いです。

オープンデータに関して

オープンデータにはいろいろ面倒なところがあると思われる方もおられるでしょう。しかし私がいろいろとみて思うのは、実際に会社なんかにあるデータの方がもっと大変だと思います。しっかりとしたDBなどが作られている企業は除きます。

オープンデータはデータの前処理の練習にちょうど良い気がします。神エクセルやPDFは困難極まりないですが、そのほかのデータはある程度手を入れると使いやすいデータの形にできます。

話は変わって、私の最終的な目標は、オープンデータを生かしたビジネスアイデアから価値を生み出し、税金として還元するということを実現することです。現在は、日本の現状の調査なんかに使われていると思いますが、実際にそのデータが価値を生み出したら、それを作っている方々のモチベーションも上がるし、予算も増えるでしょう。

追記

下に忘れていたと書いていたのを思い出したので追記していきます。

処理を関数としてまとめる

本記事では多くの処理をJupyter上でゴリゴリとワンライナー的なコードで処理していく形となっています。実際には、これらを関数などにまとめて再利用などができるようにしておくのが大事です。これは入れようかと思っていたのですが、ページオーバーだったのでカットしました。

複数のデータを組み合わせるとパワフルな情報となる

今回扱ったのは一つの括りのデータでした。家計調査なら家計調査のみという感じです。しかし、それと位置情報とか、ほかの情報を組み合わせることにより、その情報はもっと価値を持つものになる、いうなればもっと違った視点から得られるデータとなります。そのようなデータの組み合わせを可視化するともっと面白いことが考えられたりします。これは、下のPyConJPのチュートリアルで取り扱います。(時間も限られているので小ネタな感じですが)

まとめ

なんかもっと伝えたいことがあったと思いますが、実際に記事にすると難しい+思い出せないというのが現実です。

なんか色々難しいことを書いてしまいましたが、なんといいますか、最初に述べた通り「ちょっとPythonを使ってデータ分析を始めてみたい」と思っている方がおられたら、本誌を手に取っていただき、実際にコードを動かしていただけましたら、これ以上にうれしいことはありません。

あと、今年のPyConJPのチュートリアルでは、今回の記事とは異なるデータを使って、データ収集から前処理、可視化、機械学習までというものをやらせていただきます。参加費はなんと無料です!!奮ってご参加ください。

pyconjp.connpass.com

最後に、関係各位に再度謝意を示させていただきます。本当にありがとうございました。

WEB+DB PRESS Vol.118

WEB+DB PRESS Vol.118

  • 発売日: 2020/08/24
  • メディア: Kindle