欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas中case_when()方法使用小結(jié)

 更新時(shí)間:2025年05月07日 10:03:29   作者:aobulaien001  
本文主要介紹了Pandas中case_when()方法使用小結(jié),它可以用于條件性地創(chuàng)建新的列,類似于 SQL 中的?CASE WHEN?語(yǔ)句,下面就來(lái)介紹一下,感興趣的可以了解一下

在 Python 數(shù)據(jù)分析中,Pandas 是一個(gè)強(qiáng)大的庫(kù),用于處理和分析數(shù)據(jù)。它提供了各種各樣的方法和函數(shù),使數(shù)據(jù)轉(zhuǎn)換和操作變得更加容易。在本文中,將深入探討 Pandas 中的 case_when() 方法,它可以用于條件性地創(chuàng)建新的列,類似于 SQL 中的 CASE WHEN 語(yǔ)句。我們將詳細(xì)討論該方法的用法,并提供豐富的示例代碼。

什么是 case_when() 方法?

case_when() 方法是 Pandas 庫(kù)中的一個(gè)函數(shù),它允許我們根據(jù)條件創(chuàng)建新的列。這個(gè)方法通常用于根據(jù)數(shù)據(jù)的某些特征或條件來(lái)生成新的數(shù)據(jù)列,類似于使用 if-else 語(yǔ)句進(jìn)行條件判斷。

在 Pandas 中,case_when() 方法通常與 apply() 方法結(jié)合使用,以便根據(jù)條件對(duì)每一行數(shù)據(jù)進(jìn)行操作。它提供了一種更靈活的方式來(lái)處理數(shù)據(jù),而不需要編寫(xiě)大量的條件判斷語(yǔ)句。

case_when() 方法的語(yǔ)法

case_when() 方法的語(yǔ)法如下:

pandas.Series.case_when(conditions, values, default=None, *args, **kwargs)

參數(shù)說(shuō)明:

  • conditions:條件列表,用于定義何時(shí)應(yīng)用哪個(gè)值。
  • values:與條件列表中的每個(gè)條件相對(duì)應(yīng)的值列表,用于指定滿足條件時(shí)要應(yīng)用的值。
  • default:可選參數(shù),用于指定默認(rèn)值,當(dāng)沒(méi)有條件匹配時(shí)將使用該值。
  • *args 和 **kwargs:其他參數(shù),用于傳遞給 apply() 方法。

示例代碼

通過(guò)幾個(gè)示例來(lái)演示 case_when() 方法的用法。

示例 1:基本用法

假設(shè)有一個(gè)包含學(xué)生分?jǐn)?shù)的數(shù)據(jù)集,我們想根據(jù)分?jǐn)?shù)判斷他們的等級(jí)。

可以使用 case_when() 方法來(lái)實(shí)現(xiàn)這個(gè)任務(wù):

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)集
data = {'學(xué)生姓名': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        '分?jǐn)?shù)': [85, 70, 95, 60, 75]}

df = pd.DataFrame(data)

# 定義條件和對(duì)應(yīng)的值
conditions = [df['分?jǐn)?shù)'] >= 90, (df['分?jǐn)?shù)'] >= 80) & (df['分?jǐn)?shù)'] < 90), df['分?jǐn)?shù)'] < 80]
values = ['優(yōu)秀', '良好', '及格']

# 使用 case_when() 方法創(chuàng)建新列
df['等級(jí)'] = df['分?jǐn)?shù)'].case_when(conditions, values, default='不及格')

# 輸出結(jié)果
print(df)

以上代碼將根據(jù)學(xué)生的分?jǐn)?shù)創(chuàng)建一個(gè)新的等級(jí)列,并根據(jù)條件將相應(yīng)的等級(jí)分配給每個(gè)學(xué)生。

示例 2:使用默認(rèn)值

有時(shí)候,某些數(shù)據(jù)可能不滿足任何條件。在這種情況下,可以使用默認(rèn)值來(lái)處理這些情況:

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)集
data = {'學(xué)生姓名': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        '分?jǐn)?shù)': [85, 70, 95, 60, None]}

df = pd.DataFrame(data)

# 定義條件和對(duì)應(yīng)的值
conditions = [df['分?jǐn)?shù)'] >= 90, (df['分?jǐn)?shù)'] >= 80) & (df['分?jǐn)?shù)'] < 90), df['分?jǐn)?shù)'] < 80]
values = ['優(yōu)秀', '良好', '及格']

# 使用 case_when() 方法創(chuàng)建新列,并設(shè)置默認(rèn)值為 '未知'
df['等級(jí)'] = df['分?jǐn)?shù)'].case_when(conditions, values, default='未知')

# 輸出結(jié)果
print(df)

在這個(gè)示例中,使用了一個(gè)包含空值的數(shù)據(jù)集,并使用 default 參數(shù)將沒(méi)有匹配條件的行標(biāo)記為“未知”。

示例 3:使用 apply() 方法

case_when() 方法通常與 apply() 方法一起使用,以便根據(jù)多個(gè)條件對(duì)數(shù)據(jù)集的每一行進(jìn)行操作。

以下是一個(gè)示例,根據(jù)學(xué)生的分?jǐn)?shù)和出勤情況來(lái)計(jì)算他們的最終成績(jī):

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)集
data = {'學(xué)生姓名': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        '分?jǐn)?shù)': [85, 70, 95, 60, 75],
        '出勤率': [90, 80, 95, 70, 85]}

df = pd.DataFrame(data)

# 使用 apply() 方法將多個(gè)條件應(yīng)用于每一行
def calculate_grade(row):
    if row['分?jǐn)?shù)'] >= 90 and row['出勤率'] >= 90:
        return '優(yōu)秀'
    elif row['分?jǐn)?shù)'] >= 80 and row['出勤率'] >= 80:
        return '良好'
    elif row['分?jǐn)?shù)'] >= 60 and row['出勤率'] >= 70:
        return '及格'
    else:
        return '不及格'

df['最終成績(jī)'] = df.apply(calculate_grade, axis=1)

# 輸出結(jié)果
print(df)

在這個(gè)示例中,使用 apply() 方法定義了一個(gè)自定義函數(shù) calculate_grade(),該函數(shù)基于多個(gè)條件來(lái)計(jì)算最終成績(jī),并將其應(yīng)用于數(shù)據(jù)集的每一行。

示例 4:多條件的復(fù)雜情況

有時(shí)候,需要根據(jù)多個(gè)條件的組合來(lái)生成新的列。

例如,可以根據(jù)學(xué)生的分?jǐn)?shù)和出勤情況來(lái)確定他們是否能夠獲得獎(jiǎng)學(xué)金:

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)集
data = {'學(xué)生姓名': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        '分?jǐn)?shù)': [85, 70, 95, 60, 75],
        '出勤率': [90, 80, 95, 70, 85]}

df = pd.DataFrame(data)

# 定義多條件和對(duì)應(yīng)的值
conditions = [(df['分?jǐn)?shù)'] >= 90) & (df['出勤率'] >= 90),
              (df['分?jǐn)?shù)'] >= 80) & (df['出勤率'] >= 80),
              (df['分?jǐn)?shù)'] >= 60) & (df['出勤率'] >= 70)]

values = ['獲獎(jiǎng)學(xué)金', '榮譽(yù)獎(jiǎng)', '合格']

# 使用 case_when() 方法創(chuàng)建新列
df['獎(jiǎng)勵(lì)'] = df.apply(lambda row: row['分?jǐn)?shù)'].case_when(conditions, values, default='未獲獎(jiǎng)'), axis=1)

# 輸出結(jié)果
print(df)

在這個(gè)示例中,定義了多個(gè)條件和對(duì)應(yīng)的值,并使用 apply() 方法將 case_when() 方法應(yīng)用于每一行數(shù)據(jù),根據(jù)多個(gè)條件的組合來(lái)確定是否獲得獎(jiǎng)學(xué)金。

示例 5:根據(jù)多列生成新列

有時(shí)候,需要根據(jù)多列的值生成新的列。

例如,可以根據(jù)學(xué)生的分?jǐn)?shù)和出勤情況來(lái)生成一個(gè)總分列:

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)集
data = {'學(xué)生姓名': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        '分?jǐn)?shù)1': [85, 70, 95, 60, 75],
        '分?jǐn)?shù)2': [90, 80, 85, 70, 90]}

df = pd.DataFrame(data)

# 使用 apply() 方法生成新列
df['總分'] = df.apply(lambda row: row['分?jǐn)?shù)1'] + row['分?jǐn)?shù)2'], axis=1)

# 輸出結(jié)果
print(df)

在這個(gè)示例中,使用 apply() 方法將兩列分?jǐn)?shù)相加,生成了一個(gè)新的總分列。

示例 6:處理缺失值

case_when() 方法也可以用于處理缺失值。

例如,可以根據(jù)分?jǐn)?shù)是否缺失來(lái)為學(xué)生分配等級(jí):

import pandas as pd
import numpy as np

# 創(chuàng)建示例數(shù)據(jù)集
data = {'學(xué)生姓名': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        '分?jǐn)?shù)': [85, np.nan, 95, 60, 75]}

df = pd.DataFrame(data)

# 定義條件和對(duì)應(yīng)的值
conditions = [df['分?jǐn)?shù)'].notna() & (df['分?jǐn)?shù)'] >= 90),
              df['分?jǐn)?shù)'].notna() & (df['分?jǐn)?shù)'] >= 80),
              df['分?jǐn)?shù)'].notna() & (df['分?jǐn)?shù)'] >= 60)]

values = ['優(yōu)秀', '良好', '及格']

# 使用 case_when() 方法創(chuàng)建新列,并處理缺失值
df['等級(jí)'] = df['分?jǐn)?shù)'].case_when(conditions, values, default='不及格')

# 輸出結(jié)果
print(df)

在這個(gè)示例中,使用 notna() 方法來(lái)檢查分?jǐn)?shù)是否缺失,并根據(jù)條件來(lái)為每個(gè)學(xué)生分配等級(jí)。

總結(jié)

在本文中,深入探討了 Pandas 中的 case_when() 方法的用法,包括基本用法和高級(jí)用法。這個(gè)方法對(duì)于數(shù)據(jù)分析和數(shù)據(jù)轉(zhuǎn)換任務(wù)非常有用,可以根據(jù)條件創(chuàng)建新的列,處理多條件組合和缺失值,并生成新的數(shù)據(jù)集。希望通過(guò)本文的示例代碼和解釋,能更好地理解和運(yùn)用 case_when() 方法。這將有助于更靈活地處理各種數(shù)據(jù)分析和數(shù)據(jù)處理任務(wù)。

到此這篇關(guān)于Pandas中case_when()方法使用小結(jié)的文章就介紹到這了,更多相關(guān)Pandas case_when()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python繪制BA無(wú)標(biāo)度網(wǎng)絡(luò)示例代碼

    python繪制BA無(wú)標(biāo)度網(wǎng)絡(luò)示例代碼

    今天小編就為大家分享一篇python繪制BA無(wú)標(biāo)度網(wǎng)絡(luò)示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python的pytest框架之命令行參數(shù)詳解(下)

    python的pytest框架之命令行參數(shù)詳解(下)

    這篇文章主要介紹了python的pytest框架之命令行參數(shù)詳解,今天將繼續(xù)更新其他一些命令選項(xiàng)的使用,和pytest收集測(cè)試用例的規(guī)則,需要的朋友可以參考下
    2019-06-06
  • Python的deque雙端隊(duì)列詳解

    Python的deque雙端隊(duì)列詳解

    這篇文章主要介紹了Python的deque雙端隊(duì)列詳解,deque(雙端隊(duì)列)是一種數(shù)據(jù)結(jié)構(gòu),允許使用O(1)時(shí)間復(fù)雜度從兩端添加和刪除元素, Python的deque類實(shí)現(xiàn)了此數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2023-09-09
  • Python實(shí)用秘技之快速優(yōu)化導(dǎo)包順序詳解

    Python實(shí)用秘技之快速優(yōu)化導(dǎo)包順序詳解

    這篇文章主要來(lái)和大家分享一個(gè)Python中的實(shí)用秘技,那就是如何快速優(yōu)化導(dǎo)包順序,文中的示例代碼簡(jiǎn)潔易懂,快跟隨小編一起學(xué)習(xí)起來(lái)吧
    2023-06-06
  • python列表推導(dǎo)和生成器表達(dá)式知識(shí)點(diǎn)總結(jié)

    python列表推導(dǎo)和生成器表達(dá)式知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于python列表推導(dǎo)和生成器表達(dá)式的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2020-01-01
  • Python+Tableau廣東省人口普查可視化的實(shí)現(xiàn)

    Python+Tableau廣東省人口普查可視化的實(shí)現(xiàn)

    本文將結(jié)合實(shí)例代碼,介紹Python+Tableau廣東省人口普查可視化,第七次人口普查數(shù)據(jù)分析,繪制歷次人口普查人口數(shù)量變化圖,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • python使用xlrd實(shí)現(xiàn)檢索excel中某列含有指定字符串記錄的方法

    python使用xlrd實(shí)現(xiàn)檢索excel中某列含有指定字符串記錄的方法

    這篇文章主要介紹了python使用xlrd實(shí)現(xiàn)檢索excel中某列含有指定字符串記錄的方法,涉及Python使用xlrd模塊檢索Excel的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 淺析Django接口版本控制

    淺析Django接口版本控制

    一個(gè)項(xiàng)目在升級(jí)迭代的時(shí)候,不會(huì)立馬拋棄舊的版本,甚至?xí)霈F(xiàn)多個(gè)版本共存同時(shí)維護(hù)的情況,因此需要版本控制
    2021-06-06
  • Python生成圖文并茂的PDF報(bào)告的方法詳解

    Python生成圖文并茂的PDF報(bào)告的方法詳解

    reportlab是Python的一個(gè)標(biāo)準(zhǔn)庫(kù),可以畫(huà)圖、畫(huà)表格、編輯文字,最后可以輸出PDF格式。本文將利用reportlab模塊生成圖文并茂的PDF報(bào)告,感興趣的可以了解一下
    2022-06-06
  • 詳解Python利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù)

    詳解Python利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù)

    在做一些python工具的時(shí)候,常常會(huì)碰到定時(shí)器問(wèn)題,總覺(jué)著使用threading.timer或者schedule模塊非常不優(yōu)雅。所以本文將利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù),需要的可以參考一下
    2022-03-03

最新評(píng)論