ในปัจจุบันที่เรื่องข้อมูลเป็นสิ่งสำคัญ ยิ่งเทรนด์ของ Data Science ที่กำลังมาแรง และมีความสำคัญมากขึ้นทุกวัน และหนึ่งในรูปแบบของข้อมูลที่เราน่าจะคุ้นเคยกันดีก็น่าจะเป็นไฟล์ Microsoft Excel นั่นเอง เพราะฉะนั้นวันนี้เราจะมาทำการ อ่าน / เขียน / บันทึก ไฟล์ Excel ด้วย Python 3 กัน เริ่มกันได้เลย
ก่อนอื่นเนื่องจากว่าวันนี้เราจะใช้ Python 3 ในการเขียนโค้ดวันนี้ แน่นอนว่าในเครื่องต้องมี Python 3 ติดตั้งเอาไว้ให้เรียบร้อย จากติดตั้ง library เสริมที่ต้องใช้ในบทความนี้ เปิด command line ขึ้นมาแล้วพิมพ์คำสั่งติดตั้งตามนี้ได้เลย
pip install pandas
pip install xlsxwriter
pip install xlrd
ถ้าติดตั้งครบแล้วก็ไปขัั้นตอนต่อไปกันได้เลย
อ่านไฟล์ Excel
เราจะใช้ไฟล์ตัวอย่างชื่อ ‘fruits.xlsx’ โดยมีข้อมูลหน้าตาแบบนี้
โดยการอ่านไฟล์ Excel นั้นทำได้ง่ายมากๆ ดูตามโค้ดตัวอย่างต่อไปนี้ได้เลย
import pandas as pd
dataframe = pd.read_excel (r'fruits.xlsx')
print (dataframe)
เมื่อกดรันแล้วก็จะ print ผลลัพธ์ออกมาแบบนี้
หรือถ้าจะ print ข้อมูลเฉพาะคอลัมน์ Name ก็ทำได้เพียงแค่ระบุชื่อคอลัมน์เท่านั้น
print (dataframe['Name'])
ก็จะได้ผลลัพธ์ออกมาแบบนี้
เขียนข้อมูลเป็นไฟล์ Excel
เราจะสร้างข้อมูลง่ายๆเป็น Pandas DataFrame จากนั้นเซฟเป็นไฟล์ .xlsx ด้วย xlsxwriter ลองดูโค้ดและคำอธิการทำงานแต่ละบรรทัดตามโค้ดด้านล่างนี้กัน
import xlsxwriter
import pandas as pd
# สร้าง DataFrame ที่มี 1 คอลัมน์ชื่อ 'Data'
dataframe = pd.DataFrame({'Data' : [20, 30, 45, 12, 33, 9]})
# สร้าง Pandas Excel Writer เพื่อใช้เขียนไฟล์ Excel โดยใช้ Engine เป็น xlsxwriter
# โดยตั้งชื่อไฟล์ว่า 'simple_data.xlsx'
writer = pd.ExcelWriter('simple_data.xlsx', engine='xlsxwriter')
# นำข้อมูลที่สร้างไว้ในตัวแปร dataframe เขียนลงไฟล์
dataframe.to_excel(writer, sheet_name='หน้าที่1')
# จบการทำงาน Pandas Excel writer และเซฟข้อมูลออกมาเป็นไฟล์ Excel
writer.save()
พอกดรันแล้วลองดูที่โฟลเดอร์เดียวกันกับโค้ดนี้ก็จะพบว่ามีไฟล์ simple_data.xlsx ถูกสร้างขึ้นมา ลองเปิดก็จะพบว่ามีข้อมูลอยู่แบบนี้
แก้ไขไฟล์ Excel
เราจะทำการเพิ่มข้อมูล orange ต่อท้ายเข้าไปในไฟล์ fruits.xlsx ที่ใช้ในตอนอ่านไฟล์กัน ลองดูตัวอย่างโค้ดพร้อมคำอธิบายกันได้เลย
import xlsxwriter
import pandas as pd
# อ่านข้อมูลที่มีอยู่ในไฟล์เดิม
readDataframe = pd.read_excel (r'fruits.xlsx')
# สร้างข้อมูลใหม่เป็นข้อมูลของ orange
newDataframe = pd.DataFrame({'Name' : ['orange'], 'Price': [88], 'Amount': [15]})
# นำข้อมูล orange ที่สร้างใหม่รวมเข้ากับข้อมูลเก่าที่อ่านจากไฟล์
frames = [readDataframe, newDataframe]
result = pd.concat(frames)
# สร้าง Writer เหมือนกับตอนเขียนไฟล์
writer = pd.ExcelWriter('fruits.xlsx', engine='xlsxwriter')
# นำข้อมูลชุดใหม่เขียนลงไฟล์และจบการทำงาน
result.to_excel(writer, index = False)
writer.save()
เมื่อกดรันเสร็จแล้วลองเปิดดูไฟล์ fruits.xlsx ก็จะมีข้อมูลเพิ่มมาอีกแถวก็คือ orange นั่นเอง
ได้ลองดูแล้วก็น่าจะเห็นว่าการใช้งาน Python 3 กับ ไฟล์ Excel นั้นไม่ยากเลยใช่มั้ยครับ ลองนำไปปรับใช้กันได้นะครับ