日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图解pandas的数据合并merge

發布時間:2023/12/14 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解pandas的数据合并merge 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公眾號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

在實際的業務需求中,我們的數據可能存在于不同的庫表中。很多情況下,我們需要進行多表的連接查詢來實現數據的提取,通過SQL的join,比如left join、left join、inner join等來實現。

在pandas中也有實現合并功能的函數,比如:concat、append、join、merge。本文中重點介紹的是merge函數,也是pandas中最為重要的一個實現數據合并的函數。

看完了你會放棄SQL嗎?

Pandas連載文章

目前Pandas系列文章已經更新了13篇,文章都是以案例+圖解的風格,歡迎訪問閱讀。有很多個人推薦的文章:

參數

官網學習地址:https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#

pd.merge(left, # 待合并的2個數據框right, how='inner', # ‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’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)

參數的具體解釋為:

  • left、right:待合并的數據幀

  • how:合并的方式,有5種:{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, 默認是 ‘inner’

    1、 left:左連接,保留left的全部數據;right類似;類比于SQL的left join 或者right join

    2、outer:全連接功能,類似SQL的full outer join

    3、inner:交叉連接,類比于SQL的inner join

    4、cross:創建兩個數據幀DataFrame的笛卡爾積,默認保留左邊的順序

  • on:連接的列屬性;默認是兩個DataFrame的相同字段

  • left_on/right_on:指定兩個不同的鍵進行聯結

  • left_index、right_index:通過索引進行合并

  • suffixes:指定我們自己想要的后綴

  • indictor:顯示字段的來源

模擬數據

我們創建了4個DataFrame數據框;其中df1和df2、df3是具有相同的鍵userid;df4有類似的鍵userid1,取值也是ac,和df1或df2的userid取值有相同的部分。

import pandas as pd import numpy as np

參數left、right

left、how就是需要連接的兩個數據幀,一般有兩種寫法:

  • pd.merge(left,right),個人習慣
  • left.merge(right)

圖解過程如下:

  • 兩個數據框df1(left)、df2(right)有相同的字段userid
  • 默認是通過相同的字段(鍵)進行關聯,取出鍵中相同的值(ac),而且每個鍵的記錄要全部顯示,比如a有多條記錄

參數how

inner

inner稱之為內連接。它會直接根據相同的列屬性userid進行關聯,取出屬性下面相同的數據信息a、c

??上面的圖解過程就是默認的使用how=“inner”

outer

outer稱之為外連接,在拼接的過程中會取兩個數據框中鍵的并集進行拼接

  • 外連接,取出全部交集鍵的并集。例子中是user的并集
  • 如果某個鍵在某個數據框中不存在數據,則為NaN

圖解過程如下:

  • 也是根據相同的字段來進行聯結:userid
  • 保留兩邊的全部數據,所以abcde全部存在
  • 如果某邊不存在鍵下面的某個值,則結果中用NaN補充。比如df1的userid中存在b,但是df3中不存在,則結果b對應的score為NaN,cd類似;e在df3中存在e的取值,但是df1中不存在,則age的值為NaN

left

以左邊數據框中的鍵為基準;如果左邊存在但是右邊不存在,則右邊用NaN表示

圖解過程如下:

  • 和上面圖解過程的結果差別在于,沒有出現e;
  • 當how=“left”,只會保留df1(left)中userid下面的全部取值,不包含e

right

以右邊數據框中的鍵的取值為基準;如果右邊存在但是左邊不存在,則左邊用NaN表示

圖解過程如下:

  • 當how=“right”,只會保留df3(right)中userid的全部取值
  • 結果只保留了df3的userid下面的全部取值:a、e

cross

笛卡爾積:兩個數據框中的數據交叉匹配,出現n1*n2的數據量

笛卡爾積的圖解過程如下:

  • 出現的數據量是4*2,userid下面的數據交叉匹配
  • 在最終結果中相同的字段userid為了避免混淆,會帶上默認的后綴_x、_y

參數on

如果待連接的兩個數據框有相同的鍵,則默認使用該相同的鍵進行聯結。

上面的所有圖解例子的參數on默認都是使用相同的鍵進行聯結,所以有時候可省略。

再看個例子:

還可以將left和right的位置進行互換:

上面的兩個例子都是針對數據框只有具有相同的一個鍵,如果不止通過一個鍵進行聯結,該如何處理?通過一個來自官網的例子來解釋,我們先創建兩個DataFrame:df5、df6

現在進行兩個數據框的合并:

合并的圖解過程如下:

  • 通過on參數指定兩個連接的字段key1、key2
  • 只有當兩個數據框中的key1和key2的取值完全相同的時候(交集),才會保留下來;比如都出現了key1=K0,key2=K0和key1=K1,key2=K0。

在看一個通過how="outer"進行連接的案例:

看看圖解的過程:

  • 指定連接的兩個鍵key1、key2
  • 使用how=“outer”,會保留兩個數據框中的全部數據。某個數據框中不存在鍵的值,則取NaN

參數left_on、right_on

上面在連接合并的時候,兩個數據框之前都是有相同的字段,比如userid或者key1和key2。但是如何兩個數據框中沒有相同的鍵,但是這些鍵中的取值有相同的部分,比如我們的df1、df3:

在這個時候我們就使用left_on和right_on參數,分別指定兩邊的連接的鍵:

如果我們不指定,系統就會報錯,因為這兩個數據框是沒有相同的鍵,本身是無法連接的:

參數suffixes

如果連接之后結果有相同的字段出現,默認后綴是_x_、_y。這個參數就是改變我們默認的后綴。我們回顧下笛卡爾積的形成;

現在我們可以指定想要的后綴:

indicator

這個參數的作用是表明生成的一條記錄是來自哪個DataFrame:both、left_only、right_only

如果帶上參數會顯示一個新字段_merge:

不帶上參數的話,默認是不會顯示來源的,看默認的情況:

總結

merge函數真的是非常強大,在工作中也使用地很頻繁,完全可以實現SQL中的join效果。希望本文的圖解能夠幫助讀者理解這個合并函數的使用。同時pandas還有另外幾個與合并相關的函數,比如:join、concat、append,會在下一篇文中統一講解。

總結

以上是生活随笔為你收集整理的图解pandas的数据合并merge的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产夫妻性生活 | 国产东北露脸精品视频 | 免费在线小视频 | 日本三级一区二区三区 | 丰满大乳奶做爰ⅹxx视频 | 亚洲一区二区电影网 | 久久综合一区二区三区 | 自拍偷拍第二页 | 久久黄色网| 中文字幕色片 | 超碰在线影院 | 免费麻豆 | 海角官网 | 天天看夜夜操 | 成人深夜小视频 | 免费观看黄色小视频 | 欧美久久久久久久久中文字幕 | 国产精品久热 | 亚洲精品久久久久久久蜜桃 | 人妻 校园 激情 另类 | 国产91香蕉 | 亚洲av无码乱码国产精品 | 日韩欧美在线精品 | 国产精品九九视频 | 日本久久中文字幕 | 国产精品v亚洲精品v日韩精品 | 不卡日本| 国产精品福利电影 | 久热亚洲 | 男女男精品视频 | 高清中文字幕mv的电影 | 1024你懂的日韩| 亚洲欧美字幕 | 亚洲另类欧美日韩 | 成人一级生活片 | 精品无码久久久久 | 白嫩情侣偷拍呻吟刺激 | 99久免费精品视频在线观78 | 婷婷精品视频 | 青青视频二区 | 黄色高清视频 | 毛片视频免费播放 | 亚洲人成电影在线 | www.精品一区 | 五月天婷婷综合 | 二区视频在线观看 | 国产亚洲视频一区 | 亚洲男人皇宫 | 亚洲男同视频 | 日韩经典第一页 | 成人免费视频国产免费 | 69黄色片| 久久6精品| 精品视频一二区 | 日韩欧美国产精品 | 大乳村妇的性需求 | 日韩精品观看 | 亚洲欧美系列 | 在线观看日韩国产 | 国产精品xxxx | 欧美国产乱视频 | missav|免费高清av在线看 | 一区二区视频在线播放 | 亚洲国产欧美一区二区三区深喉 | 亚洲精品日韩av | 亚洲激情视频网 | 亚洲特黄毛片 | 强侵犯の奶水授乳羞羞漫虐 | 国产一级淫 | 亚洲成人生活片 | 亚洲在线视频免费观看 | 天天射天天草 | 美女久久视频 | 色老头在线观看 | 日本人妻熟妇久久久久久 | 自拍偷拍福利视频 | 国产一二三区精品 | 尤物视频免费观看 | 一级小毛片 | 少妇久久久久久 | 国产色一区 | 国产免费黄色小视频 | 亚洲欧美中文日韩在线观看 | 99精品免费在线观看 | 不卡影院 | 成人片片| 在线观看av不卡 | 久青草国产在线 | 精品人妻二区中文字幕 | 成人3d动漫一区二区三区91 | 成人激情视频网站 | 国产视频a| 精品国产鲁一鲁一区二区三区 | 久久综合免费视频 | 免费一二区 | 99在线小视频 | 天天干夜夜干 | 精品国产aⅴ一区二区三区东京热 | 国产免费一区二区三区最新不卡 |