Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
45
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Pythonデータ分析勉強会 第1回資料

Pythonを使って、初めてデータ分析をする方へ向け資料を作りました。

Pythonデータ分析勉強会 第1回資料
Pythonデータ分析勉強会 第2回資料
Pythonデータ分析勉強会 第3回資料

Pythonのインストールは結構時間がかかります。PCにPythonをインストールしなくても、Googleアカウントを持っていれば、Colaboratoryですぐに使えます。

本稿のゴール

本稿では、データ分析の題材としてMT法を取り上げています。
MT法は品質工学で考案された手法で、正常データを正規分布と仮定して異常検知しています。

MT法では、行列の計算や可視化等、データ分析の基本的な内容が含まれているため、
MT法のコードが書けるようになれば、Pythonでデータ分析が進められるようになります。

全三回の資料を見れば、以下のようなMT法のグラフが作れるようになります。

figure_1.png

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回の資料を参照してください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
45
Help us understand the problem. What are the problem?