จากที่เราได้เรียนรู้การใช้ Python เบื้องต้นกันมาบ้างแล้วในหลายๆ ตอน คราวนี้เราจะมาใช้ Python กันในโปรแกรม Power BI กันบ้าง ซึ่งในบทความนี้เพื่อนๆ จะได้เรียนรู้ว่ามันเอามาใช้ด้วยกันได้ยังไง ในลักษณะไหน ต้องทำอะไรบ้าง? โดยตัวอย่างที่แสดงจะไม่ได้ทำอะไรซับซ้อนเพื่อความเข้าใจง่ายนะครับ (คือเรื่องที่ทำให้ดูใน Python ในบทความนี้ ทำใน Power Query โดยตรงก็ได้ แค่จะแสดงให้เห็น Concept เฉยๆ)
สารบัญ
เตรียมความพร้อม
ก่อนอื่น เราจะต้อง Download แล้ว Install Python ลงเครื่องคอมพิวเตอร์ของเราก่อน (ใช้แค่ Collab เหมือนเดิมไม่ได้แล้ว) ไม่งั้นมันจะใช้ Python ใน Power BI ไม่ได้นะครับ
ซึ่งตอน Install ผมแนะนำให้ติ๊กว่าให้เอา Python add เข้า PATH ของเครื่องด้วยนะครับ
จากนั้น ให้ ทำการ Install Package ที่เกี่ยวข้อง และคิดว่าจะใช้งานใน Power BI ด้วย โดยใส่คำสั่งเหล่านี้ที่ Command Prompt ของ Windows (ไม่ใช่ของ Python นะ)
pip install pandas
pip install matplotlib
pip install numpy
pip install seaborn
พอ Install ทุกอย่างที่จำเป็นหมดแล้ว ก็เข้าโปรแกรม Power BI ได้ ซึ่งเมื่อลองเข้าไปใน Option จะเห็นว่า มันมองเห็น Python ที่เรา Install ลงในเครื่องแล้ว
ส่วนเรื่องของ IDE จะปล่อยเป็นค่า Default ก็ได้ แต่ของผมเลือก Other แล้ว browse ไปที่ Microsoft Visual Studio Code ตามตำแหน่งนี้ C:\Users\ชื่อUser\AppData\Local\Programs\Microsoft VS Code\Code.exe
ใช้ Python ในขั้นตอน Get Data
เราจะลองใช้ Python ในขั้นตอนของการ Get Data โดยไปที่ Get Data -> More…-> Other -> Python Script
Concept คือ Power Query จะมองเห็นตัวแปรที่เก็บ DataFrame ของ Python แยกเป็นคนละ Object กัน เช่น ใส่คำสั่งนี้ลงไปใน Script
import pandas as pd
TestVar1=pd.read_csv("https://raw.githubusercontent.com/ThepExcel/download/master/ThepExcelsample.csv")
data = {'แอปเปิ้ล': [1, 3, 6, 8],'มะละกอ': [10, 30, 50, 90]}
TestVar2=pd.DataFrame(data)
พอกด ok จะเห็นเป็น 2 Object ดังนี้ (สังเกตว่ามองไม่เห็นตัวแปร data ที่เป็น Dictionary)
ให้เลือก TestVar1 แล้วกด Transform เพื่อทำงานต่อ
สังเกตว่าใน step Source จะมีคำสั่ง = Python.Execute( xxxx ) โผล่มา ซึ่งคำสั่งนี้ใช้ได้ใน Power Query ของ Power BI เท่านั้น ไม่สามารถเอาไปใช้ใน Power Query ของ Excel ได้นะครับ
ใช้ Python ในขั้นตอน Transform
พอ Load Data เข้ามาได้แล้ว เราก็สามารถ Transform โน่นนี่นั่นใน Power Query Editor ได้ตามปกติเลย เช่น ในที่นี้ผมจะ Filter ผู้ขายเป็น sales ก เท่านั้น
จากนั้นเวลาเราจะใช้ Python ทำงานต่อ เราสามารถไปที่ Transform -> Run Python Script ได้
จากนั้นมันจะมี comment บอกว่า #’dataset’ holds the input data for this script นั่นก็แปลว่าตัวแปรชื่อว่า dataset เป็นตัวเก็บข้อมูลก่อนที่จะ run Script ล่าสุดนี้นั่นเอง
เช่น ถ้าผมเขียนใน Script ว่า
#'dataset' holds the input data for this script
dataset2=dataset.copy() #ลองสร้าง data เป็นอีกตัวนึง
dataset2['ยอดขาย']=dataset2['ราคาต่อชิ้น']*dataset2['จำนวนชิ้น'] #สร้างคอลัมน์ยอดขาย
ถ้ามันขึ้นเตือนเรื่อง Privacy ให้เลือกทุกอันเป็น Public ให้หมดแล้วกด ok
ก็จะมี Step Run Python script โผล่มา โดยเห็นผลลัพธ์เป็น 2 Object แยกจากกัน ซึ่ง dataset2 จะมีคอลัมน์ยอดขายเพิ่มขึ้นมาด้วย
สมมติว่าเราจะเอา dataset2 นี่แหละไปทำงานต่อ ก็คลิ๊กที่ทำคำว่า table ได้เลย เพื่อ drill down ลงไปใน object นั้น
จากนั้นกด Close & Apply เพื่อเอา Data เข้าไปใน Data Model ได้เลย
ใช้ Python ใน Visual
เราสามารถใช้ Python สร้าง Visual ได้ด้วย ซึ่งผมจะใช้ Matplotlib ในการสร้างแล้วกัน
ก่อนอื่นให้คลิ๊กที่ Visual ที่มี icon เป็นคำว่า Py ได้เลย (Py=Python)
มันจะบอกว่าให้ลาก Field ลงมาที่ block Values เพื่อเริ่มเขียน Script ได้ งั้นเราก็ลากเลย เอา TXID, ยอดขาย, สินค้า, วิธีชำระเงิน ลงมาแล้วกัน
สังเกตว่ามันมีการ Comment บอกเราว่า dataset ของเราได้คัดเลือกเอา Field 4 ตัวนั้นลงมาแล้ว และมีการกำจัดข้อมูลที่ซ้ำออกให้ด้วย (นี่คือสาเหตุที่ผมต้องเอา TXID ลงมา ไม่งั้นมันลบข้อมูลหายเหี้ยนแน่)
จากนั้นใน Script ดังนี้เพื่อลองสร้าง Boxplot ของยอดขายขึ้นมา แล้วกด Run Script
# Paste or type your script code here:
import matplotlib.pyplot as plt
plt.boxplot(dataset['ยอดขาย'])
plt.show()
พอได้กราฟออกมา เราสามารถสร้าง Visual ตัวอื่นให้มา Interact กับกราฟที่เกิดจาก Python ได้ด้วย เช่น ผมเอาลูกค้ามาเป็น Slicer มันก็ยังสามารถ Filter ข้อมูลในกราฟของ Python ได้ด้วย
ทีนี้จะทำกราฟได้ดีแค่ไหน ก็ขึ้นกับความสามารถด้าน Python ของเพื่อนๆ แล้วล่ะ
สรุป
สรุปแล้ว เราสามารถใช้ Python ได้ตั้งแต่ขั้นตอน Get Data / Transform Data และ การทำ Visual ด้วยเลย ซึ่งหากใช้ Python ได้คล่องๆ ก็จะทำอะไรได้มากกว่าที่ Power BI ปกติทำได้อีกมาก ที่ผมคิดว่าเหมาะ เช่น การทำ Web Scrapping รวมถึงการใช้ Regex แบบซับซ้อน เป็นต้น (แต่ตัวอย่างนี้ยังไม่ได้แสดงถึงจุดนั้น)
ไว้ผมหัด Python เก่งๆ แล้วจะมาแสดงตัวอย่างเคสที่เหมาะกับการใช้ Python ให้ดูอีกทีนะครับ
ว่าแล้วผมก็ขอไปหัดใช้ Python ต่อก่อนล่ะครับ^^
Leave a Reply