1から始めるPythonデータ分析 - やりたいこと逆引きリスト ▶︎▶︎

【Python】for文をイメージ図で完全解説|超分かる!繰り返し処理

Pythonのfor文とは?

Pythonのfor文を使うことで「繰り返し処理」を実行することができます

繰り返し処理こそが、Pythonに限らずプログラムを活用して効率化する理由と言えます

複雑な処理や面倒な記述も「for文」を使うと一瞬で解決できたりします

とくにビックデータと呼ばれる大量の情報を扱うときに、人間がデータを加工するには時間がかかかりすぎてしまいます

そこでマシーンに対して処理の条件だけ伝えて、あとは勝手にやってもらいましょう

for文(繰り返し処理)のイメージ

フルーツが袋に入っているイメージ

袋の中にフルーツが入っていて、フルーツごとに処理を実施します

人間がPythonで繰り返し処理を実施する悪いイメージ

人間が1つ1つ処理を実施してしまうと、フルーツの数ずつプログラミングしていかなければいけません

これは非常にめんどくさい

そこで機械に対して「命令」を出してそれぞれ処理を実施させます

Pythonでfor文を使い繰り返し処理を実施するイメージ

実際の処理をPythonで書いてみる

Fruit = ['イチゴ','キウイ','オレンジ','ブドウ','バナナ']

事前に「Fruit」という変数に5種類のフルーツをリストで用意します

お題:各フルーツが大好きという文字をそれぞれ抽出する

まずは人間が書いてみます

print(Fruit[0]+'が大好き')
print(Fruit[1]+'が大好き')
print(Fruit[2]+'が大好き')
print(Fruit[3]+'が大好き')
print(Fruit[4]+'が大好き')
Pythonのfor文の処理結果

続いて「for文」を使って繰り返し処理を実施します

for i in Fruit:
  print(i+'が大好き')
Pythonのfor文の処理結果

全く同じ結果がたった2行で書けてしまいます

こんな文字は実務で使わない!という方のために、DataFrameを使った実例も後述します

for文の使い方

Pythonのfor文の処理の基本形
for i in Fruit:
  print(i+'が大好き')

まずforから記述を始めます。

続いて変数を記載します。慣例として「i」が使われますが何を使っても大丈夫です

そしてinを記述します

最後にリストなどで用意した「オブジェクト(Fruit)」を書きます

: コロンを忘れずに!

「Jupyter Notebook」や「Google coraboratory」を使っている場合はEnterで自動的にインデントされます

繰り返し処理の条件には「変数(i)」を入れて記載します

オブジェクト(Fruit)の中から1つずつ変数(i)=フルーツが取り出される仕組みが出来上がります

オブジェクトの作り方

今回フルーツを入れている「袋」でイメージした「オブジェクト」ですが

実際は「リスト」を使います

Pythonのリスト作成のイメージ

■ 事前に作成する方法

Fruit = ['イチゴ','キウイ','オレンジ','ブドウ','バナナ']
for i in Fruit:
  print(i+'が大好き')

■ for文の中で作成する方法

for i in ['イチゴ','キウイ','オレンジ','ブドウ','バナナ']:
  print(i+'が大好き')

■ 数値をrangeで作成する方法

for i in range(5):
  print(Fruit[i]+'が大好き')

range()をつかうと連番の数値を自動で作ることができます

SeriesやDataFrameで行を取得する際にインデックス数値を指定することがよくあります

このrange()を極めるとfor文がさらに使いやすくなります

データ分析でfor文を使いこなす

続いては実戦で「for文」を使いこなす方法をご紹介します

実際にデータ分析でよく使うようなテーブルを準備します

※以後「df」という変数で取り扱います

Fruitの価格表のイメージ

同じDataFrameを作るには下記コードをコピーしてください

df = pd.DataFrame([[300,5,0.2],[500,20,0.1],[200,10,0.03],[400,8,0.05],[100,24,0.08]]
                  ,index=('イチゴ','キウイ','オレンジ','ブドウ','バナナ')
                  ,columns=('価格','個数','割引'))

DataFrameでforを使う準備

DataFrameに対してインデックス・カラム名をfor文で取得する方法

オブジェクトにDataFrame(df)を指定すると、カラム名が取得されます

今回のDataFrameでは「価格」「個数」「割引」が抽出されます

for i in df:
  print(i)
for i in df:の結果

一方でオブジェクトにindex関数を使うとインデックス名を取得することができます

for i in df.index:
  print(i)
for i in df.index:の結果

テーブルにfor文を活用する

お題:各フルーツごとに「フルーツ名」と「価格」を抽出する

Fruitの価格表のイメージ

アウトプットイメージはこちら↓

Pythonでfor文を使った結果

条件式が少し複雑なので分解しながら解説します

まずは+プラスを使うと文字列をつなげることができます

「は」という文字をクオーテーションで括り、つなげます

for i in df.index:
  print(i+'は')

続いてloc[ ]を使いindexに繰り返し処理を指定した後に、「価格」のカラムのみに絞ります

for i in df.index:
  print(i+'は'+df.loc[i]['価格'])

ただしこれではエラーが出てしまいます

原因は「価格」が数値型のため、+で文字列結合することができないためです

エラーを防ぐためにstr()を使い文字列に変換し、結合しましょう

for i in df.index:
  print(i+'は'+str(df.loc[i]['価格'])+'円')

最後に「円」を付けたら完了です

グラフにfor文を活用する

お題:「価格」「個数」「割引」の3つの棒グラフを一度に作成する

Fruitの価格表のイメージ

最後にfor文を用いて複数のグラフを一度に作成していきます

matplotlibを使いグラフを作成しますが、通常の処理では1つずつしか作成できません

まずは基本的なグラフの作り方です (グラフの作り方は割愛)

import matplotlib.pyplot as plt

# x軸にフルーツ名となるindexを、y軸にDataFrameの「価格」列を指定し、ラベルも「価格」とする
plt.bar(df.index, df['価格'], label="価格")

# 凡例の表示する
plt.legend()

# プロット表示する
plt.show()
Pythonのmatplotliで作成した棒グラフ

続いて「価格」列だけでなく「個数」「割引」の列もfor文を使って一度に処理していきます

import matplotlib.pyplot as plt
for i in df:
  plt.bar(df.index, df[i], label=i)
  plt.legend()
  plt.show()
Pythonのmatplotliで作成した棒グラフ
Pythonのmatplotliで作成した棒グラフ
Pythonのmatplotliで作成した棒グラフ

列が複数ある場合でも一発でグラフを作成することができます

まとめ

for文による繰り返し処理をイメージを用いてご紹介してきました

プログラミングの基本であり、効率化の必殺技となる処理になります

基本的な構文さえ覚えてしまえば、あとは活用するだけです

複数のリストに対して繰り返し処理を実施する方法はこちらで説明しています

【Python】複数のリストでforを実施する方法|超分かる!繰り返し処理
お気に入り登録お願いします

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です