目次
Pythonのfor文とは?
Pythonのfor文を使うことで「繰り返し処理」を実行することができます
繰り返し処理こそが、Pythonに限らずプログラムを活用して効率化する理由と言えます
複雑な処理や面倒な記述も「for文」を使うと一瞬で解決できたりします
とくにビックデータと呼ばれる大量の情報を扱うときに、人間がデータを加工するには時間がかかかりすぎてしまいます
そこでマシーンに対して処理の条件だけ伝えて、あとは勝手にやってもらいましょう
for文(繰り返し処理)のイメージ
袋の中にフルーツが入っていて、フルーツごとに処理を実施します
人間が1つ1つ処理を実施してしまうと、フルーツの数ずつプログラミングしていかなければいけません
これは非常にめんどくさい…
そこで機械に対して「命令」を出してそれぞれ処理を実施させます
実際の処理をPythonで書いてみる
Fruit = ['イチゴ','キウイ','オレンジ','ブドウ','バナナ']
事前に「Fruit」という変数に5種類のフルーツをリストで用意します
お題:各フルーツが大好きという文字をそれぞれ抽出する
まずは人間が書いてみます
print(Fruit[0]+'が大好き')
print(Fruit[1]+'が大好き')
print(Fruit[2]+'が大好き')
print(Fruit[3]+'が大好き')
print(Fruit[4]+'が大好き')
続いて「for文」を使って繰り返し処理を実施します
for i in Fruit:
print(i+'が大好き')
全く同じ結果がたった2行で書けてしまいます
こんな文字は実務で使わない!という方のために、DataFrameを使った実例も後述します
for文の使い方
for i in Fruit:
print(i+'が大好き')
まずforから記述を始めます。
続いて変数を記載します。慣例として「i」が使われますが何を使っても大丈夫です
そしてinを記述します
最後にリストなどで用意した「オブジェクト(Fruit)」を書きます
※ : コロンを忘れずに!
「Jupyter Notebook」や「Google coraboratory」を使っている場合はEnterで自動的にインデントされます
繰り返し処理の条件には「変数(i)」を入れて記載します
オブジェクト(Fruit)の中から1つずつ変数(i)=フルーツが取り出される仕組みが出来上がります
オブジェクトの作り方
今回フルーツを入れている「袋」でイメージした「オブジェクト」ですが
実際は「リスト」を使います
■ 事前に作成する方法
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」という変数で取り扱います
同じ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(df)を指定すると、カラム名が取得されます
今回のDataFrameでは「価格」「個数」「割引」が抽出されます
for i in df:
print(i)
一方でオブジェクトにindex関数を使うとインデックス名を取得することができます
for i in df.index:
print(i)
テーブルに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つの棒グラフを一度に作成する
最後にfor文を用いて複数のグラフを一度に作成していきます
matplotlibを使いグラフを作成しますが、通常の処理では1つずつしか作成できません
まずは基本的なグラフの作り方です (グラフの作り方は割愛)
import matplotlib.pyplot as plt
# x軸にフルーツ名となるindexを、y軸にDataFrameの「価格」列を指定し、ラベルも「価格」とする
plt.bar(df.index, df['価格'], label="価格")
# 凡例の表示する
plt.legend()
# プロット表示する
plt.show()
続いて「価格」列だけでなく「個数」「割引」の列もfor文を使って一度に処理していきます
import matplotlib.pyplot as plt
for i in df:
plt.bar(df.index, df[i], label=i)
plt.legend()
plt.show()
列が複数ある場合でも一発でグラフを作成することができます
まとめ
for文による繰り返し処理をイメージを用いてご紹介してきました
プログラミングの基本であり、効率化の必殺技となる処理になります
基本的な構文さえ覚えてしまえば、あとは活用するだけです
複数のリストに対して繰り返し処理を実施する方法はこちらで説明しています
【Python】複数のリストでforを実施する方法|超分かる!繰り返し処理