1-4.まずはExcelができるようになろう
私の経験上,Excelが出来ない人にはプログラミングは出来ないと考えています.というのも,プログラム出来るものは基本的にExcelで書くことが出来るからです.コードを書く必要があるのはExcelで書くのが面倒で複雑な条件分岐や繰り返し計算,Excelで処理ができないような膨大なデータ量を扱うという場面だと考えています.まずは,準備体操としてExcelを使ったデータ整理をしてみます.
例として,以下のようなセルが準備されているとします.
Excel(セル)
| A | B | C | |
| 1 | 1 | 6 | 4 |
| 2 | 4 | 8 | 1 |
| 3 | 5 | 3 | 2 |
Python(配列)
| 0 | 1 | 2 | |
| 1 | 1 | 6 | 4 |
| 2 | 4 | 8 | 1 |
| 3 | 5 | 3 | 2 |
Excelでは,これらのセルから色々な関数を使って目的の値が出せます.
- MAX(A1:C3) = 8
- MIN(A1:C3) = 1
- SUM(A1:C3) = 34
Pythonではこの数字の塊を「配列」と呼んでいます.今回のケースでは,3行3列の配列となります.更に,プログラミングでは,この配列が変数として名付けられています.例えば,これをJAPANと命名すると,
- MAX(JAPAN) = 8
- MIN(JAPAN) = 1
- SUM(JAPAN) = 34
このJAPANについて5以上なら1,5未満なら0とした配列に変換しましょう.EXCELならIF関数でできることです.
for文とifによる分岐
- Result = 3X3
- for i in range(3):
- for i in range(3):
- if JAPAN[i][j] >= 5:
- Result[i][j] = 1
- else:
- Result[i][j] = 0
- #長い
numpyによる処理
- Import numpy as np
- Result = numpy.where(JAPAN >= 5,1, 0)
どちらの例もExcelの場合と同じ答えを出してくれます.左の例はコンパイル言語的な記法であり,スクリプト言語としては非常に悪い書き方になります.for文やif文、そもそもとして長いコードは可読性だけでなく,計算速度も非常に遅くなる原因となるので避けたほうがいいというのを頭の何処かに覚えておいて下さい.一方で、右の例は一行でコードが完結しているPythonic(パイソニック)で分かりやすいコードであることが分かります.ここで用いているnumpy(ナンパイ)はいわばPythonのアドインのようなものです.このように,普段からExcelを使い慣れている人なら,Pythonのコードも既にある程度理解できると思います.
最後に学術分野では非常にユーザーの多いMATLAB(マットラボ)について言及しておきます.MATLABはPythonと同様に可読性の高い言語であり,多くの大学がライセンス契約を結んでいます.そして,Pythonと同様に豊富なライブラリがあります.しかし,MATLABは高価であり,一研究室で購入するには負担感が大きいため,大学で一括ライセンス購入などの処置が取られています.しかし,Pythonはオープンソースのフリーウェアであり,ライセンス契約なしにどこでも使用することが出来ます.この点がMATLABとPythonの大きな違いと言えるでしょう.