便利な関数は利用する

プログラムを1から書くのは理解を深める上で重要だと思いますが、よく使われるデータ処理のための関数は、探せば大抵出てきます。

例えば、任意のリストに含まれる数値の平均値と分散を求め、小数第4位までを出力する時、全部自分で書くと例えば以下のようになります。

これを、numpyと呼ばれる科学計算のためのモジュールを使うと、以下のように書き換えることができます。

スクリプトがスッキリするだけでなく、実績のあるモジュールを使用することで、コーディング時におけるミスを防ぐことが出来るのも利点の1つです。

また、モジュールによっては、中身がC言語やfortranで実装されているため、pythonで全てを1から書く場合に比べて高速化も期待できます。

 

データ解析が捗るモジュール

以下に、私がよく使っているモジュールと、用途を簡単に列挙してみます。

math データを処理する時に四則演算では物足りない時に使います。三角関数や対数などが使えます。
numpy データを処理する時にmathでは物足りない時に使います。行列が使え、リスト(配列)の処理が楽になり、平均や分散を求める関数等も使えます。
matplotlib  データをグラフに描画する時に使います。グラフ作りを自動化したい、何個もまとめて作りたいと思った時に使います。
glob  特定のファイル名を持ったファイルを指定したい時に使います。一つ一つファイル名を指定しなくても、複数のファイルを順番に処理できるようになります。
re  文字列を扱う時に正規表現を使いたいときに使用します。複雑なテキストファイルから特定のデータを抜き出したい時などに使います。
struct バイナリデータを扱えるようにします。 実験に使うデータロガーでバイナリファイルを出力した場合はこれがないと処理できません。
os  ファイルの有無の確認などに使います。
sys  スクリプト実行時に引数を渡したいとき等に使います。
datetime  日時を扱いたい時に使います。処理したデータに処理日を書き込んだりするのに使います。
multiprocessing 並列処理でがんがん計算を回したいときに使います。処理したいデータがいくつもある時に使います。
logging スクリプト実行中に処理状況を表示(記録)したい時に、print( )では物足りなくなったら使います。
easygui 見た目にこだわらないGUIを超手軽に用意したい時に使います。

 

globの使用例

特定のファイル名を持ったファイルを指定したい時に使います。一つ一つファイル名を指定しなくても、複数のファイルを順番に処理できるようになります。

 

multiprocessingの使用例

並列処理でがんがん計算を回したいときに使います。処理したいデータがいくつもある時に使います。

最大で、OSが認識しているコア全部を計算を回すことが出来ますが、他の動作がもっさりするので1コア分くらい余裕を持たせるといいと思います。