您現在的位置是:首頁 > 音樂首頁音樂

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

由 Python資料世界 發表于 音樂2021-06-22
簡介stem) 是一個新增列並且返回修改後的資料的方法,特別適合這種場景下使用各種建立或移除行列資料的應用,請留意專欄文章案例3實際工作中還有更麻煩的情況,比如一個部門檔案中又按性別劃分了不同的工作表:也就是說,透過檔名字獲得部門名字,透過工

表頭名字怎麼正式

此係列文章收錄在公眾號中:資料大宇宙 > 資料處理 >E-pd

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

經常聽別人說 Python 在資料領域有多厲害,結果學了很長時間,連資料處理都麻煩得要死。後來才發現,原來不是 Python 資料處理厲害,而是他有資料分析神器—— pandas

前言

本系列上一節說了拆分資料的案例,這次自然是說下怎麼合併資料。

隨著需求複雜度提高,很多時候已經不能用 excel 自帶功能實現了,不過 pandas 中許多概念與 excel 不謀而合

案例1

公司的銷售系統功能不全,匯出資料時只能把各個部門獨立一個Excel檔案,此時你需要對整體資料做分析,最好的方式當然是先把各個檔案統一彙總起來:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

注意看,雖然每個表的標題一樣,但是他們的順序可能出現不一致

這裡有3個關鍵點:

如何獲得一個資料夾中所有檔案的路徑

載入 Excel 檔案資料

列標題對齊的情況下,多個數據合併

這次我們需要用到3個包:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

pandas 不用多說

from pathlib import Path ,用於獲取資料夾中檔案的路徑

openpyxl 用於讀取 Excel 檔案所有的工作表

我們來看看如何用pandas完成需求:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

Path(‘案例1’)。glob(‘*。xlsx’) ,獲得指定資料夾(案例1)中的所有 Excel 檔案路徑

pd。read_excel(f) ,載入 Excel 資料

pd。concat(dfs) ,合併多個數據,pandas 自動進行索引對齊

關於 pathlib 的知識點,請關注公眾號的入門必備系列文章

上面是普通的寫法,這場景我傾向於使用推導式:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

推導式內容,請看 資料大宇宙 > Python入門必備 > 必備知識 > 細講Python推導式

案例2

有時候,表格中沒有必要的資訊,如下:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

這次表格中沒有部門列,部門的資訊只能在檔名字中獲取

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

df[‘部門’] = f。stem ,pandas 中新增一列值是非常容易。f。stem 是不帶字尾的檔名字

為什麼上面不用推導式呢?因為推導式只適合一行連續呼叫的寫法,當然這裡還是可以使用推導式實現的:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

DataFrame。assign(部門=f。stem) 是一個新增列並且返回修改後的資料的方法,特別適合這種場景下使用

各種建立或移除行列資料的應用,請留意專欄文章

案例3

實際工作中還有更麻煩的情況,比如一個部門檔案中又按性別劃分了不同的工作表:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

也就是說,透過檔名字獲得部門名字,透過工作表名字獲得性別資訊

其實,道理與案例2是一樣的,只要知道怎麼獲取一個Excel檔案的工作表名字,問題即可迎刃而解:

懂Excel就能輕鬆入門Python資料分析包pandas(十六):合併資料

openpyxl。load_workbook(f)。worksheets ,利用 openpyxl 包,讀取檔案的所有工作表名字

。assign(部門=f。stem,性別=wk。title) ,wk。title 即使工作表名字

總結

pathlib 包中的類 Path 是個處理檔案路徑的好東西

Path 的 方法 glob(‘*。xlsx’) ,即可獲取一個目錄下所有的 Excel 檔案

pd。concat ,合併多個 DataFrame,並且能夠自動對齊表頭

當需要往 DataFrame 新增新列時,可以考慮使用 assign

openpyxl。load_workbook(f)。worksheets ,獲取 Excel 檔案的工作表物件。其中的 title 屬性,即是工作表名字

如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。