tft每日頭條

 > 生活

 > python 篩選符合條件的數據

python 篩選符合條件的數據

生活 更新时间:2024-08-07 04:54:06
1.前言

查詢篩選是數據分析常用的功能,我們在做數據挖掘時往往需要先進行數據預處理,然後就可以按各種條件以及相關的組合篩選中所需數據, 我們主要從以下方面來分析查詢和篩選常用的操作。①在中括号裡設定篩選條件篩選特定的行;②使用isin方法篩選特定的值 ;③loc和iloc以後分享。

完整代碼如下所示。

# 2種小方法使用Python進行excel數據篩選 import pandas as pd dataFrame = pd.read_csv('./商品需求訓練集.csv') dataFrame.head() # 1. 在中括号裡設定篩選條件篩選特定範圍 # 1.1篩選label列中大于0的數據 a = dataFrame[dataFrame['label'] > 0] a # 1.2多個篩選條件,用"&"或"|"連接起來。注意用小括号将篩選條件括起來 b = dataFrame[(dataFrame['label'] > 0) & (dataFrame['is_sale_day']==1)] # 1.3篩選label列中在(0, 10]範圍之内并且is_sale_day等于1的數據。 c = dataFrame[(dataFrame['label'] > 0) & (dataFrame['label'] <= 10) & (dataFrame['is_sale_day']==1)] # 1.4 更改label範圍為(0,100]查詢結果如下: c = dataFrame[(dataFrame['label'] > 0) & (dataFrame['label'] <= 100) & (dataFrame['is_sale_day']==1)] c# # 1.5 篩選出大于label變量平均值的數據,并降序處理 d = dataFrame[dataFrame['label'] > dataFrame['label'].mean()].sort_values(by='label', ascending=False) d.head() # 2. 使用isin方法進行篩選 # 我們需要鎖定篩選某些具體的值的,這時候就需要isin了。 # 比如我們要限定label取值隻能為274.0, 115.0, 118.0時。 # 此時可将其作為列表傳入到isin方法中 # 2.1 篩選單個的值 lst = [274.0] e1 = dataFrame[dataFrame.label.isin(lst )] e2 = dataFrame[dataFrame['label'].isin(lst)] e1, e2 # 2.2 同時篩選多個的值 lst2 = [274.0, 115.0, 118.0] g = dataFrame[dataFrame["label"].isin(lst2)] g

2.步驟

1.在中括号裡設定篩選條件過濾行

1.1 在中括号中輸入單個篩選條件

我們以某個比賽中的訓練集的數據為例,數據的基本信息如下所示。

比如說,我們想要篩選label列中大于0的數據,具體代碼如下所示。

a = dataFrame[dataFrame['label'] > 0] a

運行結果如下所示。

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)1

1.2 在中括号中輸入多個篩選條件(2個)

如果說有多個篩選條件,可以用“&”(表示“且”)或“|”(表示“或”)連接起來。就比如說,篩選label列中大于0和is_sale_day等于1的數據,注意要用小括号将并列的篩選條件括起來。否則可能出錯,或者查找不到正确的數據。具體代碼如下所示。

b = dataFrame[(dataFrame['label'] > 0) & (dataFrame['is_sale_day']==1)] b

具體運行結果如下所示。可以看出篩選出來的結果同時滿足label大于0和is_sale_day等于1的條件。

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)2

1.3 在中括号中三個篩選條件

比如說篩選在label在某一範圍内的數據,設定上限和下限需要用到兩個條件,然後根據自己的情況可以再增加一些條件。如篩選label範圍為(0,100]并且is_sale_day的值等于1的情況, 具體代碼如下所示。

c = dataFrame[(dataFrame['label'] > 0) & (dataFrame['label'] <= 10) & (dataFrame['is_sale_day']==1)] c

如下所示,查詢無結果。可知在該條件下沒有符合要求的項。

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)3

嘗試更改label範圍為(0,100]查詢結果如下:

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)4

1.4 篩選出大于label變量平均值的數據,并升序處理

如下所示,其中默認為升序排序,我們可以設置參數ascending=False将其變為降序排序。

d = dataFrame[dataFrame['label'] > dataFrame['label'].mean()].sort_values(by='label', ascending=False) d.head()

具體結果如下所示。

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)5

2.使用isin方法進行篩選

在之前,我們篩選條件基本上都是給出範圍,但實際上很多時候我們需要鎖定篩選某些具體的值,這時候isin方法就可以派上用場了。

比如我們要限定label取值隻能為274.0, 115.0, 118.0時。此時可将其作為列表傳入到isin方法中,具體代碼如下所示。

2.1篩選單個的值

lst = [274.0] e1 = dataFrame[dataFrame.label.isin(lst)] e2 = dataFrame[dataFrame['label'].isin(lst)] e1, e2

如上所示,将需要查詢的值以列表的方式進行傳入,然後獲取數據中的待查詢列(如上第二行和第三行代碼所示,有兩種方法可以獲取列),最後調用isin()方法。

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)6

類似地,當我們想要同時查詢多個值時,隻需要更改列表中的值即可。

2.2 同時篩選多個的值

我們需要将label列中值為274.0, 115.0, 118.0 的所在行全部篩選出來,具體代碼如下所示。

lst2 = [274.0, 115.0, 118.0] g = dataFrame[dataFrame["label"].isin(lst2)] g

如上所示,具體的運行結果如下所示。

python 篩選符合條件的數據(Python2大類方法篩選excel特定的值以及範圍)7

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved