สำหรับบทความนี้คาดว่าหลายๆคนน่าจะได้เรียนรู้และทำความเข้าใจเกี่ยวกับเรื่องการใช้ภาษา Python ในการจัดการข้อมูลในหลายๆรูปแบบ เช่น ข้อมูลที่มีรูปแบบเป็น Excel, ข้อมูลที่มีรูปแบบเป็น csv เป็นต้น จากบทความของทางเราทั้งบทความ “ใช้งานPython OpenPyXL to read/write Excel” และ “Python Pandasช่วยงานofficeอัตโนมัติcsv, excelผ่านJupyter Notebooks” ซึ่งบทความเหล่านี้ได้อธิบายเกี่ยวกับการใช้งานภาษา Python ในการจัดการข้อมูลให้อยู่ในรูปแบบของ Excel และหลายคนอาจมีคำถามว่าทำไมเราต้องใช้ภาษา Python ในการจัดการข้อมูลแทนที่จะใช้ โปรแกรม Microsoft Excel ในการจัดการข้อมูล เราจึงสร้างบทความนี้เพื่อยกตัวอย่างการใช้งานที่ Microsoft Excel ไม่สามารถทำได้หรือทำได้ยากในขณะที่ภาษา Python นั้นสามารถจัดการได้ง่ายกว่า
จุดประสงค์
- สามารถใช้ภาษา Python ในการจัดการข้อมูลต่างๆได้
- เข้าใจพื้นฐานและสามารถประยุกต์ใช้งานภาษา Python ในการจัดาการข้อมูลได้
- รู้จักเครื่องมือที่ใช้ในการจัดการข้อมูล
- สามารถแก้ไขปัญหาต่างๆที่พบเกี่ยวกับในหัวข้อนี้และสามารถนำไปใช้ได้จริง
Software & Tools
- Python (Version 3+)
- JupyterNotebooks(Code Editor)
- pandas(Library)
- OpenPyXL(Library)
- Microsoft Excel(Program)
บทความ แนะนำ
- Python Pandasช่วยงานofficeอัตโนมัติcsv, excelผ่านJupyter Notebooks
ทำความรู้จักกับการใช้ภาษา Python จัดการข้อมูล

ภาษา Python เป็นภาษาที่ได้รับความนิยมมาก ดังนั้นจึงมี Library ที่ถูกพัฒนาขึ้นมาเพื่อเพิ่มความสะดวกสบายให้กับผู้ใช้งาน ซึ่งถ้าพูดถึงด้านการจัดการข้อมูลในภาษา Python นั้นก็ได้มี Library ที่รองรับมากมาย เช่น OpenPyXL ใช้สำหรับการจัดการข้อมูลและสรุปผลออกมาให้อยู่ในไฟล์ .xlsx และ Library อีกตัวก็คือ pandas จะใช้สำหรับการจัดการข้อมูลต่างๆให้อยู่ในรูปของ DataFrame ที่เราจะคุ้นกันในรูปแบบของตาราง ซึ่ง Library ตัวนี้สามารถเข้าถึงไฟล์ได้ค่อนข้างหลากหลายทั้งแบบที่เป็นไฟล์ต่างๆที่เราได้รับหรือสร้างขึ้นหรือจะเป็นข้อมูลต่างๆที่ดึงออกมาจาก Internet ทั้งนี้ยังมี Library อีกหลายตัวที่สามารถใช้เพื่ออำนวยความสะดวกในด้านการจัดการข้อมูลได้ ซึ่งตรงนี่เองสามารถสรุปได้ว่าการใช้ภาษา Python ในการจัดการข้อมูลนั้นมีข้อดีกว่าตรงที่สามารถเข้าถึงข้อมูลได้เยอะกว่า เเตกต่างจาก Microsoft Excel ที่ถ้าต้องการจะดึงข้อมูลออกมาจาก Internet จะต้องคัดลอกลงมา
ตัวอย่างเปรียบเทียบการใช้งาน
ตัวอย่างที่ 1 การสร้างข้อมูลตัวเลข 1-10,000 ตามลำดับลงในช่อง C
การทำงานใน Microsoft Excel

ให้ใส่เลขตัวอย่าง เช่น 1,2,3 ลงในช่อง C
ลากจุดด้านล่างขวาของข้อมูลลงมาจนถึง 10,000 (ใช้เวลาค่อนข้างนาน)

ลากกันไปยาวๆเลยครับ
การทำงานในภาษา Python

😳 ครบจบใน 6 บรรทัด 😳
อธิบาย Code :
import openpyxl as xl # import library
file = xl.Workbook() # สร้าง Workbook
sheet = file.worksheets[0] # กำหนด worksheets
for i in range(10000): # loop for 0-9999
sheet.cell(i+1,3).value = i+1 # ใส่ลงช่องที่กำหนด
file.save('file.xlsx') # บันทึกไฟล์

ผลลัพธ์เท่ากันเลยจ้า
สำหรับตัวอย่างนี้จะเห็นได้ว่าทั้งการทำงานใน Microsoft Excel เเละในภาษา Python นั้นสามารถที่จะเเก้ไข้ปัญหาเเละเเสดงผลลัพธ์ได้เหมือนเเต่สิ่งที่มีความเเตกต่างกันนั้นอาจจะเป็นเรื่องของเวลาซึ่งในภาษา Python นั้นใช้เวลาน้อยกว่า Microsoft Excel
ตัวอย่างที่ 2 การสุ่มช่องข้อมูล 1-10 ที่จะใส่ตัวเลขเเบบสุ่ม 1-9
การทำงานใน Microsoft Excel
‼️ Microsoft Excel ไม่สามารถสุ่มช่องข้อมูลที่จะกรอกข้อมูลได้
แต่ก็สามารถสุ่มตัวเลขในช่องได้โดยใช้ฟังก์ชัน “RANDBETWEEN”

ลองทำการสุ่มเลข 1-9 จำนวน 8 ครั้ง
การทำงานในภาษา Python

อธิบาย Code :
import openpyxl as xl # import library
import numpy as np
file = xl.Workbook() # สร้าง Workbook
sheet = file.worksheets[0] # กำหนด worksheets
for i in range(5): # สั่งทำงาน 5 รอบ
sheet.cell(np.random.randint(1,11),3).value = np.random.randint(1,10) # สุ่มเลข 1-9 ลงในช่อง 1-10
file.save('file.xlsx') # บันทึกไฟล์

ผลลัพธ์ที่ได้ตามหัวข้อ
จากตัวอย่างนี้จะได้ว่าความสามารถบางอยากในตัวของ Microsoft Excel เองก็ไม่สามารถทำได้เเต่ในภาษา Python สามารถทำได้ ซึ่งในตัวอย่างนี้ยังเเสดงให้เห็นอีกว่าเราสามารถที่จะ import Library ตัวอื่นๆเข้ามาร่วมใช้งานด้วยได้เเละในตัวอย่างนี้ก็ได้ทำการ import NumPy เข้ามาเพื่อใช้ฟังก์ชันในการสุ่มตัวเลขมาช่วยในการเเก้ปัญหาข้อตัวอย่างนี้
ตัวอย่างที่ 3 กรอกค่า * ในเเถวที่ 1-9 ช่อง A โดยที่จำนวนของ * จะเท่ากับจำนวนเเถว
การทำงานใน Microsoft Excel
ใน Microsoft Excel นั้นเราต้องมานั่งพิมพ์เองทุกช่องเนื่องจาก * ไม่ใช่ตัวเลข Microsoft Excel จึงมาสามารถคำนวณหรือคาดเดาได้ว่าเราต้องการที่จะทำให้ออกมาอยู่ในรูปเเบบไหน หรือถ้าหากเราจะลองพิมพ์บางตัวเเล้วทำการลากลง ผลลัพธ์ของมันคือคัดลอกเเบบด้านบนลงมา เช่น เราพิมพ์ตัวอย่างให้เป็น *, **, *** เเล้วจากนั้นลากลงมาสิ่งที่ได้ก็จะเป็น *, **, ***, *, **, *** แบบนี้ไปเรื่อยๆ ซึ่งทางที่ง่ายที่สุดของ Microsoft Excel ก็คือการนั่งพิมพ์เเละถ้าหากว่ามีจำนวนช่องที่ต้องกรอกข้อมูลจำนวนมากๆการทำงานใน Microsoft Excel ถือว่าไม่ตอบโจทย์เลยครับ
การทำงานในPython

อธิบาย Code :
import openpyxl as xl
file = xl.Workbook()
sheet = file.worksheets[0] # กำหนด worksheets
for i in range(1,10): # ทำงาน 9 รอบโดย i มีค่าตั้งเเต่ 1-9
sheet.cell(i,1).value = '*'*i
file.save('file.xlsx') # บันทึกไฟล์

ผลลัพธ์ที่ได้
ในตัวอย่างนี้ก็จะเห็นได้ว่าภาษา Python สามารถทำได้ง่ายกว่าชึ่งกำลังจะทำให้บอกได้ว่าการเรียงตัวอักษรใน แผ่นงาน นั้นตัวโปรเเกรม Microsoft Excel ก็ไม่ได้มีประสิทธิภาพเท่ากับภาษา Python เเละตัวอักษรนั้นไม่ใช่เฉพาะ * เเต่เป็นตัวอักษรทุกตัว เช่นการกรอกอักษรภาษาอังกฤษ 26 ตัว ลงในช่อง A ซึ่งในการทำงานของ 2 อันนี้ก็เหมือนเดินในส่วนของ Microsoft Excel ก็ต้องพิมพ์เองเเต่ในส่วนภาษา Python การสามารถใช้ loop เข้ามาช่วยในการกรอกได้
ตัวอย่างที่ 4 การตัดเกรดคะเเนนนักเรียน
การทำงานใน****Microsoft Excel
ในการใช้โปรเเกรม Microsoft Excel ตัดเกรดนั้นสามารถทำได้ซึ่งผมคิดว่าคุณครูหลายท่านก็ต้องเคยผ่านมันมาบ้างสำหรับขั้นตอนวิธีการทำนั้นจะเป็นยังไงไปดูกันเลย
1.เราต้องมีคะเเนนรวมทั้งหมดก่อน ในตัวอย่างนี้ผมก็จะขอทำการสุ่มคะเเนนตั้งเเต่ 35-90 ลงในช่อง A
- จากนั้นในช่องมีเราจะมาทำการใส่สูตรคำนวณเกรดกันซึ่งหลายๆคนก็ทราบกันดีอยู่เเล้วว่าในการใส่สูตรลงใน Microsoft Excel นั้นจะต้องเริ่มจะเครื่องหมายยกตัวอย่างเช่น “=” เพราะในตัวอย่านี้เราก็จะมาใช้ “=” ในการใช้สูตรกัน สูตรที่จะใช่สามารถดูได้ด้านล่างนี้เลยครับ
=IF(A1<50,0,IF(A1<55,1,IF(A1<60,1.5,IF(A1<65,2,IF(A1<70,2.5,IF(A1<75,3,IF(A1<80,3.5,4)))))))

คำนวณเกรดจากสูตร
การทำงานในภาษา Python
วิธีการจะคล้ายกับของการทำงานใน Microsoft Excel
อธิบาย Code :
import openpyxl as xl
file = xl.Workbook()
sheet = file.worksheets[0]
num = np.random.randint(35,90,10) # สุ่มเลข 10 ตัว (35-90)
c = 1 # กำหนดค่า c
for i in num :
sheet.cell(c,1).value = i # กรอกข้อมูลช่อง A จากนี้เป็นการตัดเกรด
if i>79:
sheet.cell(c,2).value = 4
elif i>75:
sheet.cell(c,2).value = 3.5
elif i>69:
sheet.cell(c,2).value = 3
elif i>64:
sheet.cell(c,2).value = 2.5
elif i>59:
sheet.cell(c,2).value = 2
elif i>54:
sheet.cell(c,2).value = 1.5
elif i>49:
sheet.cell(c,2).value = 1
else:
sheet.cell(c,2).value = 0
c=c+1 # เพิ่มค่า
file.save('file.xlsx') # บันทึกไฟล์

ผลลัพธ์การคำนวณเกรดด้วย Python
จากตัวอย่างที่ 4 นี้ทำให้เห็นได้ว่าส่วนตัวของ Microsoft Excel นั้นก็สามารถที่จะคำนวณเกณฑ์หรือตัดเกรดได้ ซึ่งในภาษา Python นั้นก็สามารถที่จะทำได้ เเละคำตอบหรือผลลัพธ์ที่ออกมานั้นตรงเหมือนกันทำให้บอกได้ว่าทั้ 2 ตัวสามารถทำได้เหมือนๆกัน เเต่ข้อเเตกต่างนั้นก็มีให้เห็นอยู่ซึ่งอาจจะไม่ถือว่าเป็นจุดที่ใหญ่มากเเต่ก็อาจทำให้คิดได้ยากหรืออาจทำให้สับสนได้ ในคือการใส่สูตรเพื่อตัดเกรดของเเต่ล่ะอันในของ Microsoft Excel มีเเถวเดียวยาวๆซึ่งเหลือคนอาจจะไม่ชินหรือสับสนกันตรงนี้ได้ถ้าหากว่าเงื่อนไขนั้นมันซับซ้อนมากขึ้น จะเเต่ต่างจาก Python ตรง Code นั้นค่อนข้างเป็นระเบียบเข้าใจได้ง่ายซึ่งสามารถทำให้การที่จะเข้าไปเเก้ไขปรับปรุงก็สามารถที่จะทำได้โดยง่าย
ตัวอย่างที่ 5 การคัดลอกตารางจาก Internet เเละทำการคูณช่องใดช่องหนึ่งด้วยเลข 5
การทำงานใน Microsoft Excel
ในการที่จะคัดลอกตารางจากที่อื่นมานั้นสามารถทำได้ด้วยง่ายโดยการหาตารางที่คุณต้องการจะใช้งานจากนั้นก็ให้ทำการคัดลอกลงมาไว้ในโปรเเกรมได้เลยจากนั้นค่อยทำการเริ่มบวกเเถวที่ต้องการทีละตัว
การทำงานในภาษา Python

อธิบาย Code :
import pandas as pd
df = pd.read_html('https://th.wikipedia.org/wiki/%E0%B8%9E%E0%B8%A3%E0%B8%B5%E0%B9%80%E0%B8%A1%E0%B8%B5%E0%B8%A2%E0%B8%A3%E0%B9%8C%E0%B8%A5%E0%B8%B5%E0%B8%81')
df = df[1].set_index('สโมสร')
df['จำนวนครั้งที่ชนะเลิศในดิวิชันสูงสุด'] = df['จำนวนครั้งที่ชนะเลิศในดิวิชันสูงสุด']*5
df.to_excel('new.xlsx')
บรรทัดที่ 1 import Library
บรรทัดที่ 2 อ่านตารางจากเว็บ
บรรทัดที่ 3 เลือกชุดตารางพร้อมกำหนด index
บรรทัดที่ 4 นำ column จำนวนครั้งที่ชนะเลิศในดิวิชันสูงสุด มาคูณ 5
บรรทัดที่ 5 บันทึก
สำหรับใครที่ไม่เข้าใจสำหรับตัวอย่างนี้นะครับสามารถไปดูในคลิปที่เราทำการสอนไว้ได้เลยครับใน YOUTUBE stackpython ซี่รี่ย์ของ pandas ครับหรือเข้ามาตามลิ้งด้านล่างนี่เลยครับ
สรุป คือ ภาษา Python ที่จะนำเข้ามาใช้งานการจักการข้อมูลเเบบนี้จะมีประสิทธิภาพมากกว่าถ้าหากเราใช้ในงานที่มีข้อมูลที่ต้องกรอกจำนวนมากโดยที่ข้อมูลเหล่านั้นจะเป็นข้อมูลที่เกี่ยวกับการเรียงลำดับหรือการสร้างเงื่อไขต่างๆ เเต่ถ้าหากคุณไม่ได้ทำงานที่มีการจัดการข้อมูลเป็นจำนวนมากๆผมก็คิดว่าใช้ Microsoft Excel ดีกว่าครับเนื่องจากมีหน้าต่างโปรเเกรมที่ทำให้เราเข้าใจได้ง่าย ซึ่งหากคุณก็เป็นคนที่ไม่ค่อยมีพื้นฐานการเขียนโปรเเกรมมากเท่าไหร่ผมเองก็คิดว่า Microsoft Excel น่าจะตอบโจทย์มากกว่าครับยกเว้นว่าคุณต้องทำงานในการจัดการข้อมูลเป็น 10,000-1,000,000 บรรทัดผมก็จะขอบอกเลยครับว่ามันจะใช้ภาษา Python จัดการได้มากกว่าจิงๆ
สำหรับบทความนี้ผมขอจบลงไว้เพียงเท่านี้ครับทางเรา STACKPYTHON คาดหวังว่าทุกคนที่อ่านบทความนี้จบ จะได้รับความรู้ครบถ้วนตามจุดประสงค์ที่ทางเราได้ตั้งไว้ข้างต้น
ขอบคุณมากครับที่เข้ามาอ่านบทความต่างๆของทาง STACKPYTHON สำหรับบทความนี้ก็ขอจบลงเพียงเท่านี้ก่อนครับ พบกันบทความหน้าได้เลยครับ มีคำถามหรือข้อเสนอแนะตรงไหนก็คอมเมนต์กันเข้ามาได้เลยนะครับ
Nu STACKPYTHON
Follow us on
Medium: STACKPYTHON
Youtube: STACKPYTHON
Facebook: STACKPYTHON
