ตัวแปรเชิงหมวดหมู่

การทำความสะอาดข้อมูลใน Python

Adel Nehme

Content Developer @DataCamp

ข้อผิดพลาดที่อาจพบมีอะไรบ้าง?

I) ค่าที่ไม่สอดคล้องกัน

  • ฟิลด์ที่ไม่สอดคล้อง: 'married', 'Maried', 'UNMARRIED', 'not married'..
  • _ช่องว่างท้ายค่า: _'married ', ' married '..

II) การรวมหมวดหมู่ที่มากเกินไปให้เหลือน้อยลง

  • สร้างกลุ่มใหม่: หมวดหมู่ 0-20K, 20-40K ... จากข้อมูลรายได้ครัวเรือนแบบต่อเนื่อง
  • จับกลุ่มใหม่: แมปหมวดหมู่รายได้ครัวเรือนเป็น 2 กลุ่ม 'rich', 'poor'

III) ตรวจสอบให้แน่ใจว่าข้อมูลเป็นชนิด category (เห็นในบทที่ 1)

การทำความสะอาดข้อมูลใน Python

ความสอดคล้องของค่า

ตัวพิมพ์: 'married', 'Married', 'UNMARRIED', 'unmarried'..

# Get marriage status column
marriage_status = demographics['marriage_status']
marriage_status.value_counts()
unmarried    352
married      268
MARRIED      204
UNMARRIED    176
dtype: int64
การทำความสะอาดข้อมูลใน Python

ความสอดคล้องของค่า

# Get value counts on DataFrame
marriage_status.groupby('marriage_status').count()
                 household_income  gender
marriage_status                          
MARRIED                       204     204
UNMARRIED                     176     176
married                       268     268
unmarried                     352     352
การทำความสะอาดข้อมูลใน Python

ความสอดคล้องของค่า

# Capitalize

marriage_status['marriage_status'] = marriage_status['marriage_status'].str.upper() marriage_status['marriage_status'].value_counts()
UNMARRIED    528
MARRIED      472
# Lowercase

marriage_status['marriage_status'] = marriage_status['marriage_status'].str.lower() marriage_status['marriage_status'].value_counts()
unmarried    528
married      472
การทำความสะอาดข้อมูลใน Python

ความสอดคล้องของค่า

ช่องว่างท้ายค่า: 'married ', 'married', 'unmarried', ' unmarried'..

# Get marriage status column
marriage_status = demographics['marriage_status']
marriage_status.value_counts()
 unmarried   352
unmarried    268
married      204
married      176
dtype: int64
การทำความสะอาดข้อมูลใน Python

ความสอดคล้องของค่า

# Strip all spaces
demographics = demographics['marriage_status'].str.strip()
demographics['marriage_status'].value_counts()
unmarried    528
married      472
การทำความสะอาดข้อมูลใน Python

การรวมข้อมูลเป็นหมวดหมู่

สร้างหมวดหมู่จากข้อมูล: คอลัมน์ income_group จากคอลัมน์ income

# Using qcut()
import pandas as pd
group_names = ['0-200K', '200K-500K', '500K+']
demographics['income_group'] = pd.qcut(demographics['household_income'], q = 3, 
                                       labels = group_names)
# Print income_group column
demographics[['income_group', 'household_income']]
     category  household_income
0   200K-500K  189243
1       500K+  778533
..
การทำความสะอาดข้อมูลใน Python

การรวมข้อมูลเป็นหมวดหมู่

สร้างหมวดหมู่จากข้อมูล: คอลัมน์ income_group จากคอลัมน์ income

# Using cut() - create category ranges and names
ranges = [0,200000,500000,np.inf]
group_names = ['0-200K', '200K-500K', '500K+']
# Create income group column
demographics['income_group'] = pd.cut(demographics['household_income'], bins=ranges, 
                                      labels=group_names)
demographics[['income_group', 'household_income']]
     category  Income
0      0-200K  189243
1       500K+  778533
การทำความสะอาดข้อมูลใน Python

การรวมข้อมูลเป็นหมวดหมู่

แมปหมวดหมู่ให้เหลือน้อยลง: ลดจำนวนหมวดหมู่ในคอลัมน์เชิงหมวดหมู่

คอลัมน์ operating_system มีค่า: 'Microsoft', 'MacOS', 'IOS', 'Android', 'Linux'

คอลัมน์ operating_system ควรเปลี่ยนเป็น: 'DesktopOS', 'MobileOS'

# Create mapping dictionary and replace
mapping = {'Microsoft':'DesktopOS', 'MacOS':'DesktopOS', 'Linux':'DesktopOS',
           'IOS':'MobileOS', 'Android':'MobileOS'}
devices['operating_system'] = devices['operating_system'].replace(mapping)
devices['operating_system'].unique()
array(['DesktopOS', 'MobileOS'], dtype=object)
การทำความสะอาดข้อมูลใน Python

มาฝึกกันเถอะ!

การทำความสะอาดข้อมูลใน Python

Preparing Video For Download...