
ว21172 เทคโนโลยี (วิทยาการคำนวณ)2
Benjamarachutit
Computing science2
สร้างสรรค์ผลงานด้วยภาษาไพทอน
© การประมวลผลสารสนเทศ
© การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้
04
สร้างสรรค์ผลงานด้วยภาษาไพทอน

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

4.1 การประมวลผลสารสนเทศ
ไพทอนมีโมดูลจํานวนมากเพื่อใช้จัดการข้อมูล ในบทเรียนนี้ขอแนะนําโมดูล Pandas ที่ช่วยทํางานด้าน การประมวลผลข้อมูล โดยผู้ใช้ต้องติดตั้งโมดูล Pandas และ Numpy
4.1.1 การติดตั้งโมดูล Pandas ในโปรแกรม PyCharm EDU

4.1.2 โครงสร้างข้อมูลของ Pandas
ข้อมูลที่เก็บใน Pandas จะอยู่ในรูปแบบของชุดข้อมูลที่เป็น Series หรือ DataFrame
1) ข้อมูลที่เก็บเป็น Series
ข้อมูลที่เก็บเป็น Series จะมีลักษณะคล้ายลิสต์ของข้อมูลหนึ่งมิติ โดยหากผู้ใช้ไม่กําหนดดัชนี Pandas จะกําหนดดัชนีเริ่มต้นตั้งแต่ 0 ถึง (จํานวนข้อมูลใน Series - 1)
ตัวอย่างที่ 4.1 การใช้ Series ในการเก็บคะแนนสอบวิชาวิทยาการคํานวณของนักเรียนชั้น ม.3/1 จํานวน 20 คน มีรูปแบบดังนี้


ตัวอย่างที่ 4.1 อธิบายได้ดังนี้
1. บรรทัดที่ 1 นําโมดูล pandas เข้ามาในโปรแกรม แล้วจะอ้างถึงโมดูลนี้ด้วยชื่อ pd
2. บรรทัดที่ 3 กําหนดให้ตัวแปร s เป็นชุดข้อมูล Series ที่ระบุภายในฟังก์ชัน Series ()
3. บรรทัดที่ 4 พิมพ์ชุดข้อมูล s
2) ข้อมูลที่เก็บเป็น DataFrame
ข้อมูลที่เก็บเป็น DataFrame จะมีลักษณะคล้ายตาราง (สองมิติขึ้นไป) โดยหากผู้ใช้ไม่กําหนดดัชนี Pandas จะกําหนดดัชนีเริ่มต้นให้แต่ละมิติตั้งแต่ 0 ถึง (จํานวนข้อมูลในแต่ละมิติ - 1)
ตัวอย่างที่ 4.2 การใช้งาน DataFrame

ตัวอย่างที่ 4.2 อธิบายได้ดังนี้
1. บรรทัดที่ 1 เป็นการกําหนดให้ตัวแปร df เป็นชุดข้อมูล DataFrame ที่ระบุภายในฟังก์ชัน DataFrame ()
2. บรรทัดที่ 2 พิมพ์ชุดข้อมูล df
4.1.3 ไฟล์ข้อมูลในรูปแบบซีเอสวี
ไฟล์รูปแบบซีเอสวี หรือ CSV (Comma separated values: CSV) คือ ไฟล์ข้อมูลที่แต่ละตัว ในแถวเดียวกัน ถูกคั่นด้วยเครื่องหมายจุลภาค (,) โดยอาจมีแถวแรกสุดเป็นชื่อของแต่ละคอลัมน์ หรือหัวตาราง ตัวอย่างเช่น ข้อมูลของนักเรียนชั้น ม.3/1 จํานวน 20 คน ประกอบด้วย เลขประจําตัว นักเรียน เพศ (1 แทนเพศชาย และ 2 แทนเพศหญิง) คะแนนสอบวิชาวิทยาการคํานวณ และส่วนสูง ในรูปแบบไฟล์ ดังต่อไปนี้


กรณีที่ไฟล์ CSV ไม่มีแถวที่เป็นชื่อคอลัมน์หรือหัวตาราง ผู้ใช้สามารถระบุหัวตารางในการแสดงผลได้ เช่น ถ้าไฟล์ข้อมูลมีลักษณะดังนี้
5884,2,18,158
5885,2,20,164
5887,1,15,150
5889,1,6,168
5890,2,9,153

ชวนคิด

ข้อมูลใน DataFrame ที่รับมาจากไฟล์ CSV นั้น สามารถนําไปประมวลผลตามความต้องการได้ ตัวอย่างที่ 2.3 แสดงการรวมข้อมูล (data aggregation) แบบต่าง ๆ เพื่อให้ได้ค่าผลลัพธ์ทางสถิติที่เป็นประโยชน์ เช่น ค่าเฉลี่ย ค่าสูงสุด ค่าต่ําสุด
ตัวอย่างที่ 4.3 การนับจํานวนข้อมูล
การนับจํานวนข้อมูลใน DataFrame ทําได้โดยใช้ฟังก์ชัน count() เช่น

ชวนคิด
1. คําสั่งต่อไปนี้ มีการทํางานและผลลัพธ์เหมือนหรือแตกต่างกันอย่างไร
print (stdData[['ID']].count() #1
print (stdData. ID.count()) #2
2. ทดลองใช้ฟังก์ชัน type () เพื่อตรวจสอบชนิดข้อมูล
ตัวอย่างที่ 4.4 การหาเฉลี่ย
หากครูต้องการหาค่าเฉลี่ยของคะแนนสอบวิชาวิทยาการคำนวณของนักเรียนทั้งชั้น สามารถทำได้โดยใช้ฟังก์ชัน men () ดังนี้

ชวนคิด
ฟังก์ชันที่ใช้ในการหาค่าผลรวม ค่ามัธยฐาน ค่ามากที่สุด และค่าน้อยที่สุด คือ sum () median () max () และ min () ตามลําดับ ให้นักเรียนทดลองใช้ฟังก์ชันดังกล่าวกับ DataFrame stdData
ตัวอย่างที่ 4.5 การหาค่าเฉลี่ยแยกตามกลุ่ม
หากครูต้องการหาค่าเฉลี่ยของคะแนนสอบวิชาวิทยาการคํานวณแยกตามเพศของนักเรียน ทําได้โดยใช้ ฟังก์ชัน groupby () ของ Pandas เพื่อจัดกลุ่มข้อมูลแต่ละชุดที่เป็นข้อมูลชนิดเดียวกัน ก่อนที่จะเรียกฟังก์ชัน หาค่าเฉลี่ย ดังนี้

จะเห็นว่าผลลัพธ์แสดงค่าเฉลี่ยของข้อมูลในทุกคอลัมน์แยกตามข้อมูล Gender รวมทั้งคอลัมน์ ID และ Height ซึ่งในที่นี้ไม่ต้องการหาค่าเฉลี่ย สําหรับคอลัมน์ ID ซึ่งเป็นเลขประจําตัวของนักเรียนแต่ละคน ไม่ควรนํามาหาค่าเฉลี่ย เพราะไม่ได้สื่อความหมายใด
หากต้องการให้แสดงค่าเฉลี่ยเฉพาะคอลัมน์ csScore ทําได้ดังนี้

ชวนคิด
1. ถ้าต้องการแสดงจํานวนนักเรียนชายและจํานวนนักเรียนหญิงต้องใช้คําสั่งใด
2. ถ้าต้องการให้แสดงเฉพาะค่าเฉลี่ยส่วนสูงของนักเรียนหญิงต้องใช้คําสั่งใด

การจัดเรียงข้อมูลที่เป็นการประมวลผลข้อมูลอย่างหนึ่ง ซึ่งสามารถนําผลการจัดเรียงไปใช้ประโยชน์ได้ ดังตัวอย่างที่ 2.6
ตัวอย่างที่ 4.6 การจัดเรียงข้อมูล
หากครูต้องการเรียงลําดับความสูงของนักเรียนจากน้อยไปมาก เพื่อใช้ในการจัดลําดับการเข้าแถวหน้าชั้นเรียน สามารถเรียงลําดับได้โดยใช้ฟังก์ชัน sort values () โดยระบุชื่อคอลัมน์ที่ต้องการจัดเรียงเป็นอาร์กิวเมนต์ ของฟังก์ชัน ดังนี้


ชวนคิด
ถ้าต้องการให้แสดงเฉพาะเลขประจําตัวของนักเรียน ที่เรียงตามลําดับ ความสูงของนักเรียนจากมากไปน้อย ต้องใช้คําสั่งใด
4.1.4 การเชื่อมโยงข้อมูล
ในบางสถานการณ์ ข้อมูลที่เกี่ยวข้องกันอาจถูกเก็บแยกกันในหลายตารางหรือหลายไฟล์ได้ เช่น หากครูมีคะแนนวิทยาศาสตร์ของนักเรียนห้อง ม.3/1 แยกเก็บอยู่อีกไฟล์หนึ่ง Pandas สามารถ ทําการเชื่อมโยงไฟล์ข้อมูลคะแนนวิทยาการคํานวณและวิทยาศาสตร์เข้าด้วยกัน เพื่อทําให้การ ประมวลผลข้อมูลมีความสะดวกมากขึ้น
ตัวอย่างที่ 4.7 การเชื่อมโยงข้อมูลจากไฟล์ 2 ไฟล์
หากมีคะแนนวิชาวิทยาศาสตร์แยกเก็บอยู่ในไฟล์ CSV ชื่อ sciscore.csv โดยมีข้อมูลดังนี้

การสร้างข้อมูลใหม่ที่เกิดจากการรวมข้อมูลจากทั้งสองไฟล์เข้าด้วยกัน ทําได้โดยให้Pandas สร้างข้อมูล DataFrame จากข้อมูลไฟล์ CSV ของแต่ละไฟล์ แล้วเชื่อมโยง DataFrame ของข้อมูลทั้งสองโดยใช้ฟังก์ชัน merge () ดังนี้

ข้อมูลคะแนนสอบวิทยาการคํานวณถูกอ่านเข้ามาจากไฟล์ studentData.csv และอ้างถึงได้จาก DataFrame ชื่อ stdData เช่นเดียวกันกับข้อมูลคะแนนสอบวิทยาศาสตร์ที่ถูกอ่านเข้ามาจากไฟล์ sciScore.csv และอ้างถึง ได้จาก DataFrame ชื่อ sciData จากนั้นเรียกใช้ฟังก์ชัน merge () ผ่าน stdData เพื่อเชื่อมโยงข้อมูลเข้ากับ sciData ซึ่งจะได้ผลลัพธ์ ดังนี้


ผลจากการเชื่อมโยงข้อมูลด้วยฟังก์ชัน merge () จะได้ DataFrame ใหม่ ซึ่งในโปรแกรมกําหนดให้อ้างอิง ด้วยชื่อ newData มีคอลัมน์ science1 จากข้อมูลในไฟล์ sciscore.csv เพิ่มเป็นคอลัมน์สุดท้ายต่อจาก ข้อมูลเดิมทั้ง 4 คอลัมน์จากไฟล์ studentData.csv ให้สังเกตว่า Pandas เลือกเพิ่มข้อมูลได้ถูกต้องตรงกัน ตามคอลัมน์เลขประจําตัวของนักเรียน
การเชื่อมโยงข้อมูลแบบพื้นฐานตามตัวอย่างที่ 2.7 นั้น Pandas สามารถทําได้โดยอัตโนมัติ หากว่าไฟล์ ข้อมูลทั้งสองที่นํามาเชื่อมโยงกันด้วยฟังก์ชัน merge () มีชื่อคอลัมน์ที่ตรงกันจํานวน 1 คอลัมน์ โดยบรรทัด ที่มีข้อมูลเลขประจําตัวตรงกันในทั้งสองไฟล์ จะถูกนํามาเชื่อมโยงกัน
แต่ถ้าหากว่าไฟล์ทั้งสองที่ต้องการเชื่อมโยง มีชื่อคอลัมน์ที่จะใช้เป็นหลักไม่ตรงกันแล้ว เราต้องระบุชื่อ คอลัมน์ของทั้งสองไฟล์ด้วย
ตัวอย่างที่ 4.8 การเชื่อมโยงข้อมูลกรณีที่ชื่อคอลัมน์หลักไม่ตรงกัน
การเชื่อมโยงข้อมูลจาก 2 ไฟล์ที่มีชื่อคอลัมน์ใน DataFrame ไม่ตรงกัน ด้วยฟังก์ชัน merge () สามารถ ระบุอาร์กิวเมนต์ left_on และ right_on เพื่อระบุถึงชื่อคอลัมน์จาก DataFrame หลัก และ DataFrame ที่นํามาเชื่อมโยงได้ดังนี้



การอ่านไฟล์จากโปรแกรม Excel
หากไฟล์ studentData เป็นไฟล์โปรแกรม Excel ที่มีนามสกุล .xlsx และข้อมูลอยู่ในแผ่นงานที่ชื่อ 'Student Data' นักเรียนสามารถใช้คําสั่งในการอ่านไฟล์ได้ดังนี้
df = pd. read_excel ('studentData. xlsx', sheet_name='StudentData') Inešos เพิ่มโมดูลxlrdใน PyCharm EDU แล้วรันคําสั่ง import xlrd ก่อนด้วย
เกร็ดความรู้
4.1.5 การทำข้อมูลให้เป็นภาพ


ตัวอย่างที่ 4.9

ตัวอย่างที่ 4.9


ตัวอย่างที่ 4.10