ビジネスパーソン・ガジェット置場 empty lot for business

営業や仕事、それに伴う生活を便利に楽にするツール、ガジェットを作ります。既にあるツールも自分用にカスタマイズ。

python: execで変数名を自動で作り複数ファイルをpandasで一度に読み込む

備忘録です。

pandasでデータ処理をする際に複数ファイルがあると、いちいち変数名を作って読み込むのは面倒臭い。ということで今回は変数名を自動で作って一度に複数ファイルを読み込む方法です。

exec()を使用して自動で変数名を作る

例えば下記のような感じで複数のファイルがあるとします。

  • customer_master.csv 顧客データ。名前、性別
  • item_master.csv 取り扱っている商品データ。商品名、価格等
  • transaction_1.csv入明細データ
  • transaction_2.csv入明細データ続き。システムの都合上分割して出力
  • transaction_detail_1.csv入明細データの詳細データ
  • transaction_detail_2.csv入明細データの詳細データの続き。システムの都合上分割して出力

 

pandasでデータ処理するので全部を読み込みたいのですが、それぞれ変数名をつけてread_csvで読み込むのは面倒臭いなと思いました。

 

そこで、変数名は拡張子を除いたファイル名にすることにして、下記のように一度に変数名を作って読み込むことにしました。

import pandas as pd
from glob import glob

# globでファイルを一度に読み込みソートします。
files = glob('*.csv')
files.sort()


# exec内でファイル名を指定し読み込みます。
for file in files:
    file_name = file.split('.')[0]
    exec(f'{file_name} = pd.read_csv(file)')

 

customer_master.csv はcsutomer_masterという変数に読み込まれています。

(その他もそれぞれ拡張子を除いたファイル名で読み込み完了)