Pandas是一個強大的資料處理和分析工具,它提供了許多靈活的功能和方法,能夠輕鬆地篩選和處理資料。本文將介紹幾種Pandas資料篩選的進階技巧,並透過實際案例提供具體的程式碼範例。
一、基本資料篩選
Pandas提供了多種方法來對資料進行基本的篩選,例如使用布林索引、loc或iloc方法等。以下是一些常見的基本資料篩選案例。
布林索引可以用來根據某個條件篩選資料。例如,我們有一個包含學生資訊的資料框,想篩選出成績大於60分的學生。可以使用以下程式碼實作:
import pandas as pd data = { '姓名': ['张三', '李四', '王五', '赵六'], '成绩': [80, 70, 90, 50] } df = pd.DataFrame(data) df_filtered = df[df['成绩'] > 60] print(df_filtered)
#loc方法可以根據行標籤和列標籤進行資料篩選。例如,我們有一個包含學生資訊的資料框,想篩選出姓名為張三和李四的學生的成績和年齡。可以使用以下程式碼實作:
import pandas as pd data = { '姓名': ['张三', '李四', '王五', '赵六'], '成绩': [80, 70, 90, 50], '年龄': [18, 19, 20, 21] } df = pd.DataFrame(data) df_filtered = df.loc[df['姓名'].isin(['张三', '李四']), ['成绩', '年龄']] print(df_filtered)
二、進階資料篩選
除了基本資料篩選方法外,Pandas還提供了許多進階的資料篩選技巧,如使用query方法、使用索引對象MultiIndex進行多層次篩選等。以下是幾個案例說明。
query方法可以透過類似SQL的語法來篩選資料。例如,我們有一個包含學生資訊的資料框,想篩選出成績大於60分且年齡在18到20歲之間的學生。可以使用以下程式碼實作:
import pandas as pd data = { '姓名': ['张三', '李四', '王五', '赵六'], '成绩': [80, 70, 90, 50], '年龄': [18, 19, 20, 21] } df = pd.DataFrame(data) df_filtered = df.query('成绩 > 60 and 18 <= 年龄 <= 20') print(df_filtered)
如果資料框有多層次的索引,可以利用MultiIndex物件進行多層次篩選。例如,我們有一個包含學生資訊的資料框,其中索引包括班級和學號兩層次,想篩選出1班學號為001和002的學生。可以使用以下程式碼實作:
import pandas as pd data = { '姓名': ['张三', '李四', '王五', '赵六'], '成绩': [80, 70, 90, 50], } index = pd.MultiIndex.from_tuples([('1班', '001'), ('1班', '002'), ('2班', '001'), ('2班', '002')]) df = pd.DataFrame(data, index=index) df_filtered = df.loc[('1班', ['001', '002']), :] print(df_filtered)
三、案例分析
現在我們以一個真實的資料集為例,進一步說明Pandas資料篩選的高階技巧。假設我們有一個汽車銷售資料集,其中包含了車輛品牌、車型、銷售量和銷售等資訊。我們想篩選出銷售量超過1000輛且銷售超過100萬的車型。以下是程式碼範例:
import pandas as pd data = { '品牌': ['宝马', '奥迪', '奔驰', '大众'], '型号': ['X3', 'A6', 'E级', '朗逸'], '销售量': [1200, 800, 1500, 900], '销售额': [1200, 900, 1800, 800] } df = pd.DataFrame(data) df_filtered = df.query('销售量 > 1000 and 销售额 > 1000000') print(df_filtered)
透過以上程式碼,我們成功篩選出了銷售量超過1000輛且銷售額超過100萬元的車型。
綜上所述,Pandas提供了豐富的資料篩選功能和方法,從基本的布林索引、loc和iloc方法到進階的query方法和MultiIndex篩選,可以滿足不同場景下的資料篩選需求。以上案例展示了一些常見的資料篩選技巧和應用,希望對讀者在實際應用上有所幫助。
以上是Pandas資料篩選的高階技巧及實例應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!