Excel:快速合併多張表格或多個文件(工作簿)的數據(附Python代碼)
現實工作中經常遇到將零散的原始數據合併統計的工作要求,如月度統計或年度統計等。原始數據的收集大多是按時間(如日期或小時)進行獲取記錄的,即每1天或1個時間段就會產生1張Excel的數據表格,當要進行月度或年度數據分析時,傳統方法就需要花費不少的時間進行原始數據的合併,俗稱“copy_paste"操作。下面的方法是應用Python代碼實現快速合併多張表格的數據的任務 – "一鍵成型“,大大提高辦公室的工作效率:
流程分析:
- 收集數據源文件夾中的數據文件名稱(workbook_names)
- 建立新的數據彙總文件 – 用於收集並保存所有的數據
- 打開並讀取Excel文件,收集每個數據文件中的表格名稱(sheet_names)
- 按表格將數據轉換爲dataframe,並彙總在一起
- 將dataframe轉爲Excel文件
- 檢查數據彙總的結果
原始數據的情況:
有2個數據集:Data_1和 Data_2,每個文件有3個表格
Python代碼:
import xlrd
import pandas as pd
import os
# 1. 收集數據源文件夾中的數據文件名稱(workbook_names)
file_dir = "d:/原始數據集"
file_list = os.listdir(file_dir)
print("合併的文件包括:", file_list)
# 2. 建立新的數據彙總文件 -- 用於收集並保存所有的數據
new_file = "d:/彙總數據.xlsx"
new_list = []
sheet_num = 0
# 3.打開並讀取Excel文件,收集每個數據文件中的表格名稱(sheet_names)
for file in file_list:
file_path = os.path.join(file_dir, file)
wb = xlrd.open_workbook(file_path)
sheet_names = wb.sheet_names()
sheet_num += len(sheet_names) #計算合併的表格的總數
# 4.按表格將數據轉換爲dataframe,並彙總在一起
for sn in sheet_names:
dataframe = pd.read_excel(file_path, sheet_name=sn, header=0)
new_list.append(dataframe)
# 5. 將datafram轉爲excel
df = pd.concat(new_list)
df.to_excel(new_file, sheet_name="Summary")
# 6.檢查數據彙總的結果
print("合併的表格數量:", sheet_num)
print("數據彙總表已生產,請檢查!")
程序運行結果:
數據彙總表格(新生產的):
問題解決了!
溫馨提示:
本博客測試的是xls文件,如果是對於xlsx文件,建議使用openpyxl來操作。關鍵替換代碼如下:
import openpyxl
# 讀取excel文件和提取文件中的工作表名稱
wb = openpyxl.load_workbook(file_path)
sheet_names = wb.sheetnames