วิทยาศาสตร์ข้อมูล - การเตรียมข้อมูล


ก่อนวิเคราะห์ข้อมูล Data Scientist ต้องดึงข้อมูลออกมา และทำให้ข้อมูลสะอาดและมีค่า


แยกและอ่านข้อมูลด้วย Pandas

ก่อนวิเคราะห์ข้อมูล จะต้องนำเข้า/แยกข้อมูลก่อน

ในตัวอย่างด้านล่าง เราจะแสดงวิธีการนำเข้าข้อมูลโดยใช้ Pandas ใน Python

เราใช้read_csv()ฟังก์ชันเพื่อนำเข้าไฟล์ CSV พร้อมข้อมูลสุขภาพ:

ตัวอย่าง

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

ตัวอย่างที่อธิบาย

  • นำเข้าห้องสมุด Pandas
  • ตั้งชื่อ data frame เป็นhealth_data.
  • header=0 หมายความว่าจะพบส่วนหัวของชื่อตัวแปรในแถวแรก (โปรดทราบว่า 0 หมายถึงแถวแรกใน Python)
  • sep=","หมายความว่า "," ถูกใช้เป็นตัวคั่นระหว่างค่าต่างๆ เนื่องจากเราใช้ไฟล์ประเภท .csv (ค่าที่คั่นด้วยเครื่องหมายจุลภาค)

เคล็ดลับ:หากคุณมีไฟล์ CSV ขนาดใหญ่ คุณสามารถใช้ head()ฟังก์ชันเพื่อแสดงเฉพาะ 5 แถวบนสุดได้:

ตัวอย่าง

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

การล้างข้อมูล

ดูข้อมูลที่นำเข้า อย่างที่คุณเห็น ข้อมูลนั้น "สกปรก" โดยมีค่าผิดหรือไม่ได้ลงทะเบียน:

ข้อมูลสกปรก
  • มีช่องว่างอยู่บ้าง
  • ชีพจรเฉลี่ยที่ 9,000 เป็นไปไม่ได้
  • 9000 จะถือว่าเป็นตัวเลขที่ไม่ใช่ตัวเลข เนื่องจากตัวคั่นช่องว่าง
  • การสังเกตชีพจรสูงสุดหนึ่งครั้งจะแสดงเป็น "AF" ซึ่งไม่สมเหตุสมผล

ดังนั้น เราต้องล้างข้อมูลเพื่อทำการวิเคราะห์


ลบแถวว่าง

เราเห็นว่าค่าที่ไม่ใช่ตัวเลข (9 000 และ AF) อยู่ในแถวเดียวกันกับค่าที่ขาดหายไป

วิธีแก้ไข: เราสามารถลบแถวที่ไม่มีข้อสังเกตเพื่อแก้ไขปัญหานี้ได้

เมื่อเราโหลดชุดข้อมูลโดยใช้ Pandas เซลล์ว่างทั้งหมดจะถูกแปลงเป็นค่า "NaN" โดยอัตโนมัติ

ดังนั้นการลบเซลล์ NaN จะทำให้เรามีชุดข้อมูลที่ชัดเจนที่สามารถวิเคราะห์ได้

เราสามารถใช้dropna()ฟังก์ชันนี้เพื่อลบ NaNs axis=0 หมายความว่าเราต้องการลบแถวทั้งหมดที่มีค่า NaN:

ตัวอย่าง

health_data.dropna(axis=0,inplace=True)

print(health_data)

ผลลัพธ์คือชุดข้อมูลที่ไม่มีแถว NaN:

ข้อมูลที่สะอาด

หมวดหมู่ข้อมูล

ในการวิเคราะห์ข้อมูล เราต้องรู้ประเภทของข้อมูลที่เราจัดการด้วย

ข้อมูลสามารถแบ่งออกเป็นสามประเภทหลัก:

  1. ตัวเลข - มีค่าตัวเลข สามารถแบ่งออกเป็นสองประเภท:
    • ไม่ต่อเนื่อง: ตัวเลขจะถูกนับเป็น "ทั้งหมด" ตัวอย่าง: คุณไม่สามารถฝึก 2.5 เซสชั่น มันคือ 2 หรือ 3
    • ต่อเนื่อง: ตัวเลขสามารถมีความแม่นยำไม่สิ้นสุด ตัวอย่างเช่น คุณสามารถนอนได้ 7 ชั่วโมง 30 นาที 20 วินาที หรือ 7.533 ชั่วโมง
  2. หมวดหมู่ - ประกอบด้วยค่าที่ไม่สามารถวัดกันได้ ตัวอย่าง: สีหรือประเภทของการฝึก
  3. ลำดับ - ประกอบด้วยข้อมูลหมวดหมู่ที่สามารถวัดกันได้ ตัวอย่าง: คะแนนของโรงเรียนที่ A ดีกว่า B เป็นต้น

เมื่อทราบประเภทข้อมูลของคุณแล้ว คุณจะสามารถทราบได้ว่าจะใช้เทคนิคใดในการวิเคราะห์ข้อมูลเหล่านั้น


ประเภทข้อมูล

เราสามารถใช้info()ฟังก์ชันเพื่อแสดงรายการประเภทข้อมูลภายในชุดข้อมูลของเรา: 

ตัวอย่าง

print(health_data.info())

ผลลัพธ์:

ประเภทข้อมูลทศนิยมและวัตถุ

เราเห็นว่าชุดข้อมูลนี้มีข้อมูลสองประเภทที่แตกต่างกัน:

  • Float64
  • วัตถุ

เราไม่สามารถใช้อ็อบเจกต์ในการคำนวณและทำการวิเคราะห์ได้ที่นี่ เราต้องแปลงประเภทวัตถุเป็น float64 (float64 เป็นตัวเลขที่มีทศนิยมใน Python)

เราสามารถใช้astype()ฟังก์ชันเพื่อแปลงข้อมูลเป็น float64

ตัวอย่างต่อไปนี้จะแปลง "Average_Pulse" และ "Max_Pulse" เป็นประเภทข้อมูล float64 (ตัวแปรอื่นๆ เป็นประเภทข้อมูล float64 อยู่แล้ว):

ตัวอย่าง

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

ผลลัพธ์:

ประเภทข้อมูล float

ตอนนี้ชุดข้อมูลมีประเภทข้อมูล float64 เท่านั้น


วิเคราะห์ข้อมูล

เมื่อเราล้างชุดข้อมูลแล้ว เราก็เริ่มวิเคราะห์ข้อมูลได้

เราสามารถใช้describe()ฟังก์ชันใน Python เพื่อสรุปข้อมูลได้:

ตัวอย่าง

print(health_data.describe())

ผลลัพธ์:

  ระยะเวลา ค่าเฉลี่ย_Pulse Max_Pulse แคลอรี่_เบิร์น ชั่วโมง_ทำงาน Hours_Sleep
นับ 10.0 10.0 10.0 10.0 10.0 10.0
หมายถึง 51.0 102.5 137.0 285.0 6.6 7.5
มาตรฐาน 10.49 15.4 11.35 30.28 3.63 0.53
นาที 30.0 80.0 120.0 240.0 0.0 7.0
25% 45.0 91.25 130.0 262.5 7.0 7.0
50% 52.5 102.5 140.0 285.0 8.0 7.5
75% 60.0 113.75 145.0 307.5 8.0 8.0
แม็กซ์ 60.0 125.0 150.0 330.0 10.0 8.0
  • นับ - นับจำนวนการสังเกต
  • ค่าเฉลี่ย - มูลค่าเฉลี่ย
  • Std - ส่วนเบี่ยงเบนมาตรฐาน (อธิบายไว้ในบทสถิติ)
  • ต่ำสุด - ค่าต่ำสุด
  • 25% , 50%และ75%เป็นเปอร์เซ็นไทล์ (อธิบายไว้ในบทสถิติ)
  • สูงสุด - ค่าสูงสุด