- 1. Jupyter Notebook คืออะไร และเหตุใดจึงใช้ร่วมกับ VS Code?
- 2. สิ่งที่ต้องเตรียม
- 3. Workshop Part 1 — สร้างโปรเจกต์และ Virtual Environment
- 4. Workshop Part 2 — สร้าง Notebook และเลือก Kernel
- 5. Workshop Part 3 — ทบทวนการใช้ Python ใน Code Cell
- 6. Workshop Part 4 — อ่านข้อมูลยอดขายจาก CSV
- 7. Workshop Part 5 — เตรียมข้อมูลและคำนวณรายได้
- 8. Workshop Part 6 — สร้างกราฟด้วย Matplotlib
- 9. Workshop Part 7 — ส่งออกรายงานและภาพกราฟ
- 10. เครื่องมือสำคัญใน Notebook Editor
- 11. ปัญหาที่พบบ่อยและแนวทางแก้ไข
- 12. แบบฝึกหัดท้าย Workshop
- 13. แนวปฏิบัติที่แนะนำ (Best Practices)
- 14. สรุป
- 15. แหล่งอ้างอิงและอ่านเพิ่มเติม

เครื่องมือ: Python, Visual Studio Code, Jupyter, Pandas, Matplotlib
ผลลัพธ์: สร้างไฟล์.ipynbวิเคราะห์ยอดขายจาก CSV สร้างกราฟ และส่งออกรายงานได้ด้วยตนเอง
#1. Jupyter Notebook คืออะไร และเหตุใดจึงใช้ร่วมกับ VS Code?
Jupyter Notebook คือสภาพแวดล้อมการทำงานที่ผสมผสาน Code Cell สำหรับเขียนและรันโค้ด กับ Markdown Cell สำหรับจดบันทึก อธิบายกระบวนการ และแสดงผลการวิเคราะห์ในเอกสารเดียวกัน โดยไฟล์ Notebook ใช้นามสกุล .ipynb
Visual Studio Code (VS Code) เป็นเครื่องมือแก้ไขโค้ดที่รองรับ Jupyter Notebook ผ่านส่วนขยาย (Extensions) ทำให้ไม่จำเป็นต้องแยกไปเปิดหน้าต่าง Jupyter บนเบราว์เซอร์สำหรับงานพื้นฐาน
ตัวอย่างงานที่เหมาะกับการใช้ Notebook ได้แก่ การทดลองคำสั่ง Python ทีละส่วน การสำรวจข้อมูลเบื้องต้น (Exploratory Data Analysis: EDA) การทำ Data Visualization และการสร้างต้นแบบ Machine Learning
#เปรียบเทียบ .py กับ .ipynb
| คุณสมบัติ | Python Script (.py) |
Jupyter Notebook (.ipynb) |
|---|---|---|
| วิธีทำงาน | โดยทั่วไปเรียกใช้สคริปต์ตามลำดับ | รันเป็น Cell ได้ทีละส่วนหรือทั้งหมด |
| การแสดงผล | Terminal หรือหน้าต่างอื่น | แสดงข้อความ ตาราง และกราฟใต้ Cell |
| เอกสารประกอบ | คอมเมนต์และไฟล์เอกสารแยก | มี Markdown Cell ในไฟล์เดียวกัน |
| การนำไปใช้ | แอปพลิเคชัน โมดูล งานอัตโนมัติ | การสำรวจข้อมูล การทดลอง การเรียนการสอน |
หมายเหตุ: Cell ของ Notebook สามารถรันสลับลำดับได้ จึงอาจทำให้ตัวแปรมีสถานะไม่ตรงกับลำดับที่อ่าน ควรทดสอบด้วย Restart Kernel → Run All ก่อนส่งงาน
#2. สิ่งที่ต้องเตรียม
- Python แนะนำให้ใช้เวอร์ชันที่ไลบรารีใน Workshop รองรับ เช่น Python 3.11–3.13 จาก https://www.python.org/downloads/
- Visual Studio Code จาก https://code.visualstudio.com/
- ส่วนขยาย Python โดย Microsoft (
ms-python.python) - ส่วนขยาย Jupyter โดย Microsoft (
ms-toolsai.jupyter) - การเชื่อมต่ออินเทอร์เน็ตสำหรับติดตั้งไลบรารีครั้งแรก
ตรวจสอบ Python ใน Terminal:
Windows (PowerShell หรือ Command Prompt)
py --version
หากระบบไม่รู้จักคำสั่ง py ให้ลอง python --version และตรวจสอบการติดตั้ง Python
macOS / Linux
python3 --version
#ติดตั้งส่วนขยายใน VS Code
เปิด VS Code → คลิกไอคอน Extensions (Ctrl+Shift+X บน Windows/Linux) → ค้นหาและติดตั้ง Python และ Jupyter ของ Microsoft
หรือใช้ Command Palette (Ctrl+Shift+P บน Windows/Linux, Cmd+Shift+P บน macOS) แล้วค้นหาคำสั่งที่ต้องการ
#3. Workshop Part 1 — สร้างโปรเจกต์และ Virtual Environment
สร้างโฟลเดอร์ชื่อ jupyter-vscode-workshop แล้วเปิดผ่านเมนู File → Open Folder... ใน VS Code
โครงสร้างโปรเจกต์เมื่อทำ Workshop เสร็จ:
jupyter-vscode-workshop/
├── .venv/ # Virtual Environment (ไม่เก็บใน Git)
├── assets/
│ ├── cover.png
│ └── infographic.png
├── data/
│ └── sales_2026.csv
├── notebooks/
│ └── sales_analysis.ipynb
├── figures/
│ └── monthly_sales.png # สร้างเมื่อรัน Notebook
├── reports/
│ └── monthly_sales.csv # สร้างเมื่อรัน Notebook
├── .gitignore
├── requirements.txt
└── README.md
เปิด Terminal ด้วย Terminal → New Terminal แล้วทำตามระบบปฏิบัติการ
#Windows (PowerShell)
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install ipykernel pandas matplotlib
เมื่อ Activate สำเร็จ มักเห็น (.venv) ด้านหน้าบรรทัดคำสั่ง หาก PowerShell ไม่อนุญาตให้รันไฟล์ .ps1 สามารถใช้ Command Prompt แทนโดยไม่จำเป็นต้องแก้ Execution Policy:
.venv\Scripts\activate.bat
python -m pip install --upgrade pip
python -m pip install ipykernel pandas matplotlib
หากเรียกใช้ CMD ให้เปิด Terminal แบบ Command Prompt ก่อนพิมพ์คำสั่ง
.batหรือจะไม่ Activate ก็ได้ โดยเรียก\.venv\Scripts\python.exe -m pip ...ผ่าน Python ของสภาพแวดล้อมนั้นโดยตรง
#macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install ipykernel pandas matplotlib
ความหมายของไลบรารี: ipykernel ใช้เชื่อม Python Environment กับ Notebook Kernel; pandas ใช้จัดการตารางข้อมูล; matplotlib ใช้สร้างกราฟ
บันทึกรายการ Dependencies ใน requirements.txt:
ipykernel
pandas
matplotlib
หากต้องติดตั้งใหม่ในเครื่องอื่น สามารถใช้:
python -m pip install -r requirements.txt
ในงานที่ต้องการผลลัพธ์ทำซ้ำเหมือนเดิมอย่างเคร่งครัด ควรบันทึกเวอร์ชันที่ทดสอบแล้วเพิ่มเติม (เช่น python -m pip freeze > requirements-lock.txt) และนำไฟล์ล็อกนั้นไปใช้ติดตั้งในสภาพแวดล้อมที่เข้ากันได้
#4. Workshop Part 2 — สร้าง Notebook และเลือก Kernel
- ที่ Explorer ให้สร้างโฟลเดอร์
notebooksและไฟล์sales_analysis.ipynbหรือใช้ Command Palette → Create: New Jupyter Notebook แล้ว Save As ลงในโฟลเดอร์นี้ - เมื่อเปิดไฟล์
.ipynbให้คลิก Select Kernel มุมขวาบน - เลือก Python Environments → เลือก Python จาก
.venvของโปรเจกต์ หากไม่ปรากฏ ให้เลือก Select Another Kernel... - หากต้องการให้ไฟล์
.pyใช้ Interpreter เดียวกัน ให้เรียก Python: Select Interpreter แล้วเลือก.venvด้วย เพราะ Interpreter ของไฟล์ Python และ Kernel ของ Notebook เป็นคนละตัวเลือกที่ควรตรวจสอบให้ตรงกัน
ทดลองใน Code Cell ที่ 1
print("Hello, Jupyter Notebook!")
import sys
print("Python executable:", sys.executable)
กดปุ่ม Run Cell (รูปสามเหลี่ยมด้านซ้ายของ Cell) หรือ Shift+Enter เพื่อรันและเลื่อนไป Cell ถัดไป
สิ่งที่คาดว่าจะเห็น: ข้อความ Hello, Jupyter Notebook! และตำแหน่ง Python ซึ่งควรชี้ไปที่ .venv ของโปรเจกต์
#เพิ่ม Markdown Cell
กด + Markdown และพิมพ์ข้อความ:
## วิเคราะห์ยอดขายร้านค้าออนไลน์
**วัตถุประสงค์:** สรุปยอดขายรายเดือน แยกภูมิภาค และแสดงแนวโน้มด้วยกราฟ
จากนั้นสั่งแสดงผล Markdown Cell ด้วยปุ่มเครื่องหมายถูกหรือใช้คำสั่ง Run ของ Cell ตาม UI เวอร์ชันที่ใช้งาน
#5. Workshop Part 3 — ทบทวนการใช้ Python ใน Code Cell
shop_name = "Python Shop"
prices = [120, 250, 180]
print("ร้านค้า:", shop_name)
print("จำนวนสินค้า:", len(prices))
print("ราคารวม:", sum(prices))
print("ราคาเฉลี่ย:", sum(prices) / len(prices))
ผลลัพธ์ที่คาดหวัง:
ร้านค้า: Python Shop
จำนวนสินค้า: 3
ราคารวม: 550
ราคาเฉลี่ย: 183.33333333333334
Notebook เก็บค่าตัวแปรไว้ใน Kernel ระหว่างการทำงาน หากต้องการเริ่มใหม่ให้เลือก Restart Kernel แล้ว Run All
#6. Workshop Part 4 — อ่านข้อมูลยอดขายจาก CSV
ใช้ข้อมูลตัวอย่าง data/sales_2026.csv ที่แนบในชุด Workshop โดยมีคอลัมน์:
| คอลัมน์ | ความหมาย | ตัวอย่าง |
|---|---|---|
transaction_id |
รหัสรายการขาย | T001 |
date |
วันที่ซื้อ | 2026-01-05 |
region |
ภูมิภาค | North |
product |
หมวดสินค้า | Keyboard |
quantity |
จำนวนสินค้าที่ขาย | 2 |
unit_price |
ราคาต่อหน่วย (บาท) | 890 |
ข้อควรระวังเรื่อง Path: ตัวอย่างนี้สมมติว่า Notebook เปิดทำงานโดยมี Current Working Directory (CWD) อยู่ที่รากโปรเจกต์ หากรันจากโฟลเดอร์
notebooksโดยตรง ให้ปรับตำแหน่ง Path เป็น../data/sales_2026.csvหรือเปลี่ยน CWD กลับไปที่รากโปรเจกต์
Code Cell: โหลดข้อมูลและตรวจสอบคุณภาพ
from pathlib import Path
import pandas as pd
print("Current directory:", Path.cwd())
csv_path = Path("data/sales_2026.csv")
if not csv_path.exists():
raise FileNotFoundError(
f"ไม่พบไฟล์ {csv_path} — กรุณารัน Notebook จากรากโปรเจกต์"
)
df = pd.read_csv(csv_path, parse_dates=["date"])
display(df.head())
print("จำนวนแถว/คอลัมน์:", df.shape)
print("จำนวนค่าว่างในแต่ละคอลัมน์:\n", df.isna().sum())
ประเด็นที่สังเกต: df.head() แสดง 5 แถวแรก, df.shape รายงานขนาดข้อมูล, df.isna().sum() ช่วยตรวจสอบค่าว่าง
#7. Workshop Part 5 — เตรียมข้อมูลและคำนวณรายได้
Code Cell: ทำความสะอาดข้อมูล
# สำเนาข้อมูลใหม่และตัดแถวที่ซ้ำทั้งแถว
df_clean = df.drop_duplicates().copy()
# บังคับชนิดข้อมูลตัวเลข เพื่อให้พบค่าผิดรูปแบบ
for col in ["quantity", "unit_price"]:
df_clean[col] = pd.to_numeric(df_clean[col], errors="coerce")
# ตัดแถวที่ขาดข้อมูลจำเป็น
df_clean = df_clean.dropna(
subset=["date", "region", "product", "quantity", "unit_price"]
).copy()
# ไม่รวมรายการที่มีจำนวนหรือราคาติดลบในตัวอย่างนี้
df_clean = df_clean[
(df_clean["quantity"] > 0) & (df_clean["unit_price"] >= 0)
].copy()
# รายได้ต่อรายการขาย
df_clean["revenue"] = df_clean["quantity"] * df_clean["unit_price"]
print("จำนวนรายการหลังเตรียมข้อมูล:", len(df_clean))
print("ยอดขายรวม (บาท):", f'{df_clean["revenue"].sum():,.2f}')
display(df_clean.head())
ในการใช้งานจริง: ควรตกลงกฎธุรกิจเรื่องการคืนสินค้า ส่วนลด ภาษี และราคาติดลบก่อนลบข้อมูล เนื่องจากข้อมูลดังกล่าวอาจเป็นธุรกรรมที่ถูกต้อง
Code Cell: สรุปยอดขายรายเดือน
df_clean["month"] = df_clean["date"].dt.to_period("M").astype(str)
monthly_sales = (
df_clean.groupby("month", as_index=False)["revenue"]
.sum()
.sort_values("month")
)
print("ยอดขายแยกรายเดือน")
display(monthly_sales)
Code Cell: สรุปยอดขายรายภูมิภาค
regional_sales = (
df_clean.groupby("region", as_index=False)["revenue"]
.sum()
.sort_values("revenue", ascending=False)
)
display(regional_sales)
Code Cell: หาสินค้าที่ทำรายได้สูงสุด
product_sales = (
df_clean.groupby("product", as_index=False)["revenue"]
.sum()
.sort_values("revenue", ascending=False)
)
display(product_sales)
print("สินค้าที่มีรายได้สูงสุด:", product_sales.iloc[0]["product"])
#8. Workshop Part 6 — สร้างกราฟด้วย Matplotlib
Code Cell: กราฟเส้นแสดงรายได้รายเดือน
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(9, 4.5))
ax.plot(
monthly_sales["month"],
monthly_sales["revenue"],
marker="o",
linewidth=2,
)
ax.set_title("Monthly Sales Revenue (2026)")
ax.set_xlabel("Month")
ax.set_ylabel("Revenue (THB)")
ax.grid(alpha=0.25)
plt.xticks(rotation=30)
plt.tight_layout()
plt.show()
Code Cell: กราฟแท่งเปรียบเทียบภูมิภาค
fig, ax = plt.subplots(figsize=(8, 4.5))
ax.bar(regional_sales["region"], regional_sales["revenue"])
ax.set_title("Revenue by Region")
ax.set_xlabel("Region")
ax.set_ylabel("Revenue (THB)")
plt.tight_layout()
plt.show()
ตั้งชื่อกราฟและแกนเป็นภาษาอังกฤษเพื่อลดปัญหาฟอนต์ภาษาไทยใน Matplotlib ซึ่งอาจต่างกันระหว่าง Windows, macOS และ Linux หากต้องการแสดงภาษาไทยต้องตั้งค่าฟอนต์ที่เครื่องติดตั้งและรองรับอักขระไทย
#9. Workshop Part 7 — ส่งออกรายงานและภาพกราฟ
figures_dir = Path("figures")
reports_dir = Path("reports")
figures_dir.mkdir(parents=True, exist_ok=True)
reports_dir.mkdir(parents=True, exist_ok=True)
# สร้างภาพเพื่อบันทึกเป็น PNG
fig, ax = plt.subplots(figsize=(9, 4.5))
ax.plot(monthly_sales["month"], monthly_sales["revenue"], marker="o")
ax.set(title="Monthly Sales Revenue (2026)", xlabel="Month", ylabel="Revenue (THB)")
ax.grid(alpha=0.25)
plt.xticks(rotation=30)
fig.tight_layout()
fig.savefig(figures_dir / "monthly_sales.png", dpi=180, bbox_inches="tight")
plt.close(fig)
# ส่งออกตารางรายได้รายเดือน
monthly_sales.to_csv(reports_dir / "monthly_sales.csv", index=False, encoding="utf-8-sig")
print("สร้าง figures/monthly_sales.png สำเร็จ")
print("สร้าง reports/monthly_sales.csv สำเร็จ")
การใช้ utf-8-sig ในไฟล์ CSV ช่วยให้โปรแกรมตารางคำนวณบางรุ่นบน Windows ตรวจจับข้อความภาษาไทยแบบ UTF-8 ได้สะดวกขึ้น
#10. เครื่องมือสำคัญใน Notebook Editor
- Run Cell / Run All: รัน Cell เดียวหรือทั้ง Notebook
- Restart Kernel: รีเซ็ตสถานะของตัวแปรที่ค้างอยู่
- Interrupt Kernel: หยุดการประมวลผลที่กำลังทำงาน
- Variables / Data Viewer: ช่วยตรวจสอบค่าตัวแปรและตาราง (ตำแหน่งเมนูอาจต่างตามเวอร์ชัน VS Code/Jupyter Extension)
- Export: ส่งออก Notebook ไปเป็น Python Script หรือรูปแบบที่ส่วนขยายรองรับ
- Debug Cell: ตั้ง Breakpoint และตรวจสอบการทำงาน (ขึ้นอยู่กับ Kernel/ส่วนขยายที่ติดตั้ง)
#11. ปัญหาที่พบบ่อยและแนวทางแก้ไข
| ปัญหา | สาเหตุที่เป็นไปได้ | วิธีแก้ไข |
|---|---|---|
ModuleNotFoundError: No module named 'pandas' |
ติดตั้งแพ็กเกจผิด Environment | ดู sys.executable ใน Notebook แล้วติดตั้งโดยใช้ Python จาก .venv เดียวกัน |
| ไม่พบ Kernel | VS Code ไม่พบ Python Environment หรือยังไม่มี ipykernel |
เลือก Select Another Kernel → Python Environments และติดตั้ง ipykernel ใน Environment เป้าหมาย |
FileNotFoundError |
Current Working Directory ไม่ตรงกับที่โค้ดสมมติไว้ | ใช้ Path.cwd() ตรวจสอบ และแก้ Path ให้สัมพันธ์กับ CWD |
| กราฟไม่แสดง | ไม่ได้รัน Cell ที่สร้างกราฟ หรือ Kernel มีสถานะผิด | ทดลอง plt.show() แล้ว Restart Kernel → Run All |
PowerShell ปฏิเสธ Activate.ps1 |
Execution Policy จำกัดการรันสคริปต์ | ใช้ Command Prompt กับ activate.bat หรือเรียก Python ใน .venv โดยตรง |
รัน Cell ล่างแล้ว NameError |
ยังไม่ได้รัน Cell ที่ประกาศตัวแปร | เลือก Restart Kernel → Run All เพื่อให้ทำงานตามลำดับ |
| กราฟภาษาไทยเป็นสี่เหลี่ยม | ฟอนต์ที่เลือกไม่มีอักขระภาษาไทย | ติดตั้งและกำหนดฟอนต์ไทยใน Matplotlib หรือใช้ป้ายแกนภาษาอังกฤษ |
#12. แบบฝึกหัดท้าย Workshop
- ระดับพื้นฐาน: แก้ Code Cell ให้รายงานยอดขายรวม จำนวนธุรกรรม และรายได้เฉลี่ยต่อธุรกรรม
- ระดับกลาง: สร้างตารางสรุปรายได้แยกตาม
productและregionด้วยpd.pivot_table() - ระดับกลาง: สร้างกราฟแท่ง 5 อันดับหมวดสินค้าที่ทำรายได้สูงสุด และบันทึกใน
figures/top_products.png - ระดับประยุกต์: เพิ่ม Markdown Cell สรุปผลการวิเคราะห์อย่างน้อย 3 ข้อ โดยอ้างอิงตัวเลขจากผลลัพธ์จริง
- ระดับทดสอบความทำซ้ำได้: Restart Kernel → Run All แล้วตรวจสอบว่าทุก Cell รันผ่านโดยไม่ต้องแก้ตัวแปรด้วยมือ
#ตัวอย่างคำตอบบางส่วน
summary = pd.Series({
"transactions": len(df_clean),
"total_revenue": df_clean["revenue"].sum(),
"average_revenue": df_clean["revenue"].mean(),
})
print(summary)
pivot = pd.pivot_table(
df_clean,
index="product",
columns="region",
values="revenue",
aggfunc="sum",
fill_value=0,
)
display(pivot)
average_revenueในตัวอย่างหมายถึงรายได้เฉลี่ย ต่อแถวธุรกรรม ไม่ใช่ต่อชิ้นสินค้า
#13. แนวปฏิบัติที่แนะนำ (Best Practices)
- แยก Python Environment ตามโปรเจกต์ และไม่ Commit
.venv/ลง Git - เก็บข้อมูลดิบใน
data/และผลลัพธ์ในreports/หรือfigures/ - ตั้งชื่อ Notebook ให้สื่อความหมาย เช่น
sales_analysis.ipynb - เริ่ม Notebook ด้วย Markdown ระบุวัตถุประสงค์ ชุดข้อมูล และสมมติฐาน
- ตรวจสอบการทำงานแบบ Restart Kernel → Run All ก่อนเผยแพร่
- หลีกเลี่ยงเก็บรหัสผ่าน API Key และข้อมูลส่วนบุคคลจริงไว้ใน Cell หรือ Output
- แยกฟังก์ชันที่ใช้ซ้ำและ Logic สำหรับ Production ไปเก็บในไฟล์
.pyและเขียน Unit Test ให้เหมาะสม - ถ้า Notebook มีข้อมูลอ่อนไหว ให้ล้าง Output ก่อนแชร์หรือ Commit
ไฟล์ .gitignore ตัวอย่าง:
.venv/
__pycache__/
.ipynb_checkpoints/
.env
*.pyc
.DS_Store
#14. สรุป
Workshop นี้ครอบคลุมตั้งแต่ ติดตั้งเครื่องมือ → สร้าง Virtual Environment → เลือก Kernel → เขียนและรัน Python ใน Notebook → วิเคราะห์ CSV ด้วย Pandas → สร้างกราฟด้วย Matplotlib → ส่งออกรายงาน สามารถใช้เป็นพื้นฐานต่อยอดไปสู่การวิเคราะห์ข้อมูลขนาดใหญ่ การทดลองโมเดล Machine Learning และงานวิจัยเชิงทดลองได้
#15. แหล่งอ้างอิงและอ่านเพิ่มเติม
- Python in Visual Studio Code
- Manage Jupyter Kernels in VS Code
- Python Interactive Window in VS Code
- Python
venv— Official Documentation - Pandas — Getting Started
- Matplotlib — Tutorials