【Python數據科學手冊】Pandas——八、合併數據集: 合併(merge)與連接(join)

八、合併數據集: 合併與連接

1.關係代數

關係代數是處理關係型數據的通用理論,絕大部分數據庫的可用操作都以此爲理論基礎。關係代數方法論的強大之處在於,它提出的若干簡單操作規則經過組合就可以爲任意數據集構建十分複雜的操作。

2.數據連接的類型

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

1)一對一連接

默認how=‘inner’,默認情況下,沒有特殊指定,將相同列名作爲ON條件,共同列的列名要相同,且這樣的列只有1列,連接後索引或自動調整
在這裏插入圖片描述

2)多對一連接

在需要連接的兩個列中,有一列的值有重複。通過多對一連接獲得的結果 DataFrame 將會保留重複值。這樣原本“一”的那一側會被“多”的那一側重複
在這裏插入圖片描述

3)多對多連接

如果左右兩個輸入的共同列都包含重複值,那麼合併的結果就是一種多對多連接。
左*右=重複次數
在這裏插入圖片描述

3.設置數據合併的鍵

1). 參數on的用法

直接將參數 on 設置爲一個列名字符串或者一個包含多列名稱的列表,這個參數只能在兩個DataFrame 有共同列名的時候纔可以使用
在這裏插入圖片描述

2). left_on與right_on參數

當連接的字段,名稱不一樣時,需要分別指定字段名
連接之後的兩個字段都會保留,如果需要刪除某列,可以使用 DataFrame 的 drop() 方法將這列去掉。
在這裏插入圖片描述

3). left_index與right_index參數

注:set_index()將已存在的列設爲index
left_index 和 / 或 right_index 參數將索引設置爲鍵來實現合併
在這裏插入圖片描述
爲了方便考慮, DataFrame 實現了 join() 方法,它可以按照索引進行數據合併
在這裏插入圖片描述
如果想將索引與列混合使用,那麼可以通過結合 left_index 與 right_on,或者結合 left_on 與 right_index 來實現
在這裏插入圖片描述

4.設置數據連接的集合操作規則-how參數決定的內連接、左連接、右連接、外連接

默認how='inner’內連接(交集)
在這裏插入圖片描述
how=‘outer’(並集),所有缺失值都用 NaN 填充
在這裏插入圖片描述
左連接(left join)和右連接(right join)返回的結果分別只包含左列和右列
在這裏插入圖片描述

5.重複列名: suffixes參數

當出現非on列的列名重複時, pd.merge() 函數會自動爲它們增加後綴 _x 或 _y
在這裏插入圖片描述
也可以通過 suffixes 參數自定義後綴名
在這裏插入圖片描述

6.案例: 美國各州的統計數據

知識點 釋義
pd.read_csv() 讀取csv
df.head() 默認顯示前5行內容
df.isnull().any() 某一列是否存在空值
df[df.column.isnull()].head()
df[df[‘column’].isnull()].head()
查看column列爲空的數據
Series.unique() 去重
df.drop() 刪除列或行
df.query() 按照條件查詢
df.set_index() 設置某列爲index
Series.sort_values() 排序

讀取數據並預覽
在這裏插入圖片描述
查看數據是否有空值,空值部分數據
在這裏插入圖片描述
pop表本身這兩個洲數據缺失,不做處理
連接洲名錶
在這裏插入圖片描述
這裏有空值的原因是這兩個洲的全名沒有對應的數據匹配,客觀上可以填充
在這裏插入圖片描述
再去連接連接面積表,查看空值部分信息,刪除空值數據
在這裏插入圖片描述
按條件查詢
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章