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: วิธีลบแถวตามเงื่อนไขต่างๆ

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *