Pandas filter 篩選標籤

2021-12-29 蓋若

Pandas 的 filter 方法根據指定的索引標籤對數據框行或列查詢子集。它支持 DataFrame、Series 和 分組對象 DataFrameGroupBy 來使用。

公號作者的新書上市啦!

DataFrame語法

DataFrame 使用時的語法為:

df.filter(    items=None,    like: 'str | None' = None,    regex: 'str | None' = None,    axis=None,) -> 'FrameOrSeries'


參數:

items:list-like,對應軸的標籤名列表

like:str,支持對應標籤名的模糊名查詢

regex:str (正則表達式),按正則表達式查詢標籤名

axis:{0 or 『index』, 1 or 『columns』, None}, default None,要篩選的軸,表示為索引(int)或軸名稱(str)。默認情況下為列名,『index』 為 Series, 『columns』 為 DataFrame

返回:

用法

需要注意的是,此方法不會對數據幀的數據內容進行過濾,僅應用於按標籤篩選。

其中的參數 items, like, 和 regex parameters 被強制執行為相互排斥,即只能有一個存在。軸默認為使用 [] 索引時使用的信息軸(info axis,按行)。

案例
df = pd.DataFrame(np.array(([1, 2, 3], [4, 5, 6])),                  index=['mouse', 'rabbit'],                  columns=['one', 'two', 'three'])df'''        one  two  threemouse     1    2      3rabbit    4    5      6'''df.filter(items=['one', 'three'])'''         one  threemouse     1      3rabbit    4      6'''df.filter(regex='e$', axis=1)'''         one  threemouse     1      3rabbit    4      6'''df.filter(like='bbi', axis=0)'''         one  two  threerabbit    4    5      6'''


更多代碼示例:

df.filter(items=['Q1', 'Q2']) df.filter(regex='Q', axis=1) df.filter(regex='e$', axis=1) df.filter(regex='1$', axis=0) df.filter(like='2', axis=0) df.filter(regex='^2', axis=0).filter(like='Q', axis=1)

Series

Series 應用 filter 時參數與 df.filter 一樣,不過由於 Series 只有一個軸,不能將 axis = 1,只能按索引查詢數據。以下為示例:

df.one.filter(['mouse'])df.one.filter(like='se')df.one.filter(regex='e$')'''mouse    1Name: one, dtype: int64'''


DataFrameGroupBy

分組對象的使用上,它可以返回不包含篩選元素的數據框的副本。如果組中的元素不滿足函數指定的布爾表達式(為 False),則會將其篩選過濾掉。filter 的函數 func 經常和匿名函數 lambda 配合使用,用來篩選 groupby 之後的數據,它類似 SQL 中 groupby 後的 having 操作。

語法

它的使用語法為:

DataFrameGroupBy.filter(func, dropna=True,                        *args, **kwargs)

參數:

返回:

註:每個子幀都被賦予 「name」 屬性,以防您需要知道正在處理哪個組。變異傳遞對象的函數可能會產生意外行為或錯誤,因此不支持。

使用案例

以下展示了一個分組篩選的示例:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',                          'foo', 'bar'],                   'B' : [1, 2, 3, 4, 5, 6],                   'C' : [2.0, 5., 8., 1., 2., 9.]})
df''' A B C0 foo 1 2.01 bar 2 5.02 foo 3 8.03 bar 4 1.04 foo 5 2.05 bar 6 9.0'''grouped = df.groupby('A')grouped.filter(lambda x: x['B'].mean() > 3.)''' A B C1 bar 2 5.03 bar 4 1.05 bar 6 9.0'''

結果是,篩選所在組組B列平均值大於3的所有數據。

其他代碼示例:

df.groupby('team').filter(lambda x: len(x) >= 3)df.groupby(['team']).filter(lambda x: (x['Q1'] > 97).any())df.groupby(['team']).filter(lambda x: (x.mean() >= 60).all())df.groupby('team').filter(lambda g: g.Q1.sum() > 1060)

支持對象

總結一下,可以調用 apply() 的對象還有以下對象有:

公號作者的新書上市啦!歡迎購買 ⬇️

(完)

點擊「閱讀原文」查看【Pandas 教程】

https://www.gairuo.com/p/pandas-tutorial


..


更多信息請訪問

www.gairuo.com


未經蓋若授權,請勿轉載

相關焦點

  • 五花八門的 Pandas 篩選數據
    import pandas as pdimport numpy as npdf = pd.DataFrame({    "name":['小明','小王','張菲','關宇','孫小小','王建國','劉蓓'],    "sex":['男','女','女','男','女','男','女'],
  • pandas 篩選數據的 8 個神操作
    from sklearn import datasetsimport pandas as pdboston = datasets.load_boston()df = pd.DataFrame(boston.data, columns=boston.feature_names)1. []
  • Pandas 數據篩選清洗
    ['Colorado', 'Ohio'])data.drop('two', axis=1)data.drop(['two', 'four'], axis='columns')data.drop('two', axis=1,inplace=True)處理缺失值Pandas中,將缺失值設置為NA,即Not Available,dropna根據每個標籤的值是否是缺失數據來篩選軸標籤
  • 高性能 Pandas 方法:query 和 eval
    為什麼不喜歡寫方括號對於一個最開始從 R 語言的 Tidyverse 生態中轉到 Pandas 中的人來說,除了管道操作符和鏈式調用的方式外,最不習慣的方式就是 Pandas 在對 DataFrame 做條件篩選或查詢時,使用過多的方括號。
  • 國外大神製作的超棒 Pandas 可視化教程
    Pandas 不僅允許我們加載電子表格,而且支持對加載內容進行預處理。Pandas 有個核心類型叫 DataFrame。DataFrame 是表格型的數據結構。因此,我們可以將其當做表格。DataFrame 是以表格類似展示,而且還包含行標籤、列標籤。另外,每列可以是不同的值類型(數值、字符串、布爾型等)。我們可以使用 read_csv() 來加載 CSV 文件。
  • 方法鏈:在 Pandas 中實現 R 語言管道函數的操作
    library(tidyverse)library(nycflights13)### 保存 flights 數據集到默認路徑### 之後 Pandas 導入該數據集write_csv(flights, "flights.csv")flights %>%   filter
  • 如何使用 Pandas 讀寫Excel
    如果還咩有安裝python,那麼強烈推薦你使用 pycharm,你可以在這幾篇推文中找到相關的安裝及基礎使用方式: 三劍客 PyCharm使用   好用的PYTHON IDE和代碼編輯器簡單讀入import pandas as pddata = pd.read_excel('expression_text.xlsx')data.head()
  • 讓你事半功倍的 10 個 Pandas 秘籍
    在處理結構化數據方面, Pandas 可能是應用最廣泛的 Python 庫了吧。
  • 盤點Pandas 的100個常用函數
    作者 | 劉順祥 來源 | 數據分析1480 這一期將分享我認為比較常規的100個實用函數,這些函數大致可以分為六類,分別是統計匯總函數、數據清洗函數、數據篩選、繪圖與元素級運算函數、時間序列函數和其他函數。
  • Pandas 必知必會的18個實用技巧,值得收藏!!
    import pandasdf[df_filter]九、select_dtypes()select_dtypes() 的作用是,基於 dtypes 的列返回數據幀列的一個子集。這個函數的參數可設置為包含所有擁有特定數據類型的列,亦或者設置為排除具有特定數據類型的列。
  • Datawhale組隊學習-pandas task04
    import pandas as pdimport osimport numpy as
  • Expo pandas arrive in Shanghai
    Ten giant pandas selected for the world expo by the Chinese giant panda protection and research center were flown to Shanghai on Jan. 5 from the center's Bifengxia base in Ya'an City, southwest China's
  • Pandas - 操作CSV 文件
    CSV(Comma-Separated Values,逗號分隔值,有時也稱為字符分隔值,因為分隔字符也可以不是逗號),其文件以純文本形式存儲表格數據
  • Pandas 數據結構 - Series
    Pandas Series 類似表格中的一個列(column),類似於一維數組,可以保存任何數據類型。
  • 【pandas 基礎】
    構建的含有更高級數據結構和工具的數據分析包類似於 Numpy 的核心是 ndarray,pandas 也是圍繞著 Series 和 DataFrame 兩個核心數據結構展開的 。pandas 約定俗成的導入方法如下:lang:pythonfrom pandas import Series,DataFrameimport pandas as pd<br />SeriesSeries 可以看做一個定長的有序字典。
  • Pandas 基本數據框架操作 第一篇
    讀取電影數據集,並將所需列的列表傳遞給索引操作符:>>> import pandas as pd>>> import numpy as np>>> movies = pd.read_csv("data/movie.csv")>>> movie_actor_director
  • 吹爆這個 pandas GUI 神器,自動轉代碼!
    3. 替換和類型轉換替換選項可以替換表中某些固定值或者填充空值。可以inplace=True替換某列或者創建一個新列。描述性統計pandas 中的describe函數有助於提供列或數據集的統計摘要。這裡的 describe 一樣,並且提供的信息比普通的 pandas 函數更多,它為每種數據類型提供了唯一的describe摘要。對於日期時間類型 column,它提供以下詳細信息:
  • Python 數據分析:Pandas 進階
    import numpy as npfrom pandas import Series, DataFrames = Series(['1', '2', np.nan, '3'])df = DataFrame([['1', '2'], ['3', np.nan], [np.nan, 4]])print(s)print(df)# 清除缺失項
  • 數據分析利器 pandas 系列教程(一):從 Series 說起
    從今天開始連載數據分析利器 pandas 的系列文章,推薦 Pycharm 集成 Python3.6+;無論你是零基礎小白,還是已經上手過 pandas,你都可以在本次系列中學到一些乾貨。摘自百度百科:pandas 是基於 numpy 的一種工具,該工具是為了解決數據分析任務而創建的。
  • 100 個 pandas 數據分析函數總結
    (點擊上方快速關注並設置為星標,一起學Python)來源:數據分析1480