jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

データハンドリングはスクリプトを利用して

欠損値や外れ値の設定、数量データをカテゴリーデータに変換、データの並べ方の変更などいわゆるデータハンドリングについて思うところをまとめておきます。

データハンドリングは、データ解析のなかでも最も大事

今更強調して言うことでもないかもしれませんが、データ解析でもっともややこしく、ミスしやすいがミスできないのがデータハンドリング作業です。
データサイエンティストの小副川 健氏がZDNetの記事でも述べているように、たくさんのデータを統計解析にかける場合、統計解析そのものよりもデータハンドリングに時間がかかります。japan.zdnet.com

データハンドリングの方法

統計解析の前段階での処理をすべてデータハンドリングと考えると、この段階の手続きとして以下の2つが考えられます。

  • 表計算ソフトを利用して、データを見ながら直接、手作業でデータ処理する
  • スクリプト言語などを利用して、間接的にデータを処理する

私としては、後者のやり方を強く推奨したいです。いくつか理由があります。

間違いを見つけやすい

どんな作業でも間違いは起きます。例えばタイプミスです。データを直接操作した際に起きたミスは、元データとの比較に手間がかかり、ミスを見つけにくいです。これとは対照的に、スクリプトにおけるタイプミスは、そもそもスクリプトがうまく走らずにエラーが出るので、すぐに気づきます。また、元データとの比較もスクリプトで行えば、比較的シンプルな操作ですみます。

データ処理過程のすべてを記録し、完全な再現ができる

手作業の作業内容もすべてログにとればいいのですが、作業自体とログが別になるため、手間がかかります。一方、スクリプトを利用すると、スクリプト自体が作業ログを兼ねているので、余計な手間がかかりません。
このポイントについてはOno Keiichiro氏のスライドでより詳細に議論されています。

www.slideshare.net


類似のデータ処理については、処理時間を大幅に短縮できる

データを直接操作する場合、その作業の分だけ時間がかかります。そしてこれは作業に慣れた後もそれほど短縮されません。一方、スクリプトを利用すると、1回目の作業では、スクリプトの作成に多くの時間を割かれます。ただし、同一または類似の処理は、1回目のスクリプトを少し変えるだけで流用できることも多く、大幅に作業時間を短縮できることも多いです。

まとめ:データハンドリングはスクリプト利用で

以上のように、今回はデータハンドリングの重要性と、スクリプトを利用したデータハンドリングのメリットを考えてきました。例えば統計解析ではスタンダードなR言語を利用するとデータハンドリングと統計解析の両方を同じ言語で行うことができます。このブログでも今後、R言語を利用したデータハンドリングについて少しずつまとめていこうと思います。