機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理

本コンテンツは機械学習入門講座を各所でやっている内容の一部を、受講者の皆様の予習・復習のために公開しているものです。対象読者は、Pythonをやったことがほとんどない方やつまづいてしまっている方でも概ね実行できるようになるレベルで書いています。解説は講座でそれなりに詳しくしているため、コードにコメントする以上の説明はあまり記述していません。

各コードはJupyterシリーズやiPythonで記述しながら実行できるように記述しています。

AI/DX/機械学習/Pythonのアドバイザリー、社内研修、セミナー等承っております。
webサイトからお問い合わせください。
[BeeComb Grid株式会社](https://beecomb-grid.co.jp/)

# 機械学習入門シリーズ記事

1. [機械学習入門 vol.1 Pythonの基礎１ 記述とデータ型](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0) -> 講座第3回に相当
1. 機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理 -> 講座第3回に相当
1. [機械学習入門 vol.3 Pythonの基礎3 関数・クラス・モジュール](https://qiita.com/mychaelstyle/items/d5506f372219b162c8c8) -> 講座第3回に相当
1. [機械学習入門 vol.4 表（Pandas）の基本操作](https://qiita.com/mychaelstyle/items/96ea9e8c679f908205ab) -> 講座第3回/第4回に相当
1. [機械学習入門 vol.5 グラフ(Seaborn)の基本操作](https://qiita.com/mychaelstyle/items/5acf7fdb1f11ba5478d1) -> 講座第3/4回に相当
1. [機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9) -> 講座第4回に相当
1. [機械学習入門 vol.7 回帰 - ランダムフォレストとパラメータチューニング](https://qiita.com/mychaelstyle/items/48238d70c7602ca14a0c) -> 講座第4回に相当
1. [機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc)](https://qiita.com/mychaelstyle/items/fc51cf384b517fb405f8) -> 講座第4回に相当
1. [機械学習入門 vol.9 判別（分類）](https://qiita.com/mychaelstyle/items/34ca447a625c752dbfda) -> 講座第5回に相当
1. [機械学習入門 vol.10 次元削減](https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d) -> 講座第6回に相当
1. [機械学習入門 vol.11 クラスタリング](https://qiita.com/mychaelstyle/items/89d04ce33c3e05d9545c) -> 講座第6回に相当

# 機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理

本講では、Pythonを使ってデータを読み込み、最低限の分析や機械学習に必要なPython知識だけを説明していきます。

# 条件分岐と比較演算子・論理演算子

他言語と同様に条件分岐はif構文を使って記述します。ブロック内は段下げ（インデント）で表現するのが他の言語にない記述の特徴です。

```python
val = 1
# if分岐
if  1 == val  :
   # valが1の時に行う処理。インデントが続く限りこの条件の範囲内の処理とみなします。
elif  2 == val  : # else if、「そうではなくてもし」の条件はelifと省略して記述します。
   # valが2の時に行う処理。はifブロックと同様です。
else : # elseで上記どの条件にも合わなかった場合の処理を記述します
   # valがそれ以外の時に行う処理
```

ifは```if 条件 :```で記述します。条件に記述できるのはBoolean型で、真偽（True/False）が結果で取得できる文を利用できます。True/Falseを結果で取得できる演算の代表としてよく使われる比較演算子を紹介します。比較演算子の記述を「評価式」と言ったりします。

```python
x, y = 8,10
print(x == y)    # xとyが等しい
print(x != y)    # xとyが等しくない
print(x > y)     # xがyより大きい
print(x < y)     # xがyより小さい
print(x >= y)    # xはy以上
print(x <= y)    # xはy以下

# in
x, y = 8,[1,1,2,3,5,8,13,21]
print(x in y)     # xはyの要素に存在する
print(x not in y) # xはyの要素に存在しない
```

条件を複数あわせたい場合は、論理演算子のand, or, notを利用します。

```python
x, y = 8,10
print(x != y and x >= y)    # xとyが違って且つxはy以上
print(x == y or x <= y)     # xとyが等しいまたはxはy以下
print(x != y and not x >= y)    # xとyが違って且つxはy以上ではない
print(not x == y or x <= y)     # xとyが等しくないまたはxはy以下
```

上記を併せて活用するとこんな感じで使えます

```python
x, y = 8,10
if x != y and x >= y :
    print("xはyより大きい")
elif x == y or x <= y :
    print("xはyより小さいか同じである")
```

# 繰り返し処理

for文による配列（または、イテラブルオブジェクト）の繰り返し処理は[vol1](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0)でやりました。

```python
# 配列を繰り返し処理
for value in array : # for文は 要素 in イテラブルオブジェクトでコロンを記述します
    print("要素の値:")     # 繰り返し処理を行う部分を全て段下げ（インデントします）
    print(value)          # 繰り返す処理は複数行書くことができます。同じインデントの塊をブロックと言います。
print( "end" )            # 段下げを止めると繰り返し処理の中ではないと判断されます。

# タプルを繰り返し処理する記述も全く同様です
for value in tpl :
    print("要素の値:")
    print(value)
```

forによる繰り返しは、イテラブルオブジェクトの要素の数だけの繰り返しになるため、指定回数の繰り返し処理を行いたい場合などはビルトインのrange関数を使ったりします。この関数が生成するのは以上、未満である点に注意してください。

```python
# range関数で1,2,..5までの配列を生成して50回繰り返し処理
for val in range(1,6) :
    print(val)
```

また、while文で、評価式が真（True）の間ずっと処理を繰り返すこともできます。

```python
# while文
x = 0
while x < 10 :
    print(x)
    x = x + 1
```

評価式の代わりにTrueを入れておいて、途中に任意のタイミングで終了するやり方もあります。`break`を利用します。

```python
# while文
value = 1
while True:
    print(value)
    value += 1     # 1足す
    if value > 3:  # 3より大きくなったら
        break      # 繰り返しを終了する
    else:
        continue   # 繰り返しを続ける
```

# 機械学習入門シリーズ記事

1. [機械学習入門 vol.1 Pythonの基礎１ 記述とデータ型](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0) -> 講座第3回に相当
1. 機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理 -> 講座第3回に相当
1. [機械学習入門 vol.3 Pythonの基礎3 関数・クラス・モジュール](https://qiita.com/mychaelstyle/items/d5506f372219b162c8c8) -> 講座第3回に相当
1. [機械学習入門 vol.4 表（Pandas）の基本操作](https://qiita.com/mychaelstyle/items/96ea9e8c679f908205ab) -> 講座第3回/第4回に相当
1. [機械学習入門 vol.5 グラフ(Seaborn)の基本操作](https://qiita.com/mychaelstyle/items/5acf7fdb1f11ba5478d1) -> 講座第3/4回に相当
1. [機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9) -> 講座第4回に相当
1. [機械学習入門 vol.7 回帰 - ランダムフォレストとパラメータチューニング](https://qiita.com/mychaelstyle/items/48238d70c7602ca14a0c) -> 講座第4回に相当
1. [機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc)](https://qiita.com/mychaelstyle/items/fc51cf384b517fb405f8) -> 講座第4回に相当
1. [機械学習入門 vol.9 判別（分類）](https://qiita.com/mychaelstyle/items/34ca447a625c752dbfda) -> 講座第5回に相当
1. [機械学習入門 vol.10 次元削減](https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d) -> 講座第6回に相当
1. [機械学習入門 vol.11 クラスタリング](https://qiita.com/mychaelstyle/items/89d04ce33c3e05d9545c) -> 講座第6回に相当

AI/DX/機械学習/Pythonの社内研修、セミナー等承っております。
webサイトからお問い合わせください。
[BeeComb Grid株式会社](https://beecomb-grid.co.jp/)