เริ่มต้น Python มือใหม่ แบบง่ายๆ แต่เจ๋ง

วันนี้จะมาแนะนำการรัน python ง่ายๆ ด้วยเครื่องมือ Jupyter Notebook ที่มันจะทำให้ Python ของเรา เจ๋งกว่า python ปกติมากๆ

สำหรับมือใหม่ แนะนำอย่างยิ่งเลยให้ใช้ เพราะว่ามันทำให้เราใช้งาน python โดยสั่งให้มันรัน ‘ทีละบรรทัด’ แล้วก็เขียนเพิ่ม แล้วก็รันเฉพาะ บรรทัดนั้น เขียนเพิ่มแล้วรัน ไปเรื่อยๆ จนท้ายที่สุด เขียนจบได้งานอย่างที่ต้องการโดยไม่ต้อง save ไฟล์ สั่ง command รัน มันเสียเวลา

หน้าตาเป็นแบบนี้

และที่สำคัญ มันทำงานบน browser ด้วยนะ ถ้าสนใจลองเล่นตอนนี้เลย กดเลยที่นี่ https://try.jupyter.org/ เมื่อเข้าหน้านั้นแล้ว ให้กด New (ขวามือ) แล้วเลือก Python 3 (หรือ Python 2 แล้วแต่ตามสะดวก) เราก็จะได้หน้าตาเหมือนตัวอย่าง พิมพ์แล้วสั่งรันได้เลย

ไปลองพิมพ์ บวกเลข แล้วสั่งรันดู (วิธีการสั่งรันให้กด ctrl+enter หรือ shift+enter) เช่น 4+5 แล้วกด ctrl+enter (หรือ shift + enter เอาที่สะดวกก็แล้วกัน) จะเห็นว่ามันก็รันไปเรื่อยๆ
ความพิเศษของมันคือ มันจะจำสิ่งที่เราทำข้างบนได้ด้วย เช่นการ ประกาศ function, ตัวแปร แบบนี้เราเอามาใช้ข้างล่างได้เลย เช่น

เห็นมั้ยครับ ว่าเราประกาศตัวแปรข้างบน กดรันทีนึง แล้วบรรทัดต่อมา เราก็เรียกใช้ก็สามารถใช้งานได้

ทีนี้ว่าถ้าเราจะเอามาทำงานกับไฟล์บนเครื่องเรา เราต้องเอา Jupyter นี้ลงมาติดตั้งในเครื่องเรา ซึ่งเค้าแนะนำให้ download Anaconda มาใช้ เพราะว่าใน Anaconda จะมี Jupyter มาด้วย (และมีเครื่องมืออื่นๆอีกนิดหน่อย) download Anaconda ได้ที่นี่ https://www.continuum.io/downloads แนะนำให้ใช้ Python version 3.x นะครับ มันช้ากว่า 2 ครับ แต่ว่าอนาคตของ 3 ยาวกว่า 2 แน่นอนครับ แล้วถ้าไม่ได้ทำอะไรพิศดารมาก python 3 ไม่ต่างจาก 2 ครับ

ระหว่าง download (คือไฟล์ใหญ่เบ้อเร่อมาก) ก็จะเล่าความเจ๋งของ Jupyter Notebook ที่นอกจากให้เรารัน python ทีละบรรทัดไปเรื่อยๆแล้ว มันยังติดตั้ง library หลายตัวเข้ามาให้เราพร้อมใช้โดยเฉพาะพวกที่ทำงานกับ data, file มีมาให้แล้วเยอะ แต่ถ้าไม่พอใจ เราไปเจอ library ตัวไหนในเน็ตที่ Jupyter ไม่มี ก็สั่ง pip install LIB ตัวนั้นได้อีก มันจะดีไปไหน (แต่ใน Jupyter Notebook ให้เติม ! ข้างหน้าด้วย เช่น !pip install LIB) เท่านั้นยังไม่พอ มันทำหน้าตา interactive กับเราได้ด้วยนะ ตัวอย่าง http://jupyter.org/widgets.html ไม่ว่าจะเป็น Load map, plot graph, render vector , 3D Plotting นี่จะเทพไปไหนครับคุณ บอกเลยว่า หลายสิ่ง ไม่สามารถทำได้ด้วย python command line ตามปกติแน่นอน

แล้วทำไมเราจะไม่ใช้?

เอาเป็นว่า ตอนนี้ทุกคนก็ download มาแล้ว ผมจะสอนวิธีใช้ ซึ่งง่ายมาก หลังจากติดตั้งเสร็จให้เราเปิด program Anaconda Navigator มันจะเปิดชุด Program ที่ bundle ใน Anaconda มา เราก็จิ้มที่ Jupyter เลย

เราจะได้หน้าตาแบบด้านล่าง ก็ให้เรากด New > Python 3

มันจะเปิดหน้าเว็บใหม่ ได้หน้าตาแบบนี้ ก็ลุยได้เลย พิมพ์แล้วเล่นได้เลย python มารอพร้อมให้คุณสั่งงานมันอยู่แล้ว

แถม เขียน python ให้เปิด CSV ไฟล์ขึ้นมาทำงาน

เราจะใช้ตัวช่วยในการทำงานก็คือ Pandas เพราะมันเป็น Lib ที่เอาไว้ทำงานกับ data ยอดนิยมตัวหนึ่งเลย ค้น google เจอคำตอบเพียบ อยากทำอะไรล่ะ มันทำได้หลายอย่างมาก
สำหรับโค้ด ก็พิมพ์ตามนี้เลย

ส่วน CSV file ผม load จากที่นี่ https://support.spatialkey.com/spatialkey-sample-csv-data/ แล้วเอามาแตกไฟล์ใส่สักที่ ที่เราพิมพ์การเข้าถึงได้ง่าย อย่างตัวอย่าง ผมวางเอาไว้ที่ C:\DDRIVE\ (เวลาพิมพ์ในโค้ด ให้พิมพ์ \ เบิ้ลสองตัวนะครับ บน windows มันใช้ \ แต่ถ้าเป็น linux ใช้ / ตัวเดียวครับ เวลาเขียน path ในโค้ด)

จากตัวอย่าง 3 บรรทัด อธิบายได้ดังนี้ครับ
1.import library pandas เข้ามา โดยให้ใช้ตัวย่อแทนด้วย pd
2.สั่งให้ pandas load csv เข้ามา ตาม path ที่ระบุ แล้วเอาข้อมูลใส่ ตัวแปรที่ชื่อ insurance
3.สั่งให้ Jupyter print data ใน insurance ออกมาที่หน้าจอ

 

จบแล้ว ง่ายจริง อะไรจริง ถ้าจะเอา data มาทำงาน ก็อ่านคู่มือ Pandas ต่อเลย
เช่น ถ้าเราจะ sort policyID เราก็พิมพ์ตามรูปนี้ ก็จะได้ value ที่ sort ให้เสร็จสรรพ

แถม เขียน python ให้เปิด excel ไฟล์ขึ้นมาทำงาน

เพราะว่าไม่ได้ยากกว่ากันเท่าไร concept จะคล้ายกันการเปิด csv file มาอ่านเลย แต่ว่า excel file มี tab ดังนั้น จะมีคำสั่งเพิ่มขึ้นมา 1 บรรทัด ก็คือ เลือก Sheet ที่เราจะเอามาใช้ทำงาน ก่อนเอา data มาทำงานนั่นเอง ดังนี้

ถ้าเราจะดูว่า excel file มี sheet name อะไรบ้าง ก็เปิดดูจากไฟล์(บางกรณีเอาตาดูก็เร็วกว่านะ 555) หรือ ใช้ xlfile.sheet_names ดูก็ได้เหมือนกันครับ

ที่เหลือ ก็คือ เราต้องรู้ว่า โจทย์เราจะหาคำตอบอะไร เช่น หยิบ field มา calculate เพื่อหาคำตอบบางอย่างที่เราต้องการ แล้วเอาคำตอบไปเก็บในฐานข้อมูล หรืออะไรก็ว่ากันไป (ก็แนวว่าทำ ETL นั่นแหล่ะ)

ประโยชน์ของมันเอาไว้ทำอะไร

น้องที่ได้อ่านทักมาว่า อ่านแล้วก็ยังนึกไม่ออกว่ามันเอาไว้ทำอะไร เลยมาเขียนเพิ่มเติมให้ ผมแยกออกมาเป็นสองเรื่อง

เรื่องแรก ประโยชน์ในเชิงการประยุกต์ใช้ของ Python อธิบายง่ายๆ ก็คือ เวลาที่เราจะต้องการเขียนโปรแกรมให้ทำงานบางอย่าง เราก็ต้องเลือกภาษาที่เหมาะสม ซึ่ง Python ก็เป็น Programming language ภาษาหนึ่ง ที่เราสั่งให้มันทำงานอย่างที่ต้องการได้ เช่น เราอาจจะเขียนให้มันไปอ่านข้อมูลหน้าเว็บมา หรือว่า ให้มันไปอ่าน API แสดงสภาพอากาศของวันนี้ หรือ อื่นๆ คือเขียนโปรแกรมเพื่อหาประโยชน์ให้เรา แต่จาก ตัวอย่างนี้ ผมเน้นไปที่การทำงานกับ csv file เพราะว่าในเชิงธุรกิจ มันมักจะมีการแลกเปลี่ยนข้อมูลในแบบ batch file อยู่มาก ซึ่ง csv , txt ไฟล์ก็เป็น batch file ที่ได้รับความนิยม เราอาจจะอ่าน csv file นี้ขึ้นมาแล้วเอาไป insert database หรือ อาจจะแปลงค่าก่อน แล้วค่อยไป insert database ก็ได้ หรือ อ่าน file แล้ว ส่งไป ให้กับ API หรืออะไรอื่นๆอีกหลายอย่าง แล้วแต่เราจะนึกออก

เรื่องสอง ประโยชน์ที่ได้จาก Jupyter Notebook เราต้องเข้าใจก่อน ว่าปกติการเขียน python แล้วสั่งรัน คือเราต้องสร้างไฟล์ที่บรรจุโค้ด python ขึ้นมา มันคือสร้างไฟล์ > เขียนโค้ด > save > สั่งรันผ่าน command มันก็จะรันตั้งแต่บรรทัดแรก จนถึงบรรทัดที่เราเขียนลงไปล่าสุด แต่ด้วย jupyter notebook เมื่อเรารันบรรทัดแรกไปแล้ว เราจะเขียนแล้วรันบรรทัดที่สอง เมื่อไร เวลาใดก็ได้ ตราบใดที่เรายังเปิด browser ตัวนั้น และ kernel ยังทำงานอยู่ (เรื่อง kernel ยังไม่อธิบายแล้วกันนะ) สมมุติ เราเขียนแล้วรันไป 100 บรรทัดแล้ว เรารู้สึกว่า ตัวแปรที่เราสร้างเอาไว้ บรรทัดที่ 50 ผิด เราก็แก้แค่บรรทัดที่ 50 แล้วรันแค่บรรทัดที่ 50 ไปรันบรรทัดที่ 101 เพื่อดูผลได้เลย (หรือจะรัน all จากบนลงล่างก็ได้แล้วแต่เราจะสั่งมัน) จะเห็นได้ว่า มันช่วยลดภาระการทำงานของเราลงได้มาก ไม่ต้อง save file > run อีกต่อไป แล้วเวลา error เราก็จะรู้เลย ว่าบรรทัดที่เราพึ่งเขียนนี้ error ตรงไหน ไม่ใช่เขียนไป 20 บรรทัด แล้วมี error บรรทัดที่ 10 เราแก้บรรทัดที่ 10-20 ใหม่หมด แบบนี้ก็ตาเหลือกเหมือนกัน (แต่เป็นชีวิตที่ programmer เจอโดยปกติเลย) คือเราสามารถค่อยๆเขียนโปรแกรมทีละบรรทัดแล้วรันดูผลไปเรื่อยๆ จนจบได้ชุด program มาตัวหนึ่งเลย

Exit mobile version