[Python]データ分析のためのfor文の使い方

文法

概要

こんにちは、すのくろです。

今回はプログラミングでよく出てくる基本処理の一つである「for文」について説明したいと思います。

for文の解説は様々なサイトであるかと思いますが、本サイトではデータ分析にうまく適用できるような説明を心がけていきます。

本記事の構成は、以下の通りです。

・for文を作るための基礎知識の説明

・if文を応用したfor文での実践的なデータ分析

・データ分析でのfor文の使い方の簡単な例

また、for文とセットで使われやすいif文に関しては、他の記事 [Python]これさえ押さえておけばOK! データ分析のためのif文の使い方 でまとめていますので、そちらもお読み頂ければと思います。

Pythonを用いたデータ分析のためにfor文は不可欠なので、ここでぜひ憶えていただけると幸いです。

それでは解説していきます!

for文の基本の型

それでは早速、「for」文の作り方について説明していきます。

以下が簡単なfor文のコードになります。

# for文の基本の形

animals = ['dog', 'cat', 'bird', 'tiger', 'lion'] #リスト

for animal in animals: #要素を回す
    print(animal + ' is cute!')

# コロン:とインデント(空白)を忘れない

出力結果↓

dog is cute!
cat is cute!
bird is cute!
tiger is cute!
lion is cute!

解説していきます。

まず、for文の作り方は、

for OOO in XXX:
    ~~実行内容~~

になります。

OOO:for文の処理内に一つずつ用いる変数(今回は「animal」)

XXX:for文の処理内に用いる変数全部(今回は「animals」)

XXXの複数個の中から一つずつOOOとして取り出して処理を回していく感じです。

今回は、動物のリスト「animals」から、

「dog」, 「cat」などを順番に一つずつ取り出して

print文「OOO is cute!」を出力しています。

OOOの部分が毎回置き換わっています。

他にfor文の特徴として、for文の注意点は以下の2つがあります。

・条件式の後はコロン(:)

・for文で回す実行内容はインデントで一段下げる

この辺りは他のif文などの関数とも同じですね。

以下に、今回のfor文のコードの解説画像も示しておきます。

if文と組み合わせたfor文

上記で、規則的に変数部分が変わって何度もループされる基本のfor文を押さえることができたと思います。

次にif文をfor文の中に組み込んで条件によって出力を変えるパターンについて説明します。

コードを先に示します。

# if文と組み合わせて条件によって出力を変更

animals = ['dog', 'cat', 'bird', 'tiger', 'lion'] #リスト

strong_animal = 'lion'

for animal in animals: #要素を回す
    if animal == strong_animal: #条件式
        print(animal + ' is a strong animal !')
    else: 
        print(animal + ' is not a strong animal...')

出力結果↓

dog is not a strong animal...
cat is not a strong animal...
bird is not a strong animal...
tiger is not a strong animal...
lion is a strong animal !

コードの解説です。

まず先ほどと同じように、for文を作成します。

インデントが一段下がっている範囲が、for文の処理が行われる中身です。

for文の中で、さらにif文があります。

if文の条件式のあともインデントを一段下げる必要があるので、if文の実行内容はさらに一段下がっています。

今回の具体的なifの処理では、「animal」の値が「strong_animal (= lion)」であった場合に出力文章を変える、と言ったことを行われています。

実際の出力でも、「lion」の時だけ変わっているのが分かると思います。

このように、回す変数によって出力を変更させていけるのがfor文とif文の組み合わせによるメリットです。

for文を使ったデータ例

上記ではfor文の基本の使い方を抑えることができたと思います。

最後に、for文をどういう風に実践で使えば良いかの例を示して、

データ分析で簡単に用いる方法をイメージしてもらえればと思います!

まずは下記のコードで10行、5列のデータを作ります。

これは5個の項目についてn=10であるイメージです

data = np.random.randint(low=1, high=10, size=(10,5))
print(data)

出力結果↓

[[2 7 4 2 8]
 [2 4 9 6 3]
 [2 4 2 3 1]
 [4 9 4 2 8]
 [1 7 4 5 4]
 [3 3 9 3 4]
 [2 6 5 1 6]
 [8 4 2 9 6]
 [4 4 8 4 7]
 [1 9 3 1 1]]

for文で各データから平均値の取得

それでは、この「data」に対して、for文を使って処理を回していきましょう。

まずは、各項目の平均値を取得する方法です。

コードは下記になります。

mean_list = []

for col_num in range(5):
    x = data[:, col_num]
    x_mean = x.mean()
    mean_list.append(x_mean)
    
print(mean_list)

出力結果↓

[4.7, 5.1, 5.4, 4.1, 5.1]

まず、平均値を入れる箱である「mean_list」を作成しておきます。

for文の中では、変数「col_num」に0~4の列のインデックス番号が順番に入ってその列の10個の平均値を算出しています。

次に、先ほど作成した箱(「mean_list」)に、一列ずつ平均値を計算したもの(x_mean)を入れていってます。

なぜこのように箱に毎回入れているかというと、for文の中で回す変数は毎回次の処理で値が更新されてしまうからです。

せっかくx=0の時(1列目)で「x_mean」で平均値を算出しても、次のx=1(2列目)で「x_mean」の値が変更されてしまうので、値が変更される前に箱によけておきます。

箱によける処理を行なっているのが「.append()」です。

これは、「mean_list」に「x_mean」を追加(append)するという意味です。

最後、for文を回し終わった後に、「mean_list」を出力してみると、

5列分の平均値をまとめて取得できていることが分かります。

for文でグラフを複数作成

次に、「data」の各列の値を順番にグラフ化して表示していく処理をfor文を使ってやってみましょう。

コードは下記になります。

# グラフ表示
col_names = ["A", "B", "C", "D", "E"] #列の名前
x = np.arange(1,11) #グラフx軸用の数(1, 2, 3 ~10)

for n in range(5):
    plt.figure(figsize=(4, 2))
    plt.plot(x, data[:, n], label=col_names[n])
    plt.title(col_names[n])
    plt.legend()

出力結果↓(途中で省略)

このように、グラフが順番に作成されていることがわかると思います。

for文の中では、変数「n」に0〜4の数が順番に入って、その時の列の値をy軸とした折れ線グラフを作成しています。

コードを見るとわかるように、一度、グラフ種類、装飾(凡例、線)などの細かい指定のコードを記載すれば、そのフォーマットで一気にグラフを作成できるのが、pythonなどのプログラミングでグラフ化するメリットだと思います。

より実践的なグラフかを知りたい場合は、他のグラフ作成の記事を参考にしていただければ幸いです。

まとめ

今回は、基本的な関数の「for文」について解説しました。

後半のfor文を使ったデータ分析の例を学ぶことで、データ分析を効率的に行うことができることがわかったのではないかと思います。

仕事や大学で単調な繰り返し作業が多いと感じた場合はfor文が使えないかも検討してみると、良いかもしれません。

Pythonを中心としたプログラミングをより体系的に学びたいと言う方向けに、おすすめのオンラインスクールを2つ厳選して紹介していますので、こちらもよければご覧ください!

以上、ここまでお読みいただき、ありがとうございました!

コメント

タイトルとURLをコピーしました