【Python】图解Pandas数据合并:concat、join、append
公眾號:尤而小屋
作者:Peter
編輯:Peter
圖解pandas數據合并:concat+join+append
在上一篇文章中介紹過pandas中最為常用的一個合并函數merge的使用,本文中介紹的是另外3個與合并操作相關的函數:
concat
join
append
挑戰SQL:圖解Pandas的數據合并merge
Pandas連載
本文是Pandas數據分析庫的第15篇,歡迎閱讀:
模擬數據
首先是模擬幾份不同的數據:
import?pandas?as?pd import?numpy?as?npconcat
concat也是一個常用的合并函數,下面通過具體例子來介紹它的使用。
參數
pandas.concat(objs,??#?合并對象axis=0,???#?合并方向,默認是0縱軸方向join='outer',?#?合并取的是交集inner還是并集outerignore_index=False,?#?合并之后索引是否重新keys=None,?#?在行索引的方向上帶上原來數據的名字;主要是用于層次化索引,可以是任意的列表或者數組、元組數據或者列表數組levels=None,?#?指定用作層次化索引各級別上的索引,如果是設置了keysnames=None,?#?行索引的名字,列表形式verify_integrity=False,?#?檢查行索引是否重復;有則報錯sort=False,?#?對非連接的軸進行排序copy=True???#?是否進行深拷貝)默認情況
默認情況是直接在縱向上進行合并
axis
指定合并的方向
如果某個數據框中不存在,則會顯示為NaN:
根據實際數據調整合并的方向,默認是axis=0
某個數據庫中不存在的數據,用NaN代替
參數ignore_index
是否保留原表索引,默認保留,為 True 會自動增加自然索引。
參數join
指定取得交集inner還是并集outer,默認是并集outer
df3和df4只有地址這個字段是相同的,所以保留了它,其他的舍棄:
參數keys
當我們設置了索引重排(ignore_index=True),keys參數就無效啦
參數name
指定每個層級索引的名字
我們可以檢查下df6的索引,發現是層級索引:
合并多個DataFrame
同時合并df1、df2、df5
pd.concat([pd.concat([df1,df2],axis=0,ignore_index=True),df5],axis=1)分兩步來實現:先合并df1、df2,將得到的結果和df5合并
join
參數
來自官網的參數說明:
dataframe.join(other,??#?待合并的另一個數據框on=None,??#?連接的鍵how='left',???#?連接方式:‘left’, ‘right’, ‘outer’, ‘inner’?默認是leftlsuffix='',??#?左邊(第一個)數據框相同鍵的后綴rsuffix='',??#?第二個數據框的鍵的后綴sort=False)??#?是否根據連接的鍵進行排序;默認False模擬數據
為了解釋join的操作,再模擬下數據:
參數 lsuffix、rsuffix
功能是為了添加指定的后綴
如果不指定的話,會報錯:
參數how
how參數默認是left,保留左邊的全部字段。右邊不存在的數據用NaN
改成right之后,保留右邊的全部數據:
可以在默認的參數結果中,name字段被分成了name_left和name_right,如何進行字段的合并呢???
先把鍵當做行索引
通過join合并
通過reset_index()重新設置索引
合并兩個數據:
最后進行索引重置的功能:
還有一種更為簡便的方法:
合并多個DataFrame
利用join來實現多個DataFrame的合并:
如果我們想要用merge函數來實現呢?
使用how="outer",保留全部字段的數據信息
append
字面意思是“追加”。向dataframe對象中添加新的行,如果添加的列名不在dataframe對象中,將會被當作新的列進行添加
參數
DataFrame.append(other,?ignore_index=False,?verify_integrity=False,?sort=False)參數解釋:
other:待合并的數據??梢允莗andas中的DataFrame、series,或者是Python中的字典、列表這樣的數據結構
ignore_index:是否忽略原來的索引,生成新的自然數索引
verify_integrity:默認是False,如果值為True,創建相同的index則會拋出異常的錯誤
sort:boolean,默認是None。如果self和other的列沒有對齊,則對列進行排序,并且屬性只在版本0.23.0中出現。
模擬數據
添加不同類型數據
1、Python字典
2、Series類型
3、最常用的DataFrame
默認合并
df12和df13默認合并的結果:
參數ignore_index
改變生成的索引值
參數verify_integrity
默認是False,如果值為True,創建相同的index則會拋出異常的錯誤
案例實戰
假設現在一個excel表中有3個sheet:訂單表、訂單商品表、商品信息表:
1、訂單表
2、訂單商品表
3、商品信息表
現在我們通過合并函數將3個sheet中的內容關聯起來:
import?pandas?as?pd import?numpy?as?np#?讀取訂單表中的內容 df1?=?pd.read_excel("水果訂單商品信息3個表.xlsx",sheet_name=0)??#?第一個sheet的內容,索引從0開始 df1 #??讀取訂單商品表 df2?=?pd.read_excel("水果訂單商品信息3個表.xlsx",sheet_name=1)#?商品信息表 df3?=?pd.read_excel("水果訂單商品信息3個表.xlsx",sheet_name="商品信息")??#?可以直接指定sheet的名字name,不通過索引 df3第一步:訂單表和訂單商品表的合并
第二步:將上面的結果和商品信息表合并
當我們得到上面的結果后,就可以完成很多的需求,舉2個例子說明:
1、不同水果的銷量和訂單數:根據水果進行分組統計數量和訂單數
2、不同區域的水果銷售額和客戶數
總結
兩篇關于pandas數據合并的文章,詳細介紹了4個函數:merge、concat、join、append的使用;其中,merge和concat最為常用。它們可以是實現SQL中join的功能。不管是交集、并集、還是左右連接,甚至是全連接都是可以直接實現的。
上面的實戰案例數據是存放在一個Excel表中。在pandas中,我們可以從不同的來源:Excel、數據庫、本地文件夾等獲取來進行數據合并,方便后續實現我們的需求,希望本文對讀者有所幫助。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯黃海廣老師《機器學習課程》課件合集 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【Python】图解Pandas数据合并:concat、join、append的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在iOS设备上如何使用Chrome浏览器
- 下一篇: 【Python】开启Pandas进阶:图