1. 背景
實際操作中,往往會處理一些相同格式的Excel表格數據,比如某商家都是按照每月進行產品A和B的數據的統計,有時爲了季度或者年度數據的處理,就需要將多個Excel中的表格數據彙總到一起(不是覆蓋),並且表格的標題還不變,也就產生了題目的要求,方便之後的數據處理
假設表格中內容如下:(標題相同,但是數據不同,以第一個文件中數據爲例)
2. 代碼編寫
主要是使用到了pandas
裏面的concat
方法,先給出全部代碼,然後進行解析
import os
os.chdir(r'C:\Users\86177\Desktop\demo')
import glob
import pandas as pd
paths = glob.glob('*.xlsx')
print(paths,'\n')
print('------------\n')
df = pd.DataFrame()
for path in paths:
df_ = pd.read_excel(path)
df = pd.concat([df,df_])
print(len(df))
df.to_excel('data.xlsx',index = False)
3. 代碼解析
1)設置代碼的運行路徑,這個屬於自己的編程習慣,每次運行代碼之前會把路徑設定在要操作的文件夾所對應的路徑,方便對於該文件夾下數據的獲取,比如這裏就是設定在桌面的demo
文件夾下
import os
os.chdir(r'C:\Users\86177\Desktop\demo')
2) 導入glob
庫是爲了選取示例文件夾中所有的Excel
文件(格式都是相同的),只需要將名稱用*
號代替,保留後綴名即可,*
號前面的內容就是測試文件夾的路徑,然後返回的是一個列表,包含了所有Excel
文件的名稱
import glob
paths = glob.glob(r'*.xlsx')
print(paths)
–> 輸出結果爲:
['data01.xlsx', 'data02.xlsx', 'data03.xlsx']
2) 創建一個空的DataFrame
數據,因爲pd.concat
方法的使用是需要有一個基礎的或者已有的DataFrame
數據作爲參考的,既然在讀取第一份Excel
表格前沒有參照,就可以創建一個空的數據進行數據合併,合併之後的結果就是導入的第一份Excel
表格中的內容
df = pd.DataFrame()
3)一次遍歷paths中的數據,也就是文件的名稱,同時由於系統運行設置的路徑已經是在該文件夾裏,所以文件名稱也是要讀取文件的路徑了,接着就可以將數據逐次進行合併了,df會由一個空的數據,變成三個表格數據彙總後的總數據
for path in paths:
df_ = pd.read_excel(path)
df = pd.concat([df,df_])
4)最後將數據保存到本地,可以順帶輸入一下彙總後的總長度,用來驗證(這裏的數值並不是真正意義上的每個月,只是用來做演示,將每個Excel
中的數據都配置爲30個,所以彙總後是90個)
print(len(df))
df.to_excel('data.xlsx',index = False)
5) 輸出結果爲: