Categorical Data คือ ตัวแปรที่มี label values เป็นอะไรก็ตามที่ไม่ใช่ตัวเลข บ่อยครั้งตัวแปรเหล่านี้จะถูกเรียกว่า nominal

ตัวอย่างตัวแปรที่เป็น nominal

  • ‘cat’:[‘cat’, ‘dog’, ‘rabbit’]
  • ‘country’:[‘Russia’, ‘Thailand’, ‘UK’, ‘US’]
  • ‘colour’:[‘pink’, ‘blue’, ‘white’]

ปัญหาในการนำข้อมูลที่เป็น nominal ไปใช้ คือข้อมูลเหล่านี้ไม่สามารถนำไปประมวลผลในเชิงปริมาณได้

ในบทความนี้เราจะแสดงวิธีการ encode ข้อมูล nominal ให้เป็นตัวเลข โดยใช้ Pandas Library ใน Python เราเรียกวิธี encode นี้ว่า Ordinal Encoding

Ordinal Encoding

คือการ transform จากข้อมูลที่เป็น nominal ให้อยู่ในรูปของตัวเลขในชุดคำสั่ง

ตัวอย่าง การ encoding data ที่ค่าเป็น nominal

ข้อมูลที่ได้รับจากการขอให้ลูกค้าระบุความพึงพอใจของสินค้า โดยมีตัวเลือกให้ลูกค้าเลือก 3 ตัวเลือกดังนี้

  • ไม่ดี
  • เฉยๆ
  • ดีมาก

เราสามารถจัดข้อมูลเหล่านี้ให้อยู่ในรูปของ Dictionary และสร้าง DataFrame ได้ดังนี้

rates = {'customer_rates':['Poor, 'fair', 'Excellent']
rates_df = pd.DataFrame(rates)
print(rates_df)

output:
  customer_rating
0            Poor
1            fair
2       Excellent

ต่อไปเราจะต้องสร้าง dictionary ขึ้นมาอีกหนึ่งอัน โดยค่าใน dictionary อันใหม่นี้ต้องเป็นตัวเลขที่จะนำไป map กับข้อมูล nominal ใน DataFrame

num_dict = {'Poor':1, 'fair':2, 'Excellent':3}

ต่อมาเราจะกำหนดให้ค่าตัวเลขใน dictionary อันใหม่นี้ map เข้ากับค่าข้อมูลแบบ nominal ใน customer_rates

rates_df['customer_rates'] = rates_df.customer_rates.map(num_dict)
print(rates_df)

output:
   customer_rating
0                1
1                2
2                3

จะเห็นว่าการประเมินผลสินค้าที่เป็น nominal (ไม่ดี, เฉยๆ, ดีมาก) ถูกแทนค่าด้วยตัวเลข 1 2 และ 3 ซึ่งเป็นผลจากการ encoding ให้ข้อมูลที่ได้อยู่ในรูปของ ordinal numerical value ในชุดคำสั่ง