ใช้งาน python excel (พร้อมแบบฝึกหัด)

ใช้งาน python excel (พร้อมแบบฝึกหัด)

สำหรับบทความนี้คาดว่าหลายๆคนน่าจะได้เรียนรู้และทำความเข้าใจเกี่ยวกับเรื่องการใช้ภาษา Python ในการจัดการข้อมูลในหลายๆรูปแบบ เช่น ข้อมูลที่มีรูปแบบเป็น Excel, ข้อมูลที่มีรูปแบบเป็น csv เป็นต้น จากบทความของทางเราทั้งบทความ “ใช้งานPython OpenPyXL to read/write Excel” และ “Python Pandasช่วยงานofficeอัตโนมัติcsv, excelผ่านJupyter Notebooks” ซึ่งบทความเหล่านี้ได้อธิบายเกี่ยวกับการใช้งานภาษา Python ในการจัดการข้อมูลให้อยู่ในรูปแบบของ Excel และหลายคนอาจมีคำถามว่าทำไมเราต้องใช้ภาษา Python ในการจัดการข้อมูลแทนที่จะใช้ โปรแกรม Microsoft Excel ในการจัดการข้อมูล เราจึงสร้างบทความนี้เพื่อยกตัวอย่างการใช้งานที่ Microsoft Excel ไม่สามารถทำได้หรือทำได้ยากในขณะที่ภาษา Python นั้นสามารถจัดการได้ง่ายกว่า

จุดประสงค์


Software & Tools

บทความ แนะนำ

- 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

  1. จากนั้นในช่องมีเราจะมาทำการใส่สูตรคำนวณเกรดกันซึ่งหลายๆคนก็ทราบกันดีอยู่เเล้วว่าในการใส่สูตรลงใน 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

Python Courses