熱線電話:13121318867

登錄
首頁大數據時代在 pandas 中如何 實現 sql 查詢中 case when then end 的功能?
在 pandas 中如何 實現 sql 查詢中 case when then end 的功能?
2023-04-21
收藏

pandas中實現SQL查詢中的CASE-WHEN-THEN-END功能是一項非常有用的技能,可以幫助我們快速和高效地處理數據。我將向你介紹如何在Pandas中實現此功能,并提供一些示例,以便您更好地理解。

首先,讓我們先回顧一下SQL中的CASE-WHEN-THEN-END語句是什么。它通常用于根據某些條件對數據進行分類或轉換。例如,假設我們有一個“訂單”表,其中包含客戶的姓名、訂單金額和訂單日期。我們可以使用CASE-WHEN-THEN-END語句將訂單金額按照以下規則進行分類:

  • 如果訂單金額小于100,則為“小額訂單”。
  • 如果訂單金額介于100和1000之間,則為“普通訂單”。
  • 如果訂單金額大于1000,則為“大額訂單”。

SQL中,可以通過以下方式實現:

SELECT
    customer_name,
    order_amount,
    CASE
        WHEN order_amount < 100 class="hljs-string">'Small Order'
        WHEN order_amount BETWEEN 100 AND 1000 THEN 'Regular Order'
        WHEN order_amount > 1000 THEN 'Large Order'
    END AS order_type,
    order_date
FROM
    orders;

現在讓我們看看如何在pandas中實現相同的結果。Pandas提供了類似的功能,稱為“np.select”。它將一個布爾數組列表作為第一個參數,每個布爾數組都代表一個條件。第二個參數是一個列表,其中包含與每個條件對應的值。如果沒有任何條件被滿足,則返回第三個參數作為默認值。以下是如何在Pandas中實現上述示例的代碼:

import pandas as pd
import numpy as np

orders = pd.read_csv('orders.csv')

conditions = [
    orders['order_amount'] < 100 class="hljs-string">'order_amount'] >= 100) & (orders['order_amount'] <= 1000),
    orders['order_amount'] > 1000
]

choices = ['Small Order', 'Regular Order', 'Large Order']

orders['order_type'] = np.select(conditions, choices, default='Unknown')

print(orders)

在這個例子中,我們首先將數據集加載到一個名為“orders”的DataFrame中。然后,我們定義了三個條件,因此我們有三個布爾數組分別代表小額訂單、普通訂單和大額訂單。接下來,我們定義了三個值列表,其中包含與每個條件相對應的值,即“Small Order”、“Regular Order”和“Large Order”。最后,我們使用np.select函數將這些條件和值傳遞給訂單數據集,并將結果存儲在名為“order_type”的新列中。

需要注意的是,我們還提供了一個默認值參數,以便處理任何未被滿足的條件。在這個例子中,我們將默認值設置為“Unknown”。

此外,在Pandas中,也可以使用“pd.cut”函數來執行類似的操作。它允許我們將連續變量分成離散的區間,并將它們標記為相應的類別。例如,在上面的訂單數據集中,我們可以使用以下代碼將訂單金額劃分為三個等距的區間:

orders['order_type'] = pd.cut(orders['order_amount'], 3, labels=['Small Order', 'Regular Order', 'Large Order'])

在這種情況下,我們將訂單金額分成三個等距的區間,并將每個區間標記為“Small Order”、“Regular Order”或“Large Order”。

總結起來,Pandas提供了多種實現SQL查詢中CASE-WHEN-THEN-END功能的方法,包括使用np.select和pd.cut函數。這些函數都非常有用,可以幫助我們快速、高效地處理數據,并使得數據轉換和分類更容易。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢