うえぴです!
今回はフォルダ内に存在するすべてのエクセルファイルを統合することに挑戦します。
前回は、コードにエクセルのファイル名を打ち込めば統合できることを確認しましたが、それじゃぁ大量にエクセルファイルがある場合に対応できません!
前回↓
globモジュールを使って、ファイルパス名を取得
まずフォルダ内にエクセルファイルを準備します。
次にglobモジュールを使って、ファイル内のエクセルファイルのファイルパス名をGETします!
--------------------------------------------------
import glob
import pandas as pd
#ファイルパス名の取得
datafile_list = glob.glob('data/*.xlsx')
#出力
datafile_list
-------------------------------------------------
['data\\sample1.xlsx', 'data\\sample2.xlsx', 'data\\sample3.xlsx', 'data\\sample4.xlsx', 'data\\sample5.xlsx', 'data\\sample6.xlsx', 'data\\sample7.xlsx']
ってな感じであらかじめ用意していたフォルダ内のファイルパスをGETできました!
--------------------------------------------------
#取得したファイルパスを順に読み込み、フォルダ内のすべてのデータを読み込む
data_files1 = [pd.read_excel(datafile_list[i],sheet_name=0,parse_dates=[0]) for i in range(len(datafile_list))]
#読み込んだデータを結合
all_data1 = pd.concat(data_files1,ignore_index=True)
--------------------------------------------------
次に結合したデータをエクセルに出力します。
--------------------------------------------------
#結合したデータをエクセルに出力
all_data1.to_excel('まとめ.xlsx',index=False)
--------------------------------------------------
これで、フォルダ内にある7つのエクセルファイルを結合して1つのファイルとして出力できました!
サンプルコードまとめ
--------------------------------------------------
import glob
import pandas as pd
#ファイルパス名の取得
datafile_list = glob.glob('data/*.xlsx')
#出力
datafile_list
#取得したファイルパスを順に読み込み、フォルダ内のすべてのデータを読み込む
data_files1 = [pd.read_excel(datafile_list[i],sheet_name=0,parse_dates=[0]) for i in range(len(datafile_list))]
#読み込んだデータを結合
all_data1 = pd.concat(data_files1,ignore_index=True)
#結合したデータをエクセルに出力
all_data1.to_excel('まとめ.xlsx',index=False)
--------------------------------------------------
たった数行だけで、大量のエクセルファイルを統合することができるってめっちゃ便利ですね。
個人的には案外使えるんじゃないかと思ってたり。
2つのデータを1つのエクセルファイルに別シートで保存する場合
エクセルファイルって1つのシートじゃなくてだいたい複数のシートがありますよね!
次回、そんなエクセルファイルが複数あっても、1つのエクセルファイルに結合して出力する方法を記載したいと思います!
おたのしみにー!(している人がいれば…)
最後まで読んでいただきありがとうございました!
いいね!