หมีแพนด้าแปลงค่าหมวดหมู่เป็นค่า Int

Hmi Phaenda Paelng Kha Hmwd Hmu Pen Kha Int



ชุดข้อมูลสำหรับการดำเนินการแมชชีนเลิร์นนิงมีทั้งตัวแปรตัวเลขและหมวดหมู่ ตัวแปรตามหมวดหมู่คือข้อมูลประเภทสตริงที่มนุษย์เข้าใจได้ง่าย ในทางกลับกัน เครื่องจักรไม่สามารถเข้าใจอินพุตที่เป็นหมวดหมู่ได้โดยตรง ดังนั้น เนื้อหาที่เป็นหมวดหมู่จะต้องถูกแปลงเป็นค่าตัวเลขที่เครื่องสามารถตีความได้

วิธีการแปลงหมวดหมู่เป็นInt

เทคนิคที่มีอยู่ใน “pandas” สำหรับการแปลงค่าการจัดหมวดหมู่เป็นค่า int ของ DataFrame มีให้ที่นี่:

    • DataFrame.replace() วิธีการ
    • DataFrame.apply(factorize()) method

เราจะใช้วิธีการเหล่านี้ในบทความนี้และอธิบายรายละเอียดวิธีการใช้ทั้งสองวิธีใน “แพนด้า”







ตัวอย่าง # 1: การใช้ Pandas Replace() Method

ค่าตามหมวดหมู่ใน DataFrame สามารถแปลงเป็น int ได้โดยใช้เมธอด “DataFrame.replace()” ของแพนด้า เราจะเรียนรู้ที่นี่เพื่อใช้วิธีนี้



เราใช้เครื่องมือ 'Spyder' เพื่อดำเนินการเทคนิคนี้อย่างเหมาะสมใน Python หากต้องการเริ่มเขียนสคริปต์ ให้เปิดไฟล์ Python ใหม่ในเครื่องมือ 'Spyder' ข้อกำหนดที่สำคัญที่สุดสำหรับการเขียนสคริปต์คือการนำเข้าไลบรารีที่เหมาะสม เนื่องจากเราต้องใช้วิธี 'แพนด้า' เราจะมี 'นำเข้าแพนด้าเป็น pd' เพื่อเข้าถึงคุณสมบัติของ 'แพนด้า' จากนั้นเราเริ่มรหัส Python หลักของเรา เราได้สร้าง DataFrame โดยใช้เมธอด “pd.DataFrame()” DataFrame เริ่มต้นโดยสามคอลัมน์ 'ชื่อ', 'ระดับ' และ 'รายได้' คอลัมน์ทั้งหมดของ DataFrame เก็บค่าความยาวเท่ากัน



คอลัมน์แรก 'ชื่อ' มีค่าแปดค่า ได้แก่ 'บุช' 'อัลเบิร์ต' 'แฮร์รี่' 'ปีเตอร์' 'เอ็มม่า' 'นิวตัน' 'สมิธ' และ 'เอลซ่า' คอลัมน์ที่สอง 'ดีกรี' ยังเก็บค่าหมวดหมู่ไว้แปดค่า ได้แก่ 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' และ 'MS' คอลัมน์สุดท้าย 'รายได้' มีค่าจำนวนเต็มแปดค่า '60000', '80000', '75000', '45000', '56000', '65000', '55000' และ '70000' เราได้สร้าง 'staff' วัตถุ DataFrame เพื่อจัดเก็บผลลัพธ์ของการเรียกใช้ฟังก์ชัน 'pd.DataFrame ()' ในการแสดง DataFrame เริ่มต้นของเรา เราใช้เมธอด “print()” โดยมีชื่อ “staff” ของ DataFrame เป็นพารามิเตอร์ในบรรทัดสุดท้ายของสคริปต์






หากต้องการดูผลลัพธ์บนเทอร์มินัล ให้ใช้ปุ่ม 'เรียกใช้ไฟล์' บนเครื่องมือ 'Spyder' หรือกดปุ่ม 'Shift+Enter' ผลลัพธ์ที่แสดงบนเทอร์มินัลแสดง DataFrame ที่มีสามคอลัมน์ที่สร้างสำเร็จแล้ว


ตอนนี้ DataFrame ของเราถูกสร้างขึ้นแล้ว เราต้องใช้เทคนิคที่จำเป็นกับมัน เมธอด “DataFrame.replace()” ของแพนด้าจะถูกใช้เพื่อแปลงค่าหมวดหมู่ของคอลัมน์ที่ระบุเป็นค่าจำนวนเต็มเพื่อให้เครื่องสามารถอ่านได้



เราได้ระบุชื่อของ DataFrame ด้วยชื่อคอลัมน์เฉพาะซึ่งมีค่าที่เราต้องเปลี่ยน ซึ่งก็คือ “staff['degree']” เราต้องการให้ค่าของคอลัมน์ 'ดีกรี' ซึ่งมีค่าตามหมวดหมู่ ถูกแทนที่ด้วยค่าจำนวนเต็ม จากนั้นจะเรียกใช้เมธอด “.replace()” เราได้ผ่านมันไปเป็นสองชุด; ค่าแรกมีค่าหมวดหมู่สองค่า '['BS', 'MS']' ซึ่งเราดึงมาจากคอลัมน์ 'Degree' อย่างที่คุณเห็น คอลัมน์ 'ดีกรี' ใช้สองค่านี้ซ้ำๆ ถ้าเรามีค่าที่สามเราต้องพูดถึงสิ่งนั้นด้วย ชุดที่สองมีค่า int สองค่า “[0, 1]” ซึ่งจะแทนที่ค่าชุดแรกตามลำดับ พารามิเตอร์อื่น 'inplace' ถูกตั้งค่าเป็น 'True' ทำให้สามารถแทนที่ค่าได้ หากตั้งค่าเป็น 'เท็จ' ระบบจะปิดการแทนที่ สุดท้าย เราได้ใช้วิธี “print()” เพื่อแสดง DataFrame “staff” ที่อัปเดตแล้ว


DataFrame ที่เป็นผลลัพธ์มีค่าจำนวนเต็มในคอลัมน์ 'ดีกรี' ค่า 'BS' จะถูกแทนที่ด้วย '0s' และ 'MS' จะถูกแทนที่ด้วย '1s'


คุณยังสามารถตรวจสอบประเภทข้อมูลสำหรับแต่ละคอลัมน์ได้โดยใช้คุณสมบัติ “dataframe.dtype” สิ่งนี้จะทำให้เราได้รับประเภทข้อมูลของคอลัมน์ทั้งหมดใน DataFrame ที่ระบุ


ที่นี่เราได้รับประเภทข้อมูลของ DataFrame เราจะเห็นประเภทข้อมูลของคอลัมน์ 'ดีกรี' เปลี่ยนเป็น 'int64'

ตัวอย่าง # 2: การใช้ Pandas apply() method

แพนด้าเมธอดอื่นๆ ที่เรามีให้คือฟังก์ชัน “DataFrame.apply()” สำหรับการแปลงค่าหมวดหมู่เป็นจำนวนเต็ม ในตัวอย่างที่แล้ว เราได้เรียนรู้การแปลงคอลัมน์ที่เป็นหมวดหมู่หนึ่งคอลัมน์ให้เป็นจำนวนเต็ม ตอนนี้เราจะดูวิธีการแปลงคอลัมน์หมวดหมู่ทั้งหมดใน DataFrame เป็น int

เริ่มต้นด้วยการใช้งานจริง เราต้องนำเข้าไลบรารีที่จำเป็นสำหรับวิธีนี้ ซึ่งก็คือแพนด้า เราใช้สคริปต์ 'นำเข้าแพนด้าเป็น pd' เพื่อนำเข้าแพนด้าไปยังไฟล์ Python ของเราในเครื่องมือ 'Spyder' ซึ่งจะทำให้เราเข้าถึงโมดูลแพนด้าโดยใช้ 'pd' เราใช้ฟังก์ชัน “pd.DataFrame()” เพื่อสร้าง DataFrame

DataFrame นี้มีสี่คอลัมน์ 'กลุ่ม', 'ตำแหน่ง', 'คะแนน' และ 'ช่วยเหลือ' แต่ละคอลัมน์เก็บค่าได้ 9 ค่า ค่าคอลัมน์ 'กลุ่ม' คือ 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' และ 'Y' คอลัมน์ 'ตำแหน่ง' มี 9 ค่า ได้แก่ 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' และ 'B' คอลัมน์ 'คะแนน' มีค่าจำนวนเต็มเป็น '4', '8', '7', '10', '9', '5', '7', '3' และ '23' คอลัมน์สุดท้าย 'ช่วยเหลือ' มีค่า '10', '2', '3', '9', '3', '7', '4', '2' และ '9'

เราได้สร้างอ็อบเจ็กต์ DataFrame “prog” และกำหนดผลลัพธ์ของการเรียกใช้เมธอด “pd.DataFrame()” ดังนั้น เฟรม DataFrame ผลลัพธ์ที่สร้างจาก “pd.DataFrame()” จะถูกเก็บไว้ใน “prog” ตอนนี้ เราสามารถเข้าถึง DataFrame โดยใช้วัตถุนี้ ในการดู DataFrame นี้ เราได้ใช้เมธอด “print()” กับอ็อบเจ็กต์ DataFrame “prog” เป็นพารามิเตอร์


เมื่อโปรแกรม Python ก่อนหน้าทำงาน DataFrame ที่มีสี่คอลัมน์จะแสดงบนเทอร์มินัล


ในการแปลงคอลัมน์ที่เป็นหมวดหมู่หลายคอลัมน์ให้เป็นจำนวนเต็ม เราได้ทำตามเทคนิคนี้ ก่อนอื่นเราต้องเลือกคอลัมน์ทั้งหมดที่มีประเภทข้อมูลวัตถุโดยใช้เมธอด “DataFrame.select_dtypes().columns” ของแพนด้า เมื่อเราใช้มันในสคริปต์ของเราตามที่ต้องการ มันจะเป็น “prog.select_dtypes([‘object’]).columns” มันจะเลือกคอลัมน์ทั้งหมดที่มีประเภทข้อมูล 'วัตถุ' ใน DataFrame 'prog' เราได้สร้างตัวแปร 'concate_col' เพื่อเก็บผลลัพธ์ของวิธีนี้ ตอนนี้เราสามารถเข้าถึงคอลัมน์ประเภทข้อมูล 'วัตถุ' ได้ง่ายๆ โดยใช้ตัวแปร 'concat_col'

ในการแปลงคอลัมน์เหล่านี้เป็นจำนวนเต็ม เราได้ใช้แพนด้า “DataFrame.apply()” กับเมธอด “pd.factorize()” เราใช้ตัวแปร 'concat_col' กับชื่อ DataFrame จากนั้นเมธอด '.apply()' จะถูกเรียกใช้ ระหว่างวงเล็บของเมธอด '.apply' เราได้เรียกเมธอด 'pd.factorize()' โดยที่ 'x' สามารถเป็นค่าใดก็ได้จาก 'prog' DataFrame ที่มีประเภทข้อมูล 'object' ดังนั้น โค้ดทั้งบรรทัดนี้จึงเขียนเป็น “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])” วิธีการแยกตัวประกอบจะรับค่าด้วย ประเภทข้อมูล 'วัตถุ' และแปลงเป็น 'int' ผลลัพธ์สุดท้ายสามารถแสดงได้โดยการเรียกใช้ฟังก์ชัน “print()” โดยส่งตัวแปร “prog” เป็นพารามิเตอร์


ใน DataFrame ที่อัปเดต เราสามารถสังเกตค่าของคอลัมน์ 'กลุ่ม' และ 'ตำแหน่ง' ที่มีการจัดหมวดหมู่ในขั้นต้น นั่นคือ วัตถุ ยังอยู่ใน DataFrame เอาต์พุตที่อัปเดต ทั้งสองคอลัมน์มีค่าจำนวนเต็ม ในคอลัมน์ 'กลุ่ม' 'X' จะถูกแทนที่ด้วย '0' และ 'Y' ด้วย '1' ในขณะที่คอลัมน์ 'ตำแหน่ง' 'A' ถูกแทนที่ด้วย '0', 'C' ด้วย '1', 'D' ด้วย '2' และ 'B' ด้วย '3'


ตอนนี้ มาตรวจสอบประเภทข้อมูลที่อัปเดตกัน


คอลัมน์ต่อไปนี้ทั้งหมดมีประเภทข้อมูล 'int64'

บทสรุป

คำแนะนำของเราเกี่ยวกับการแปลงค่าหมวดหมู่เป็นค่าตัวเลขเพื่อให้เครื่องสามารถเข้าใจได้เนื่องจากประเภทข้อมูลวัตถุไม่สามารถประมวลผลได้ เราได้แนะนำให้คุณรู้จักกับสองแนวทางที่นำเสนอโดยไลบรารี 'pandas' เพื่อรับประเภทข้อมูลที่จำเป็น นอกจากนี้ ด้วยการใช้งานโค้ดตัวอย่างที่ใช้งานได้จริงบนเครื่องมือ 'Spyder' เราได้แชร์ผลลัพธ์ของแต่ละตัวอย่าง สุดท้าย เราได้อธิบายอย่างละเอียดในทุกขั้นตอนเพื่อให้ได้ผลลัพธ์ที่ต้องการ