【Python】フォルダ内のすべてのファイルに同じ処理(一括・ループ)方法【csvとExcelの変換等・次々と処理する・for・glob】 | ウルトラフリーダム

【Python】フォルダ内のすべてのファイルに同じ処理(一括・ループ)方法【csvとExcelの変換等・次々と処理する・for・glob】

Python3
本サイトでは記事内に広告が含まれています。

Pythonを使ってみようと思っても慣れていないうちは、どうしても処理に躓いてしまうものです。

例えば、pythonにて同じフォルダ(ディレクトリ)内のすべてのファイルを順々に読み込み、同じ処理を一括でかけるにはどのように対応すればいいのか理解していますか。

ここでは特に、指定した同じフォルダ内にて全てのcsvファイルを読み込み、次々とexcelファイル(.xlsx)に一括変換するコードを、実際の処理画像と共に解説していきます。

 

スポンサーリンク

同じディレクトリ内のすべてのファイルに同じ処理(csvを次々読み込み、excelに一括変換)【python】

それでは、Pythonにて指定フォルダ内のすべてのファイルに同じ処理(csvを次々読み込み、excelに一括変換)をする方法についてチェックします。

pandasとglobライブラリを活用しましょう。

前提としてが各ライブラリ、動作するように予め開発環境にてパッケージをインストールしてください。基本的にはコマンドラインから pip install pandas などと実行すればOKです(jupyter notebookなど)。

 

その上で以下のようなサンプルコードを書くといいです。

import glob
import pandas as pd
import os

# 処理したいディレクトリに移動 C直下のsample7フォルダ
os.chdir("C://sample7")

# フォルダ内の全てのCSVファイルを読み込む
csv_files = glob.glob('*.csv')  # 現在のディレクトリ内のCSVファイルを探す

# 各CSVファイルを読み込み、Excel形式で出力
for csv_file in csv_files:
    # CSVファイルを読み込む
    df = pd.read_csv(csv_file)

    # Excel形式で出力
    # ファイル名の拡張子を.csvから.xlsxに変更
    xlsx_file = csv_file.rsplit('.', 1)[0] + '.xlsx'
    df.to_excel(xlsx_file, index=False,)

以下はjupyter notebookにおける実行時の画像です。

ポイントとしては、

・pandasにてcsvやexcelファイルの読み込みや出力→for分で次々と同じ処理

・globにて、同じフォルダ内のすべてのファイル(拡張子なども指定できる)を読み込み

ですね。

出力結果は以下の通り。

保存時は拡張子まで指定しましょう(xlsxなど)。

実行前の画像。

実行後は以下のように、すべてのcsvが.xlsx形式のexcelファイルに変換されたのがわかりますね。

 

 

出力フォルダを別にしたい場合(フォルダ内のすべてのファイルを次々と処理)

次々とファイルを処理していく際のoutputディレクトリを別にしたいケースでは以下のように書きましょう。

df.to_excel("C://output_sample//"+xlsx_file, index=False)

の最初の引数にて、パスを指定+ファイル名を書くだけでOKです。

全コードは以下の通り。

import glob
import pandas as pd
import os

os.chdir("C://sample7")

# フォルダ内の全てのCSVファイルを読み込む
csv_files = glob.glob('*.csv')  # 現在のディレクトリ内のCSVファイルを探す

# 各CSVファイルを読み込み、Excel形式で出力
for csv_file in csv_files:
    # CSVファイルを読み込む
    df = pd.read_csv(csv_file)

    # Excel形式で出力
    # ファイル名の拡張子を.csvから.xlsxに変更
    xlsx_file = csv_file.rsplit('.', 1)[0] + '.xlsx'
    df.to_excel("C://output_sample//"+xlsx_file, index=False,)

これで実行すると、別のoutput_sampleフォルダ内に一括でcsv→xlsxに変換したファイルが出力されます。

状況に応じて使い分けましょう。

 

pythonにて同じフォルダ内のexcelに一括処理したい場合【.xlsxをループ】

指定ディレクトリ内のすべてのexcelファイル(.xlsxなど)を一括処理したいケースでは、単純にpandasにおけるread_csvではなく、read_excel関数を使えばOKです。

この時、globで順々に読み込む拡張子を.xlsxで指定するようにしましょう。適宜csv_fileなどの名称もexcel_fileなどと置き換えるといいですね。

 

 

まとめ 同じフォルダ内のすべてのファイルに一括・同じ処理(ループ)する方法【csvとExcelの変換等・次々と処理する・for・glob】にて新規ファイルを作成する方法

ここでは、Pythonにてフォルダ内のすべてのファイルに同じ処理(一括・ループ)方法【csvとExcelの変換等・次々と処理する・for・glob】 を解説しました。

pythonでの処理はややこしい部分が多いので、この機会に理解しておくといいです。

pythonのさまざまな扱いに慣れ、効率よく作業を進めていきましょう。

コメント

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