文章目錄
- 一、背景
- 二、布爾索引
- 2.1 總結
- 三、進階核心用法(實用高效)
- 3.1 多條件組合
- 3.2 字符串表達式(類似SQL)
- 3.3 針對字符串的正則匹配
- 四、高級方法(依賴基礎)
- 4.1 函數應用(如apply()或lambda)?
- 4.2 缺失值篩選
- 4.3 loc與iloc?
- 五、總結
一、背景
2025年8月22日了,回頭查了下第一個python萬里長征的文章還是2018年11月。但是沒有寫幾篇,堅持寫這個還是挺難的,回頭一想,八年多還在這個崗位上,還是有半杯欣慰的,來干了!cheers!
最近一年,數據分析做的內容比較多,但是回頭看,對pandas這個東西的使用,還是有一層迷霧感的。所以寫點東西,記錄下心路旅程,也許未來某一天看看自己的筆記,會微笑多那么一點點,足夠了。等待未來callback的一天。
二、布爾索引
今天讓ai出了個幾個選擇題,做了幾個題消耗些時間,看了個解釋,發現一句話,布爾索引是標準的篩選方式。
深入研究了下,布爾索引過濾是pandas中通過邏輯條件篩選數據的一種方法,他屬于三大基礎方法之一,另兩個基礎是isin和between。
一個是二值化篩選,一個是多值篩選,一個是范圍篩選。
2.1 總結
新手記住三基礎就可以了。后面看進階
三、進階核心用法(實用高效)
想打個高效,總是打出來搞笑!!!(i fu le you 輸入法)
也是分三類記下吧,都是為了更好的回憶。
3.1 多條件組合
通過&、|、~組合條件,需注意括號使用,例如:df[(df[‘A’] > 10) & (df[‘B’] == ‘X’)]
3.2 字符串表達式(類似SQL)
query()方法,支持字符串表達式
例如:df.query(“A > 10 and B == ‘X’”)。適合復雜條件場景?,這個嚴格來說也是多條件組合,只不過是sql化的用法。
3.3 針對字符串的正則匹配
str.contains()?
針對字符串列的正則匹配,例如:df[df[‘CVE ID’].str.contains(‘CVE-’)]
四、高級方法(依賴基礎)
4.1 函數應用(如apply()或lambda)?
自定義復雜邏輯,例如:df[df.apply(lambda x: x[‘A’] + x[‘B’] > 100, axis=1)]
遇事不決可問春風 春風不語即隨本心!!!
4.2 缺失值篩選
使用isna()或notna(),例如:df[df[‘列名’].notna()]
4.3 loc與iloc?
loc:基于標簽和布爾索引篩選行或列,例如:df.loc[df[‘A’] > 10, [‘B’, ‘C’]]?
輸入格式:loc[] 的通用語法是 df.loc[行選擇, 列選擇]。若省略列部分(如本例),則返回所有列。
iloc:基于整數位置篩選(較少用于邏輯條件),輸入格式類似loc
這里loc和iloc容易混淆,所以還是看下區別:
特性 | loc | iloc |
---|---|---|
索引類型 | 標簽(顯式) | 整數位置(隱式) |
切片包含性 | 包含結束標簽!!! | 不包含結束位置!!!(Python 風格) |
示例 | df.loc[‘a’:‘c’] | df.iloc[0:2] |
如需按位置選擇數據,應使用 iloc。
五、總結
pandas的篩選數據肯定是不止這些方法,但是要更好的記憶,必須是有量化層次做基礎的,三基礎、三核心、三高級并不是絕對的,看適合個人的記憶,別讓大腦處于混亂朦朧的狀態即可,真正的進階需要用。