Pandas知識點(diǎn)-邏輯運(yùn)算
共
1593字,需瀏覽
4分鐘
·
2021-04-25 13:43

邏輯運(yùn)算在代碼中基本是必不可少的,Pandas的邏輯運(yùn)算與Python基礎(chǔ)語法中的邏輯運(yùn)算存在一些差異,所以本文介紹Pandas中的邏輯運(yùn)算符和邏輯運(yùn)算。
一、數(shù)據(jù)準(zhǔn)備
數(shù)據(jù)文件是600519.csv,將此文件放到代碼同級目錄下,從文件中讀取出數(shù)據(jù)。
為了使數(shù)據(jù)簡潔一點(diǎn),刪除了數(shù)據(jù)中的部分列,并設(shè)置“日期”為索引。

讀取的原始數(shù)據(jù)如上圖,本文使用這些數(shù)據(jù)來介紹Pandas中的邏輯運(yùn)算。
二、Pandas中的邏輯運(yùn)算符
1. 邏輯語句

在Pandas中,將Series與數(shù)值進(jìn)行比較,會得到一個與自身形狀相同且全為布爾值的Series,每個位置的布爾值對應(yīng)該位置的比較結(jié)果。
這種進(jìn)行比較的代碼,返回值是布爾值,是一種布爾表達(dá)式,也可以被稱為邏輯語句,只要代碼返回的結(jié)果是布爾值,都可以把代碼當(dāng)成邏輯語句。

根據(jù)邏輯語句的布爾值,可以用來對數(shù)據(jù)進(jìn)行篩選,按我們的需要從大量數(shù)據(jù)中過濾出目標(biāo)數(shù)據(jù)。
除了直接的比較,Pandas中有很多函數(shù)都會返回布爾值,如all(),any(),isna()等對整個DataFrame或Series的判斷結(jié)果,eq(),ne(),lt(),gt()等比較函數(shù)的結(jié)果,都是布爾值。
邏輯語句是為邏輯運(yùn)算服務(wù)的,可以直接作為判斷條件。在復(fù)雜的邏輯關(guān)系中,需要使用復(fù)合邏輯運(yùn)算,用邏輯運(yùn)算符來連接多個邏輯語句,復(fù)合邏輯運(yùn)算包含:邏輯與、邏輯或、邏輯非。
2. 邏輯與

Pandas中用符號 & 表示邏輯與,連接兩個邏輯語句,同時(shí)為真才為真。
在Python基本語法中,使用 and 表示邏輯與,但是Pandas中只能用 & ,不能用and,會報(bào)模糊錯誤。
3. 邏輯或

Pandas中用符號 | 表示邏輯或,連接兩個邏輯語句,只要其中一個為真就為真。
在Python基本語法中,使用 or 表示邏輯或,但是Pandas中只能用 | ,不能用or。
4. 邏輯非

Pandas中用符號 ~ (鍵盤左上角)表示邏輯非,對邏輯語句取反。
在Python基本語法中,使用 not 表示邏輯非,但是Pandas中只能用 ~ ,不能用not。
Python中的邏輯運(yùn)算關(guān)鍵字(and,or,not)除了可以連接布爾表達(dá)式,還可以連接其他的表達(dá)式,如字符串等。(and和or可以不計(jì)算出右邊表達(dá)式的布爾值就做出判斷,也可以將其中一個表達(dá)式作為返回值。另外,Python可以將其他值作為布爾判斷條件,如非空字符串表示真。)
而Pandas中,邏輯運(yùn)算符(&, |, ~)只能用于連接布爾表達(dá)式,不能處理其他的表達(dá)式。另外,在Python的基礎(chǔ)語法中,&, |, ~是位運(yùn)算符,分別表示按位與運(yùn)算、按位或運(yùn)算、按位取反運(yùn)算。
三、query()函數(shù)

邏輯運(yùn)算是為了方便篩選和過濾數(shù)據(jù),使用query()函數(shù)可以讓邏輯語句更簡潔,在query()函數(shù)中傳入查詢字符串,邏輯語句就在查詢字符串中。
在查詢字符串中,進(jìn)行條件判斷不是用列來判斷,而是直接用列索引來判斷。當(dāng)多個條件并列時(shí),因?yàn)檫壿嬤\(yùn)算符的優(yōu)先級高于比較運(yùn)算符的優(yōu)先級,每一個邏輯語句的括號也可以省略。
以上就是Pandas中的邏輯運(yùn)算介紹,重點(diǎn)是與Python基本語法的區(qū)別,不能用錯,而通過query()函數(shù)可以使邏輯表達(dá)式更加簡潔。
如果需要本文代碼和數(shù)據(jù),可以點(diǎn)擊關(guān)注公眾號“Python碎片”,然后在后臺回復(fù)“pandas08”關(guān)鍵字獲取完整代碼和數(shù)據(jù)。
瀏覽
75點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享
分享
舉報(bào)
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享
分享
舉報(bào)
91中文字幕在线
|
97自拍|
台湾无码精品
|
中国 免费XXXX18在线观看
|
一区二区三区色欲
|