iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

Pandas|資料前處理工具 系列 第 10

Day 10|資料的篩選與過濾

  • 分享至 

  • xImage
  •  

  在進行大量的資料處理時,有時會需要取得符合特定條件的資料,以利後續的觀察與操作,此時就會使用到資料篩選和過濾的技能,今天將以案例搭配 loc[] 函數和大家分享資料篩選技巧,內容包含:

  1. 篩選單一條件資料
  2. 篩選多項條件資料

■ 案例

  1. 線上課程資訊
    https://ithelp.ithome.com.tw/upload/images/20230925/20162238lgJ9AZht9d.jpg

  2. 程式碼

import pandas as pd
data = {'title':['Simple, Healthy Fall Recipes','Learn to Program with C++',
                 'CSS Fundamentals','HTML Workshop','Planning Your Podcast',
                 'Cake Decorating For Fun '],
        'category':['Lifestyle','Development','Development',
                    'Development','Business','Lifestyle'],
        'price':[20,60,50,20,50,40]}
df = pd.DataFrame(data)

■ 實作|篩選單一條件資料

  1. 使用 loc[篩選條件] 取得所有符合資料,舉例:篩選 category 為 Development 的資料
  2. 使用 loc[篩選條件,欄位名稱] 取得符合條件的欄位資料,舉例:篩選 category 為 Development 的 title
# 設定篩選條件dev
dev = (df['category'] == 'Development')
print(df.loc[dev])          #所有符合篩選條件的資料
print(df.loc[dev,'title'])  #僅列出符合篩選條件的title

輸出結果:
https://ithelp.ithome.com.tw/upload/images/20230925/20162238tnYTLwMGKb.png

■ 實作|篩選多項條件資料

  當有一個篩選條件以上時,需要用到邏輯運算子「And (&)」和「Or ( | )」。

  1. 需同時滿足兩個條件,舉例:同時符合「category 為 Development 」且「price 小於 $60」的資料
  2. 兩個條件有一條件符合即可,如:「category 為 Development 」或「price 小於 $60」的資料
print(df.loc[(df['category'] == 'Development') & (df['price']<60)])  #同時滿足兩個條件
print(df.loc[(df['category'] == 'Development')|(df['price']<60)])   #二則一滿足即可

輸出結果:
https://ithelp.ithome.com.tw/upload/images/20230925/20162238kjCByNO2dh.png

■ 結語

  有關 loc[] 函數的操作,在【Day 4|資料結構 - DataFrame 篇】訪問 DataFrame 時有提過,當時主要利用索引值和欄位名稱取得特定資料,此篇則是延伸至篩選條件,操作方法相近。此外,資料篩選其實不只 loc[] 這個方法,在寫文章時發現另一個更簡單的方法 df [篩選條件],可以讓我們少打 loc 三個字母,是個更快速的寫法,有興趣的話,大家可以試試!

  如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱!我是 Eva,一位正在努力跨進資料科學領域的女子!我們下篇文章見!
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】


上一篇
Day 9|資料運算的常見函數
下一篇
Day 11|資料快速排序操作
系列文
Pandas|資料前處理工具 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言