Pythonを使って、初めてデータ分析をする方へ向け資料を作りました。
Pythonデータ分析勉強会 第1回資料
Pythonデータ分析勉強会 第2回資料
Pythonデータ分析勉強会 第3回資料
Pythonのインストールは結構時間がかかります。PCにPythonをインストールしなくても、Googleアカウントを持っていれば、Colaboratoryですぐに使えます。
#本稿のゴール
本稿では、データ分析の題材としてMT法を取り上げています。
MT法は品質工学で考案された手法で、正常データを正規分布と仮定して異常検知しています。
MT法では、行列の計算や可視化等、データ分析の基本的な内容が含まれているため、
MT法のコードが書けるようになれば、Pythonでデータ分析が進められるようになります。
全三回の資料を見れば、以下のようなMT法のグラフが作れるようになります。
#print文
まずは、print文です。データ分析では、必ず使うので覚えましょう。
##文字列の場合
print("a")
と入力すると、以下のように出力されます。
a
**"**で囲むと文字列が出力されます。
=で置き換えることもできます。
A = "abc"
print(A)
出力↓
abc
##数字の場合
数字の場合は直接入力しても大丈夫です。
A = 1
print(A)
出力↓
1
#配列
配列もデータ分析では必ず使います。覚えましょう。
A = [1, 2, 3]
,の後にスペース入れていますが、スペースはいくつ入れても大丈夫です。
プリント文で出力すると、以下のようになります。
print(A)
出力↓
[1,2,3]
##中身のアクセス
配列の中身にアクセスしたい場合は、以下のように**[数字]**で入力します。
A = [1, 2, 3]
print(A[0])
出力↓
1
配列の1個目は0でアクセスできます。他のプログラミング言語でもそうですが、Pythonでも一個目は**0から数えます。**以下のように、中身を変えることも可能です。
A = [1, 2, 3]
A[1] = 10
print(A)
出力↓
[1,10,3]
#append
appendは、ファイル整理の際によく使います。
よく見る使い方は、空の配列を用意して、数字をどんどん追加していく方式です。
A = []
A.append(1)
A.append(2)
Aの中身を見てみます。
print(A)
出力↓
[1,2]
ちゃんと1と2が格納されています。
#for文
for文はコード中に必ず出てくる文です。
for文は、何回も繰り返しで処理したいときに使います。
aという文字を5回出力させたいときは、以下のようになります。
for i in range(5):
print("a")
ポイントは、1行目の終わりに「:」を使っていること、2行目でスペース(ここでは4つ)を入れていることです。これらは必ず守らなければなりません。
また、rangeに渡す数字は、繰り返し処理したい回数を入れてあげてください。(ここでは5を入力)
for文は、range以外の組み合わせでも使えますが、本稿では「for i in range(?):」をセットで覚えましょう。
出力↓
a
a
a
a
a
for i in range(?):の「i」にはどういった意味があるのでしょうか?
具体的にiをprintさせると以下のようになります。
for i in range(5):
print(i)
出力↓
0
1
2
3
4
iにはrange(5)の中身が順番に代入されています。
試しにiの2乗をprintしてみます。
べき乗は「**」を使います。
for i in range(5):
print(i**2)
出力↓
0
1
4
9
16
#for文補足 10/16追記
for文は分かりにくいので補足します。
for文はinの後に配列を渡す形式です。
for文はその配列の個数分だけ処理しますので、以下の2文は同じ出力となります。
for i in [0, 0, 0]:
print("abc")
for i in ["A", "B", "C"]:
print("abc")
出力(2つとも同じ)↓
abc
abc
abc
上記の2文は、渡した配列の個数は「3個」と等しいので、同じ出力となっています。
しかし、渡した配列の個数は同じでも、配列の中身が違います。配列の中身は「i」に順番に入ってきます。
従って、「i」を出力させると、出力文は3回と同じですが、内容は異なります。
for i in [0, 0, 0]:
print(i)
出力↓
0
0
0
for i in ["A", "B", "C"]:
print(i)
出力↓
A
B
C
##for文 応用編 10/16追記
X=[]という配列に、リアルタイムにデータを入れたとします。
そして、Xの中身を一つずつ見て、何かしらの演算をしたいとします。
例えば、X=[10, 12, 13, 15]と考えてください。そして、Xの中身を2倍にしたいと想定します。
その時、for文を使ってXの中身を見たいのですが、Xにいくつデータが入っているか、こちら側は把握できていません。
Xのデータ数が分からない場合は、以下のように「range(len(X))」を使うと、Xを最初から最後まで見ることができます。
X = [10, 12, 13, 15]
for i in range(len(X)):
X[i] = X[i]*2
print(X)
出力↓
[20, 24, 26, 30]
len()は配列の個数を返してくれます(Xが1次元の場合)。従って、この場合はlen(X)=4となります。
まとめると、
for i in range(len(X)):
は以下とイコールです。
for i in range(4):
従って、X[0],X[1],X[2],X[3]を順番に見ることが可能になります。
配列の個数が分からない場合は、「range(len(X))」+「X[i]」を使いましょう。
#if文
if文もfor文と同じくらいよく使う文です。
if文は条件を設定して、その条件に合致するかで分岐構造にすることができます。
試しに、5より大きい数字か判別するコードを書いてみましょう。
A = 8
if A > 5:
print(A,"is bigger than 5")
else:
print(A,"is smaller than 5")
if文もfor文と同じく、最初の行は「:」で終えて、次の行ではスペース(ここでは4)を入れています。
また、ifとelseをセットで使うことが多いです。ifの条件を満たしていれば次の行が実行されますし、
満たしていなければ、elseの次の行が実行されます。
出力↓
(8, 'is bigger than 5')
Aを8→3に変更してみましょう。
A = 3 #8→3に変更
if A > 5:
print(A,"is bigger than 5")
elif A < 5:
print(A,"is smaller than 5")
出力↓
(3, 'is smaller than 5')
ちなみにコメントアウトは「#」で入力します。コメントアウトとはPythonで読み飛ばしてくれるところです。
「#」を使えば、プログラミング中にメモを残しておくことができます。
#演習
・1から10までを数え上げるプログラムを作りましょう。
・そして、偶数であれば「G」、奇数であれば「K」と出力されるようにしましょう。
<ヒント>
・for i in range(???):を使いましょう。
・剰余(割った余り)は**「%」**を使います。(例:10を2で割った余りは→「10%2」)
<正解出力>
(1, 'K')
(2, 'G')
(3, 'K')
(4, 'G')
(5, 'K')
(6, 'G')
(7, 'K')
(8, 'G')
(9, 'K')
(10, 'G')
正解コードは第2回の資料を参照してください。