
在數(shù)據(jù)分析工作中,基于多列條件篩選數(shù)據(jù)是高頻需求。無(wú)論是提取滿足特定業(yè)務(wù)規(guī)則的樣本,還是清洗異常數(shù)據(jù),Pandas 都提供了靈活高效的多條件處理機(jī)制。本文將系統(tǒng)梳理多列條件篩選的語(yǔ)法規(guī)則、進(jìn)階技巧與實(shí)戰(zhàn)案例,幫助數(shù)據(jù)從業(yè)者掌握精準(zhǔn)數(shù)據(jù)提取的核心能力。
多列條件篩選本質(zhì)是通過(guò)組合多個(gè)字段的邏輯規(guī)則,從 DataFrame 中提取目標(biāo)子集。在實(shí)際業(yè)務(wù)中,這種操作無(wú)處不在:電商場(chǎng)景中篩選 “價(jià)格> 500 元且銷量 > 1000 件” 的商品,金融領(lǐng)域識(shí)別 “風(fēng)險(xiǎn)等級(jí)為高且逾期天數(shù) > 30 天” 的客戶,游戲數(shù)據(jù)分析中定位 “等級(jí) > 50 級(jí)但近 7 日未登錄” 的流失高價(jià)值用戶。相比單條件篩選,多列條件能更精準(zhǔn)地鎖定業(yè)務(wù)目標(biāo),為決策提供更聚焦的數(shù)據(jù)支撐。
Pandas 中多列條件篩選的核心是通過(guò)布爾索引實(shí)現(xiàn),需掌握三大邏輯運(yùn)算符的正確使用:
當(dāng)需要篩選同時(shí)滿足列 A 條件和列 B 條件的記錄時(shí),使用&
連接,且每個(gè)條件需用括號(hào)包裹(避免運(yùn)算符優(yōu)先級(jí)沖突)。
import pandas as pd
# 示例數(shù)據(jù):游戲用戶信息
data = {
'user_id': [101, 102, 103, 104],
'level': [45, 60, 30, 55],
'last_login_days': [3, 15, 7, 20],
'pay_total': [500, 1200, 80, 800]
}
df = pd.DataFrame(data)
# 篩選:等級(jí)>50且近15天未登錄(last_login_days>15)的用戶
condition = (df['level'] > 50) & (df['last_login_days'] > 15)
result = df[condition]
當(dāng)需要篩選滿足列 A 條件或列 B 條件的記錄時(shí),使用|
連接,同樣需注意括號(hào)包裹。
# 篩選:累計(jì)付費(fèi)>1000元 或 等級(jí)>50級(jí)的用戶
condition = (df['pay_total'] > 1000) | (df['level'] > 50)
result = df[condition]
用于篩選不滿足某條件的記錄,常與&
/|
組合使用。
# 篩選:等級(jí)<=50級(jí)且非沉默用戶(last_login_days<=7)
condition = (df['level'] <= 50) & ~(df['last_login_days'] > 7)
result = df[condition]
對(duì)于包含多個(gè)字段、多層邏輯的復(fù)雜條件,需結(jié)合 Pandas 的高級(jí)方法提升可讀性與效率。
當(dāng)條件涉及多列且邏輯復(fù)雜時(shí),query()
方法支持字符串形式的條件表達(dá)式,語(yǔ)法更接近自然語(yǔ)言。
# 篩選:等級(jí)在50-60之間,且累計(jì)付費(fèi)>800元,且近15天內(nèi)登錄的用戶
result = df.query("50 <= level <= 60 & pay_total > 800 & last_login_days <= 15")
對(duì)于需要?jiǎng)討B(tài)計(jì)算的條件(如基于列間關(guān)系的規(guī)則),可使用apply()
結(jié)合自定義函數(shù)實(shí)現(xiàn)。
# 定義條件函數(shù):高價(jià)值活躍用戶(付費(fèi)率=總付費(fèi)/等級(jí)>20,且登錄間隔<10天)
def is_high_value(row):
pay_rate = row['pay_total'] / row['level']
return pay_rate > 20 and row['last_login_days'] < 10
# 應(yīng)用函數(shù)篩選
result = df[df.apply(is_high_value, axis=1)]
當(dāng)某列需匹配多個(gè)離散值時(shí),isin()
比多個(gè)==
+|
的組合更簡(jiǎn)潔。
# 篩選:用戶等級(jí)為30、45、60級(jí),且累計(jì)付費(fèi)>100的記錄
condition = df['level'].isin([30, 45, 60]) & (df['pay_total'] > 100)
result = df[condition]
以某手游運(yùn)營(yíng)數(shù)據(jù)為例,展示多列條件在實(shí)際業(yè)務(wù)中的應(yīng)用流程:
業(yè)務(wù)目標(biāo):篩選出 “可挽回的高價(jià)值流失用戶”,定義為:
等級(jí)≥50 級(jí)(高等級(jí))
累計(jì)付費(fèi)≥1000 元(高價(jià)值)
最后登錄天數(shù)在 15-30 天之間(近期流失)
歷史登錄天數(shù)≥100 天(深度用戶)
# 加載數(shù)據(jù)
運(yùn)營(yíng)數(shù)據(jù) = pd.read_csv("game_operation.csv")
# 組合多列條件
條件 = (
(運(yùn)營(yíng)數(shù)據(jù)['等級(jí)'] >= 50) &
(運(yùn)營(yíng)數(shù)據(jù)['累計(jì)付費(fèi)'] >= 1000) &
(運(yùn)營(yíng)數(shù)據(jù)['最后登錄天數(shù)'].between(15, 30)) & # between()簡(jiǎn)化范圍判斷
(運(yùn)營(yíng)數(shù)據(jù)['歷史登錄天數(shù)'] >= 100)
)
# 提取目標(biāo)用戶并添加標(biāo)簽
可挽回用戶 = 運(yùn)營(yíng)數(shù)據(jù)[條件].copy()
可挽回用戶['用戶標(biāo)簽'] = '可挽回高價(jià)值流失用戶'
通過(guò)該篩選,運(yùn)營(yíng)團(tuán)隊(duì)可針對(duì)這類用戶推送專屬召回禮包,精準(zhǔn)提升回流率。
運(yùn)算符優(yōu)先級(jí)陷阱:忘記用括號(hào)分隔條件會(huì)導(dǎo)致邏輯錯(cuò)誤,例如df['a'] > 1 & df['b'] < 5
會(huì)被解析為df['a'] > (1 & df['b']) < 5
,必須寫成(df['a'] > 1) & (df['b'] < 5)
。
數(shù)據(jù)類型沖突:當(dāng)列包含缺失值或非數(shù)值類型時(shí),條件判斷可能返回NaN
,需先用dropna()
或fillna()
處理,例如df[df['金額'].notna() & (df['金額'] > 0)]
。
大規(guī)模數(shù)據(jù)效率:對(duì)百萬(wàn)級(jí)以上數(shù)據(jù),query()
和布爾索引效率優(yōu)于apply()
,建議優(yōu)先選擇向量化操作。
條件復(fù)用:復(fù)雜條件建議用變量存儲(chǔ),避免重復(fù)編寫,例如high_value = df['付費(fèi)'] > 1000
,后續(xù)可直接調(diào)用high_value & other_condition
。
多列條件篩選是 Pandas 數(shù)據(jù)處理的核心技能,其本質(zhì)是將業(yè)務(wù)規(guī)則轉(zhuǎn)化為可執(zhí)行的邏輯表達(dá)式。從基礎(chǔ)的&
/|
組合到進(jìn)階的query()
與函數(shù)式篩選,選擇合適的方法既能保證代碼的可讀性,又能提升數(shù)據(jù)處理效率。在實(shí)際應(yīng)用中,需結(jié)合業(yè)務(wù)場(chǎng)景靈活設(shè)計(jì)條件,同時(shí)注意語(yǔ)法細(xì)節(jié)與性能優(yōu)化,讓數(shù)據(jù)篩選成為驅(qū)動(dòng)業(yè)務(wù)決策的精準(zhǔn)工具。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
PowerBI 累計(jì)曲線制作指南:從 DAX 度量到可視化落地 在業(yè)務(wù)數(shù)據(jù)分析中,“累計(jì)趨勢(shì)” 是衡量業(yè)務(wù)進(jìn)展的核心視角 —— 無(wú)論是 “ ...
2025-08-15Python 函數(shù) return 多個(gè)數(shù)據(jù):用法、實(shí)例與實(shí)戰(zhàn)技巧 在 Python 編程中,函數(shù)是代碼復(fù)用與邏輯封裝的核心載體。多數(shù)場(chǎng)景下,我們 ...
2025-08-15CDA 數(shù)據(jù)分析師:引領(lǐng)商業(yè)數(shù)據(jù)分析體系構(gòu)建,筑牢企業(yè)數(shù)據(jù)驅(qū)動(dòng)根基 在數(shù)字化轉(zhuǎn)型深化的今天,企業(yè)對(duì)數(shù)據(jù)的依賴已從 “零散分析” ...
2025-08-15隨機(jī)森林中特征重要性(Feature Importance)排名解析 在機(jī)器學(xué)習(xí)領(lǐng)域,隨機(jī)森林因其出色的預(yù)測(cè)性能和對(duì)高維數(shù)據(jù)的適應(yīng)性,被廣 ...
2025-08-14t 統(tǒng)計(jì)量為負(fù)數(shù)時(shí)的分布計(jì)算方法與解析 在統(tǒng)計(jì)學(xué)假設(shè)檢驗(yàn)中,t 統(tǒng)計(jì)量是常用的重要指標(biāo),其分布特征直接影響著檢驗(yàn)結(jié)果的判斷。 ...
2025-08-14CDA 數(shù)據(jù)分析師與業(yè)務(wù)數(shù)據(jù)分析步驟 在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的商業(yè)世界中,數(shù)據(jù)分析已成為企業(yè)決策和發(fā)展的核心驅(qū)動(dòng)力。CDA 數(shù)據(jù)分析師作 ...
2025-08-14前臺(tái)流量與后臺(tái)流量:數(shù)據(jù)鏈路中的雙重鏡像? 在商業(yè)數(shù)據(jù)分析體系中,流量數(shù)據(jù)是洞察用戶行為與系統(tǒng)效能的核心依據(jù)。前臺(tái)流量與 ...
2025-08-13商業(yè)數(shù)據(jù)分析體系構(gòu)建與 CDA 數(shù)據(jù)分析師的協(xié)同賦能? ? 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,商業(yè)數(shù)據(jù)分析已從 “可選工具” 升級(jí)為 “核 ...
2025-08-13解析 CDA 數(shù)據(jù)分析師:數(shù)據(jù)時(shí)代的價(jià)值挖掘者? 在數(shù)字經(jīng)濟(jì)高速發(fā)展的今天,數(shù)據(jù)已成為企業(yè)核心資產(chǎn),而將數(shù)據(jù)轉(zhuǎn)化為商業(yè)價(jià)值的 ...
2025-08-13解析 response.text 與 response.content 的核心區(qū)別 在網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求與處理的場(chǎng)景中,開(kāi)發(fā)者經(jīng)常需要從服務(wù)器返回的響應(yīng)中提取數(shù) ...
2025-08-12MySQL 統(tǒng)計(jì)連續(xù)每天數(shù)據(jù):從業(yè)務(wù)需求到技術(shù)實(shí)現(xiàn) 在數(shù)據(jù)分析場(chǎng)景中,連續(xù)日期的數(shù)據(jù)統(tǒng)計(jì)是衡量業(yè)務(wù)連續(xù)性的重要手段 —— 無(wú)論是 ...
2025-08-12PyTorch 中 Shuffle 機(jī)制:數(shù)據(jù)打亂的藝術(shù)與實(shí)踐 在深度學(xué)習(xí)模型訓(xùn)練過(guò)程中,數(shù)據(jù)的呈現(xiàn)順序往往對(duì)模型性能有著微妙卻關(guān)鍵的影響 ...
2025-08-12Pandas 多列條件篩選:從基礎(chǔ)語(yǔ)法到實(shí)戰(zhàn)應(yīng)用 在數(shù)據(jù)分析工作中,基于多列條件篩選數(shù)據(jù)是高頻需求。無(wú)論是提取滿足特定業(yè)務(wù)規(guī)則的 ...
2025-08-12人工智能重塑 CDA 數(shù)據(jù)分析領(lǐng)域:從工具革新到能力重構(gòu) 在數(shù)字經(jīng)濟(jì)浪潮與人工智能技術(shù)共振的 2025 年,數(shù)據(jù)分析行業(yè)正經(jīng)歷著前所 ...
2025-08-12游戲流水衰退率:計(jì)算方法與實(shí)踐意義 在游戲行業(yè)中,流水(即游戲收入)是衡量一款游戲商業(yè)表現(xiàn)的核心指標(biāo)之一。而游戲流水衰退 ...
2025-08-12CDA 一級(jí):數(shù)據(jù)分析入門的基石? ? 在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,數(shù)據(jù)分析能力已成為職場(chǎng)中的一項(xiàng)重要技能。CDA(Certified Data Anal ...
2025-08-12破解游戲用戶流失困局:從數(shù)據(jù)洞察到留存策略 在游戲行業(yè)競(jìng)爭(zhēng)白熱化的當(dāng)下,用戶流失率已成為衡量產(chǎn)品健康度的核心指標(biāo)。一款游 ...
2025-08-11數(shù)據(jù)時(shí)代的黃金入場(chǎng)券:CDA 認(rèn)證解鎖職業(yè)新藍(lán)海 一、萬(wàn)億級(jí)市場(chǎng)需求下的數(shù)據(jù)分析人才缺口 在數(shù)字化轉(zhuǎn)型浪潮中,數(shù)據(jù)已成為企業(yè)核 ...
2025-08-11DBeaver 實(shí)戰(zhàn):實(shí)現(xiàn)兩個(gè)庫(kù)表結(jié)構(gòu)同步的高效路徑 在數(shù)據(jù)庫(kù)管理與開(kāi)發(fā)工作中,保持不同環(huán)境(如開(kāi)發(fā)庫(kù)與生產(chǎn)庫(kù)、主庫(kù)與從庫(kù))的表 ...
2025-08-08t 檢驗(yàn)與卡方檢驗(yàn):數(shù)據(jù)分析中的兩大統(tǒng)計(jì)利器 在數(shù)據(jù)分析領(lǐng)域,統(tǒng)計(jì)檢驗(yàn)是驗(yàn)證假設(shè)、挖掘數(shù)據(jù)規(guī)律的重要手段。其中,t 檢驗(yàn)和卡 ...
2025-08-08