一般社団法人Pythonエンジニア育成推進協会(以下、当協会)の顧問理事の寺田学です。私は試験の問題策定とコミュニティ連携を行う立場です。 前回は開発のコツについてお話ししました。今回はデータ分析の初学者に向けて、Pythonでできるデータ分析と学習のコツ、役立つツールとその付き合い方についてお話ししたいと思います。
Excelでの手作業分析から、Pythonでの自動分析へ
先日、データベースに保存された数万件のアンケート調査データを、Pythonを使って自動的に分析するというプロジェクトがありました。 大量のデータを取り扱う場合、たいていはExcelに保存し、関数やExcelの機能を駆使してデータの集計や分析を行っていると思います。実際、Excelは視覚的に扱いやすく、数万件のデータの取り扱いもできますし、便利なので、個人的には今後もExcelをインタフェースとして積極的に使おうと思えるツールです。
ただ、Excelで毎回集計するのは再現性や繰り返しなどを想定するとけっこう面倒ではないでしょうか。Pythonを少し勉強すれば、もう少し簡単にいろいろなことができるようになります。
注意が必要なのは、大量のデータを複数の切り口で集計したい場合、その処理を一つのプログラムでできるかといえば、そうではない点です。中間構造を作り、最終的に目指すゴールに向けて上手くまとめていく必要があります。 それにはどうやってデータを作っていくかを考えて設計する必要がありますが、設計上きれいにできたなと思っても、実際に動かしてみると想定通りに動かないことはもちろんあります。 私自身、いまだにプログラムを書いたあとに「これでは分かりにくいな……」と唸りながら修正していたりしますので、試行錯誤はずっと続けていくものだと思って取り組んでほしいなと思います。
「簡単・便利にしたい」が“学ぶ意味を得る”きっかけに
ところで、冒頭のアンケート調査のプロジェクトが始まったきっかけは、DXやデータ分析に興味を持った方々から、Pythonを教えてほしいと言われたことから始まります。 教わったことで簡単にできそう! と思えるようになり、これまでExcelで苦労していた集計を汎用化すること、そして最終的にWeb化やPDFの自動生成などの可能性を考えられるようになりました。 確かにアンケートを集計するというだけであれば複雑な処理は行われません。ですが、教わったことで発想が変わり、必要なものにまとめるということの重要性を再認識することができたようです。そしてその先でやりたいことや、そういう可能性があると見つけられたことで、学ぶことの意味を得ることができました。
データ分析を新たに学びたいと考えているなら、この事例のように、まずは得た知識をもとに、自分の手元にあるデータや、やりたいことを見つめ、簡単にする方法や、その一歩先に進むためにどのように進めていくかといったことから考えていくと、学ぶことの意味を得るきっかけになると思います。
データ分析はあくまで入り口、ゴールに向けて適切な手段を取ること
データ分析と聞くと難しく考えがちですが、アンケートの集計だろうと、ちょっとした自動化だろうと、データ分析はあくまで入り口でしかありません。ただ取り組むときに、汎用的なツールを使うか、Pythonを使って自分で作るかという選択があるにすぎないのです。
たとえば、私はよくログ解析でPythonを使用します。もちろん、ログ解析ツールにはGoogle AnalyticsやElasticsearchなどさまざまな専用のツールがありますので、そこからログを取得して解析を行うこともありますが、緊急性が高い場合や、生ログを解析して新たな発見をしたいとき、ログの中で特定のデータ(IP、時間、エラーなど)のみを抜き出したいとき、データの共有を容易にしたいといった場合には、Pythonという手段を選びます。
また、サーバ管理者が持つログデータや、マーケティング部門が持つ市場調査データなどがまとまったExcelから、データを集計・分析して、違う見え方に整えてExcelに戻すこともあります。これもデータ分析の一つの在り方です。
分析した結果の表現方法にはWebという手段も確かにあります。格好よく表現したいという気持ちも当然理解できますが、WebにはWebの知識が必要なので、まずはExcelに戻すというような、簡単なゴールを設定することから始めてみるといいと思います。
Pythonで使える便利なライブラリ/モジュール
Pythonにはデータ分析で使用できる便利なツールがたくさんありますが、よく使用されるものとしては次のようなツールが挙げられます。
▼Jupyter Lab/Jupyter Notebook
Webブラウザ上でPythonなどを実行できる。実験ノートのようなイメージで、実験のためにコードを少しだけ書きたいときに使用されている。データサイエンティストが使用するケースが多く、Notebookで作成したものを成果物として顧客に提出することもある。
▼pandas
データ分析を支援する機能が一通りそろったライブラリで、数表および時系列データを操作するためのデータ構造と演算が使用できる。データ分析分野で必須といえる。
▼openpyxl
Excelファイルを変更せずに、読み書きなどの操作ができる。
▼Google Colaboratory
Webブラウザ上でPythonを実行できるサービス。Googleのサーバ上で動くため、Google Driveの容量(15GB)を上限とするなど制限がある。データのバックアップ方法やセッションが切れたときの復元の面倒さに目をつむれば、環境構築や設定をしなくてもすぐに使用でき、CSVでのエクスポートも可能なため使いやすい。
pandasなどのツールは、必要な人全員がある程度使えるようになるといいなと考えています。 たとえばサーバログでいえば、システム管理者でない限り、ログデータだけを渡されてもどう処理したらいいかわからないと思います。ですが、pandasが使えれば、1時間ごとのアクセス数やエラー件数などのデータフレームに入っている情報なら、1行書けばそのデータだけを抜き出して取得することができます。ツールの使い方を習得できれば、データ分析も捗ります。 ツールの使い方にはそれぞれに適した使い方と工夫がありますし、そうした工夫ができるようになるには学習を追加で行う必要があるケースも当然ありますので、ぜひ覚えていただければと思います。
ツールとの付き合い方
上に挙げたような有名なツール以外にもいろいろ便利なツールは存在しますが、実のところ、私は実績があり、信頼できる必要なツールと判断したものしか使用しません。というのも、そのツールがいつまで存続するかわからないためです。 実績のあるものなら突然使えなくなることはなく、バグもほとんどありませんし、安全性に不安を抱くこともありません。もし、やりたいことができるライブラリを見つけたとしても、安全性を不安に思いながら使うくらいなら自分で作るようにしています。
また、Pythonは既存のプログラムを真似して、pandasなどのツールだけあればある程度のことはできてしまいますが、Pythonをより知っていれば、コードで解決できる範囲を増やせます。 できる範囲が広がれば、既存のプログラムを改善して処理にかかる時間を早くすることも可能になります。
さいごに
データ分析をはじめるのなら、難しいゴールを最初から設定するのではなく、興味のあるものや、仕事などの身近なところから始めると手に馴染みやすいのでおすすめです。そうした場合、一定期間で何度も集中的に繰り返すことになるので、しばらく触れなくてもすぐに思い出すことができます。その一方で、馴染みがない場合、少し使わないとあっという間に忘れてしまうことがあります。 私自身、データ分析の分野は5年以上の経験を重ねてきました。忘れてしまって面倒に思うこともありますが、手に馴染んだツールができたことで思い出すのも早くなりましたし、やりたいことができたときに深く学んだことで理解が進み、より馴染んでいく感覚があります。
どうやって勉強すればいいのかと問われると難しい部分ではありますが、まずは初めの一歩として、次のようなことから始めてみてください。
(2)機能分割という考え方を身につけ、要所に応じた手法やツールを選択できるようになる
(3)プログラム化が難しい部分は手段を学びつつ、いったん手動で行うか、できる人に協力してもらう
もし、最初の第一歩をなかなか踏み出せないという方は、スクールや大学で適切な講義を受けるというのもいいでしょう。 本で勉強できるのであればそれでいいと思いますし、動画を見るという手もあります。ただ学びきれない部分はどうしても出てきますので、くじけずに学び続けるためにも仲間作りはけっこう重要です。 仲間を見つける手段としては、コミュニティという手があります。心理的な障壁を感じる方が多いように思いますが、コミュニティに飛び込んで分かることはたくさんあると思いますので機会があれば参加してみてください。
また、データ分析の経験がない方が当協会のデータ分析試験を希望される場合、何から始めたらいいのかわからないと思うのは仕方のないことでしょう。何を目的に勉強していくのかを考えて学習していかないと、勉強のための勉強となって辛いだけですので、目的を決めることを大切に、学習を進めてもらえればいいなと思っています。 試験の主教材である教科書は、データ分析学者がよく使う言葉で書かれており、そして、よく使われるツールの使い方や常識的な使い方も書かれていますので、参考にしていただければと思います。
[PR]提供:Pythonエンジニア育成推進協会