Pandas: วิธีใช้ dropna() กับ thresh
คุณสามารถใช้ฟังก์ชัน dropna() เพื่อลบแถวออกจาก DataFrame ของ pandas ที่มีค่าที่ขาดหายไป
คุณยังสามารถใช้อาร์กิวเมนต์ thresh เพื่อระบุจำนวนค่าที่ไม่ใช่ NaN ขั้นต่ำที่แถวหรือคอลัมน์จะต้องเก็บไว้ใน DataFrame
ต่อไปนี้เป็นวิธีทั่วไปในการใช้อาร์กิวเมนต์ ขีดจำกัด ในทางปฏิบัติ:
วิธีที่ 1: เก็บเฉพาะแถวที่มีค่าที่ไม่ใช่ NaN ขั้นต่ำเท่านั้น
#only keep rows with at least 2 non-NaN values df. dropna (thresh= 2 )
วิธีที่ 2: เก็บเฉพาะแถวที่มีเปอร์เซ็นต์ขั้นต่ำของค่าที่ไม่ใช่ NaN
#only keep rows with at least 70% non-NaN values df. dropna (thresh= 0.7 * len (df. columns ))
วิธีที่ 3: เก็บเฉพาะคอลัมน์ที่มีค่าที่ไม่ใช่ NaN ขั้นต่ำเท่านั้น
#only keep columns with at least 6 non-NaN values df. dropna (thresh= 6 ,axis= 1 )
วิธีที่ 4: เก็บเฉพาะคอลัมน์ที่มีเปอร์เซ็นต์ขั้นต่ำของค่าที่ไม่ใช่ NaN
#only keep columns with at least 70% non-NaN values df. dropna (thresh= 0.7 * len (df), axis= 1 )
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, np.nan, 19, 14, 14, 11, 20, np.nan], ' assists ': [5, np.nan, np.nan, 9, np.nan, 9, 9, 4], ' rebounds ': [11, np.nan, 10, 6, 6, 5, 9, np.nan]}) #view DataFrame print (df) team points assists rebounds 0 A 18.0 5.0 11.0 1 B NaN NaN NaN 2 C 19.0 NaN 10.0 3D 14.0 9.0 6.0 4 E 14.0 NaN 6.0 5 F 11.0 9.0 5.0 6G 20.0 9.0 9.0 7H NaN 4.0 NaN
ตัวอย่างที่ 1: เก็บเฉพาะแถวที่มีค่าที่ไม่ใช่ NaN ขั้นต่ำเท่านั้น
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเก็บเฉพาะแถวใน DataFrame ที่มีค่าที่ไม่ใช่ NaN อย่างน้อย 2 ค่า:
#only keep rows with at least 2 non-NaN values df. dropna (thresh= 2 ) team points assists rebounds 0 A 18.0 5.0 11.0 2 C 19.0 NaN 10.0 3D 14.0 9.0 6.0 4 E 14.0 NaN 6.0 5 F 11.0 9.0 5.0 6G 20.0 9.0 9.0 7H NaN 4.0 NaN
โปรดทราบว่าแถวที่ตำแหน่งดัชนี 1 ถูกลบออกเนื่องจากมีค่าที่ไม่ใช่ NaN เพียงค่าเดียวในทั้งแถว
ตัวอย่างที่ 2: เก็บเฉพาะแถวที่มีเปอร์เซ็นต์ขั้นต่ำของค่าที่ไม่ใช่ NaN
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเก็บเฉพาะแถวเหล่านั้นใน DataFrame ที่มีค่าที่ไม่ใช่ NaN อย่างน้อย 70%:
#only keep rows with at least 70% non-NaN values df. dropna (thresh= 0.7 * len (df. columns )) team points assists rebounds 0 A 18.0 5.0 11.0 2 C 19.0 NaN 10.0 3D 14.0 9.0 6.0 4 E 14.0 NaN 6.0 5 F 11.0 9.0 5.0 6G 20.0 9.0 9.0
โปรดทราบว่าแถวที่ตำแหน่งดัชนี 1 และ 7 ถูกลบออกเนื่องจากแถวเหล่านี้ไม่มีค่าเป็นค่าที่ไม่ใช่ NaN อย่างน้อย 70%
ตัวอย่างที่ 3: เก็บเฉพาะคอลัมน์ที่มีค่าที่ไม่ใช่ NaN ขั้นต่ำเท่านั้น
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเก็บเฉพาะคอลัมน์เหล่านั้นใน DataFrame ที่มีค่าที่ไม่ใช่ NaN อย่างน้อย 6 ค่า:
#only keep columns with at least 6 non-NaN values df. dropna (thresh= 6 ,axis= 1 ) team points rebounds 0 A 18.0 11.0 1 B NaN NaN 2 C 19.0 10.0 3D 14.0 6.0 4E 14.0 6.0 5 F 11.0 5.0 6G 20.0 9.0 7 H NaN NaN
โปรดทราบว่าคอลัมน์ “ช่วยเหลือ” ถูกลบออกเนื่องจากคอลัมน์นั้นไม่มีค่าที่ไม่ใช่ NaN อย่างน้อย 6 ค่าในคอลัมน์
ตัวอย่างที่ 4: เก็บเฉพาะคอลัมน์ที่มีเปอร์เซ็นต์ขั้นต่ำของค่าที่ไม่ใช่ NaN
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเก็บเฉพาะคอลัมน์เหล่านั้นใน DataFrame ที่มีค่าที่ไม่ใช่ NaN อย่างน้อย 70%:
#only keep columns with at least 70% non-NaN values df. dropna (thresh= 0.7 * len (df), axis= 1 ) team points rebounds 0 A 18.0 11.0 1 B NaN NaN 2 C 19.0 10.0 3D 14.0 6.0 4E 14.0 6.0 5 F 11.0 5.0 6G 20.0 9.0 7 H NaN NaN
โปรดทราบว่าคอลัมน์ “support” ถูกนำออกเนื่องจากคอลัมน์นี้ไม่มีค่าที่ไม่ใช่ NaN อย่างน้อย 70%
หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มของฟังก์ชัน pandas dropna() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:
Pandas: วิธีรีเซ็ตดัชนีหลังจากใช้ dropna ()
Pandas: วิธีใช้ dropna() กับคอลัมน์เฉพาะ
Pandas: วิธีลบแถวตามเงื่อนไขต่างๆ