แพนด้า - ทำความสะอาดเซลล์ว่าง
เซลล์ว่าง
เซลล์ว่างอาจทำให้คุณได้ผลลัพธ์ที่ไม่ถูกต้องเมื่อคุณวิเคราะห์ข้อมูล
ลบแถว
วิธีหนึ่งในการจัดการเซลล์ว่างคือการเอาแถวที่มีเซลล์ว่างออก
ซึ่งเป็นเรื่องปกติ เนื่องจากชุดข้อมูลอาจมีขนาดใหญ่มาก และการลบสองสามแถวจะไม่ส่งผลกระทบอย่างมากต่อผลลัพธ์
ตัวอย่าง
ส่งคืน Data Frame ใหม่โดยไม่มีเซลล์ว่าง:
import pandas as pd
df = pd.read_csv('data.csv')
new_df = df.dropna()
print(new_df.to_string())
ในตัวอย่างการทำความสะอาด เราจะใช้ไฟล์ CSV ชื่อ 'dirtydata.csv'
ดาวน์โหลดdirtydata.csv หรือเปิด dirtydata.csv
หมายเหตุ:โดยค่าเริ่มต้นdropna()
เมธอดจะคืนค่า DataFrame ใหม่และจะไม่เปลี่ยนต้นฉบับ
หากคุณต้องการเปลี่ยน DataFrame ดั้งเดิม ให้ใช้
inplace = True
อาร์กิวเมนต์:
ตัวอย่าง
ลบแถวทั้งหมดที่มีค่า NULL:
import pandas as pd
df = pd.read_csv('data.csv')
df.dropna(inplace = True)
print(df.to_string())
หมายเหตุ:ตอนนี้dropna(inplace = True)
จะไม่ส่งคืน DataFrame ใหม่ แต่จะลบแถวทั้งหมดที่มีค่า NULL ออกจาก DataFrame ดั้งเดิม
แทนที่ค่าว่าง
อีกวิธีหนึ่งในการจัดการกับเซลล์ว่างคือการแทรก ค่า ใหม่แทน
วิธีนี้ทำให้คุณไม่จำเป็นต้องลบแถวทั้งหมดเพียงเพราะเซลล์ว่างบางเซลล์
วิธีfillna()
นี้ช่วยให้เราสามารถแทนที่เซลล์ว่างด้วยค่า:
ตัวอย่าง
แทนที่ค่า NULL ด้วยตัวเลข 130:
import pandas as pd
df = pd.read_csv('data.csv')
df.fillna(130, inplace = True)
แทนที่เฉพาะสำหรับคอลัมน์ที่ระบุ
ตัวอย่างข้างต้นจะแทนที่เซลล์ว่างทั้งหมดใน Data Frame ทั้งหมด
หากต้องการแทนที่ค่าว่างสำหรับคอลัมน์เดียว ให้ระบุชื่อคอลัมน์สำหรับ DataFrame:
ตัวอย่าง
แทนที่ค่า NULL ในคอลัมน์ "แคลอรี่" ด้วยตัวเลข 130:
import pandas as pd
df = pd.read_csv('data.csv')
df["Calories"].fillna(130, inplace = True)
ได้รับการรับรอง!
$10 ลงทะเบียน
แทนที่โดยใช้ค่าเฉลี่ย ค่ามัธยฐาน หรือโหมด
วิธีทั่วไปในการแทนที่เซลล์ว่างคือการคำนวณค่าเฉลี่ย ค่ามัธยฐาน หรือค่าโหมดของคอลัมน์
Pandas ใช้mean()
median()
and mode()
วิธีในการคำนวณค่าที่เกี่ยวข้องสำหรับคอลัมน์ที่ระบุ:
ตัวอย่าง
คำนวณ MEAN และแทนที่ค่าว่างด้วย:
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mean()
df["Calories"].fillna(x, inplace = True)
ค่าเฉลี่ย = ค่าเฉลี่ย (ผลรวมของค่าทั้งหมดหารด้วยจำนวนค่า)
ตัวอย่าง
คำนวณค่ามัธยฐานและแทนที่ค่าว่างด้วย:
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].median()
df["Calories"].fillna(x, inplace = True)
ค่ามัธยฐาน = ค่าที่อยู่ตรงกลาง หลังจากที่คุณได้จัดเรียงค่าทั้งหมดจากน้อยไปมากแล้ว
ตัวอย่าง
คำนวณ MODE และแทนที่ค่าว่างด้วย:
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mode()[0]
df["Calories"].fillna(x, inplace = True)
Mode = ค่าที่ปรากฏบ่อยที่สุด