1、DataFrame邏輯運算
- 邏輯運算符號:> >= < <= == !=
- 復合邏輯運算符:& | ~
- 邏輯運算函數:query()、isin()、between()
- 邏輯運算的作用:利用邏輯運算,用於篩選數據(很重要)
2、原始數據文件
下載鏈接:
https://alltodata.cowtransfer.com/s/61ac037949ee4d
讀取數據:
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df)
結果如下:

3、邏輯運算符的案例說明
1)篩選出“數學成績大於等於60並且英語成績大於等於70”的記錄
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df) x = (df["數學"]>=60) & (df["英語"]>=70) display(x) df1 = df[(df["數學"]>=60) & (df["英語"]>=70)] display(df1)
結果如下:

2)篩選出“語文成績小於60或者數學成績大於80”的記錄
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df) x = (df["語文"]<60) | (df["數學"]>80) display(x) df1 = df[(df["語文"]<60) | (df["數學"]>80)] display(df1)
結果如下:

3)篩選出“語文成績里面的非空記錄”的記錄
(這種方式很重要)
# 自己在原始數據中,任意刪除三個值,重新讀取即可 df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df) x = df["語文"].isnull() display(x) y = ~df["語文"].isnull() display(y) df1 = df[~df["語文"].isnull()] display(df1)
結果如下:

注意:isnull()判斷某個值是否為空,如果是返回True,否則返回False。
4、邏輯運算函數:query()、isin()、between()
1)query()函數:能夠簡化查詢代碼,很好用
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df) df1 = df.query("語文>=60") df1 df1 = df.query("語文>=60 & 數學>=60") df1
結果如下:

2)isin()函數:查看df中是否某含某個值或者某些值
① isin()函數說明
使用isin()函數,不僅可以針對整個df操作,也可以針對df中的某一列(Series)操作,但是針對Series的操作才是最常用的。
② 利用isin()判斷整個df中是否包含某個值或某些值(了解)
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df) df.isin(["60","70"])
結果如下:

③ 利用isin()判斷df中的某列是否包含某個值或某些值(掌握)
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx") display(df) df["語文"].isin(["37","97"]) df1 = df[df["語文"].isin(["37","97"])] display(df1)
結果如下:

④ 利用isin(),利用df1中的某一列,來對df2中的數據進行過濾(很重要)
df1 = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=0) display(df1) df2 = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=1) display(df2) x = df1["name"].isin(df2["name"]) display(x) df1[df1["name"].isin(df2["name"])]
結果如下:

3)between()函數:返回一個布爾值,即如果在該范圍內,返回True,否則返回False。
df = pd.read_excel(r"C:\Users\黃偉\Desktop\test.xlsx",sheet_name=0) display(df) df["數學"].between(50,70) df[df["數學"].between(50,70)]
結果如下:

注意:此函數范圍是左閉右閉區間。
