inplace
พารามิเตอร์:
df.dropna(axis='index', how='all', inplace=True)
ในPandas
และวิธีการโดยทั่วไป:
1.หมีแพนด้าสร้างสำเนาของข้อมูลต้นฉบับ
2. ... ทำการคำนวณกับมัน
3. ... กำหนดผลลัพธ์ให้กับข้อมูลต้นฉบับ
4. ... ลบสำเนา
ในขณะที่คุณสามารถอ่านในส่วนที่เหลือของคำตอบของฉันเป็นดังต่อไปนี้เรายังสามารถมีเหตุผลที่ดีที่จะใช้พารามิเตอร์นี้คือinplace operations
แต่เราควรจะหลีกเลี่ยงได้ถ้าเราสามารถเป็นมันสร้างปัญหามากขึ้นเช่น:
1.โค้ดของคุณจะดีบักได้ยากขึ้น (จริงๆแล้วSettingwithCopyWarningหมายถึงการเตือนคุณถึงปัญหาที่อาจเกิดขึ้น
2.ขัดแย้งกับวิธีการผูกมัด
มีกรณีที่เราควรใช้หรือยัง
ใช่แน่นอน หากเราใช้แพนด้าหรือเครื่องมือใด ๆ ในการจัดการกับชุดข้อมูลขนาดใหญ่เราสามารถเผชิญกับสถานการณ์ได้อย่างง่ายดายซึ่งข้อมูลขนาดใหญ่บางส่วนสามารถใช้หน่วยความจำทั้งหมดของเราได้ เพื่อหลีกเลี่ยงเอฟเฟกต์ที่ไม่ต้องการนี้เราสามารถใช้เทคนิคบางอย่างเช่นวิธีการผูกมัด :
(
wine.rename(columns={"color_intensity": "ci"})
.assign(color_filter=lambda x: np.where((x.hue > 1) & (x.ci > 7), 1, 0))
.query("alcohol > 14 and color_filter == 1")
.sort_values("alcohol", ascending=False)
.reset_index(drop=True)
.loc[:, ["alcohol", "ci", "hue"]]
)
ซึ่งทำให้โค้ดของเรามีขนาดกะทัดรัดมากขึ้น (แม้ว่าจะตีความและดีบักได้ยากขึ้นด้วย) และใช้หน่วยความจำน้อยลงเนื่องจากวิธีการผูกมัดทำงานร่วมกับค่าที่ส่งคืนของวิธีการอื่นจึงส่งผลให้มีสำเนาข้อมูลอินพุตเพียงชุดเดียว เราสามารถเห็นได้อย่างชัดเจนว่าเราจะมีการใช้หน่วยความจำข้อมูลเดิม 2 เท่าหลังจากการดำเนินการนี้
หรือเราสามารถใช้inplace
พารามิเตอร์ (แม้ว่าจะตีความและดีบักได้ยากกว่าด้วย) การใช้หน่วยความจำของเราจะเป็นข้อมูลต้นฉบับ 2 เท่าแต่การใช้หน่วยความจำของเราหลังจากการดำเนินการนี้จะยังคงเป็นข้อมูลต้นฉบับ 1 xซึ่งหากใครก็ตามที่ทำงานกับชุดข้อมูลขนาดใหญ่เมื่อใดก็ตามที่รู้ว่าอาจเป็น ประโยชน์ที่ยิ่งใหญ่
ข้อสรุปสุดท้าย:
หลีกเลี่ยงการใช้inplace
พารามิเตอร์เว้นแต่คุณจะไม่ทำงานกับข้อมูลขนาดใหญ่และตระหนักถึงปัญหาที่อาจเกิดขึ้นในกรณีที่ยังคงใช้งานอยู่
inplace=True
ส่งNone
inplace=False
คืนสำเนาของวัตถุพร้อมกับการดำเนินการ เอกสารค่อนข้างชัดเจนในเรื่องนี้มีบางส่วนที่สับสนกับบางส่วนหรือไม่? SpeficallyIf True, do operation inplace and return None.