# はじめに

## 実験データをどう扱うか

実験では普通、測定によって、たくさんのデータを得ます。この 「実験データ」というのは、たいてい次のような特徴を持っています。

* 測定結果としての数値がたくさんある。
* 異なる測定条件で取った、似たような結果がいくつもあるので、整理の必要がある。
* そのままではデータの意味がわかりにくいため、加工・解析の必要がある。
* そのままではデータの意味がわかりにくいため、グラフ（本来、グラフ・プロット・チャートという言葉は微妙に意味が異なりますが、この説明では適当に使っています）を描く必要がある。

たくさんのデータを、人間が手計算でいちいち加工したり、手でグラフを描いたりするの は非効率的で間違いのもとです。そこで、実験データを簡便に素早く整理・加工したり、 グラフを描いたりする機能を持った「ツール」の助けを借りることになります。そのようなツールをここでは、「解析ツール」と呼ぶことにしましょう。世の中には、たくさんの解析ツ ールがあります。その機能はそれぞれ異なっており、得意なこと・不得意なことが あります。どのツールも、使いはじめは戸惑うことでしょうが、慣れてくると何も考えなくても直感的に使えるようになってきます。

## なぜPythonか

世の中には、解析ツール（あるいは、解析ツールとしても使える何か）がたくさんあります。Microsoft Excel, Igor pro, Origin, MATLAB, GNU Octave, Scilab, Mathematica, gnuplot, Rなど、名前をあげればキリがありません。それぞれ一長一短ありますが、大きく分けて

* マウスやタッチ操作を使った、グラフィカルな操作に比重が置かれているもの
* 主にキーボードを使った文字による操作（ ≒ プログラミング）に比重が置かれているもの

の2種類があります。

前者はとっつきやすく、直感的にすぐ使い始めることができるという利点があります。しかし、少し発展的なこと（例えば、同じ解析を膨大なデータについて自動的に行うとか、あるいは、複雑な解析を行うとか）をしようと思うと、結局、何らかのプログラミング的な操作を駆使する必要があります。大抵の人は一旦、ここで立ち往生してしまいます。慣れ親しんだグラフィカルな操作との違いがあまりにも大きいためです。実際には、実験データを扱うときには、複雑な解析をすることがほとんどです。だったら、はじめから文字コマンド操作を基本に据えたほうが、遠回りなようで結局は近道になります。

後者は、初心者にとってわかりにくく、一見難しいのですが、最初の壁さえ超えてしまえば、一歩一歩着実に操作を学んでいくことができます。複雑な操作や自動化とも相性が良いですし、他の人が作ったプログラムをかんたんに再利用できるのも便利です。

この解説では、pythonを使って実験データを解析する方法を紹介します。pythonは、プログラミング言語の一種で、世界的に人気があります。Instagram や Youtube など有名なサイトの裏でも一部使われており、web 開発用の標準的言語の一つです。シンプルであること、読みやすい ことなどを特徴としています。元々、web 開発用に人気があったのですが、近年のデータサイエンスや人工知能といった、「なんとなく人気がある」分野でよく使われていることから、IT 分野に限らない、幅広い業種の企業の間で、python を使える人間の需要が高まってきています。

科学技術分野でも、昔から python は使われてきたのですが、上述の人気の高まりとも相まって急速に科学技術分野用途での利用者が増えています。利用者が増えると、python を科学技術分野で便利で使うための仕組みやツールが沢山開発されるようになり、ますます 便利になるので利用者がもっと増えるという好循環が生まれています。ぜひこの機会に python の基礎を身に着けましょう。

## 怠惰な（物理の）実験科学者に向けて

この文章では、怠惰な人向けにpythonを使って実験データを解析するための解説をまとめました。実験データといっても、実際には分野によって事情はぜんぜん異なると思います。そこで、ここでは、私の専門分野である物理（の中の特定の分野）から想定される範囲で、基本的な事柄を中心に紹介するにとどめておきます。また、***手間暇を節約できる手段がある場合には、それを積極的に利用していきます***。（少なくともはじめのうちは）pythonをツールとして使うことが目的であって、マスターすることが目的ではないからです。

## 他の解析ツールとの違い

解析ツールによって、使い勝手は全く異なります。私はIgor Proをずっと愛用してきたので、Igor Proとpythonを用いた解析との違いについて、かんたんに紹介したいと思います。Igor Proを使ったことが無い人は読み飛ばしてください。Originなど他のグラフィカルな解析ツールを使っている人の参考にもなるかもしれません。

Igor Proの良さは

* グラフィカルで直感的に操作できること。そのため、意識的に使い方を勉強しなくても、何となく使えてしまいます。
* 実験データそのものも含めて、解析の一連の経緯を、全て一括でまとめて保存しておき、あとから解析の続きを行うことができること（Experimentファイルという概念。競合ソフトであるOriginは使ったことが無いのですが、おそらくOriginでも似た機能としてprojectがそれに対応する？）

の2点に集約されると思います。前者については、すでにその長所短所を説明しましたので、後者についてだけ。Igor ProのExperimentファイルでは、大元の実験データに加えて、グラフの外見やデータの操作過程、とにかくデータ解析の過程全てをまるごと保存しています。データ解析の一連の流れの、ある瞬間のスナップショットを取るイメージです。そのため、作業を一旦中断することには何の抵抗もなく、いつでも作業を中断して、いつでも作業を再開できます。

良いことばかりのようですが、一方で、以下のような欠点もあります。

* 解析を繰り返すうちに、何をやっているのだか分からなくor忘れてしまうことがあります。特に数ヶ月ぶりにExperimentファイルを開いたときに、作業内容が思い出せいないということが往々にしてあります。そのため、あとから、全く同じ解析過程を別データに施したいのだが、「全く同じ解析過程」が何だったかわからない、なんて事になりがちです。
* 作業過程が全て保存されるため、Experimentファイルのサイズが非常に大きくなります。また、もともとの実験データの容量が大きい場合に、Experimentファイルではそれをまるごと自身の内部にも保存するので、全体の容量としては2倍近くになってしまうこともあります。

Pythonを用いたデータの解析の長所短所は、ちょうどこれらの裏返しになっています（今のところは）。そのため、その長所短所を意識した作業を心がけましょう。例えば、後で説明するようにnotebookファイルを使い回さない、セルの実行順のルールを自分なりに決めておく、などの注意が必要でしょう。
