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
Inside Airbnb cung cấp các snapshot dữ liệu Airbnb theo thành phố và theo thời điểm thu thập (collection date). Các tệp thường ở định dạng CSV (đôi khi kèm gz), bao gồm: listings (thông tin chỗ ở & giá), calendar (tính sẵn sàng & giá theo ngày), reviews (đánh giá), và neighbourhoods (ranh giới khu vực GeoJSON/CSV) tuỳ thành phố.
Trang tải dữ liệu chính thức:
https://insideairbnb.com/get-the-data/
Tài liệu khám phá:
https://insideairbnb.com/explore
Phạm vi dữ liệu
Mỗi Nhóm chịu trách nhiệm 01 thành phố chính và so sánh chéo với hai thành phố đối chứng (theo bảng phân công trong spreadsheet).
Nhóm 4.1 — Phân tích Singapore
So sánh với: Bangkok, Taipei
- Singapore, Singapore, Singapore: 28 September, 2025; 25 June, 2025; 21 March, 2025; 28 December, 2024
- Bangkok, Central Thailand, Thailand: 24 June, 2025; 19 March, 2025; 25 December, 2024
- Taipei, Northern Taiwan, Taiwan: 29 June, 2025; 28 March, 2025; 31 December, 2024
Nhóm 4.2 — Phân tích Bangkok
So sánh với: Singapore, Taipei
- Bangkok, Central Thailand, Thailand: 24 June, 2025; 19 March, 2025; 25 December, 2024
- Singapore, Singapore, Singapore: 28 September, 2025; 25 June, 2025; 21 March, 2025; 28 December, 2024
- Taipei, Northern Taiwan, Taiwan: 29 June, 2025; 28 March, 2025; 31 December, 2024
Nhóm 4.3 — Phân tích Taipei
So sánh với: Bangkok, Singapore
- Taipei, Northern Taiwan, Taiwan: 29 June, 2025; 28 March, 2025; 31 December, 2024
- Bangkok, Central Thailand, Thailand: 24 June, 2025; 19 March, 2025; 25 December, 2024
- Singapore, Singapore, Singapore: 28 September, 2025; 25 June, 2025; 21 March, 2025; 28 December, 2024
Nhóm 4.4 — Phân tích Brussels
So sánh với: Berlin, Paris
- Brussels, Brussels, Belgium: 21 June, 2025; 16 March, 2025; 22 December, 2024
- Berlin, Berlin, Germany: 23 September, 2025; 20 June, 2025; 15 March, 2025; 21 December, 2024
- Paris, Île-de-France, France: 12 September, 2025; 06 June, 2025; 03 March, 2025; 06 December, 2024
Nhóm nhó 4.5 — Phân tích Berlin
So sánh với: Brussels, Paris
- Berlin, Berlin, Germany: 23 September, 2025; 20 June, 2025; 15 March, 2025; 21 December, 2024
- Brussels, Brussels, Belgium: 21 June, 2025; 16 March, 2025; 22 December, 2024
- Paris, Île-de-France, France: 12 September, 2025; 06 June, 2025; 03 March, 2025; 06 December, 2024
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 các 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
Mục tiêu: có được dữ liệu thô (raw data) để xử lý.
Yêu cầu: Tải các snapshot được yêu cầu cho thành phố chính và các thành phố đối chứng.
Tổ chức tệp/thư mục với cấu trúc rõ ràng:
raw/<city>/<snapshot_date>/,
processed/<city>/<snapshot_date>/, figures/, reports/,
src/.
2) Khám phá dữ liệu
Mục tiêu: Hiểu rõ cấu trúc, nội dung và chất lượng của bộ dữ liệu Airbnb trước khi tiến hành xử lý và làm sạch.
Yêu cầu:
- Khảo sát tổng quan về kích thước và cấu trúc dữ liệu của từng tệp (gợi ý các lệnh Python cơ bản:
df.info(), df.describe(), df.head()) - Nhận diện các trường dữ liệu, ý nghĩa của từng trường và mối liên hệ giữa các bảng.
- Thống kê và ghi nhận các vấn đề dữ liệu phổ biến:
- Giá trị bị thiếu (missing values), dữ liệu ngoại lệ (outliers), dữ liệu trùng lặp.
- Kiểu dữ liệu không phù hợp (ví dụ: giá lưu dưới dạng chuỗi).
- Phạm vi hoặc đơn vị không thống nhất giữa các snapshot.
- Đưa ra nhận xét ban đầu về mức độ đầy đủ và độ tin cậy của dữ liệu.
Kết quả mong đợi: Báo cáo ngắn gọn mô tả cấu trúc dữ liệu, số lượng bản ghi, tỷ lệ dữ liệu thiếu, và các phát hiện sơ bộ, phục vụ cho bước làm sạch và chuẩn hoá tiếp theo.
3) Làm sạch & chuẩn hoá
Mục tiêu: Đảm bảo dữ liệu Airbnb chính xác, nhất quán và sẵn sàng cho phân tích.
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. room_type, neighbourhood, price) và các trường thời gian (host_since, last_scraped).
Ví dụ quy tắc phát hiện dữ liệu ngoại lệ: giá (price) âm hoặc bằng 0; toạ độ (latitude, longitude) ngoài phạm vi hợp lệ. Dữ liệu đặt phòng có thể bị trùng hoặc chồng lấn giữa các snapshot, cần được xử lý để đảm bảo tính đồng bộ và nhất quán theo thời gian.
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 CSV) vào processed/.
4) 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.
Mục tiêu: Cung cấp bảng tổng hợp và chỉ số KPI giúp các bên liên quan (quỹ đầu tư, nhà quy hoạch, khách du lịch) hiểu xu hướng thị trường Airbnb: mức giá, nguồn cung, mức độ sẵn sàng và nhu cầu theo khu vực và thời gian.
Yêu cầu: Tổng hợp theo neighbourhood, thời gian (ví dụ snapshot, tháng, ngày), thành phố, v.v. Định nghĩa rõ tên → mục tiêu → công thức → đơn vị; tính sau QA được hoàn thành.
Ví dụ KPI đặc trưng:
- Giá thuê: median
price,pricetheoroom_type. - Cung & hoạt động: số listing đang hoạt động, tỷ lệ
entire_home/private/shared, % multi-hosts. - Tính sẵn sàng: median
availability_90, tỷ lệ kín phòng theo mùa.
Lưu kết quả: Ghi các bảng KPI vào processed/.
5) Trực quan hoá
Yêu cầu: Tối thiểu 5 hình, có tiêu đề, nhãn trục/đơn vị/chú giải rõ ràng; thông điệp cụ thể.
Gợi ý:
- Khuyến khích làm việc với dữ liệu địa lý và trực quan hoá thông tin trên bản đồ.
- Thanh so sánh tỷ trọng loại phòng; top neighbourhoods theo KPI.
- Heatmap neighbourhood × snapshot cho Index giá/độ kín phòng.
- Biểu đồ so sánh hai thành phố trên cùng trục (nhãn rõ đơn vị).
Lưu hình: vào figures/ với tên dễ tra cứu, ví dụ
figures/price_trend_sg_bkk.png.
6) Diễn giải & Kết luận
Mục tiêu: Trình bày các phát hiện chính từ dữ liệu Airbnb, nêu bối cảnh theo tháng hoặc mùa, thảo luận giới hạn và đề xuất hướng cải tiến tiếp theo.
Yêu cầu: Tóm tắt 3–5 phát hiện nổi bật kèm hình hoặc 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; chỉ ra những yếu tố bối cảnh có thể ảnh hưởng đến các chỉ số KPI; và đề xuất cải tiến cho quy trình thu thập, xử lý hoặc bổ sung KPI mới.
Gợi ý:
- Tổng hợp xu hướng đáng chú ý về giá, độ kín phòng, đánh giá hoặc nguồn cung.
- Bình luận tác động của QA (loại dữ liệu bất thường, thiếu vùng, trùng ID, v.v.) tới kết quả phân tích.
- Nhấn mạnh các yếu tố theo mùa hoặc sự kiện đặc thù ảnh hưởng đến chỉ số.
- Đề xuất hướng mở rộng: phân tích theo mùa, theo nhóm chủ nhà, hoặc xây dựng KPI nâng cao.
7) Viết báo cáo kỹ thuật
Yêu cầu: Báo cáo kỹ thuật (mẫu tại mục Sản phẩm), xuất PDF vào
reports/report-<ten-nhom>.pdf;
repo có README.md hướng dẫn chạy lại (tải dữ liệu, tiền xử lý, tổng hợp, vẽ hình).
8) Nâng cao (tuỳ chọn, điểm thưởng)
Gợi ý:
- Dự báo xu hướng: ước lượng median price, occupancy rate hoặc số active listings theo thời gian (baseline vs mô hình hồi quy đơn giản).
- Phát hiện bất thường: xác định khu vực (neighbourhood) có biến động giá hoặc nguồn cung bất thường bằng z-score hoặc Isolation Forest.
- Phân cụm thị trường: nhóm các neighbourhoods có đặc trưng tương tự theo vector KPI (giá, độ kín phòng, đánh giá, mức sẵn sàng).
- Phân tích không gian: trực quan hoá bản đồ giá và mật độ listing bằng Folium hoặc Kepler.gl.
- Chuẩn hoá nâng cao: xây dựng chỉ số Index theo median toàn thành phố hoặc nhóm khu vực để so sánh tương đối.
- Tự động hoá dữ liệu: thu thập (crawl) dữ liệu từ tất cả các thành phố trên Airbnb và phát triển nền tảng tự động hiển thị thông tin phân tích tương tự Inside Airbnb.
Sản phẩm cần bàn giao
-
Mã nguồn (Notebook/script) chạy lại toàn bộ pipeline: tải → làm sạch/chuẩn hoá → tổng hợp →
vẽ hình → so sánh. Có README chi tiết &
requirements.txt.Cấu trúc thư mục đề xuất
. ├── raw/ # Dữ liệu thô (theo city/snapshot_date) ├── processed/ # Dữ liệu sạch & bảng KPI ├── figures/ # Hình trực quan hoá ├── reports/ # Báo cáo kỹ thuật (PDF) ├── src/ # Notebooks / 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ô (trong
raw/) và bản đã xử lý (CSV sau QA, báo cáo QA trongprocessed/). -
Báo cáo kỹ thuật mô tả dữ liệu, QA, KPI, kết quả & giới hạn, kèm hình/bảng; có phần So
sánh các thành phố rõ ràng.
Cấu trúc báo cáo kỹ thuật
- Thông tin cơ bản: tên dự án, nhóm, thành viên, các thành phố, danh sách các
snapshot_date, ngày nộp, commit hash. - Giới thiệu & dữ liệu: nguồn, phạm vi, cấu trúc tệp, các trường chính.
- QA: quy tắc, tác động, chuẩn hoá danh mục/thời gian/giá.
- KPI: định nghĩa, công thức, đơn vị, bảng tổng hợp.
- Trực quan: ≥ 5 hình có chú giải đầy đủ.
- So sánh: phân tích khác biệt/giống nhau giữa 2 thành phố theo thời gian & không gian.
- Nâng cao (nếu có): mục tiêu, phương pháp, đánh giá.
- Kết luận: phát hiện chính, giới hạn, đề xuất tiếp theo.
- Tham khảo: tài liệu/trang web/thư viện sử dụng.
- Thông tin cơ bản: tên dự án, nhóm, thành viên, các thành phố, danh sách các
Đóng dấu nộp: Tạo Git tag hoặc Release; ghi rõ
commit hash
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 các thành phố; đủ các snapshot gần nhất (ghi rõ snapshot_date); tổ chức tệp/thư
mục rõ ràng. |
10 |
| Làm sạch & chuẩn hoá | QA hợp lý (giá, toạ độ, danh mục, trùng id…); gắn cờ & báo cáo tác động; chuẩn hoá trường (giá/danh mục/thời gian). | 20 |
| Bảng tổng hợp & KPI | Định nghĩa rõ công thức/đơn vị; tính KPI (city & neighbourhood); lưu bảng đúng định dạng & có
snapshot_date.
|
20 |
| Trực quan hoá | ≥ 5 hình (đường/cột/heatmap…); tiêu đề, trục, đơn vị, chú giải đầy đủ; thông điệp rõ; phong cách nhất quán. | 20 |
| So sánh & diễn giải | Nêu phát hiện chính theo thời gian & không gian; thảo luận giới hạn dữ liệu & tác động QA; lập luận rõ ràng. | 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; repo rõ ràng. | 10 |
| Trình bày & vấn đáp | Trình bày mạch lạc; trả lời câu hỏi; thảo luận quy trình & kết quả; bảo vệ lựa chọn kỹ thuật. | 10 |
| Điểm thưởng (tuỳ chọn) | Nâng cao: dự báo, 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/backtest), minh bạch & tái lập. | +0 đến +20 |