สามารถคำณวนเกรดโดยใช้ Library Pandas ซึ่งเป็นเครื่องมือที่ใช้จัดการข้อมูลเข้ามาช่วยได้ดังนี้
เปิดไฟล์ csv ที่เก็บเกรดไว้ด้วย Pandas โดยตัว Pandas จะโหลดข้อมูลมาเก็บไว้เป็นตารางโดยเมื่อนำ self.score_data มาใส่ฟังก์ชั่น print() จะได้ตารางดังนี้
เห็นได้ว่าตารางที่แสดงจะมี keys เป็นตัวเลขที่เริ่มจาก 0 และนับเพิ่มขึ้นเรื่อยๆ
เลือก column ที่จะมาแสดงให้มีแค่ semester และ credit แล้ว sum กันโดยมอง column semester เป็นหลัก โดยผลการ sum จะเป็นจำนวณ credit ทั้งหมดในแต่ละเทอมซึ่งมีหน้าตาดังนี้
จากตารางที่ print() จะเห็นได้ว่า keys จากตัวเลขจะกลายเป็น semester แล้ว และพบว่ามีการรวม credit ในแต่ละ semester ได้ถูกต้อง
จากนั้นเก็บเทอมต่างๆ จาก column semester แต่จะเจอปัญหาคือ เกิดการ sort ที่ไม่ถูกต้องตามลำดับเทอม
การกำหนด key ในการ sort มีการใช้ lambda ซึ่งเป็นฟังก์ชั่นที่ไม่แสดงตัวและจะรีเทิร์นค่า x ออกมาซึ่งในฟังก์ชั่นนี้ได้มีการนำ string ที่เป็น เทอมมาแบ่งโดยตัว '_' เช่น เทอม '1_58' จะได้เป็น List
['1', '58'] และกำหนดให้ sort จากเลขปี เป็นหลัก
เมื่อ sort โดยกำหนด key ในการ sort เองจะเห็นได้ว่า เทอมแต่ละเทอมเรียงกันได้อย่างถูกต้องแล้ว
จากนั้นจึงคำนวณ GPAX หรือ เกรดเฉลี่ยต่อเทอมโดยการนำ list ที่เก็บเทอมที่ sort ไว้แล้วมาไล่แสดงผล โดยจะมีการกรอง record ให้เหลือแค่เทอม เทอมเดียมโดยใช้
data_field[data_field['semester'] == semester]
จากนั้นเก็บผลที่ได้ไว้ใน df_temp แล้วจึงนำ column credit และ grade_number มาคูณกันแล้ว sum จากกันหารด้วย ผล sum ของ credit จะได้เกรดเฉลี่ยในเทอมนั้นออกมาตามสูตร
GPAX = Σ (grade x credit) / Σ (credit)
จากนั้นจึงนำมาแสดงผล โดยเกรดที่ได้จะเป็นทศนิยม 2 ตำแหน่งแบบปัดเลขทิ้ง
และใช้วิธีแบบเดียวกันในการคิด GPA หรือเกรดเฉลี่ยรวมทั้งหมด แต่จะไม่มีการกรองด้วยเทอมซึ่งสามารถทำได้ดังนี้
จะได้หน้าตา report ทั้งหมดดังนี้
link ที่เกี่ยวข้อง
- ไฟล์ CSV
- Pandas
- code
ปัญหาที่พบ
- Pandas ไม่มีคำสั่ง weighted sum แก้โดยนำ column credit และ grade ของแต่ละวิชามาคูณกัน จากนั้นนำผลคูณทั้งหมดมาบวกกัน แล้วหารด้วย ผล sum credit ทั้งหมด
- มีการ sort semester มาให้แต่ผิดลำดับเวลา แก้ไขโดย การ sort แบบกำหนด keys ให้
- หลังจาก sum ข้อมูลโดย group by semester แล้ว ไม่สามารถเพิ่มแถว GPAX ได้โดยตรรง แก้ไขโดยการนำค่าในตารางมาคำณวน GPAX แยกตาหาก
สิ่งที่ได้เรียนรู้
วิธีการใช้ pandas เบื้องต้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น