如何使用Python將多個Excel檔案合併到一個檔案中?
Excel是資料分析和管理最流行的工具之一。通常,我們需要將多個Excel檔案合併到一個檔案中進行分析或與他人共享。手動合併這些檔案可能非常耗時且容易出錯,尤其是在處理大型資料集時。幸運的是,Python提供了一種高效且靈活的方法來將多個Excel檔案合併到一個檔案中。
在本文中,我們將學習如何使用Python合併多個Excel檔案。我們將使用Pandas庫,這是一個功能強大且易於使用的Python資料分析庫,用於合併不同的Excel檔案。
什麼是Python中的Pandas庫?
Pandas是一個用於處理資料集的Python庫。它包含用於分析、清理、探索和操作資料的函式。除此之外,它還允許我們分析大資料並根據統計理論得出結論。它還可以清理雜亂的資料集,使它們更易讀和更相關。
使用Pandas合併Excel檔案時,我們可以使用read_excel()函式將每個檔案中的資料讀取到Pandas DataFrame物件中。一旦我們將所有資料都放在單獨的DataFrame中,我們就可以使用Pandas的內建函式,如merge()、join()和concat(),將這些DataFrame組合成一個DataFrame。
Pandas的merge()函式提供了基於特定列合併DataFrame的能力,類似於Excel中的VLOOKUP函式。我們可以指定哪些列用作連線DataFrame的鍵以及要執行的連線型別(內連線、外連線、左連線或右連線)。
將多個Excel檔案合併到單個檔案中的步驟
步驟1:匯入庫
合併不同的Excel檔案的第一個步驟是匯入所需的庫。我們將使用Pandas讀取和合並Excel檔案,使用OS導航檔案系統。以下是匯入這些庫的程式碼
import pandas as pd import os
步驟2:識別要合併的檔案
下一步是識別要合併的檔案。我們可以指定確切的檔名,也可以使用模式來匹配多個檔案。在這個例子中,我們將使用後一種方法,我們將匹配特定目錄中所有副檔名為“.xlsx”的檔案。以下是獲取要合併的檔案列表的程式碼
path = "path/to/files/" files = os.listdir(path) files_xlsx = [f for f in files if f[-4:] == 'xlsx']
步驟3:讀取Excel檔案
識別要合併的檔案後,我們現在將不同的Excel檔案讀取到Pandas資料框中。我們可以使用迴圈將所有檔案讀取到單獨的資料框中,然後將它們連線到單個數據框中。
輸入Excel檔案如下所示
#File1.xlsx Product Quantity Price Apple 10 0.5 Banana 5 0.25 #File2.xlsx Product Quantity Price Oranges 8 0.4 Grapes 12 0.3 #File3.xlsx Product Quantity Price Mango 15 0.6 Pineapple 7 0.8
以下是讀取Excel檔案的程式碼
df_list = [] for f in files_xlsx: data = pd.read_excel(os.path.join(path, f)) df_list.append(data) df = pd.concat(df_list)
步驟4:建立一個新的合併的Excel檔案
合併檔案的最後一步是將合併的資料框寫入一個新的Excel檔案。我們可以使用Pandas的to_excel方法來做到這一點。以下是將合併的資料框寫入新的Excel檔案的程式碼
output_path = "path/to/output_file.xlsx" df.to_excel(output_path, index=False)
現在讓我們看看使用不同的方法(如pd.concat和使用for迴圈)在Python中將多個Excel檔案合併到單個檔案中的完整示例。
示例1:使用‘pd.concat()’
在下面的示例中,我們首先匯入所需的庫並識別要合併的檔案。然後,我們透過列出指定目錄中所有以.xlsx結尾的檔案來識別要合併的檔案。接下來,我們將每個Excel檔案讀取到一個數據框中,並將它們儲存在一個名為df_list的列表中。
import pandas as pd import os # Identifying the files to merge path = "yourpath/to/files/" files = os.listdir(path) files_xlsx = [f for f in files if f.endswith('.xlsx')] # Reading the Excel files and concatenate them mydf_list = [pd.read_excel(os.path.join(path, f)) for f in files_xlsx] mydf = pd.concat(mydf_list) # Writing the merged data frame to a new Excel file myoutput_path = "path/to/myoutput_file.xlsx" mydf.to_excel(myoutput_path, index=False)
輸出
合併三個.xlsx檔案後的最終輸出
Product Quantity Price Apple 10 0.5 Banana 5 0.25 Orange 8 0.4 Grapes 12 0.3 Mango 15 0.6 Pineapple 7 0.8
示例2:使用for迴圈和pd.concat()
在下面的示例中,我們首先匯入所需的庫並識別要合併的檔案,就像第一個示例一樣。然後,我們初始化一個名為merged_df的空資料框。接下來,我們迴圈遍歷每個Excel檔案並將其讀取到一個數據框中。我們使用concat()函式將當前資料框與先前合併的資料框連線起來,並將結果儲存在merged_df中。
import pandas as pd import os # Identifying the files to merge path = "yourpath/to/files/" files = os.listdir(path) files_xlsx = [f for f in files if f.endswith('.xlsx')] # Initialize an empty data frame mymerged_df = pd.DataFrame() # Reading the Excel files and concatenate them for file in files_xlsx: data = pd.read_excel(os.path.join(path, file)) mymerged_df = pd.concat([mymerged_df, data], ignore_index=True) # Writing the merged data frame to a new Excel file myoutput_path = "yourpath/to/myoutput_file.xlsx"
輸出
合併三個.xlsx檔案後的最終輸出
Product Quantity Price Apple 10 0.5 Banana 5 0.25 Orange 8 0.4 Grapes 12 0.3 Mango 15 0.6 Pineapple 7 0.8
示例3:使用pd.merge()
在下面的示例中,我們首先匯入所需的庫並識別要合併的檔案,就像其他兩個示例一樣。現在,我們使用pd.read_excel()函式讀取了兩個Excel檔案,並使用pd.merge()函式根據我們使用on引數指定的公共列合併這兩個資料框。
import pandas as pd # read in the first Excel file mydf1 = pd.read_excel('myfile1.xlsx') # read in the second Excel file mydf2 = pd.read_excel('myfile2.xlsx') # merge the two data frames based on a common column mymerged_df = pd.merge(mydf1, mydf2, on='common_column') # write the merged data frame to a new Excel file mymerged_df.to_excel('mymerged_file.xlsx', index=False)
輸出
合併三個.xlsx檔案後的最終輸出
Product Quantity Price Apple 10 0.5 Banana 5 0.25 Orange 8 0.4 Grapes 12 0.3 Mango 15 0.6 Pineapple 7 0.8
結論
使用Python將多個Excel檔案合併到單個檔案中可以節省您的時間,並在處理大型資料集時減少錯誤。藉助Pandas,這是一個簡單的過程。在本文中,我們學習瞭如何通過幾個簡單的步驟使用Python合併多個Excel檔案。我們提供了兩個示例,演示瞭如何使用concat()函式和迴圈合併多個Excel檔案。總的來說,憑藉Python的靈活性和效率,合併多個Excel檔案從未如此簡單。