Thông tin chung
- Tạo GitHub repo riêng cho nhóm, để ở chế độ riêng tư (private), và mời tất cả thành viên trong nhóm vào làm cộng tác viên (collaborators).
-
Chia sẻ quyền đọc
(read access) với account GitHub của giảng viên:
@tuanphong-uet(Phong),daovietanh190499(Việt Anh),ptdu-uet(Du),20020054-spm(Huỳnh). - Điền link repo vào spreadsheet ở phía trên.
- GitHub repo đầy đủ (mã nguồn, dữ liệu thô và đã xử lý, báo cáo) và
README hướng dẫn chạy lại, có
requirements.txtliệt kê thư viện đã dùng. - Xem thêm thông tin tại mục Sản phẩm cần bàn giao.
Tổng quan về dữ liệu
Giới thiệu
TLC Trip Record Data là bộ dữ liệu chuyến đi taxi do NYC Taxi & Limousine Commission công bố, phát hành theo tháng cho từng loại hình (yellow/green/FHV). Dữ liệu thường có định dạng CSV và/hoặc Parquet, bao gồm thời điểm đón/trả, số hành khách, quãng đường, mã vùng đón/trả (PULocationID, DOLocationID), thông tin chi phí (fare/tip/tolls/total), v.v.
Trang tải dữ liệu chính thức: https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page (Ưu tiên Parquet khi khả dụng; một số năm/tháng có thể vẫn ở định dạng CSV.)
Phạm vi dữ liệu
Tất cả các nhóm sử dụng yellow taxi và phân tích toàn bộ zones của New York City (NYC). Mỗi nhóm sẽ được phân công 01 năm dữ liệu (theo bảng phân công trong spreadsheet).
- Nhóm 1.1: Dữ liệu năm 2019.
- Nhóm 1.2: Dữ liệu năm 2020.
- Nhóm 1.3: Dữ liệu năm 2021.
- Nhóm 1.4: Dữ liệu năm 2022.
- Nhóm 1.5: Dữ liệu năm 2023.
Mục tiêu
- Thành thạo nạp/ghi dữ liệu lớn (CSV/Parquet) và tổ chức thư mục làm việc.
- Rèn luyện làm sạch, chuẩn hoá, tạo đặc trưng bằng Python, NumPy, Pandas.
- Thực hành trực quan hoá bằng Matplotlib/Seaborn.
- Nâng cao kỹ năng tổng hợp & diễn giải dữ liệu thực tế; báo cáo minh bạch.
Công việc cần thực hiện
0) Khởi tạo dự án & GitHub repo
Yêu cầu chung: Tạo GitHub repo riêng cho nhóm (private); mời giảng viên làm collaborator.
-
Tạo repo mới trên GitHub, đặt tên rõ ràng (ví dụ:
2526-LTXLDL-Project-<Tên-Nhóm>). - Mời giảng viên làm collaborator với quyền đọc (read access).
- Điền link repo vào spreadsheet phân công nhóm. Hạn cuối: trước 23:59:59, ngày 10/11/2025.
1) Thu thập & tổ chức dữ liệu
Yêu cầu chung: Tải đủ 12 tệp theo tháng cho yellow taxi của năm mà nhóm mình được phân công.
Dữ liệu thô cần tải về từ trang chính thức, bao gồm:
- 12 tệp Parquet theo tháng cho năm đã được phân công (ví dụ: từ
yellow_tripdata_2022-01.parquetđếnyellow_tripdata_2022-12.parquet). - Tệp
taxi_zone_lookup.csvđể tra mã vùng sang tên khu vực.
Tổ chức tệp/thư mục với cấu trúc rõ ràng: raw/, processed/,
figures/,
reports/, v.v.
2) Làm sạch & chuẩn hoá
Yêu cầu chung: Xây dựng bộ quy tắc đảm bảo chất lượng dữ liệu (QA) minh bạch; ưu tiên gắn cờ thay vì xoá dữ liệu; chuẩn hoá kiểu dữ liệu, danh mục (vd. payment_type) và trường thời gian.
Ví dụ quy tắc phát hiện dữ liệu ngoại lệ: dropoff < pickup; trip_duration ≤ 0 hoặc quá dài; trip_distance ≤ 0 hoặc cực lớn; tốc độ âm hoặc quá cao; tiền âm bất thường; bản ghi trùng lặp, v.v.
Lưu kết quả: Tóm tắt số lượng/tỷ lệ theo từng quy tắc
và quyết định xử lý (giữ/loại khỏi thống kê KPI - mục 3).
Ghi báo cáo QA này vào reports/qa_summary.csv và mô tả rõ trong báo cáo PDF cuối cùng.
Lưu dữ liệu đã làm sạch/chuẩn hoá (ưu tiên Parquet) vào processed/.
3) Tổng hợp & KPI
KPI (Key Performance Indicator) là chỉ số cốt lõi gắn với mục tiêu, có công thức & đơn vị rõ ràng.
Yêu cầu chung: Tổng hợp theo ngày/tuần/tháng; mỗi KPI cần tên → mục tiêu → công thức → đơn vị; tất cả tính sau khi hoàn thành QA ở mục 2.
Ví dụ KPI: Số trips trên ngày; Duration p50 (median) theo tháng; Duration p95 theo thứ trong tuần; Speed p50 theo giờ; % tổng năm theo tháng; Index(100) theo ngày; Indexdow theo thứ trong tuần, v.v.
Lưu kết quả: Ghi các bảng KPI vàoprocessed/ với tên tệp theo quy ước:
processed/kpi_daily_YYYY.csv,
processed/kpi_weekly_YYYY.csv, processed/kpi_monthly_YYYY.csv
(đổi YYYY theo năm của nhóm).
4) Trực quan hoá
Yêu cầu chung: Tối thiểu 5 hình có tiêu đề, nhãn trục tung/hoành, đơn vị, chú giải; ưu tiên thông điệp rõ ràng.
Gợi ý:
- Đường theo thời gian (ngày/tháng) cho số chuyến hoặc thời lượng.
- Cột so sánh (ví dụ top khung giờ/zone theo chỉ số đã chuẩn hoá).
- Heatmap hour × weekday cho mật độ chuyến.
Lưu kết quả: Lưu hình vào figures/ với tên dễ tra cứu (ví dụ:
figures/trips_over_time.png, figures/heatmap_hour_weekday.png).
5) Diễn giải & kết luận
Yêu cầu chung: Trình bày phát hiện chính, nêu bối cảnh theo năm (sự kiện, mùa vụ), thảo luận giới hạn và đề xuất tiếp theo.
Gợi ý:
- Tóm tắt 3–5 phát hiện đáng chú ý, kèm hình/bảng minh hoạ.
- Nêu ảnh hưởng của các quy tắc QA và dữ liệu thiếu/thừa.
- Đề xuất cải tiến (thu thập, xử lý, KPI mới hoặc phân tích mở rộng).
- Bình luận bối cảnh đặc thù theo năm có thể ảnh hưởng đến các chỉ số KPI.
Khuyến khích so sánh nhanh với một năm liền kề (nếu có) ở mức mô tả.
6) Viết báo cáo kỹ thuật
Yêu cầu chung: Viết báo cáo kỹ thuật (theo mẫu dưới đây) với
cấu trúc mạch lạc, tham chiếu
hình/bảng.
Báo cáo xuất ra PDF và lưu vào reports/report-<tên-nhóm>.pdf.
Riêng mã nguồn cần có README.md hướng dẫn chạy lại, công bố seed, có
requirements.txt.
7) Nâng cao (tuỳ chọn, điểm thưởng)
Yêu cầu chung: Thực hiện thêm 1–2 phân tích nâng cao để mở rộng kết quả chính. Ưu tiên cách làm đơn giản, minh bạch, tái lập (reproducible); nêu rõ mục tiêu, dữ liệu dùng, phương pháp và cách đánh giá. Phần này không bắt buộc, nếu đạt yêu cầu sẽ có điểm thưởng từ +5 đến +20.
Gợi ý hướng mở rộng:
- Dự báo nhu cầu (trips) theo ngày/giờ: so sánh baseline (cùng thứ của tuần trước) với mô hình đơn giản (hồi quy tuyến tính/ARIMA). Báo cáo MAE, MAPE, v.v.
- Phát hiện bất thường thời lượng/tốc độ: điểm z (z-score) theo hour × weekday hoặc mô hình đơn giản (Isolation Forest). Liệt kê & diễn giải các ca bất thường điển hình.
- Phân cụm mẫu hình (k-means) cho zone/khung giờ dựa trên vector KPI (p50/p95 thời lượng, trips index). Đặt tên cụm & mô tả đặc trưng.
- Chỉ số chuẩn hoá nâng cao: “base = 100” theo median năm hoặc theo từng thứ trong tuần; phân rã mùa vụ/ngoại lệ ngắn hạn.
- Kiểm thử dữ liệu nâng cao: thiết kế bộ quy tắc QA tự động, dashboard tỉ lệ lỗi theo tháng, phân tích tác động QA lên KPI.
Sản phẩm cần bàn giao
-
Mã nguồn (Notebook/script) chạy lại được toàn bộ pipeline: nạp → làm sạch/chuẩn hoá
→ tổng hợp → vẽ hình. Có chú thích rõ ràng từng bước ghi vào
README.md. Ghi toàn bộ các thư viện và phiên bản đã dùng vào filerequirements.txt(để có thể tái lập môi trường Python nhanh bằngpip install -r requirements.txt).
Cấu trúc thư mục đề xuất
. ├── raw/ # Dữ liệu thô ├── processed/ # Dữ liệu đã xử lý & bảng tổng hợp ├── figures/ # Hình trực quan hoá ├── reports/ # Báo cáo kỹ thuật ├── src/ # Jupyter Notebooks hoặc Python scripts ├── README.md # Hướng dẫn chạy lại └── requirements.txt # Thư viện & phiên bản -
Dữ liệu: bản thô (đã tải, ở
raw/) và bản đã xử lý (Parquet sau QA, báo cáo QA, v.v., ởprocessed/). -
Báo cáo kỹ thuật mô tả dữ liệu, quy tắc chất lượng,
KPI, kết quả và giới hạn, kèm hình/bảng minh hoạ, diễn giải kết quả.
Yêu cầu:- Dùng cấu trúc mẫu được cung cấp (xem bên dưới).
- Tuỳ chọn sử dụng LaTeX, Microsoft Word / Google Docs hoặc bất cứ phần mềm soạn thảo nào khác.
- Xuất file báo cáo ra
reports/report-<tên-nhóm>.pdf. - Tuỳ chọn: Có thể viết bằng tiếng Việt hoặc tiếng Anh.
Cấu trúc báo cáo kỹ thuật
- Thông tin cơ bản: tên dự án, tên nhóm, thành viên, năm dữ liệu, ngày nộp, commit hash được dùng để xác định phiên bản mã nguồn sẽ chấm.
- Giới thiệu & tổng quan dữ liệu: nguồn, phạm vi, đặc điểm chính.
- Làm sạch & chuẩn hoá: quy tắc QA, tác động, chuẩn hoá danh mục/thời gian.
- Tổng hợp & KPI: định nghĩa, công thức, đơn vị, bảng tổng hợp.
- Trực quan hoá: ≥ 5 hình minh hoạ với chú thích đầy đủ.
- Các phân tích nâng cao (nếu có): mục tiêu, phương pháp, đánh giá, diễn giải.
- Diễn giải & kết luận: phát hiện chính, bối cảnh, giới hạn, đề xuất tiếp theo.
- Tham khảo: liệt kê tài liệu, trang web, thư viện đã dùng.
Đóng dấu nộp bài: Tạo Git tag hoặc Release trước deadline và ghi rõ
commit hash được chấm trong báo cáo.
README.md.
Cách tính điểm
| Hạng mục | Mô tả | Điểm |
|---|---|---|
| Thu thập dữ liệu | Đúng năm được phân; kiểm kê đủ/thiếu 12 tháng; ghi nguồn & phiên bản dữ liệu; tổ chức tệp/thư mục rõ ràng. | 10 |
| Làm sạch & chuẩn hoá | Quy tắc đảm bảo chất lượng dữ liệu (QA) hợp lý (thời lượng/quãng đường/tốc độ/giá trị âm); gắn cờ & báo cáo tác động; chuẩn hoá danh mục & thời gian. | 20 |
| Bảng tổng hợp & KPI | Định nghĩa rõ công thức/đơn vị cho các KPI; kết quả tính KPI; lưu bảng đúng định dạng. | 20 |
| Trực quan hoá | ≥ 5 hình (đường/cột/heatmap, v.v.); tiêu đề, trục, đơn vị, chú giải đầy đủ; thông điệp rõ ràng; nhất quán phong cách. | 20 |
| Diễn giải & kết luận | Nêu phát hiện chính và bối cảnh; thảo luận giới hạn dữ liệu & tác động QA; đề xuất tiếp theo. | 10 |
| Viết báo cáo & tái lập | Cấu trúc mạch lạc; tham chiếu hình/bảng; README & hướng dẫn chạy lại; công bố seed, requirements, và liên kết repo; tổ chức repo rõ ràng. | 10 |
| Trình bày báo cáo và vấn đáp | Trình bày mạch lạc, rõ ràng; trả lời câu hỏi; thảo luận quy trình & kết quả dự án. | 10 |
| Điểm thưởng (tuỳ chọn) | Phân tích nâng cao: dự báo, phát hiện bất thường, phân cụm, chuẩn hoá nâng cao, kiểm thử dữ liệu nâng cao… Có đánh giá (MAE/MAPE/F1 hoặc backtest), minh bạch & tái lập. | +0 đến +20 |