การใช้ไพธอนวิเคราะห์ข้อมูลเบื้องต้น
Python for Basic Data Analysis
สุวิทย์ กิระวิทยา
25 เมษายน 2563
ทำไมต้องไพธอน?
ในการวิเคราะห์ข้อมูลใด ๆ เราจำเป็นต้องมีเครื่องมือ
ในการวิเคราะห์ข้อมูลกันจริง ๆ นั้น เรามักจะใช้การเขียนภาษาคอมพิวเตอร์เพื่อวิเคราะห์ตัวเลขและพล็อตกราฟ
โปรแกรมภาษาไพธอนเป็นโปรแกรมฟรีที่มีไลบรารี่มากมาย ทำให้เราสามารถทำงานได้ (เหมือน
MATLAB) ในเอกสารนี้จะเป็นการทำความรู้จักภาษาไพธอนขั้นพื้นฐานและไลบรารี่ที่ควรเรียกใช้
โดยผู้ที่ยังไม่รู้มาก่อน ควรทำตามในทุกขั้นตอน เพื่อให้ได้รับประสบการณ์ตรง
ส่วนที่
1 การติดตั้ง
ในการวิเคราะห์ข้อมูล เรามักจะใช้ไลบรารี่ 3 ตัว (Numpy, Scipy และ Matplotlib) ที่มาพร้อมกับโปรแกรมภาษาไพธอน เป็นแพ็กเกตที่ชื่อว่า Anaconda ซึ่งทุกคนสามารถดาวน์โหลดได้ฟรี ทั้งแบบ 32 และ 64 บิต บนแพล็ตฟอร์ม Microsoft
Windows, Mac และ Linux โดยดาวน์โหลดได้ที่ https://www.anaconda.com/products/individual
ส่วนที่
2 การเริ่มใช้งานและบันทึกงาน
หลังจากติดตั้ง Anaconda แล้ว
ก็จะมีไอคอนหรือ App ชื่อว่า Spyder
ขอให้เปิด App นี้แล้วรอสักครู่ จากนั้น
โปรแกรมก็จะแสดงหน้าต่างขึ้น ดังรูป
ในขั้นแรก
เราควรทำความเข้าใจการจัดวางหน้าต่างในโปรแกรมก่อน โดยการกดเมาส์เลือกส่วนต่างดู
และลองดูเมนูย่อยในเมนูบาร์ดู โดยที่เรายังไม่จำเป็นต้องเข้าใจทั้งหมด หลังจากนั้น
ขอให้ลองป้อนโค้ดคำสั่งลงในไอไพธอนคอนโซล (IPython Console) ที่แสดงเป็นส่วนที่ 1 ในรูป เช่น พิมพ์ 1+1 ที่ In [1]: แล้วกดปุ่ม Enter โปรแกรมจะได้ผลลัพธ์คือ
Out [1]: 2 เพียงแค่นี้เราก็สามารถใช้ Spyder เป็นเหมือนเครื่องคิดเลขได้แล้ว!
และเราสามารถย้อนดูข้อมูลที่พิมพ์ลงไปทีละคำสั่งได้โดย
กดปุ่มลูกศรขึ้น หรือเลือกดูคำสั่งย้อนหลังโดยการกดที่แถบ History
การป้อนข้อมูล
หากเราป้อน
x
= 5 ลงไป จะเป็นการกำหนดตัวแปรชื่อ x ให้และมีค่าเท่ากับ
5 ดังนั้นในแถบ Variable explorer ในส่วนที่
3 เราจะสังเกตเห็นได้ว่า x และ 5 จะแสดงในรายการตัวแปร
หากเราป้อน print(x) โปรแกรมก็จะแสดงค่า 5 ออกมา คำสั่ง print นี้
มีประโยชน์มากในตอนเขียนโค้ดในอิดิเตอร์ (ส่วนที่ 2) ต่อไป หากเราป้อน y
= 4 แล้วป้อน x+y เราก็จะได้ผลลัพธ์ของการคำนวณออกมาคือ Out [4]: 9
สำหรับการเขียนโค้ดในคอนโซลนั้นเราสามารถเห็นค่าของตัวแปรได้โดยการพิมพ์ชื่อตัวแปรแล้วกด
Enter (ไม่ต้องใช้คำสั่ง print)
ปุ่มลูกศร
ในการพิมพ์โค้ดในคอนโซลเรามักใช้ปุ่มลูกศรช่วยเลื่อนเคอร์เซอร์
เช่น หากเราต้องการเก็บค่าของ x+y เราก็เรียกคำสั่งเก่าโดยการกดลูกศรขึ้นแล้วเลื่อนเคอร์เซอร์ไปที่หน้าสุดโดยการกดปุ่มลูกศรซ้ายหลาย
ๆ ที หรือกดปุ่ม Home แล้วพิมพ์เพิ่ม เช่น z=x+y แล้วกด Enter ค่าของ
x+y ก็จะเก็บในตัวแปรใหม่ z
(โดยไม่แสดงผลออกมาให้เห็น)
อาเรย์
(Array)
ไพธอนสามารถทำงานกับชุดตัวเลขหรืออาเรย์เช่น
แถวของข้อมูล หรือ ตารางข้อมูล โดยเรามักใช้ไลบรารี่ Numpy
(Numerical Python) ในการทำงานกับอาเรย์ โดยก่อนที่เราจะใช้คำสั่งและฟังก์ชันที่เกี่ยวกับอาเรย์ได้
เราจะต้องเรียกไลบรารี่ขึ้นมาเสียก่อน โดยคำสั่งเรียกไลบรารี่ Numpy และกำหนดชื่อย่อ ที่ใช้คือ
import numpy as np
และนอกจากไลบรารี่
Numpy
แล้ว เราก็นิยมเรียกไลบรารี่สำหรับพล็อตกราฟ 2 มิติ คือ ไลบรารี่ย่อยชื่อ pyplot ในไลบรารี่ matplotlib
มาด้วย
ซึ่งคำสั่ง
import
ที่กล่าวถึงนี้ มักจะอยู่ที่หัวของโค้ดโปรแกรมภาษาไพธอนที่เขียนเพื่อวิเคราะห์ข้อมูล
ดังนั้นเมื่อมาถึงจุดนี้ หลายคนจึงนิยมเปลี่ยนไปเขียนโค้ดคำสั่งในอิดิเตอร์ (Editor) ซึ่งเป็นหน้าต่างส่วนที่ 2 แล้วจึงกด F5 เพื่อบันทึกและรันโปรแกรม
และแสดงผลในคอนโซล (จะได้ไม่ต้องพิมพ์โค้ดเดิมซ้ำ ๆ)
คอมเม้นต์
การใส่หมายเหตุหรือคอมเม้นต์
เพื่อบันทึกสิ่งที่คนเขียนโค้ดคิดอยู่ ในขณะที่เขียนนั้น เป็นเรื่องที่ควรทำ
โดยสัญลักษณ์คอมเม้นต์ข้อความในภาษาไพธอน คือ เครื่องหมาย # โดยหากเครื่องหมายนี้อยู่หน้าบรรทัดใด
ขณะรันโปรแกรมไพธอนก็จะไม่นำบรรทัดนั้นมารัน
ตัวอย่างการใช้อาเรย์
หลังโหลดไลบรารี่
(ด้วยคำสั่ง import numpy as
np) แล้ว คือ
x
= np.array([1,2,3,4])
y
= np.array([4,0,3,2])
z
= x+y
อาเรย์ vs. ลิสต์
บางคนที่เคยเรียนภาษาไพธอนมาบ้างอาจคิดว่า
การใช้อาเรย์เป็นเรื่องไม่จำเป็น เพราะภาษาไพธอนมีลิสต์อยู่แล้ว คือ
เราสามารถกำหนดลิสต์
x
= [1,2,3,4]
y
= [4,0,3,2]
ได้
ซึ่งก็กำหนดได้จริง แต่หากทำเช่นนี้ เราจะไม่สามารถนำสมาชิกของ x มาบวกกับ y ได้อย่างที่ทำกับอาเรย์ เพราะหาก x
และ y เป็นลิสต์ จะได้ว่า x+y = [1, 2, 3, 4, 4, 0, 3, 2]
อาเรย์ในไลบรารี่
Numpy มีประโยชน์มากในการนำไปใช้คำนวณงานต่าง ๆ
เราสามารถอ้างอิงถึงสมาชิกในอาเรย์ได้ด้วย ดัชนี เช่น x[0] คือ สมาชิกตัวแรกของอาเรย์ x, x[1:3] คือสมาชิกตัวที่สองถึงสามของอาเรย์
x, x[1:] คือสมาชิกตัวที่สองถึงตัวสุดท้ายของอาเรย์ x นอกจากนี้หากป้อนตัวเลขดัชนีเป็นค่าติดลบ จะเป็นกับนับอาเรย์จากท้ายด้วย
เช่น x[-1] คือ สมาชิกตัวสุดท้ายของอาเรย์ x เราสามารถสร้างอาเรย์หลายมิติในลักษณะเดียวกับเมตริกซ์หรือเทนเซอร์ได้
โดยใช้เครื่องหมาย [ , ] ซ้อนอีกชั้น เช่น x = np.array([[1,2],[3,4]]) คือ เมตริกซ์ [[1,2],[3,4]]
ฟังก์ชันมากมายในไลบรารี่
Numpy
ที่สร้างมาเพื่อใช้งานกับอาเรย์
เช่นฟังก์ชันที่ใช้สร้างอาเรย์ของตัวเลข 0 ถึง N ใด ๆ คือ np.arange(N) และ np.linspace(0,N) หรือ สร้างอาเรย์ขนาด 3x4 ของตัวเลข 0 เพียงค่าเดียว
คือ np.zeros([3,4]) โดยผู้ที่สนใจสามารถศึกษาได้เพิ่มเติมได้จากเอกสารออนไลน์ของไลบรารี่นี้ที่
https://numpy.org/doc/stable/ โดยการค้นหาคำสั่งในกล่องค้นหา
การคำนวณเชิงเลขอย่างง่าย
ตัวดำเนินการที่ใช้ได้กับอาเรย์ในลักษณะเดียวกับ
ตัวเลขเดี่ยว ๆ คือ
+
บวก,
- ลบ, * คูณ, / หาร,
** ยกกำลัง
abs() หาค่าสัมบูรณ์
sqrt() รากที่สอง
exp() หาค่า e ยกกำลัง
log() หาค่าล็อกฐานธรรมชาติ
log10() หาค่าล็อกฐานสิบ
sin() หาค่าไซน์
cos() หาค่าโคไซน์
โดยฟังก์ชันเหล่านี้
จะดำเนินการกับสมาชิกแต่ละตัวในอาเรย์
หากให้ดำเนินการระหว่างเลขตัวเดี่ยว
ๆ กับอาเรย์ เช่น 1+np.array([1,2,3,4]) แล้ว ไพธอนจะแปลงเลขเดี่ยว ๆ
เป็นอาเรย์ที่มีขนาดเท่ากันเสียก่อนแล้วจึงดำเนินการ ซึ่งจะได้เป็น np.array([2,3,4,5])
การคำนวณเชิงเลขกับข้อมูลหลายตัว
กรณีฟังก์ชันที่ใช้สมาชิกหลายตัว
ในการคำนวณ เช่น sum(),
mean(), max(), min() ไพธอนก็จะทำกับสมาชิกทุกตัว นั่นคือ
จะได้ผลเป็นเลขตัวเดียว เช่น np.mean(np.array([1,2,3,4])) ได้ผลคือ 2.5
หากข้อมูลเป็นอาเรย์มากกว่าหนึ่งมิติ (เช่นสองมิติ)
แต่หากเราต้องการให้ทำกับข้อมูลในมิติเดียว ก็กำหนดได้จากการใส่พารามิเตอร์เพิ่ม
เช่น np.mean(np.array([[1,2],[3,4]]),axis=0)
= array([2., 3.]) ในขณะที่ np.mean(np.array([[1,2],[3,4]]),axis=1) ได้ผลลัพธ์คือ
array([1.5, 3.5])
การใช้อิดิเตอร์
ในการใช้งานจริง
เรามักจะเขียนโค้ดในอิดิเตอร์ แล้วบันทึก และรัน โดยกดปุ่ม F5 โดยอิดิเตอร์จะไม่แสดงผลออกมาหากไม่สั่งให้พิมพ์ด้วยคำสั่ง print
เราจะลองใช้อิดิเตอร์
โดยพิมพ์
import numpy as np
x
= np.arange(-10,10,0.1) # สร้างอาเรย์ x ที่มีค่าตั้งแต่ -10 ถึง 10 (ไม่รวม 10) โดยเพิ่มทีละ 0.1
y
= x**2 + 6*x +
4 # สร้างอาเรย์ y
= x^2 + 6*x + 4
ymin = np.min(y)
print(ymin)
ส่วนที่
3 การพล็อตข้อมูล
หากเราต้องการพล็อตข้อมูล
ก็ทำได้โดยการโหลดไลบรารี่ matplotlib.pyplot คือ
import matplotlib.pyplot as plt
เมื่อโหลดไลบรารี่แล้ว
การพล็อตกราฟสองมิติจากอาเรย์ x,y ใด ๆ ทำได้โดยง่ายคือ
plt.plot(x,y)
โดย
x
และ y จะต้องเป็นอาเรย์ 1 มิติ
ที่มีขนาดเท่ากัน โดยผลที่ได้จะอยู่ในหน้าต่างใหม่ หรือในหน้าต่างเดิม ขึ้นกับ
การกำหนดใน เมนู Tools/Preferences/IPython
Console แถบ Graphics
สิ่งที่ควรอ่านต่อไป
หากเห็นว่า
ไพธอนและ Numpy
นั้นน่าสนใจ ผมขอแนะนำให้อ่านและทำตามเอกสารออนไลน์ ใน https://numpy.org/doc/stable/user/quickstart.html
สำหรับผู้ที่คิดว่ายังขาดความรู้ด้านภาษาไพธอน
ก็สามารถหาอ่าน ดู หรือ ฟัง จากแหล่งความรู้มากมายในอินเทอร์เน็ต (โดยค้นหา python
tutorial)
สำหรับผู้ที่ต้องการข้อมูลเจาะจง
เช่น พยายามทำอะไรแล้วทำไม่ได้ (ขึ้น Error Message) ท่านก็สามารถหา
Solution ได้จากการค้นข้อมูลในอินเทอร์เน็ตเช่นกัน
โดยหากพยายามสักระยะหนึ่ง
(~1
เดือน โดยทำทุกวัน)
ก็จะสามารถใช้ไพธอนวิเคราะห์ข้อมูลได้ตามต้องการอย่างแน่นอน
จบ