準備進行數據分析時,不時會遇到要先把多個excel合併成一份的場景,比如說
- 分析採購銷售等ERP數據,公司有10家供應商,每個供應商一個表格
- 分析廣告投放效果,每個年-月一個表格
- 資料庫查詢出100W筆,但導出限制10W筆,只好分批10張導出
為了要把這些分散的資料統整起來分析,所以第一步就是合併到一張表上。
首先最廣泛的作法就是打開每一個excel,對資料進行control+C+V,10個excel還好,但如果有100個Excel難道要重複C+V 100次嗎?耗費的工作時間大概就是幾小時的重複勞動了。
因此懂的分析工具的朋友,會借助R或Pythone把csv檔案read
進去,透過rbind
的合併。當然如果遇到上述100個文件的話,那也是一個繁瑣的工作。因此再進階一點,可以寫一個for循環指令,遍歷檔案的文件進行合併。
透過R或python這個寫代碼的方法,已經比複製+貼上大大增加效率了。但對於非專業分析的朋友,還是有一點門檻
- 安裝R/python的門檻
- 忘記set 工作環境
setwd()
- 安裝包的版本可能的失敗
所以有沒有更方便、更快的方法呢?今天介紹透過shell的cat指令,只要幾個字母/符號即可完成上述步驟。先瞧瞧cat的說明:
cat 指令是將每個檔案依照順序讀取並把內容送到標準輸出(螢幕)。 例如,鍵入cat filename 可將檔案filename 的內容在螢幕上顯示。 若無給予檔名或是使用引數時,則cat 指令會從標準輸入(鍵盤)讀取資料。 如此可將檔案file1、file2 合併的結果依指定的順序放到檔案file3 中。
步驟零_說明:
假設我有3個csv要合併,分別是bind_01,bind_02,bind_03,我希望他們合併並成為新的檔案,檔案名叫bind_all
步驟一 :把要合併的文件放到同一個資料夾
我在桌面(Desktop)目錄中,創建一個檔案夾,命名為shell_test,並且把bind_01,bind_02,bind_03這三個文件拖進去。

步驟二:打開終端機(terminal):
mac的話在finder中,打開「/應用程式/工具程式」,或是spotlight搜一下就可以找到 (在 Mac 上打開或結束「終端機」),開啟後我們就可以在terminal中開始輸入指令了。

Step2.1:指定是在哪個目錄的文件
例如步驟一我說我的文件放在Desktop中,文件名是test_shell,輸入cd ~
+路徑,其中路徑就是圖片紅匡。(注意 cd跟 ~ 中間要空格)
cd ~/Desktop/shell_bind

Step2.2 :double確認一下該路徑有哪些文件
輸入ls
來double確認一下該路徑有哪些文件,是不是我要合併的那些excel(可以不需要此步驟)
Step2.3:輸入cat指令
cat * > bind_all.csv
其中*
符號表示該目錄下所有文件, cat
表示合併 ,>
表示合併後output的文件。

步驟三:完成了..
當step2.3按下Enter鍵後,再回到檔案夾就可以看到創建的bind_all已經在檔案夾中了,如此一來就完成合併多個Excel

註:當然如果你只是要合併文件夾中的某幾個csv,也是可以的。例如我只要bind_01,bind_02合併成bind_0102:
cat bind_01.csv bind_02.csv > bind_0102.csv
詳細說明可以參閱該文檔:The cat Command
自動引用通知: 合併多個有相同表頭的CSV文件-秒速完成的shell指令 – LoveFrom Data.國欣說