首先,假設我們要匯入大批Excel檔案,我們可以先將他們都放在一個資料夾中。
例如,我從保險業空開資料庫下載了52個csv檔,先把它們放在一個資料夾如下。
接著,我們可以載入套件pandas與os:
import pandas as pd
import os
接下來我們先建立檔案資料夾的位置的變數如下:
filePath = "C:/Users/domin/OneDrive/桌面/方格子/Python資料處理專欄/壽險財務業務指標_截至民國112年度第3季/"
再來,用os中的listdir建立指定資料夾內所有檔案名稱(含副檔名)之列表:
fileList = os.listdir(filePath)
接下來我們要將所有檔案都匯入Python中並各自成為一個DataFrame變數,所以我們要用迴圈的方法,將這些檔案一個一個匯入。
但因為這些檔案長相如下,可以看到檔案中各欄的上方都有我們不需要的資訊,所以在匯入這些csv檔時,要將最上方不要的橫列忽略。
最再將這些變數放入同一個List當中,這樣就方便我們用pandas的concat功能將這些檔案串起來。
所以,首先我們先寫一個List變數DataList用來裝等一下要放入的DataFrame變數。
DataList = []
接下來我們來寫迴圈,將檔案一個一個匯入,但同時要調整匯入的格式。
for i,n in zip(fileList,range(0,len(fileList))):
globals()["D"+str(n)] = pd.DataFrame(pd.read_csv(f"{filePath}{i}",header=2))
DataList.append(globals()["D"+str(n)])
最後,我們用pandas的concat功能,將存在變數DataList中的這些DataFrame通通縱向的合併起來成為一個DataFrame。
在合併時,因為這些DataFrame都各自有原來的index,為了讓合併後的index能重新排序,所以可以讓ignore_index=True,這樣能忽視原有的index以重新排序index了。
DataFinal =pd.concat(DataList,ignore_index=True)