Pandas實用技能,數據篩選query函數詳細介紹

2022-01-10 Python數據之道

來源:Python數據之道 (ID:PyDataLab)

作者:陽哥

大家好,我是陽哥。

Pandas 可以說是 在Python數據科學領域應用最為廣泛的工具之一。

Pandas是一種高效的數據處理庫,它以 dataframe 和 series 為基本數據類型,呈現出類似excel的二維數據。

在數據處理過程中,咱們經常會用到數據篩選,Pandas 中提供了數據篩選的多種方法,這裡,陽哥來給大家分享下 在Pandas中應用 query 函數來進行數據篩選。

query 函數的一般用法如下:

df.query('expression')

文中的代碼是在 Jupyter Notebook 中運行的(也可以是其他IDE),本次使用的 Pandas 版本是 1.3.0 版,如下:

import pandas as pd


print(f'pandas version: {pd.__version__}')

# pandas version: 1.3.0rc1

在開始之前,先創建一份數據,供後續使用:

data = {
    'brand':['Python數據之道','價值前瞻','菜鳥數據之道','Python','Java'],
    'A':[10,2,5,20,16],
    'B':[4,6,8,12,10],
    'C':[8,12,18,8,2],
    'D':[6,18,14,6,12],
    'till years':[4,1,1,30,30]
}

df = pd.DataFrame(data=data)
df

數據如下:

常用方法

篩選 "brand" 列中值為 "Python數據之道" 的行,如下:

df.query('brand == "Python數據之道"')

結果如下:

說明一下,上面代碼中的單引號和雙引號是可以互換的,下面的寫法,其結果也是一樣的:

df.query(" brand == 'Python數據之道' ")

上面用 query 函數篩選數據,用下面的方法也是可以實現的:

df[df['brand']=="Python數據之道"]

上面是篩選字符串的值,也可以是篩選數字,如下:

通過數學表達式篩選

除了直接通過等於某個值來篩選, query 函數還支持通過數學表達式來進行數據篩選,包括 >、 <、 +、 -、 *、 / 等。

示例如下:

通過變量篩選

在程序比較長的時候,經常會使用變量來作為篩選條件, query 函數在使用變量作為判斷標準時,通過在變量前面添加 @ 符號來實現,示例如下:

# 通過變量來篩選數據,在變量前使用 @ 符號即可

name = 'Python數據之道'

df.query('brand == @name')

列表數據篩選

當需要在某列中篩選多個符合要求的值的時候,可以通過列表(list)來實現,示例如下:

# 需要注意下 雙引號 和 單引號的分開使用

df.query('brand in ["Python數據之道","價值前瞻"]')
# df.query("brand in ['Python數據之道','價值前瞻']")

多條件篩選

有很多情況下,咱們需要通過多個條件來篩選數據,query 函數支持多種條件的組合,

兩者都需要滿足的並列條件使用符號 &,或 單詞 and只需要滿足其中之一的條件使用符號 |,或 單詞 or

示例如下:

列名稱有空格的情況

當 dataframe 的列名稱中有空格或其他特殊符號的時候,需要使用 反引號(backtick mark),即鍵盤ESC鍵下面的按鍵(就是鍵盤上第二排第一個按鍵,有『~』這個符號的按鍵) 來將列名包裹起來,示例如下:

df.query("`till years` < 5")

注意,如果使用單引號,將會報錯,如下:

篩選後選取數據列

在數據篩選後,還可以選擇需要的數據列,如下:

小結

以上就是關於 Pandas 中 query 函數的主要內容介紹,應用 query函數進行數據篩選,其語言還是比較簡潔的,尤其是當條件比較多的時候,會顯得更優雅。

比如下面的對比,假設都是三個篩選條件(假設數據量較多,符合的結果也較多):

沒有使用query函數時

df[(df['brand']=="Python數據之道") & (df['A'] >2) & (df['C'] >4)]

可以看出上面的表達式是比較長的,略顯繁瑣。

使用query函數時

df.query(" brand == 'Python數據之道' & A>2 & C>4 ")

相對來說,使用query 函數會顯得更加簡潔,如果覺得這個功能不錯,就趕緊用起來吧~~

大家讀完順手點下右下角的  「在看」 ,就是最大的鼓勵和支持了。

相關焦點

  • Python數據核對系列之2—power query VS pandas
    連接的在上面的截圖裡我們介紹過了。這裡我們在介紹下它的參數名稱。在query函數列表裡有下面這幾個JoinKind.RightOuter :右外連接在上面的案例中,我們選擇的是RightOuter。以後我們仔細介紹query的M函數,之前的多篇文章我們也有所涉及。在數據量相對不大的時候(大概300萬內吧看電腦性能),M函數真的很好用。
  • 超全的pandas數據分析常用函數總結:下篇
    為了更好地學習數據分析,我對於數據分析中pandas這一模塊裡面常用的函數進行了總結。整篇總結,在詳盡且通俗易懂的基礎上,我力求使其有很強的條理性和邏輯性,所以製作了思維導圖,對於每一個值得深究的函數用法,我也會附上官方連結,方便大家繼續深入學習。
  • 超全的pandas數據分析常用函數總結(下篇)
    上篇文章中,小編給大家總結了數據分析中pandas這一模塊裡面常用函數的四個部分的內容,分別為導入模塊、創建數據集並讀取、數據查看與數據清洗,現在給大家介紹下篇的內容。來源 | 凹凸數據5.數據提取下面這部分會比較繞:loc函數按標籤值進行提取,iloc按位置進行提取pandas.DataFrame.loc() 允許輸入的值:單個標籤,例如5或』a』,(請注意,5被解釋為索引的標籤,而不是沿索引的整數位置)。
  • 左手pandas右手Excel,帶你學習數據透視表
    數據透視表是數據分析工作中經常會用到的一種工具。Excel本身具有強大的透視表功能,Python中pandas也有透視表的實現。本文使用兩個工具對同一數據源進行相同的處理,旨在通過對比的方式,幫助讀者加深對數據透視表的理解。數據源簡介:本文數據源來自網絡,很多介紹pandas的文章都使用了該數據。
  • 《pandas數據讀取》
    ,需要使用不同的函數讀取,pandas內置了10餘種數據源讀取函數和對應的數據寫入函數,常見的數據源有3種,分別是資料庫數據,文本文件(包含一般文本文件和CSV文件)和Excel文件,掌握這三種數據源讀取方法,便能夠完成80%左右的數據讀取工作。
  • Pandas數據分析--索引(一)
    s = pd.Series(['a', 'b', 'c', 'd', 'e', 'f'], index = [1, 3, 1, 2, 5, 4])sdf_demo.Grade == 'Senior'condition_1_3 = df_demo.Weight > 70condition_1 = condition_1_1 & condition_1_2 & condition_1_3condition_2_1 = df_demo.School == 'Peking University'condition_2_2 = df_demo.Grade
  • 圖解四個實用的pandas函數!
    作者:Baijayanta Roy來源:towardsdatascience編譯&內容補充:早起Python在用python進行機器學習或者日常的數據處理中,pandas是最常用的Python庫之一,熟練掌握pandas是每一個數據科學家的必備技能
  • 五花八門的 Pandas 篩選數據
    今天繼續帶來 Pandas 的花樣取數技巧,本文中重點介紹的方法:一、模擬數據 下面是完全模擬的一份數據,包含:姓名、性別、年齡、數學、語文、總分、地址共 7 個欄位信息。湖南省長沙市雨花區",               "北京市東城區",               "廣東省廣州市白雲區",               "湖北省武漢市江夏區",               "廣東省深圳市龍華區"              ]})df下面開始詳細介紹
  • 數據分析利器—Pandas之資料庫讀寫操作
    (1)讀取資料庫信息Pandas提供了三個函數用於實現讀取資料庫中的數據,具體函數如下:l  read_sql_query()函數:可以實現對資料庫的查詢操作,但是不能直接讀取資料庫中的某個表,需要在sql語句中指定查詢命令與數據表的名稱。
  • 圖解4個實用的Pandas函數!
    ,熟練掌握pandas是每一個數據科學家的必備技能,本文將用代碼+圖片詳解Pandas中的四個實用函數!假設我們有一組股票數據,需要對所有的行進行移動,或者獲得前一天的股價,又或是計算最近三天的平均股價。面對這樣的需求我們可以選擇自己寫一個函數完成,但是使用pandas中的shift()可能是最好的選擇,它可以將數據按照指定方式進行移動!
  • pandas 篩選數據的 8 個神操作
    本篇是pandas神操作系列的第 20 篇:pandas篩選數據的 8 個神操作。系列內容,請看👉「pandas100個神操作」話題。日常用Python做數據分析最常用到的就是查詢篩選了,按各種條件、各種維度以及組合挑出我們想要的數據,以方便我們分析挖掘。東哥總結了日常查詢和篩選常用的種神操作,供各位學習參考。本文採用sklearn的boston數據舉例介紹。
  • 從Excel到Python:最常用的36個Pandas函數
    本文涉及pandas最常用的36個函數,通過這些函數介紹如何完成數據生成和導入、數據清洗、預處理,以及最常見的數據分類,數據篩選,分類匯總,透視等最常見的操作。生成數據表 常見的生成數據表的方法有兩種,第一種是導入外部數據,第二種是直接寫入數據。Excel中的「文件」菜單中提供了獲取外部數據的功能,支持資料庫和文本文件和頁面的多種數據源導入。
  • 數據分析—一文看懂數據透視表(Excel&Pandas-pivot_table實現)
    因為考慮到直接學pivot_table會有點難度,所以本篇文章將由淺入深的先通過excel實現透視表,慢慢地過渡到利用pandas來實現。一、 什麼是數據透視表透視表是一種可以對數據動態排布並且分類匯總的表格格式。利用透視表可以快速地進行分類匯總,自由組合欄位聚合計算。
  • PANDAS: 新手教程 一
    查看Pandas read_excel API了解更多詳細信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.htmlPandas支持很多其他數據類型。
  • 超詳細整理!Pandas實用手冊(PART I)
    在這篇文章裡頭,我們將接近40個實用的pandas技巧由淺入深地分成6大類別:通過有系統地呈現這些pandas技巧,我們希望能讓更多想要利用Python做數據分析或是想成為data scientist的你,能用最有效率的方式掌握核心pandas能力;同時也希望你能將自己認為實用但本文沒有提到的技巧與我們分享。
  • pandas 篩選數據的 8 個騷操作
    日常用Python做數據分析最常用到的就是查詢篩選了,按各種條件、各種維度以及組合挑出我們想要的數據,以方便我們分析挖掘。東哥總結了日常查詢和篩選常用的種騷操作,供各位學習參考。本文採用sklearn的boston數據舉例介紹。
  • Python的數據分析: numpy和pandas入門
    今天開始進入Python數據分析工具的教程。數據分析絕對繞不過的三個包是numpy、scipy和pandas。numpy是Python的數值計算擴展,專門用來處理矩陣,它的運算效率比列表更高效。scipy是基於numpy的科學計算包,包括統計、線性代數等工具。pandas是基於numpy的數據分析工具,能更方便的操作大型數據集。後續的章節主要圍繞pandas講解。
  • 高效的10個Pandas函數,你都用過嗎?
    ❝文章來源:towardsdatascience作者:Soner Yıldırım翻譯\編輯:Python大數據分析❞Pandas是python中最主要的數據分析庫之一,它提供了非常多的函數、方法,可以高效地處理並分析數據。讓pandas如此受歡迎的原因是它簡潔、靈活、功能強大的語法。
  • 高效的 10 個Pandas函數,你都用過嗎?
    Pandas是python中最主要的數據分析庫之一,它提供了非常多的函數、方法,可以高效地處理並分析數據。讓pandas如此受歡迎的原因是它簡潔、靈活、功能強大的語法。這篇文章將會配合實例,講解10個重要的pandas函數。其中有一些很常用,相信你可能用到過。
  • 數據處理技巧 | 帶你了解Pandas.groupby() 常用數據處理方法
    今天我們繼續推出一篇數據處理常用的操作技能匯總:靈活使用pandas.groupby()函數,實現數據的高效率處理,主要內容如下:pandas.groupby()三大主要操作介紹說到使用Python進行數據處理分析,那就不得不提其優秀的數據分析庫-Pandas,