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 ในชุดคำสั่ง