Skip to main content

Jupyter

แนะนำ Jupyter Notebook

https://jupyter-notebook.readthedocs.io/en/latest/index.html

jupyter.webp

Jupyter Notebook เป็นเครื่องมือที่ใช้ในการเขียนและรันโค้ดแบบโต้ตอบในภาษาโปรแกรมต่างๆ (เช่น Python, R, Julia) ผ่านเว็บอินเทอร์เฟซ ช่วยให้นักพัฒนาสามารถเขียนโค้ด เรียกใช้คำสั่งทีละส่วน ตรวจสอบผลลัพธ์ทันที และสามารถแทรกข้อความอธิบายหรือเขียนสูตรคณิตศาสตร์ (ใช้ Markdown และ LaTeX) ภายในโน้ตบุ๊กเดียวกันได้ จึงเหมาะสำหรับงานที่ต้องการการทดลองหรือวิเคราะห์ข้อมูลแบบเป็นขั้นเป็นตอน

งานที่ Jupyter Notebook นิยมใช้ ได้แก่:

  1. การวิเคราะห์ข้อมูล (Data Analysis) นักวิทยาศาสตร์ข้อมูล (Data Scientists) ใช้ Jupyter Notebook เพื่อวิเคราะห์และแสดงผลข้อมูลผ่านการเขียนโค้ด เช่น การอ่านและจัดการข้อมูล การวิเคราะห์เชิงสถิติ และการสร้างภาพ (Data Visualization) ด้วยไลบรารีต่างๆ เช่น Pandas และ Matplotlib
  2. การทดลองและทดสอบอัลกอริธึม Jupyter Notebook ช่วยให้นักพัฒนาสามารถทดสอบอัลกอริธึมหรือโค้ดทีละขั้นตอนและเห็นผลลัพธ์ทันที จึงเหมาะสำหรับการทดลองเขียนโมเดลหรือการพัฒนา Machine Learning Models
  3. การเขียนเอกสารการสอนหรือสาธิตโค้ด ด้วยฟังก์ชัน Markdown และ LaTeX นักพัฒนาหรือครูสามารถใช้ Jupyter Notebook เพื่อสอนเขียนโค้ดหรือสร้างคู่มือการใช้งานที่อธิบายได้อย่างละเอียด พร้อมแสดงตัวอย่างและผลลัพธ์โค้ดในไฟล์เดียว
  4. งานวิจัยเชิงวิทยาศาสตร์ นักวิจัยในสาขาวิทยาศาสตร์สามารถใช้ Jupyter Notebook ในการคำนวณ วิเคราะห์ข้อมูลวิจัย และเขียนรายงานผลพร้อมทั้งโค้ดที่ใช้ในงานวิจัยได้ในรูปแบบที่โต้ตอบและเผยแพร่ได้ง่าย
  5. การนำเสนอและสื่อสารผลการวิเคราะห์ Jupyter Notebook สามารถแปลงเป็นรูปแบบไฟล์ HTML หรือ PDF เพื่อใช้ในการนำเสนอหรือแชร์ให้ผู้อื่นตรวจสอบและทดลองรันโค้ดได้

Jupyter Notebook รองรับไฟล์หลายประเภท และสามารถใช้ร่วมกับเครื่องมือต่าง ๆ ได้หลากหลาย โดยสกุลไฟล์หลักของ Jupyter Notebook File นั่นคือ .ipynb เป็นสกุลไฟล์หลักของ Jupyter Notebook ใช้เก็บโค้ด, ผลลัพธ์ของการรันโค้ด, ข้อความอธิบาย (Markdown), รูปภาพ และสื่ออื่น ๆ ในการนำเสนอหรือทดสอบโค้ด ไว้ได้

ทีนี้หลายคนก็อาจจะมีคำถามขึ้นมาได้ว่า “แล้วถ้าเราสามารถ run Python แบบปกติได้ พวก Jupyter Notebook แตกต่างกันการ run python ปกติอย่างไร ?”

คำตอบที่ชัดเจนที่สุดของคำถามนี้คือ “รูปแบบการ run ของ code” นั่นเอง

  • Python ปกติ: การเขียนและ run Python แบบปกติมักจะทำผ่านการสร้างไฟล์ .py จากนั้นรันไฟล์ทั้งไฟล์ผ่าน command line หรือใช้ IDE โดยผลลัพธ์ทั้งหมดจะถูกรันตามลำดับจากต้นจนจบของโปรแกรม
  • Jupyter Notebook
    • ใน Jupyter Notebook เราสามารถ run code เป็น cells ได้ทีละเซลล์ code แต่ละเซลล์สามารถรันแยกกันได้โดยไม่ต้องรันทั้งไฟล์ ทำให้สามารถทดสอบส่วนต่าง ๆ ของโค้ดได้ง่ายและแก้ไขได้ทันที
    • รวมถึงในแง่การแสดงผล สามารถแสดงได้ทั้งข้อความ, ตารางข้อมูล, กราฟ, รูปภาพ, หรือแม้แต่สมการทางคณิตศาสตร์ผ่านการใช้ Markdown และ LaTeX โดยผลลัพธ์แต่ละเซลล์จะถูกแสดงผลใต้เซลล์นั้นทันทีด้วยเช่นเดียวกัน

ทีนี้ในปัจจุบัน Jupyter Notebook file นั้น support อยู่ในหลากหลาย program เราจะขอแนะนำ 3 program ที่สามารถทำงานกับ Jupyter notebook format ได้

Jupyter Lab

https://jupyter.org/

JupyterLab เป็นเวอร์ชันที่ได้รับการพัฒนาต่อจาก Jupyter Notebook โดยมีฟีเจอร์ที่ครบและยืดหยุ่นมากขึ้น ทำให้เป็น Platform แบบ all-in-one สำหรับการทำงานด้าน Data Science การพัฒนาโปรแกรม และการสร้างเอกสารประกอบแบบ Interactive

เพื่อให้เห็นภาพเราจะมาลอง run jupyter lab กันเลย เราสามารถลง jupyterlab ได้ผ่าน command line นี้

pip install jupyterlab

และสามารถเริ่ม start jupyter lab ได้ผ่าน command นี้เลย

jupyter lab

เมื่อ run command เรียบร้อย = จะถือว่าเป็นการ run jupyter lab ภายใต้ folder ที่มีการ run ตัว jupyter lab

jupyterlab-1.webp

เมื่อได้หน้าจอ Jupyter lab มา มันก็จะแสดง file ทั้งหมดที่อยู่ภายใต้การ run ของ folder jupyter lab ออกมา

jupyterlab-2.webp

โดย วิธีการ run jupyter lab นั้น

  1. สร้างไฟล์เป็นสกุล .ipynb ขึ้นมา
  2. เมื่อเปิดไฟล์ขึ้นมา ก็จะแสดงเป็นหน้าจอของ Jupyter notebook ขึ้นมาได้
  3. เราสามารถ run python ทีละ cell ได้จากการจิ้มที่ cell และกด run ทีละ cell ได้

jupyterlab-3.webp

Jupyter on VS Code

นอกเหนือจากสามารถ run Jupyter ผ่าน command ของ python ได้แล้ว ตัว vs code เองก็ support การ render Jupyter notebook เช่นกัน

โดยตัว VS Code เองก็มี plugin ที่สามารถ render jupyter ได้ผ่าน plugin ชื่อ Jupyter ได้เลย

https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter

jupyter-1.webp

รวมถึงตัว VS Code เองก็มีบทความแนะนำเรื่องการ run Jupyter บน VS Code ด้วยเช่นกัน

https://code.visualstudio.com/docs/datascience/jupyter-notebooks

โดยเมื่อทำการลง plugin แล้วเรียบร้อย เมื่อเราเปิดไฟล์สกุล .ipynb ก็จะแสดงเป็น Jupyter notebook ออกมาได้ โดยสามารถเปิดผ่าน vscode และ run ผ่าน vscode โดยตรงได้เลย

โดยจังหวะที่ run นั้น VS Code จะให้ทำการเลือก version ของ Python ก่อนว่า

  • จะ run ผ่าน Jupyter Server (โดยจะทำการ connect เข้าไปยัง server ของ Jupyter Notebook ที่เปิดอยู่)
  • หรือเลือกเป็น run บน python local

โดยในเคสนี้เราจะเลือก run เป็น python local

jupyter-10.webp

และ VS Code ก็จะให้เราเลือก version python ที่ต้องการจะ run

jupyter-11.webp

เมื่อเลือก version เรียบร้อย เราก็จะสามารถ run python ผ่าน cell ใน Jupyter ได้เหมือน Jupyter Lab ได้เลย

jupyter-2.webp

รวมถึง การใช้งานร่วมกับ vs code สามารถใช้ร่วมกับ github copilot ได้ ซึ่งช่วยอำนวยความสะดวกในการ code ได้เช่นกัน

jupyter-3.webp

Google Colab

https://colab.google/notebooks/

Google Colab (Google Colaboratory) เป็นบริการที่ Google พัฒนาขึ้นมาให้ผู้ใช้สามารถเขียนและรันโค้ด Python บนเบราว์เซอร์ได้ฟรี โดยไม่ต้องติดตั้งซอฟต์แวร์ใด ๆ บนเครื่องคอมพิวเตอร์ของผู้ใช้ มันถูกออกแบบมาเป็นพิเศษสำหรับงานที่เกี่ยวข้องกับการวิเคราะห์ข้อมูล การเรียนรู้ของเครื่อง (machine learning) และงานที่ต้องใช้การประมวลผลที่หนักและใช้เวลานาน

คุณสมบัติที่สำคัญของ Google Colab:

  • ใช้งานฟรี: ผู้ใช้สามารถใช้งาน GPU และ TPU ของ Google เพื่อช่วยประมวลผลได้ฟรีในระดับเบื้องต้น
  • ไม่ต้องติดตั้งซอฟต์แวร์: ทุกอย่างสามารถทำได้ผ่านเบราว์เซอร์
  • รองรับ Python: เหมาะกับการใช้งานสำหรับการเขียนโปรแกรมด้วยภาษา Python โดยเฉพาะ
  • เชื่อมต่อกับ Google Drive: สามารถเก็บไฟล์และข้อมูลต่าง ๆ ไว้บน Google Drive และใช้ร่วมกับ Colab ได้สะดวก
  • การแชร์และทำงานร่วมกัน: ผู้ใช้สามารถแชร์โน้ตบุ๊ค Colab กับผู้อื่นเพื่อทำงานร่วมกันได้อย่างง่ายดาย

โดยเริ่มต้นทุกคนสามารถทำได้จากการเปิด google colab และมันจะสามารถเข้าผ่าน google account ได้ทันที

  • Google colab จะสร้างเป็นไฟล์ไว้ใน google drive ของเราและก็ใช้ storage ร่วมกับ drive ของเรา
  • สกุลไฟล์ก็จะเป็น Jupyter Notebook format หรือก็คือ .ipynb เช่นกัน

colab-1.webp

เราจะมาลอง load file เข้า google colab กัน โดยในเคสของ google colab นั้น เนื่องจากมันไม่ได้ตั้งบน local เหมือนกับ 2 เคสก่อนหน้า เราจึงจำเป็นต้องหาสถานที่สำหรับเก็บไฟล์เพื่อให้ google colab สามารถเรียกใช้ได้

ซึ่ง storage ที่ google colab สามารถเรียกใช้ได้ง่ายที่สุดนั่นก็คือ Google Drive นี่แหละ ซึ่งตัว Colab สามารถที่จะ mount path ของ Google Drive เข้า Colab โดยตรงได้เลย

โดย Step ที่เราจะทำคือ

  1. upload file ไว้ใน google drive สักจุดหนึ่ง เช่นในภาพนี้คือ Temp_data/employees_data.xlsx

colab-2.webp

ต่อมากลับมาที่ Colab ทำการเพิ่ม code สำหรับ mount Google Drive (ของตัวเอง) เข้าไป

from google.colab import drive
drive.mount('/content/drive')

colab-3.webp

เมื่อกดยอมรับ permission ให้เข้าถึงได้เรียบร้อย มันจะขึ้นว่าทำการ Mount กับ Google drive ไว้แล้ว โดยบน Colab เราสามารถใช้คำสั่ง linux บน Notebook ได้ผ่านการใส่เครื่องหมาย ! ไว้ด้านหน้า

เช่น หากต้องการจะ list file ด้วยคำสั่ง ls เพื่อทำการตรวจสอบว่า path ที่ mount มาเห็น Google Drive จริงไหม ก็สามารถทำได้ด้วยคำสั่ง

!ls /content/drive/MyDrive/Temp_Data

เราก็จะเจอ file ที่เรา upload ผ่าน google drive ไปได้

colab-4.webp

ที่เหลือ step ก็เหมือนเดิม เราสามารถเข้าถึง file ผ่านการระบุ path โดยตรงได้ และก็สามารถอ่านเข้า Pandas ด้วยวิธีเดียวกันกับที่เราเคยทำใน Notebook ตัวอื่นๆเลย

colab-5.webp

(หากไฟล์วางอยู่ที่อื่น ก็สามารถนำเข้าได้ผ่านวิธี API เช่นเดียวกับที่เราทำตัวอย่างดึงผ่าน JSON มาได้)

และนี่ก็คือ บทเริ่มต้นของการทำงานเกี่ยวกับข้อมูล และ python ในหัวข้อต่อไป เราจะเริ่มเจาะลึกแต่ละประเด็นตั้งแต่การ clean data, การ filter, การรวม data และการทำ vistualization ในแต่ละประเภทกันว่าเป็นแบบไหนบ้าง