• 一般社団法人Pythonエンジニア育成推進協会 顧問理事 寺田学氏

    著者:寺田学
    一般社団法人Pythonエンジニア育成推進協会 顧問理事

一般社団法人Pythonエンジニア育成推進協会(以下、当協会)の顧問理事の寺田学です。 私は試験の問題策定とコミュニティ連携を行う立場です。 昨今、よく話題にあがるデジタルトランスフォーメーション(DX)においては、企業の経営方針や施策の判断基準に使用するためにデータの活用が大切だと言われています。 その一方で、どうデータを作り出すか? どんなデータが有効か? どんなデータフォーマットが適切か? といったことを考えるのを苦手にしている人が案外多いと感じることがあります。 そこで今回はPythonを使ってのデータ作成、活用についてお話しします。

分析、機械学習することを意識したデータ収集と保存形式が大事

DXという言葉の定義や企業文化も含め、デジタルをどう活用していくかというのは正直なところ難しい側面はありますが、この点については個人的には言及しません。 DXにおいて、以前からデータが重要だと言われていたことから、どこかで使えるかもしれないと様々なデータを貯めている企業は多いと思います。 ただ、貯めるにしても、どう取っておけば利活用しやすい形式になるのかを考えることが重要です。

たとえば、数値データが表形式になっていれば平均値を出すのは容易ですし、さらに複数年分のデータがあれば傾向を分析できる可能性も上がります。そして、この表のつくり方が重要です。

具体的に言うと、行と列に設定する項目と、データを蓄積するのに最適な方法を考えます。 そして次に、人と機械とでは見やすいデータの形式が違うことを理解した上で表を作ることが大切です。たとえば、Excelで表を作る際、1つの値を入力するのにセルを結合すると人にとっては見やすくなったとしても、機械には結合されたセルを理解できません。 こういったことを理解してデータを作ることができて初めて、きちんとデータを集めていると言える状態になり、後々、機械学習や分析をする際に使いやすくなります。

人と機械では理解できる方法が違うことを考慮したデータの加工ポイント

データの形式にはいろいろな種類があります。 たとえば、普段業務で使用するものでいえば、Wordやメールなどのテキスト(文字列)で表されるものがあります。それ以外には年齢や時間、運動計測値、気温などの数値で表すもの、音声、画像、動画もデータです。

アンケート調査結果のような生データであれば、文字列やチェックボックス、プルダウンで収集するのは問題ありませんが、集めたデータを利活用しやすい形にして保存することは重要なポイントになります。

データ加工のポイント1:サーバログなどの時系列があるデータの場合

昔からよく利用されているデータに時系列で示されたログデータ(行動履歴、アクセスログ、サーバログなど)があります。 アクセスログの場合、テキストでどんどん追記されていくため、そのままでは処理がしにくい状態です。だからこそテキスト文字列を日付や時刻、メソッド、ステータス(成功・失敗)などの情報をパースして利活用しやすい形にします。

データ加工のポイント2:文字列、カテゴリデータの成型

数字であれば機械学習やデータ分析に活用しやすいのでわかりやすいのですが、文字列やカテゴリデータ(例:成功・失敗・不明など)の場合、そのまま機械学習にかけられるかはアルゴリズムによる部分が大きいです。 そのため、こういったデータはカテゴリ用に列を増やし、その値をTrue/Falseや数値(1,0)で表現します。こうしておけばExcelであればSUM関数を使えばあっという間に件数がわかりますね。 このようなポイントでデータを作ると、pandasやscikit-learnで非常に便利にできるようになります。

晴れ くもり
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

これはOne-Hotエンコーディングという考え方で、データ分析の世界では当たり前のこととして扱われており、機械学習の世界でもこれが望まれているケースが多くなっています。

ちなみに、1つの項目に対して、1,2,3で表現してもいいではないかと思うかもしれませんが、この場合、量的変数なのか質的変数なのかわからず、処理できないケースが出てきます。 たとえば、アルゴリズムによっては1と3は遠い、1と2は近いという判断をするものもありますし、そもそも1,2,3と扱う意味がないケース、扱ってはいけないケースもあり得るので、True/Falseや数値(1,0)の方が安全です。

生データ加工にPythonを使えば楽に利活用しやすい形にできる

こういった生データからの加工にPythonの力を使うと楽にすることができ、容易に今後使いやすいデータにそろえることができます。 もちろん、どのデータで保存し次のステップに行くかには様々なパターンがありますが、アクセスログを表形式にしていくのであれば、表形式として各文字列を分割するなり、何かしらのツールを使うなりして、意味のある形で保管していくことになります。 RDBMS(リレーショナル・データベース・マネジメント・システム)の世界でいえば、カラム名をきめて適切なデータ型で入れることが必要になるので、特に意識しなくてはなりません。そのため、持っているデータがきっちりと理解されやすい形で保存されていれば、そのあと使いやすいものになります。

たとえばpandasを使ってアクセスログをデータフレームにできれば、Excelやcsvに書き出せますし、そのまま機械学習ができます。また、Excelと比べて自動化しやすいため、サーバサイドで動かしながらも処理させることもできます。

さいごに

多くの企業はテキストや画像、音声、紙など多くのデータを持っています。 それらのデータに対して、どのように保管すればより便利か、今後使いやすいかについて手法を含めて考え、保存していくことがDXの最初の一歩につながっていくと考えています。 そして、DX戦略において、データ分析や機械学習をするために、データをどう取っておくか、どういった形で持つか、そのデータをどう考えるか、データの特徴は何かといったことを知っておかなければ次のステップに進むことはできません。 良いデータを、良い形にしておく、最初に作るときから利活用することを考えたデータにしておくという事が大事であることを覚えておきましょう。

そして、Pythonはそれを支える技術の一つであり、Pythonやライブラリを使いこなすことができれば、データに目を向けやすくなるだけでなく、自動化するなどの便利さを手に入れることもできます。 もちろん、Pythonに限らず、ツールは他にもたくさんあります。何かしらのツールを使いこなすことがDXにつながっていくと思いますので、試してもらえればと思います。

余談ですが、私はよくテキストファイルで文章を作成し、ExcelやWord、HTML、PDFなどの受け取る相手が希望する形式にするためのスクリプトによって変換して提出しています。 文字を書くこと自体はExcelやWordにするか、テキストファイルにするかの違いでしかありませんが、レビューのしやすさや、コメントの残し方、差分の確認、変更履歴の見やすさ、そのあとの利活用を考えればテキストの方が都合よく、そして、エンジニアとしてもテキストの方が扱いやすいことから、そうした方法で運用しています。 このテキストの時点では自分たちが加工しやすいフォーマットを決めて運用しますが、最終的には相手方が希望するフォーマット、ファイル形式での納品が必要になりますので、スクリプトによってコンバートすれば簡単に納品用のファイルを作成できます。 これもまたDX推進に役立つ方法の一つとして知っておいていただくと便利かと思います。

当協会の最新情報は公式サイトか、公式Facebookページでご覧いただけます。FacebookページではPythonに関連したニュースもお知らせしていますので、ぜひフォローしてみてください。また、YouTubeチャンネル「Pythonエンジニア認定試験」では、私が試験概要や学習のコツをお話ししたものや、合格した方のコメント動画を公開しています。こちらもぜひご覧ください。

[PR]提供:Pythonエンジニア育成推進協会