溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL和Python的集合操作對比

發布時間:2021-09-17 14:53:20 來源:億速云 閱讀:210 作者:chen 欄目:數據庫

本篇內容主要講解“SQL和Python的集合操作對比”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“SQL和Python的集合操作對比”吧!

集合操作

分析式問題通常需要檢查多個不同的數據集。在解答過程中,通過比較或組合不同的數據集來創建一組新數據集,非常有效。

例如,你可能有兩個單獨的表,其中包含要轉換為單個事務表的事務性數據,你想把它們合并為一個表,或者創建一個同時包含兩個表中數據的新事務表。

在SQL中,集合操作符可以解決這個問題。集合操作符支持對比性操作,可以有條件地連結兩個SQL語句的結果集。SQL集合操作符包括:

  • UNION:從待比較的兩個查詢語句返回結果行。在默認情況下,如果兩個SQL語句的結果集中存在相同的行,則UNION不會返回重復行。如果你想返回重復行,可以向集合操作符UNION提供可選ALL關鍵字。

  • INTERSECT:返回位于兩個待比較的查詢語句結果集中的行。

  • EXCEPT(或者MINUS):返回到非待比較的查詢語句結果集中的行。

雖然Python中沒有特定的集合操作符種類,但Python中仍然有各種各樣的函數可以實現這些功能。

為了說明如何在實踐中使用這些集合操作,先假設你作為一名雙邊市場數據科學家。在你的市場中有買家和賣家,二者并不相互排斥?,F在,買賣雙方分別存在于buyers和sellers表格的數據庫中。讓我們來瀏覽一下集合操作可能發揮作用的幾種場景。

合并和合并所有

假設你想把存在于buyers和sellers表格中的所有用戶合并到一個新的單獨的“用戶”表格中。

在SQL中,你可以使用UNION操作符和可選ALL關鍵字來實現:

-- SQLselect user_id  from modeanalytics.buyers  union all  select user_id  from modeanalytics.sellers

在Python中,可以使用pandas .concat()函數復制上面執行的UNION ALL集合操作。

pandas  .concat()方法沿著選定的軸連接pandas對象(例如Dataframes,Series等)。假設您已將buyers和sellers數據庫表格中user_id字段存儲在兩個pandas數據框對象中(buyers  和 sellers),你可以使用以下Python代碼復制上面執行過的UNION ALL集合操作:

# Python users = pd.concat([buyers, sellers])

需要注意的是,在SQL中使用UNION和ALL關鍵字,或者在Python中使用pandas  concat()方法,你將把存在于兩個表格中的用戶(用戶即是買家又是賣家)返回到重復行。但是,如果你只想返回存在于兩個表中的一個用戶的單一實例時:

在SQL中,從UNION集合操作符中移除ALL關鍵字:

-- SQLselect user_id  from modeanalytics.buyers  union  select user_id  from modeanalytics.sellers

在Python中,將.drop_duplicates()方法鏈接在連接pandas對象上:

# Python users = pd.concat([buyers, sellers]).drop_duplicates()

交集

反之,如果你想創建一個既是買家又是賣家的獨立用戶表格呢?

在SQL中,你可以使用INTERSECT集合操作符:

-- SQLselect user_id  from modeanalytics.buyers  intersect  select user_id  from modeanalytics.sellers

在Python中,你可以在數據框中使用pandas .merge()方法:

Python buyers_and_sellers = buyers.merge(sellers)

默認情況下,pandas  .merge()方法將嘗試將兩個數據框中的所有列進行“內部”合并。此默認操作基本復制了SQL集合操作符INTERSECT的步驟。

差集

現在,如果你想返回到所有買家用戶,而不是賣家用戶。

在SQL中,你可以使用EXCEPT集合操作:

-- SQL select user_id from modeanalytics.buyers except select user_id from modeanalytics.sellers

值得注意的是,SQL的EXCEPT集合操作符只能返回到***個表格,不能返回到第二個表格。如果你想要返回到賣方的表格中,你需要顛倒SELECT語句的順序:

-- SQL select user_id from modeanalytics.sellers except select user_id from modeanalytics.buyers

在Python中,利用pandas布爾索引技術和pandas .isin() 索引來復制SQL EXCEPT集合操作符的功能:

# Python  buyers_not_sellers = buyers[buyers.user_id.isin(sellers.user_id) == False]  sellers_not_buyers = sellers[sellers.user_id.isin(buyers.user_id) == False]`

模糊界限

到這里,你已經了解了如何在Python中復制大量SQL集合操作符的功能。最終,編程模式的選擇取決于你,甚至可以在項目基礎上逐個改動。只有通過掌握分析語言功能上的重疊,才能有效做出決策。這就是使用多種數據分析語言的好處:你可以自定義一個混合方法來滿足你不斷發展的需求。

到此,相信大家對“SQL和Python的集合操作對比”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女