<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【贈書福利】Pandas實用技能,數(shù)據(jù)篩選query函數(shù)詳細介紹

          共 2920字,需瀏覽 6分鐘

           ·

          2023-01-11 14:51

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

          Pandas是一種高效的數(shù)據(jù)處理庫,它以 dataframeseries 為基本數(shù)據(jù)類型,呈現(xiàn)出類似excel的二維數(shù)據(jù)。

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

          query 函數(shù)的一般用法如下:

                
                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

          在開始之前,先創(chuàng)建一份數(shù)據(jù),供后續(xù)使用:

                
                data?=?{
          ????'brand':['Python數(shù)據(jù)之道','價值前瞻','菜鳥數(shù)據(jù)之道','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

          數(shù)據(jù)如下:

          eadf0a35cf7d630a2fcf507f00d0efc0.webp

          常用方法

          篩選 "brand" 列中值為 "Python數(shù)據(jù)之道" 的行,如下:

                
                df.query('brand?==?"Python數(shù)據(jù)之道"')

          結果如下:

          2991a721a5429480920b8f916be9a2ca.webp

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

                
                df.query("?brand?==?'Python數(shù)據(jù)之道'?")

          上面用 query 函數(shù)篩選數(shù)據(jù),用下面的方法也是可以實現(xiàn)的:

                
                df[df['brand']=="Python數(shù)據(jù)之道"]
          e4661c15ffce35aa08dd3a0c99d06464.webp

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

          969b8919a073a9640d55c51646acc00f.webp

          通過數(shù)學表達式篩選

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

          示例如下:

          362e9f23935ac1d74892fcbc8ad6bde9.webp972a4866e77fa201bafa626ce4ed25d7.webpde384544dfeeab1b55e59ef98a1f81d2.webp

          通過變量篩選

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

                
                #?通過變量來篩選數(shù)據(jù),在變量前使用?@?符號即可

          name?=?'Python數(shù)據(jù)之道'

          df.query('brand?==?@name')
          a9720150b27f930d15703642c33aa9e8.webp

          列表數(shù)據(jù)篩選

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

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

          df.query('brand?in?["Python數(shù)據(jù)之道","價值前瞻"]')
          #?df.query("brand?in?['Python數(shù)據(jù)之道','價值前瞻']")
          fe34eb788f2fada4e9e7ed15e76d1cf9.webp

          多條件篩選

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

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

          示例如下:

          611871f8021a650d00c10e81a46403a2.webp25f5005dc343378ef441b2074e3bf092.webp4fd7282dec5dafc5eff074d7e6572e82.webp7b3aec4e083561b509018581c07d54c5.webp

          列名稱有空格的情況

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

                
                df.query("`till?years`?<?5")
          95b369ddd1a6c33f11bc78fb0394497a.webp

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

          c34f6cb3c5d80c537a6fee6e78eeffc0.webp

          篩選后選取數(shù)據(jù)列

          在數(shù)據(jù)篩選后,還可以選擇需要的數(shù)據(jù)列,如下:

          044d71fe475d5d6bea946730c7111cc1.webp

          小結

          以上就是關于 Pandas 中 query 函數(shù)的主要內(nèi)容介紹,應用 query函數(shù)進行數(shù)據(jù)篩選,其語言還是比較簡潔的,尤其是當條件比較多的時候,會顯得更優(yōu)雅。

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

          沒有使用query函數(shù)時

                
                df[(df['brand']=="Python數(shù)據(jù)之道")?&?(df['A']?>2)?&?(df['C']?>4)]
          bd1a2f131b310260f4569e31a2cb9804.webp

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

          使用query函數(shù)時

                
                df.query("?brand?==?'Python數(shù)據(jù)之道'?&?A>2?&?C>4?")
          c1d6f1476380feefc60adaa274706ce4.webp

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


          送書啦!留言互動,點贊前 5 名送書!截止時間1月11日。

          數(shù)據(jù)科學項目有很多靈活的部分,需要練習和技巧才能讓所有代碼、算法、數(shù)據(jù)集、格式和可視化協(xié)調工作。 本書將引導你完成5個真實項目,包括根據(jù)新聞標題跟蹤疾病暴發(fā)、分析社交網(wǎng)絡以及在廣告點擊數(shù)據(jù)中尋找相關模式。

          本書并不止于表面理論和簡單示例。在完成每個項目時,你將學習如何解決常見問題,例如數(shù)據(jù)丟失、混亂的數(shù)據(jù)以及與構建模型不匹配的算法。你將了解詳細的設置說明和常見故障的全面解決方案。最后,通過完成這些項目,你將對自己的技能充滿信心。?

          瀏覽 79
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月天在线欧美日韩在线 | A片视频免费观看 | 免费一级婬片A片女人不叫 | 亚洲成人欧美 | 淫色淫香网站 |