Skip to content

📘 Buổi 18: Capstone — Project Kickoff — Bắt đầu dự án xin việc

Portfolio quyết định 70% phỏng vấn DA. Làm project thật, không phải bài tập.

🎯 Mục tiêu buổi học

Sau buổi này, học viên sẽ:

  1. Chọn đề tài capstone: có data, business context, đủ scope
  2. Thu thập và đánh giá chất lượng dataset
  3. Lập kế hoạch phân tích: questions → methods → deliverables → timeline
  4. Setup project repository (Git) cho portfolio

📋 Tổng quan

Qua 17 buổi trước, bạn đã nắm vững toàn bộ Data Analytics workflow — từ Excel/Google Sheets (Buổi 2-5), SQL (Buổi 6), Python + Pandas (Buổi 7-8), EDA + Visualization (Buổi 9-11), Storytelling (Buổi 12), Business Metrics (Buổi 13), Industry Analytics (Buổi 14), A/B Testing (Buổi 15), Time Series (Buổi 16), và Machine Learning basics (Buổi 17). Bạn có skill. Nhưng skill không portfolio = vô hình với nhà tuyển dụng.

Buổi 18 bắt đầu chuỗi 3 buổi Capstone Project — dự án tổng hợp tất cả kiến thức đã học thành một portfolio piece thực tế, đủ sức thuyết phục nhà tuyển dụng rằng bạn là DA có năng lực. Đây không phải bài tập — đây là dự án xin việc.

Theo LinkedIn Talent Solutions (2025), 72% hiring managers kiểm tra portfolio/GitHub trước khi phỏng vấn DA. Resume có portfolio project: callback rate 3.2x so với resume chỉ liệt kê skills. Một capstone project tốt = bằng chứng bạn biết làm, không chỉ biết nói.

mermaid
flowchart LR
    A["📥 Skills<br/>Buổi 1-17"] --> B["🎯 Project Kickoff<br/>✅ Buổi 18: Chọn đề + Setup"]
    B --> C["📊 Analysis & Dashboard<br/>Buổi 19: Phân tích + BI"]
    C --> D["🎤 Presentation<br/>Buổi 20: Present + Portfolio"]
    style B fill:#e8f5e9,stroke:#4caf50,stroke-width:3px

💡 Portfolio vs Resume — Nhà tuyển dụng nghĩ gì?

Tình huốngKhông PortfolioCó Portfolio
Apply vị trí Junior DA"Biết SQL, Python, Tableau" — ai cũng viết thếGitHub repo: E-commerce analysis, dashboard, recommendations → phỏng vấn
Phỏng vấn hỏi "show me your work""Em... chưa có project cụ thể" 😬"Đây là churn analysis em làm, từ EDA đến model, insight gì, recommend gì" → offer
Cạnh tranh 200 ứng viên1 trong 200 CV giống nhau1 trong 15 người có portfolio → top shortlist
Đàm phán lương"Em muốn X triệu" — không evidence"Project em tạo insight tiết kiệm Y tỷ" → negotiation power

📌 Phần 1: Chọn đề tài Capstone — Real Projects, Not Exercises

5 Tiêu chí chọn đề tài tốt

Không phải đề tài nào cũng phù hợp cho capstone. Đề tài tốt phải đáp ứng 5 tiêu chí — nhớ tắt là DRBST:

Tiêu chíMô tả❌ Ví dụ xấu✅ Ví dụ tốt
D — Data AvailableCó dataset thật, đủ lớn (≥ 1,000 rows), clean enoughData bạn tự tạo randomKaggle dataset 50K rows với context
R — Real Business ContextCó business problem rõ ràng, không chỉ "phân tích cho vui""Phân tích dataset Titanic" (cũ, overused)"Phân tích churn → retention strategy"
B — Business ImpactInsight dẫn đến hành động cụ thể, đo được ROI"Thống kê mô tả demographics""Segment khách hàng → personalized marketing → +15% conversion"
S — Scope 2 tuầnĐủ lớn để showcase skill, đủ nhỏ để hoàn thành trong 2 tuần"Xây ML production pipeline end-to-end""EDA + Dashboard + 5 insights + recommendations"
T — Tell-able StoryCó thể kể thành story hấp dẫn trong 5 phút presentation"Regression trên dataset XYZ""Tại sao khách hàng Gen Z rời bỏ → giải pháp?"

10 Đề tài gợi ý (đã kiểm chứng phù hợp)

mermaid
mindmap
  root((Capstone<br/>Ideas))
    E-commerce
      Customer Segmentation
      Sales Forecasting
      Product Recommendation
    Marketing
      Campaign ROI Analysis
      Channel Attribution
      Customer Journey
    HR & People
      Employee Attrition
      Salary Benchmarking
      Hiring Funnel Analysis
    Finance & Operations
      Revenue Forecasting
      Supply Chain Optimization
      Credit Risk Analysis

Top 5 đề tài được nhà tuyển dụng đánh giá cao nhất:

#Đề tàiDatasetBusiness QuestionsTools
1E-commerce Customer SegmentationBrazilian E-commerce (Olist) — 100K ordersSegment nào giá trị nhất? Retention rate? Upsell opportunities?Python, SQL, Tableau
2Marketing Campaign ROIMarketing Campaign dataset (Kaggle) — 50K customersCampaign nào ROI cao nhất? Channel nào convert tốt? Budget allocation?Python, Excel, Power BI
3HR Employee AttritionIBM HR Analytics — 1,470 employeesAi sắp nghỉ? Factor nào gây attrition? Cost of turnover?Python, SQL, Dashboard
4Sales ForecastingRetail Sales dataset — 500K transactionsRevenue prediction Q+1? Seasonal patterns? Product trends?Python, Time Series, BI
5Customer Churn AnalysisTelecom/SaaS Churn — 7K–10K customersChurn rate by segment? Predictive factors? Retention strategies?Python, ML, Dashboard

Tránh 5 Pitfalls phổ biến

⚠️ Capstone Pitfalls — Đừng mắc phải!

  1. Đề tài quá rộng: "Phân tích toàn bộ ngành E-commerce Việt Nam" → không thể hoàn thành 2 tuần. Fix: Thu hẹp: "Phân tích customer segmentation của 1 dataset E-commerce cụ thể"
  2. Data không có sẵn: "Phân tích data nội bộ công ty X" → không access được. Fix: Dùng public dataset (Kaggle, UCI, government data)
  3. Titanic/Iris syndrome: Overused datasets → nhà tuyển dụng đã thấy 1,000 lần. Fix: Chọn dataset ít phổ biến hơn, hoặc approach khác biệt
  4. Chỉ có EDA, không có insight: "Biểu đồ đẹp nhưng so what?" Fix: Mỗi chart phải trả lời 1 business question, mỗi analysis phải dẫn đến recommendation
  5. Không có README: Repo trống trơn, không ai hiểu bạn đã làm gì. Fix: README là "landing page" — phải có context, methodology, key findings

📌 Phần 2: Data Collection — Thu thập và đánh giá Dataset

Data Sources đáng tin cậy

SourceLoại dataProsConsVí dụ
KaggleĐa dạng, structuredClean, community notebooks, contextOverused, syntheticE-commerce, HR, Marketing
UCI ML RepositoryAcademic datasetsWell-documented, benchmarkCũ, nhỏWine Quality, Bank Marketing
Google Dataset SearchCross-domainReal-world, diverseChất lượng không đồng đềuGovernment, research data
Government Open DataPublic sectorAuthentic, largeMessy, Vietnamese contextdata.gov, data.gov.vn
Public APIsReal-time dataFresh, scalableRate limits, auth requiredTwitter/X, Spotify, Weather
Web ScrapingCustom collectionExactly what you needLegal risks, maintenanceTiki, Shopee (cẩn thận TOS!)

Dataset Evaluation Checklist

Trước khi commit vào một dataset, đánh giá bằng checklist 10 điểm — dataset cần đạt ≥ 7/10 để phù hợp cho capstone:

╔════════════════════════════════════════════════════════════════╗
║              DATASET EVALUATION CHECKLIST (≥ 7/10)            ║
╠════════════════════════════════════════════════════════════════╣
║  1. ☐ Size ≥ 1,000 rows (lý tưởng ≥ 5,000)                  ║
║  2. ☐ ≥ 8 columns với mix numeric + categorical               ║
║  3. ☐ Có date/time column cho temporal analysis               ║
║  4. ☐ Missing values ≤ 30% overall                            ║
║  5. ☐ Có documentation / data dictionary                      ║
║  6. ☐ Business context rõ ràng (biết data về gì)             ║
║  7. ☐ Có target variable phù hợp (nếu cần prediction)        ║
║  8. ☐ License cho phép sử dụng (CC, public domain)            ║
║  9. ☐ Data không quá cũ (≤ 5 năm)                            ║
║ 10. ☐ Chưa bị overused (≠ Titanic, Iris, Boston Housing)     ║
╚════════════════════════════════════════════════════════════════╝

Data profiling nhanh bằng Python

python
import pandas as pd

# Đọc dataset
df = pd.read_csv('your_dataset.csv')

# --- DATA AUDIT REPORT ---
print("=" * 60)
print("📊 DATA AUDIT REPORT")
print("=" * 60)

# 1. Shape
print(f"\n📐 Shape: {df.shape[0]:,} rows × {df.shape[1]} columns")

# 2. Data types
print(f"\n📋 Data Types:")
print(df.dtypes.value_counts())

# 3. Missing values
missing = df.isnull().sum()
missing_pct = (missing / len(df) * 100).round(1)
missing_report = pd.DataFrame({
    'Missing': missing,
    'Percent': missing_pct
}).query('Missing > 0').sort_values('Percent', ascending=False)
print(f"\n❓ Missing Values:")
print(missing_report if len(missing_report) > 0 else "No missing values!")

# 4. Numeric summary
print(f"\n📈 Numeric Summary:")
print(df.describe().round(2))

# 5. Categorical summary
cat_cols = df.select_dtypes(include='object').columns
for col in cat_cols:
    print(f"\n🏷️ {col}: {df[col].nunique()} unique values")
    print(df[col].value_counts().head(5))

# 6. Duplicate check
dups = df.duplicated().sum()
print(f"\n🔄 Duplicates: {dups} ({dups/len(df)*100:.1f}%)")

# 7. Score
print(f"\n{'=' * 60}")
print(f"✅ DATASET VIABILITY: {'PASS' if df.shape[0] >= 1000 else 'FAIL'}")
print(f"{'=' * 60}")

Khi thu thập và sử dụng data cho capstone, luôn xem xét 3 khía cạnh đạo đức:

Khía cạnhCâu hỏi cần đặt raHành động
PrivacyData có chứa PII (tên, email, phone)?Anonymize trước khi publish lên GitHub
ConsentData được thu thập có sự đồng ý?Ưu tiên public/open datasets
BiasData có đại diện? Có thiên lệch demographics?Document known limitations trong README

🚨 Tuyệt đối KHÔNG:

  • Upload data chứa PII lên public repo
  • Scrape data vi phạm Terms of Service
  • Dùng data từ công ty cũ/hiện tại mà không được phép
  • Bỏ qua license restrictions

📌 Phần 3: Project Planning — Từ Questions đến Deliverables

Viết Business Questions tốt

Một capstone tốt bắt đầu bằng 3-5 business questions — cụ thể, trả lời được bằng data, và dẫn đến action:

❌ Câu hỏi xấu✅ Câu hỏi tốtTại sao tốt?
"Data có gì thú vị?""Customer segment nào có LTV cao nhất?"Cụ thể metric (LTV), actionable (focus marketing)
"Churn rate bao nhiêu?""Churn rate khác nhau thế nào giữa contract types, và factors nào predict churn?"So sánh + causation, dẫn đến retention strategy
"Sales theo tháng""Revenue growth trend qua 12 tháng? Seasonal patterns nào ảnh hưởng inventory planning?"Temporal analysis + business application
"Demographics thống kê""Khách hàng nào respond tốt nhất với email marketing campaigns?"Target audience → improved ROAS
"Biểu đồ correlation""Factors nào ảnh hưởng mạnh nhất đến employee attrition, và cost per turnover ước tính bao nhiêu?"Feature importance + financial impact

Project Brief Template

╔═══════════════════════════════════════════════════════════════╗
║                    📋 PROJECT BRIEF                           ║
╠═══════════════════════════════════════════════════════════════╣
║ Title: [Tên project ngắn gọn, hấp dẫn]                       ║
║ Author: [Họ tên]                                              ║
║ Date: [Ngày bắt đầu]                                         ║
╠═══════════════════════════════════════════════════════════════╣
║ 🎯 BUSINESS PROBLEM:                                         ║
║ [1-2 câu mô tả vấn đề business]                              ║
║                                                               ║
║ 📊 DATASET:                                                   ║
║ - Source: [Kaggle / API / Scraping]                           ║
║ - Size: [X rows × Y columns]                                 ║
║ - Time range: [Từ - Đến]                                     ║
║ - Key variables: [Liệt kê 5-8 biến quan trọng]              ║
║                                                               ║
║ ❓ BUSINESS QUESTIONS (3-5):                                  ║
║ 1. [Question 1]                                               ║
║ 2. [Question 2]                                               ║
║ 3. [Question 3]                                               ║
║ 4. [Question 4] (optional)                                    ║
║ 5. [Question 5] (optional)                                    ║
║                                                               ║
║ 🔧 METHODS & TOOLS:                                          ║
║ - Analysis: [EDA, Segmentation, Regression, ...]              ║
║ - Tools: [Python, SQL, Tableau/Power BI]                      ║
║ - Libraries: [pandas, matplotlib, scikit-learn, ...]          ║
║                                                               ║
║ 📦 DELIVERABLES:                                              ║
║ - [ ] Jupyter Notebook (analysis + code)                      ║
║ - [ ] Dashboard (Tableau / Power BI)                          ║
║ - [ ] Presentation (key insights + recommendations)           ║
║ - [ ] GitHub README (project documentation)                   ║
║                                                               ║
║ 📅 TIMELINE:                                                  ║
║ - Week 1: Data cleaning + EDA + initial insights              ║
║ - Week 2: Deep analysis + Dashboard + Presentation            ║
╚═══════════════════════════════════════════════════════════════╝

Methods → Questions Mapping

mermaid
flowchart TD
    Q1["❓ Q1: Segment nào<br/>giá trị nhất?"] --> M1["📊 RFM Analysis<br/>+ Clustering"]
    Q2["❓ Q2: Churn rate<br/>theo segment?"] --> M2["📈 Cohort Analysis<br/>+ Survival"]
    Q3["❓ Q3: Revenue<br/>prediction?"] --> M3["🤖 Linear Regression<br/>+ Time Series"]
    Q4["❓ Q4: Campaign<br/>hiệu quả?"] --> M4["🧪 A/B Test Analysis<br/>+ ROI Calc"]
    Q5["❓ Q5: Factor nào<br/>ảnh hưởng nhất?"] --> M5["🌲 Feature Importance<br/>+ Correlation"]

    M1 --> D["📦 Deliverables"]
    M2 --> D
    M3 --> D
    M4 --> D
    M5 --> D

    D --> D1["📓 Notebook"]
    D --> D2["📊 Dashboard"]
    D --> D3["🎤 Presentation"]

Timeline chi tiết — 2 tuần

NgàyTaskOutputChecklist
Day 1Chọn dataset + Data auditData audit report☐ Dataset downloaded ☐ Profile complete ☐ Viability confirmed
Day 2Data cleaning + WranglingClean dataset☐ Missing handled ☐ Types correct ☐ Outliers checked
Day 3-4EDA — Univariate + BivariateEDA notebook + charts☐ Distributions ☐ Correlations ☐ Key patterns found
Day 5Answer Q1-Q2 (descriptive)Analysis notebook☐ Segments identified ☐ Metrics calculated
Day 6-7Answer Q3-Q5 (analytical/predictive)Model/analysis results☐ Models trained/analysis done ☐ Results validated
Day 8-9Dashboard design + buildInteractive dashboard☐ KPI cards ☐ Charts ☐ Filters ☐ Story flow
Day 10Key insights + RecommendationsInsight document☐ 5+ insights ☐ Actions ☐ Expected impact
Day 11-12Presentation slidesSlide deck 10-15 slides☐ Problem ☐ Data ☐ Analysis ☐ Insights ☐ Recs
Day 13Polish GitHub repo + READMEComplete repo☐ README ☐ Code clean ☐ .gitignore ☐ License
Day 14Review + Practice presentFinal deliverables☐ Peer review ☐ Dry run ☐ All links work

📌 Phần 4: Portfolio Setup — Git, GitHub, README

Git cơ bản — 10 lệnh cần biết

Git là version control system — giúp bạn theo dõi thay đổi code, backup, và showcase project cho nhà tuyển dụng. GitHub profile = CV online cho DA.

bash
# ============================================
# GIT BASICS — 10 LỆNH QUAN TRỌNG NHẤT
# ============================================

# 1. Cấu hình lần đầu
git config --global user.name "Tên của bạn"
git config --global user.email "email@example.com"

# 2. Tạo repo mới
git init

# 3. Kiểm tra trạng thái
git status

# 4. Thêm files vào staging
git add .                    # Thêm tất cả files
git add notebook.ipynb       # Thêm 1 file cụ thể

# 5. Commit (lưu snapshot)
git commit -m "Initial commit: add dataset and EDA notebook"

# 6. Xem lịch sử commit
git log --oneline

# 7. Kết nối remote (GitHub)
git remote add origin https://github.com/username/project-name.git

# 8. Push lên GitHub
git push -u origin main

# 9. Pull (cập nhật từ remote)
git pull origin main

# 10. Xem diff (thay đổi so với commit trước)
git diff

Commit Message Best Practices

# ❌ Xấu:
git commit -m "update"
git commit -m "fix"
git commit -m "stuff"

# ✅ Tốt — format: <type>: <description>
git commit -m "feat: add EDA notebook with sales distribution analysis"
git commit -m "fix: handle missing values in customer_age column"
git commit -m "docs: update README with project description and methodology"
git commit -m "data: add cleaned dataset v2 with outlier treatment"
git commit -m "viz: create Tableau dashboard for customer segmentation"

GitHub Repository Structure

📁 capstone-ecommerce-analysis/
├── 📄 README.md                  ← Landing page — "sales pitch" cho project
├── 📄 .gitignore                 ← Bỏ qua files không cần track
├── 📄 LICENSE                    ← MIT hoặc CC BY 4.0
├── 📁 data/
│   ├── 📄 raw/                   ← Data gốc, KHÔNG chỉnh sửa
│   │   └── ecommerce_data.csv
│   ├── 📄 processed/             ← Data đã clean
│   │   └── ecommerce_clean.csv
│   └── 📄 data_dictionary.md     ← Mô tả từng column
├── 📁 notebooks/
│   ├── 📄 01_data_cleaning.ipynb
│   ├── 📄 02_eda.ipynb
│   ├── 📄 03_analysis.ipynb
│   └── 📄 04_modeling.ipynb      ← (optional)
├── 📁 dashboards/
│   ├── 📄 dashboard_screenshot.png
│   └── 📄 dashboard_link.md      ← Link Tableau Public / Power BI
├── 📁 reports/
│   ├── 📄 presentation.pdf
│   └── 📄 key_insights.md
└── 📁 src/                       ← (optional) Reusable functions
    └── 📄 utils.py

.gitignore cho DA Project

gitignore
# Data files lớn (dùng Git LFS hoặc link download)
*.csv
*.xlsx
*.parquet
data/raw/

# Jupyter checkpoints
.ipynb_checkpoints/

# Python
__pycache__/
*.pyc
*.pyo
.env
venv/
.venv/

# OS files
.DS_Store
Thumbs.db
desktop.ini

# IDE
.vscode/
.idea/

# Tableau
*.twbx
*.hyper

💡 Data quá lớn?

Nếu dataset > 100MB — KHÔNG push lên GitHub. Thay vào đó:

  1. Thêm data folder vào .gitignore
  2. Trong README, ghi link download dataset (Kaggle link, Google Drive)
  3. Trong notebook, viết code download: kaggle datasets download -d dataset-name

README.md Template — "Landing Page" cho Project

README là thứ đầu tiên nhà tuyển dụng đọc. Nó phải trả lời 5 câu hỏi trong 30 giây:

markdown
# 📊 [Project Title — Catchy & Descriptive]

> One-liner mô tả project (1-2 câu)

![Dashboard Screenshot](dashboards/dashboard_screenshot.png)

## 🎯 Business Problem
[2-3 câu: Vấn đề gì? Tại sao quan trọng? Impact?]

## 📊 Dataset
| Attribute | Detail |
|-----------|--------|
| **Source** | [Kaggle / UCI / API] (link) |
| **Size** | X rows × Y columns |
| **Period** | Month/Year — Month/Year |
| **Key Variables** | var1, var2, var3, var4, var5 |

## ❓ Key Questions
1. [Business Question 1]
2. [Business Question 2]
3. [Business Question 3]

## 🔧 Tools & Methods
- **Python**: pandas, matplotlib, seaborn, scikit-learn
- **SQL**: PostgreSQL / MySQL queries
- **BI**: Tableau / Power BI dashboard
- **Analysis**: EDA, Segmentation, Regression, A/B Testing

## 📈 Key Findings
1. **Finding 1**: [Insight + metric + so what]
2. **Finding 2**: [Insight + metric + so what]
3. **Finding 3**: [Insight + metric + so what]

## 💡 Recommendations
1. [Action 1]: Expected impact [metric]
2. [Action 2]: Expected impact [metric]
3. [Action 3]: Expected impact [metric]

## 📁 Project Structure
[Mô tả cấu trúc folder — xem mẫu ở trên]

## 🚀 How to Run
1. Clone repo: `git clone https://github.com/username/project.git`
2. Install: `pip install -r requirements.txt`
3. Run notebooks in order: 01 → 02 → 03

## 👤 Author
**[Tên]** — Data Analyst
- 🔗 [LinkedIn](linkedin.com/in/your-profile)
- 📧 email@example.com

LinkedIn & Personal Site Integration

Portfolio project hoàn chỉnh cần được publish ở 3 nơi:

PlatformContentMục đích
GitHubCode + Notebook + READMEShowcase technical skills
LinkedInPost tóm tắt + screenshotsNetworking + visibility
Tableau Public / Power BIInteractive dashboardShowcase BI skills

LinkedIn post template:

📊 Just completed my Data Analytics Capstone Project!

🎯 Problem: [1 câu]
📈 Key Finding: [Insight ấn tượng nhất + metric]
💡 Recommendation: [Action + expected impact]

Tools: Python | SQL | Tableau
🔗 GitHub: [link]
🔗 Dashboard: [link]

#DataAnalytics #Portfolio #DataScience #Python

🔑 Tổng kết Buổi 18

mermaid
flowchart TD
    A["1️⃣ Chọn đề tài<br/>DRBST criteria"] --> B["2️⃣ Thu thập data<br/>Evaluate dataset"]
    B --> C["3️⃣ Project Planning<br/>Questions → Methods"]
    C --> D["4️⃣ Setup Git repo<br/>README + Structure"]
    D --> E["🎯 Ready for<br/>Buổi 19: Analysis!"]

    style E fill:#e8f5e9,stroke:#4caf50,stroke-width:3px

Key Takeaways

#TakeawayAction
1Portfolio > ResumeCó ít nhất 1 capstone project trên GitHub
2Đề tài tốt = DRBSTData, Real context, Business impact, Scope 2 tuần, Tell-able story
3Data audit TRƯỚC khi phân tíchChecklist 10 điểm, ≥ 7/10 mới dùng
43-5 business questionsCụ thể, data-answerable, actionable
5README = Landing page30 giây để impress nhà tuyển dụng
6Git workflowinit → add → commit → push — thường xuyên!

Chuẩn bị cho Buổi 19

Trước khi vào Buổi 19 (Analysis & Dashboard), hãy chắc chắn bạn đã:

☐ Chọn đề tài đạt 5/5 tiêu chí DRBST
☐ Download dataset + Data audit report (≥ 7/10 checklist)
☐ Viết Project Brief (5 questions + methods + tools)
☐ Setup Git repo + Push README.md lên GitHub
☐ Data đã clean cơ bản (missing values, types, outliers)

📚 Tài liệu tham khảo

  1. Microsoft TDSP — Team Data Science Process: docs.microsoft.com
  2. Git Documentation — Official: git-scm.com/doc
  3. Kaggle Learn — Datasets & Notebooks: kaggle.com/learn
  4. GitHub Guides — Hello World: guides.github.com
  5. Data Ethics — ODI: theodi.org/topic/data-ethics