查詢篩選是數據分析常用的功能,我們在做數據挖掘時往往需要先進行數據預處理,然後就可以按各種條件以及相關的組合篩選中所需數據, 我們主要從以下方面來分析查詢和篩選常用的操作。①在中括号裡設定篩選條件篩選特定的行;②使用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
1.在中括号裡設定篩選條件過濾行
1.1 在中括号中輸入單個篩選條件
我們以某個比賽中的訓練集的數據為例,數據的基本信息如下所示。
比如說,我們想要篩選label列中大于0的數據,具體代碼如下所示。
a = dataFrame[dataFrame['label'] > 0]
a
運行結果如下所示。
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的條件。
1.3 在中括号中三個篩選條件
比如說篩選在label在某一範圍内的數據,設定上限和下限需要用到兩個條件,然後根據自己的情況可以再增加一些條件。如篩選label範圍為(0,100]并且is_sale_day的值等于1的情況, 具體代碼如下所示。
c = dataFrame[(dataFrame['label'] > 0)
& (dataFrame['label'] <= 10)
& (dataFrame['is_sale_day']==1)]
c
如下所示,查詢無結果。可知在該條件下沒有符合要求的項。
嘗試更改label範圍為(0,100]查詢結果如下:
1.4 篩選出大于label變量平均值的數據,并升序處理
如下所示,其中默認為升序排序,我們可以設置參數ascending=False将其變為降序排序。
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
如上所示,将需要查詢的值以列表的方式進行傳入,然後獲取數據中的待查詢列(如上第二行和第三行代碼所示,有兩種方法可以獲取列),最後調用isin()方法。
類似地,當我們想要同時查詢多個值時,隻需要更改列表中的值即可。
2.2 同時篩選多個的值
我們需要将label列中值為274.0, 115.0, 118.0 的所在行全部篩選出來,具體代碼如下所示。
lst2 = [274.0, 115.0, 118.0]
g = dataFrame[dataFrame["label"].isin(lst2)]
g
如上所示,具體的運行結果如下所示。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!