วิธีเปรียบเทียบชุดข้อมูล 2 ชุดกับโปรไฟล์ Pandas
การแสดงภาพเป็นรากฐานที่สำคัญของ EDA เมื่อเผชิญกับชุดข้อมูลใหม่ที่ไม่รู้จัก การตรวจสอบด้วยภาพจะช่วยให้เราเข้าใจข้อมูลที่มีอยู่ วาดรูปแบบบางอย่างเกี่ยวกับข้อมูล และวินิจฉัยปัญหาต่างๆ ที่เราอาจต้องแก้ไข ในเรื่องนี้Pandas Profilingเป็นมีดสวิสที่ขาดไม่ได้ในแถบเครื่องมือของนักวิทยาศาสตร์ข้อมูลทุกคน ในบทความที่ผ่านมาของฉัน ฉันได้กล่าวถึงการทำโปรไฟล์หมีแพนด้าว่ามีประโยชน์อย่างไรในขณะที่ใช้ EDA อนุกรมเวลาแต่ถ้าเราสามารถเปรียบเทียบชุดข้อมูลสองชุดได้ล่ะ
มีพวกเรากี่คนที่เริ่มพัฒนาโครงการวิทยาศาสตร์ข้อมูลและพยายามทำความเข้าใจว่าเราได้อะไรจากการแปลงข้อมูลและวิศวกรรมมากน้อยเพียงใด
และนั่นคือสิ่งที่ฉันจะกล่าวถึงในบล็อกโพสต์ของวันนี้ วิธีใช้ประโยชน์จากโค้ด EDA บรรทัดเดียวที่มีชื่อเสียงที่สุดเพื่อส่งเสริมกระบวนการพัฒนาวิทยาศาสตร์ข้อมูลและการปรับปรุงคุณภาพข้อมูล ฉันจะแนะนำวิธีใช้ประโยชน์จากฟังก์ชันรายงานการเปรียบเทียบโปรไฟล์ Pandas เพื่อเพิ่มกระบวนการ EDA ของคุณและแสดงให้เห็นถึงศักยภาพในการสร้างการเปลี่ยนแปลงที่รวดเร็วและชาญฉลาดยิ่งขึ้นในข้อมูลของเรา
ชุดข้อมูลที่ใช้ในบทความนี้สามารถพบได้ใน Kaggle ซึ่งเป็นชุดข้อมูล HCCโดยMiriam Santos (ใบอนุญาต: CC0: Public Domain ) สำหรับกรณีการใช้งานเฉพาะนี้ ฉันได้แนะนำปัญหาด้านคุณภาพข้อมูลเพิ่มเติมโดยไม่ได้ตั้งใจเพื่อแสดงให้คุณเห็นว่าการแสดงข้อมูลเป็นภาพสามารถช่วยเราตรวจจับและแนะนำเราไปสู่การลดประสิทธิภาพได้อย่างไร โค้ดและตัวอย่างทั้งหมดมีอยู่ใน GitHub และในกรณีที่คุณต้องการทบทวนเล็กน้อย อย่าลืมตรวจสอบบล็อกนี้เพื่อปัดฝุ่นทักษะการทำโปรไฟล์หมีแพนด้าของคุณ ดังนั้นในกรณีการใช้งานของเรา!
การทำโปรไฟล์ Pandas: EDA ที่ปลายนิ้วของคุณ
เราจะเริ่มต้นด้วยการทำโปรไฟล์ชุดข้อมูล HCC และตรวจสอบปัญหาด้านคุณภาพข้อมูลที่แนะนำในรายงาน:
pip install pandas-profiling==3.5.0
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd
from pandas_profiling import ProfileReport
# Read the HCC Dataset
df = pd.read_csv("hcc.csv")
# Produce the data profiling report
original_report = ProfileReport(df, title='Original Data')
original_report.to_file("original_report.html")
Alerts shown in Pandas Profiling Report (scheenshot by author)
- ทำซ้ำ : 4 แถวที่ซ้ำกันในข้อมูล;
- ค่า คงที่ : ค่าคงที่ “999” ใน 'O2';
- ความสัมพันธ์สูง : คุณสมบัติหลายอย่างที่ทำเครื่องหมายว่าสัมพันธ์กันสูง
- ไม่มี : ไม่มีค่าใน ' Ferritin '
การลบแถวที่ซ้ำกัน : อาจมีระเบียนที่มีค่าเหมือนกันโดยไม่มีข้อผิดพลาด ทั้งนี้ขึ้นอยู่กับลักษณะของโดเมน อย่างไรก็ตาม เมื่อพิจารณาว่าคุณลักษณะบางอย่างในชุดข้อมูลนี้ค่อนข้างเฉพาะเจาะจงและอ้างอิงการวัดทางชีววิทยาของแต่ละบุคคล (เช่น "เฮโมโกลบิน", "MCV", "Albumin") จึงไม่น่าเป็นไปได้ที่ผู้ป่วยหลายรายจะรายงานค่าที่เหมือนกันทุกประการสำหรับคุณลักษณะทั้งหมด . เริ่มต้นด้วยการปล่อยรายการที่ซ้ำกันเหล่านี้ออกจากข้อมูล:
# Drop duplicate rows | |
df_transformed = df.copy() | |
df_transformed = df_transformed.drop_duplicates() |
การลบคุณสมบัติที่ไม่เกี่ยวข้องออก : ค่าคงที่ใน O2 ยังสะท้อนถึงความไม่สอดคล้องกันอย่างแท้จริงในข้อมูล และดูเหมือนจะไม่เก็บข้อมูลที่มีค่าสำหรับการพัฒนาแบบจำลอง ในสถานการณ์กรณีการใช้งานจริง การทำซ้ำกับโดเมนหรือผู้เชี่ยวชาญทางธุรกิจจะเป็นมาตรฐานที่ดี แต่สำหรับจุดประสงค์ของตัวอย่างกรณีการใช้งานนี้ เราจะดำเนินการต่อและละทิ้งสิ่งเหล่านี้จากการวิเคราะห์:
# Remove O2 | |
df_transformed = df_transformed.drop(columns='O2') |
Missing Data Imputation : ชุดข้อมูล HCC ดูเหมือนจะอ่อนไหวอย่างมากต่อข้อมูลที่ขาดหายไป วิธีง่ายๆ ในการแก้ไขปัญหานี้ (หลีกเลี่ยงการลบบันทึกที่ไม่สมบูรณ์หรือคุณสมบัติทั้งหมด) คือการใช้การใส่ข้อมูล เราจะใช้การใส่ค่ากลางเพื่อเติมการสังเกตที่หายไป เนื่องจากเป็นเทคนิคการใส่ค่าทางสถิติที่ใช้กันทั่วไปและง่ายที่สุด และมักจะใช้เป็นวิธีการพื้นฐาน:
# Impute Missing Values | |
from sklearn.impute import SimpleImputer | |
mean_imputer = SimpleImputer(strategy="mean") | |
df_transformed['Ferritin'] = mean_imputer.fit_transform(df_transformed['Ferritin'].values.reshape(-1,1)) |
การเปรียบเทียบแบบเคียงข้างกัน: การทำซ้ำข้อมูลของคุณเร็วขึ้นและชาญฉลาดขึ้น
ตอนนี้สำหรับส่วนที่สนุก! หลังจากใช้การแปลงชุดแรกกับชุดข้อมูลของเราแล้ว เราก็พร้อมที่จะประเมินผลกระทบที่มีต่อคุณภาพโดยรวมของข้อมูลของเรา นี่คือจุดที่ฟังก์ชั่นรายงานการเปรียบเทียบการทำโปรไฟล์แพนด้ามีประโยชน์ รหัสด้านล่างแสดงวิธีการเริ่มต้น:
transformed_report = ProfileReport(df_transformed, title="Transformed Data") | |
comparison_report = original_report.compare(transformed_report) | |
comparison_report.to_file("original_vs_transformed.html") |
นี่คือวิธีที่รายงานทั้งสองแสดงในการเปรียบเทียบ:

เราสามารถเข้าใจอะไรได้ทันทีจากภาพรวมชุดข้อมูลของเรา ชุดข้อมูลที่แปลงแล้วมีคุณลักษณะที่จัดหมวดหมู่น้อยกว่าหนึ่งคุณลักษณะ (“O2” ถูกลบออก) การสังเกต 165 รายการ (เทียบกับชุดข้อมูลดั้งเดิมที่มี 171 รายการที่ซ้ำกัน) และไม่มีค่าใดหายไป (ตรงกันข้ามกับการสังเกตที่ขาดหายไป 79 รายการในชุดข้อมูลดั้งเดิม)
แต่การเปลี่ยนแปลงนี้ส่งผลต่อคุณภาพของข้อมูลของเราอย่างไร และการตัดสินใจเหล่านั้นดีแค่ไหน?
ลองมาดำดิ่งลงไปในนั้น ในส่วนที่เกี่ยวข้องกับระเบียนที่ซ้ำกัน ไม่มีผลกระทบเฉพาะในส่วนที่เกี่ยวข้องกับการแจกแจงตัวแปรและรูปแบบชุดข้อมูลหลังจากการลดลง การใส่ค่าที่ขาดหายไปที่ทำเป็นเรื่องที่แตกต่างกัน
ตามที่คาดไว้ ไม่มีการสังเกตที่ขาดหายไปหลังจากดำเนินการใส่ข้อมูล สังเกตว่าทั้งจำนวนค่าว่างและเมทริกซ์แสดงความแตกต่างระหว่างข้อมูลทั้งสองเวอร์ชันอย่างไร ในข้อมูลที่แปลงแล้ว ตอนนี้ “เฟอร์ริติน” มีค่าสมบูรณ์ 165 ค่า และไม่พบช่องว่างในเมทริกซ์ค่าว่าง

อย่างไรก็ตาม เราสามารถอนุมานเป็นอย่างอื่นได้จากรายงานเปรียบเทียบ หากเราต้องตรวจสอบฮิสโตแกรมของ “Ferritin” เราจะเห็นว่าการป้อนค่าด้วยค่าเฉลี่ยนั้นบิดเบือนการกระจายข้อมูลดั้งเดิมอย่างไร ซึ่งเป็นสิ่งที่ไม่พึงปรารถนา
นอกจากนี้ยังสังเกตได้จากการสร้างภาพของการโต้ตอบและความสัมพันธ์ ซึ่งรูปแบบการโต้ตอบที่บ้าระห่ำและค่าสหสัมพันธ์ที่สูงขึ้นปรากฏในความสัมพันธ์ระหว่าง "Ferritin" และคุณลักษณะที่เหลือ
สิ่งนี้แสดงให้เห็นว่ารายงานการเปรียบเทียบไม่เพียงมีประโยชน์สำหรับการเน้นความแตกต่างที่เกิดขึ้นหลังจากการแปลงข้อมูลเท่านั้น แต่ยังให้สัญญาณภาพหลายอย่างที่นำเราไปสู่ข้อมูลเชิงลึกที่สำคัญเกี่ยวกับการแปลงเหล่านั้น ในกรณีนี้ ควรพิจารณากลยุทธ์การใส่ข้อมูลแบบเฉพาะเจาะจงมากขึ้น .
ความคิดสุดท้าย
ตลอดกรณีการใช้งานขนาดเล็กนี้ เราได้ครอบคลุมถึงประโยชน์ของการเปรียบเทียบชุดข้อมูลสองชุดภายในรายงานการทำโปรไฟล์เดียวกัน เพื่อเน้นการแปลงข้อมูลที่ดำเนินการระหว่าง EDA และประเมินผลกระทบต่อคุณภาพของข้อมูล
อย่างไรก็ตาม การใช้งานฟังก์ชันนี้ไม่มีที่สิ้นสุด เนื่องจากความจำเป็นในการ (ทำซ้ำ) ในการประเมินคุณลักษณะและการตรวจสอบด้วยภาพเป็นสิ่งสำคัญสำหรับโซลูชันที่เน้นข้อมูลเป็นศูนย์กลาง ตั้งแต่การเปรียบเทียบรถไฟการตรวจสอบความถูกต้องและการทดสอบชุดการแจกแจงหรือการควบคุมคุณภาพข้อมูล ไปจนถึงกรณีการใช้งานขั้นสูง เช่น สำหรับกระบวนการ สร้าง ข้อมูลสังเคราะห์
Fabiana Clemente , CDO ที่YData
เร่งความเร็ว AI ด้วยข้อมูลที่ได้รับการปรับปรุง