(最終更新月: 2025年8月13日)
✓当記事はこんな方におすすめです
- 「複数のExcelファイルを手作業で開くのが面倒…」
- 「同じような作業を自動化する方法が知りたい」
- 「Pythonのforループという機能の基本を学びたい」
✓当記事で理解できること
- 面倒な繰り返し作業を自動化する「forループ」の基本概念
- forループに必須の「リスト」というデータ構造の使い方
- 複数のExcelファイルを一度に処理する具体的なコードの書き方
当記事では、プログラミングにおける繰り返し処理の基本「forループ」について、その概念から具体的な使い方まで、実用的なサンプルコードとともに深く掘り下げてご説明します。
このチュートリアルは、こちらのアプリケーション上でコードを実行しながら進めることを想定しています。環境構築は一切不要ですので、すぐに学習を始められます。
最後まで読んでいただければ、大量のファイルを手作業で処理する日々から解放される第一歩を踏み出せるはずです。
それでは、一緒に見ていきましょう。
繰り返しの達人「forループ」とは?
このセクションでは、Pythonにおける繰り返し処理の基本である「forループ」について解説します。
なぜなら、前回学んだ方法ではファイルを1つずつしか処理できず、ファイルが増えるたびにコードを書き直す必要があるからです。forループをマスターすれば、ファイルがいくつあっても同じコードで対応できるようになります。
- 【コラム】forループの相棒!データを入れる箱「リスト」とは?
- 身近な例え話で学ぶforループ
- forループの構文を分解解説
【コラム】forループの相棒!データを入れる箱「リスト」とは?
forループを使いこなすには、まずその相棒である「リスト」というデータ構造を理解する必要があります。
なぜなら、forループは「リストに入っているものを順番に取り出して処理する」という動きをするため、繰り返し処理の対象となるデータ群をリストとしてまとめておく必要があるからです。
リストは、複数のデータを順番に並べて格納できる、便利な整理棚のようなものです。角括弧[]
とカンマ,
を使って、以下のように簡単に作ることができます。
# これがリストです!角括弧[]で囲み、カンマ,で区切ります
shopping_list = ['リンゴ', 'バナナ', '牛乳']
リストには、文字列(’リンゴ’など)や数値(100など)、真偽値(True/False)といった様々な種類のデータ(データ型)を格納できます。リストは、繰り返し処理を行いたい複数のデータをまとめて管理するための基本的なツールなのです。データ型についてさらに詳しく知りたい方は、「【2025年最新版】Pythonの型を完全解説|型の確認・使い分け・型ヒントまで徹底ガイド」の記事も参考にしてください。
身近な例え話で学ぶforループ
forループは、リストに入ったものを順番に取り出して、一つずつ同じ処理を自動で行ってくれる仕組みです。
これだけ聞くと難しく感じるかもしれませんが、私たちの日常生活にも同じような動きがあります。例えば、買い物リストを思い浮かべてください。リストに書かれた品物を、上から順に一つずつ買い物カゴに入れていきますよね。
この「リストのアイテムを一つずつ取り出して、同じ作業(カゴに入れる)を繰り返す」という一連の動作を、プログラムで表現したものがforループです。先ほどの買い物リストをPythonで処理すると、このようになります。
# shopping_listから、itemを一つずつ取り出して繰り返す
for item in shopping_list:
print(f'{item}をカゴに入れました')
# 実行結果
# リンゴをカゴに入れました
# バナナをカゴに入れました
# 牛乳をカゴに入れました
このように、forループを使えば、リストの中身がいくつあっても、同じ処理を自動で適用できるのです。
forループの構文を分解解説
forループを正しく使うためには、その基本的な書き方(構文)を理解することが不可欠です。
構文は、プログラムが正しく動作するための「言葉のルール」であり、一つでも間違えるとエラーになってしまうため、各要素の役割をしっかり把握しておく必要があります。
先ほどのコードを例に、構文の各要素を分解してみましょう。
# for (これから繰り返し) item (を一つ取り出し) in (〜の中から) shopping_list (このリストを対象に): (処理を開始)
for item in shopping_list:
# インデント(字下げ)されたこの部分が繰り返される
print(f'{item}をカゴに入れました')
for
: 「これから繰り返しを始めますよ!」というPythonへの合図です。item
: リストから取り出した要素を一時的に入れておくための「変数(箱)」です。この名前は自由につけられます。in
: 「〜の中から」という意味で、どのリストからデータを取り出すかを指定します。shopping_list
: 繰り返し処理の対象となるリストです。:
とインデント(字下げ): コロン:
は「ここから繰り返す処理が始まります」という合図です。その後のインデント(半角スペース4つ分)された部分が、実際に繰り返される処理の範囲を示します。このインデントはPythonの文法で非常に重要なので、必ず覚えておきましょう。
【準備】複数のExcelファイルをアップロードして読み込もう
このセクションでは、今回のチュートリアルの本題である「複数ファイルの処理」を行うためのデータを準備します。
アプリケーションのファイルアップロード機能を使い、あなたの手元にある複数のExcelファイルをPythonで扱えるように読み込んでいきましょう。
- アプリケーションでファイルをアップロードする
- アップロードしたファイル一覧を取得し、forループで処理する
アプリケーションでファイルをアップロードする
まず、このチュートリアルで使う複数のExcelファイル(4月〜3月の売上データ)を準備してください。
準備ができたら、アプリケーション画面にある「ファイルを選択」ボタンをクリックし、処理したいExcelファイルをすべて選択してアップロードします。アップロードされたファイルは、アプリケーション内の仮想的な /tmp/
という場所に保存されます。
【重要】ファイルサイズに関する注意
一度に大量のファイルや、サイズが非常に大きいファイルをアップロードすると、ブラウザのメモリ制限によりエラーが発生する可能性があります。まずは数個の小さなファイルで試し、問題なく動作することを確認してから扱うファイル数を増やすようにしてください。
アップロードしたファイル一覧を取得し、forループで処理する
ファイルがアップロードできたら、それらをPythonで扱えるようにプログラムで読み込みます。
まず、Pythonのos
という標準ライブラリを使って、/tmp/
ディレクトリにあるファイル名の一覧をリストとして取得します。そしてforループを使い、取得したファイル名を一つずつ取り出して処理していきます。
import os
import pandas as pd
# /tmp/ ディレクトリにあるファイル名の一覧を取得
try:
file_names = os.listdir('/tmp/')
print(f"アップロードされたファイル: {file_names}")
# 変換したデータフレームを格納するための空のリストを用意
all_dfs = []
# forループでファイル名を一つずつ処理
for name in file_names:
# ファイルのフルパスを作成
path = f'/tmp/{name}'
print(f"{path} を読み込んでいます...")
# Excelファイルを読み込み、データフレームに変換
df = pd.read_excel(path)
# 変換後のデータフレームをall_dfsリストに追加
all_dfs.append(df)
print("すべてのファイルの読み込みが完了しました!")
# all_dfsリストに、アップロードされたファイルのデータフレームが格納されています。
except FileNotFoundError:
print("ファイルがアップロードされていません。先にExcelファイルをアップロードしてください。")
ここで、path = f'/tmp/{name}'
という新しい書き方が出てきましたね。これは**f-string(f文字列)**と呼ばれる、Pythonの非常に便利な機能です。文字列の先頭に f
を付け、文字列中の {}
で囲んだ部分に変数の値を直接埋め込むことができます。f-stringについて詳しく知りたい方は、「【初心者必見】Pythonのf文字列(f-strings)完全ガイド」の記事も参考にしてください。
【実践】forループで、複数ファイルを一気に処理!
お待たせしました!いよいよ、このセクションでforループの真価を発揮させます。
先ほど読み込んだデータが格納されたリストall_dfs
を使い、すべての月のデータを一括で表示するプログラムを作成します。これにより、面倒な繰り返し作業がどれだけ簡単になるかを実感できるはずです。
- 処理の流れを可視化しよう
- 複数月のデータを一括で表示するコード
- 【参考】自分のPCで実行する場合は?
処理の流れを可視化しよう
プログラムを書き始める前に、まず処理の全体像を頭の中で整理することが大切です。
なぜなら、いきなりコードを書き始めると、途中で何をしていたか分からなくなったり、意図しないエラーに繋がったりすることがあるからです。最初に簡単な言葉で手順を書き出すことで、ロジックが明確になり、スムーズにコーディングを進められます。
今回の処理の流れは、非常にシンプルです。
- アプリケーションで複数のExcelファイルをアップロードする。
os.listdir()
でアップロードされたファイル名の一覧を取得する。- forループを使い、ファイル名を一つずつ取り出してPandasで読み込み、データフレームのリスト(
all_dfs
)を作成する。 - もう一度forループを使い、今度は
all_dfs
リストから1ヶ月分のデータ(データフレーム)を順番に取り出す。 - 取り出したデータの中身を表示して、ちゃんと読み込めているか確認する。
これから書くコードは、この流れの4番と5番を忠実に実行するものになります。
複数月のデータを一括で表示するコード
それでは、先ほど整理した流れに沿って、実際に複数月のデータを一括で表示するコードを書いてみましょう。
forループを使えば、たった数行のコードで12ヶ月分のデータを順番に処理することができます。手作業で12回も同じ操作を繰り返す必要はもうありません。
以下のコードでは、enumerate
という便利な関数を使っています。これにより、ループの回数(何番目のデータか)も同時に取得できるため、「○番目のデータ」といった表示が簡単に実現できます。enumerate
について詳しく知りたい方は、「【簡単】Python enumerate関数の使い方を実例付で解説」もご覧ください。
# (前のセクションの準備コードはすべて実行済みとする)
print('--- 複数月のデータ表示を開始します ---')
# all_dfsリストにデータがあるか確認
if 'all_dfs' in locals() and all_dfs:
# all_dfsリストの中身を一つずつ取り出して処理
# enumerate を使うと、何番目のデータ(i)と中身(month_df)を同時に取得できる
for i, month_df in enumerate(all_dfs):
print(f'▼ {i+1}番目にアップロードされたデータ')
# データの中身を先頭5行だけ表示
print(month_df.head())
print("-" * 30) # 区切り線
print('--- すべてのデータの処理が完了しました! ---')
else:
print("データが読み込まれていません。前の手順を先に実行してください。")
**見てください!たったこれだけのコードで、アップロードしたすべてのデータを表示できました。**これがforループの威力です。データが100個、1000個あっても、このコードは一切変更する必要がありません。
【参考】自分のPCで実行する場合は?
今回の方法はブラウザ上でファイルを扱いましたが、自分のPCにPythonの実行環境を構築した場合も、処理の考え方はほとんど同じです。
違うのは、ファイルをどの場所から読み込むか、という点だけです。PC上では、スクリプトと同じフォルダにExcelファイルを置いておけば、os.listdir('.')
のようにカレントディレクトリ(今いる場所)のファイル一覧を取得して処理できます。
# 自分のPCで実行する場合のコード例
import os
import pandas as pd
# スクリプトと同じ場所にあるファイル一覧を取得
file_names = os.listdir('.')
excel_files = [f for f in file_names if f.endswith('.xlsx')] # Excelファイルのみを抽出
all_dfs = []
for file_name in excel_files:
print(f'--- {file_name} を読み込み中 ---')
df = pd.read_excel(file_name)
all_dfs.append(df)
print(f'{file_name} の処理が完了しました。')
ブラウザでもPCでも、「ファイル一覧のリストを取得し、forループで順番に処理する」という本質は変わらないということを理解しておきましょう。
まとめ
今回は、面倒な繰り返し作業を自動化する魔法の呪文、「forループ」について学びました。最後に、今回の重要なポイントを3つ振り返っておきましょう。
- forループとリストは最強のコンビ: 複数のデータ(ファイルなど)を扱うには、まずそれらを「リスト」にまとめます。そして、「forループ」を使ってリストの中身を一つずつ取り出し、同じ処理を適用することで、作業を劇的に効率化できます。
- ファイル処理の基本をマスター: 複数のファイルをアップロードし、
os.listdir()
でファイル一覧を取得、forループを使って一つずつ読み込み、Pythonで扱えるデータ形式に変換する、という一連の流れを体験しました。これはデータ処理の基本となる重要なスキルです。 - 自動化の扉を開いた: あなたはもう、ファイルが10個あっても100個あっても怖くありません。forループという強力な武器を手に入れたことで、単純な繰り返し作業から解放され、より創造的な仕事に時間を使うための第一歩を踏み出しました。
さて、すべてのファイルの中身を覗けるようにはなりましたが、まだデータはバラバラのままです。次回はいよいよ感動の最終回!これらのデータをプログラムでガッチャンコと一つに合体させ、毎月の集計作業に永遠の別れを告げましょう。お楽しみに!