ソースを一元化すること

必要度 ☆☆☆☆
難易度 ☆☆☆
役立度 ☆☆☆

Excelでデータ分析をするときに大切なことの一つに、ソースを(なるべく)一元化する、ということがあります。

データ分析はその名の通り、データを分析するわけですが、分析すると言うことは、そのデータを様々な角度で切ったり貼ったり繋げたり変形したりするわけです。その際、加工されたデータそのものを貼り付けないことが非常に重要です。

データ分析の作業中は本当に様々な加工をするので、今取り扱っているデータが何をどうやって作ったデータなのかが分からなくなることがしばしばあります。システム開発でしたら、逐一ドキュメントに起こしたり、メモを取ったりするのでしょうけれど、分析作業が込み入ってくるとそういう余裕が無くなります。というか、成功するかどうか分からない、やってみないと分からない作業のためにいちいちメモを残す時間がもったいない。そんな時間があるんだったら、一つでも多くの仮説を試してみた方がいい。

データ分析では、「気づきの連鎖」が大切です。データから思い浮かぶことをどんどん集計や可視化に落とし込んでいく。そのスピードが次の気づきを生み、またその気づきからアイデアが湧いて、連鎖して、データが切り刻まれていきます。そういうサイクルで作業をしている時に、ドキュメントを残すとか、メモを取るとかに時間を取られたくない。

誤解があると良くないので注釈ですが、メモを作らないわけではないです。様々なアイデアを試して、1/10か1/100かの確率で成功したら、そこから遡って、「今はどういう分析をしたんだっけ?」とドキュメントに起こしにかかります。その時・・・自分が何をやって辿り着いたのか、見失ってしまう。データはできている、うまくいっている、けれど、再現できないという事態に陥ります。さぁ、大変!

このとき、これはExcelでもRでもPythonでも何でもそうなのですが、中間データをコピペしない、全ての操作を元データから追えるようにしておくと、あとはその加工を逆に辿っていけばよい。データは再現できますし、ミスがあっても気づけます。途中で値のコピペを挟んでいると、連鎖がそこで駐まってしまうんです。このデータをどうやって作ったのか、分からなくなってしまう。

Excelでは、ワークシート関数をフル活用します。データは基本的にソースのみ。そこから、全ての加工はワークシート関数を使って行います。ですので、もしソースデータに間違いがあれば、それを入れ替えるだけですべて再計算されます。データ分析では、ソースが間違っていることもしばしば、いや、かなり高頻度で出くわすので、データを入れ替えればOKなワークシートを作っておくことはかなり生産性を高めます。

例:ヒストグラムを作る

データはソースデータのみの例として、ヒストグラムを作ってみます。

通常、Excelでヒストグラムを作る場合は、メニューの[データ]→[データ分析]→[ヒストグラム]を使います。が、これはNGです。

なぜなら、ヒストグラムの結果は値が貼り付けられてしまい、元のデータとの繋がりが無くなってしまうからです。繋がりが無くなってしまうと、追跡できなくなってしまうデメリットの他、「データを入れ替えたい」とか、「データを切る区間幅を変えたい」とかいった場合に即座には対応できなくなってしまいます。

そこで、次のようなワークシート関数を使います。

=COUNTIF($C$9:$C$1008,"<="&F9)

この中の、$C$9:$C$1008は元データの区間で、F9はデータをヒストグラムに分けるポイントです。COUNTIFはレコード数を数えるワークシート関数で、条件が"<="&F9、ということは、この関数は「$C$9:$C$1008の中で、値がF9以下のものの個数を数えよ」という意味になります。これを、F9を少しずつずらしながら沢山計算すると、累積のヒストグラムができあがります。最後にこれを差分化すれば、求めるヒストグラムになります。

このように、全てをワークシート関数を使って作ることで、元データとヒストグラムとの関係性も明確ですし、データの入れ替えやヒストグラムの書き換えなども容易になります。参考までに、サンプルのワークシートを貼り付けておきます。

他の言語でも同じ

なお、データ分析をデータソースから一気通貫でできるようにするという思想は、他の分析ツール、例えばRやPythonなどでも同じです。必ずデータソースから一気に回るスクリプトを作っておくこと。それを作りながら分析をすることです。データの流れが切れると、本当に、なんでそのデータができたのかわからなくなってしまいます。

逆に言うと、その流れが切れてしまうようなツールはデータ分析ツールには不向きです。例えばSPSSなども、アドホックにマウスでぽちぽちしながら使うのではなくて、必ずスクリプトを作りながら、同じ事を後から再現できるようにしておくことが大切です。また、その直前までのデータをどのように作ったのかを必ずドキュメント化し、また、ちょっとだけ変更した場合でも、「私はこの操作を必ず忘れる」と思ってドキュメントを修正することです。絶対に忘れます。

この記事が気に入ったらサポートをしてみませんか?