Weather & Air Quality

Chuẩn hoá, tổng hợp theo thời gian, khu vực & trực quan hoá

Môn học: Lập trình xử lý dữ liệu

Học kỳ: 1, 2025–2026

Trường Đại học Công nghệ, ĐHQG Hà Nội

Thông tin chung

Tổng quan về dữ liệu

Giới thiệu

Dữ liệu thời tiết và chất lượng không khí rất quan trọng để theo dõi điều kiện môi trường và phân tích tác động đến sức khỏe cộng đồng. Kết hợp hai nguồn dữ liệu giúp hiểu rõ mối quan hệ giữa các yếu tố khí tượng và mức độ ô nhiễm, từ đó hỗ trợ quyết định và quản lý môi trường.

Dữ liệu thời tiết: sử dụng Meteostat để tải dữ liệu theo tọa độ và khoảng thời gian được phân công. Dữ liệu có sẵn theo từng ngày, các thông tin bắt buộc:

  • Nhiệt độ (Temperature)
  • Lượng mưa (Precipitation)
  • Tốc độ gió (Wind Speed)
  • Hướng gió (Wind Direction)
  • Áp suất không khí (Air Pressure)

Dữ liệu chất lượng không khí: sử dụng Open-Meteo để tải dữ liệu theo tọa độ và khoảng thời gian được phân công. Dữ liệu có sẵn theo từng ngày, các thông tin bắt buộc:

  • PM10 (Particulate Matter ≤ 10 μm)
  • PM2.5 (Particulate Matter ≤ 2.5 μm)
  • Chỉ số UV (UV Index)
  • Các chỉ số khác (Optional): Ôzôn (O3), CO (Carbon Monoxide), CO2 (Carbon Dioxide), ...

Phạm vi dữ liệu & phân công

Mỗi nhóm được giao 01 khu vực và khoảng thời gian cụ thể để xử lý và phân tích (xem spreadsheet phân công):

  • Nhóm 3.1: TP. Hà Nội (21.0167, 105.8) năm 2023.
  • Nhóm 3.2: TP. Hà Nội (21.0167, 105.8) năm 2024.
  • Nhóm 3.3: TP. Hồ Chí Minh (10.823, 106.6296) năm 2023.
  • Nhóm 3.4: TP. Hồ Chí Minh (10.823, 106.6296) năm 2024.
  • Nhóm 3.5: TP. Nha Trang (12.2451, 109.1943) năm 2024

Mục tiêu

  1. Thành thạo việc nạp và ghi dữ liệu thời tiết & chất lượng không khí từ các tệp được tải về (Meteostat, Open-Meteo) và tổ chức cấu trúc thư mục phục vụ phân tích.
  2. Rèn luyện kỹ năng làm sạch, chuẩn hoá và liên kết hai nguồn dữ liệu (thời tiết và chất lượng không khí) theo thời gian và tọa độ, bảo đảm thống nhất múi giờ, đơn vị và định dạng.
  3. Thực hành tổng hợp và thống kê dữ liệu theo ngày, tuần, tháng; xây dựng các chỉ số tổng hợp hoặc thông số đặc trưng (trung bình, cực trị, độ biến thiên), trực quan hoá kết quả bằng biểu đồ để quan sát xu hướng và chu kỳ thay đổi theo thời gian.
  4. Nâng cao năng lực phân tích mối quan hệ giữa yếu tố thời tiết và mức độ ô nhiễm không khí, từ đó diễn giải bối cảnh địa phương để đưa ra nhận định có cơ sở khoa học.

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 dữ liệu thời tiết từ Meteostat và chất lượng không khí từ Open‑Meteo cho cùng một tọa độ, cùng khung thời gian đã được phân công.

  • Thời tiết (Meteostat): nhiệt độ, lượng mưa, tốc độ gió, hướng gió, áp suất.
  • Chất lượng không khí (Open‑Meteo): PM10, PM2.5, UV Index, và các chỉ số khác.

Tổ chức thư mục: raw/, processed/, figures/, reports/, src/, v.v

2) Làm sạch, chuẩn hoá & đồng bộ thời gian

Yêu cầu chung: Thiết kế 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á; hợp nhất múi giờ; làm tròn/tái lấy mẫu (resample) thống nhất (theo ngày) trước khi nối hai nguồn.

Ví dụ quy tắc phát hiện bất thường: giá trị âm không hợp lệ (mưa < 0, tốc độ gió < 0), áp suất ngoài ngưỡng; PM2.5 > PM10; chuỗi thời gian bị đứt đoạn; timestamp trùng; đơn vị không thống nhất.

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ý. 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á vào processed/.

3) Tổng hợp & Thống kê

Yêu cầu chung: Tổng hợp theo ngày/tuần/tháng; mỗi chỉ số thống kê có tên → mục tiêu → công thức → đơn vị; chỉ tính sau QA.

Ví dụ các chỉ số:

  • Nhiệt độ: trung bình, p50, p95 theo ngày/tháng.
  • Lượng mưa: tổng theo ngày/tháng; số ngày mưa ≥ 1 mm.
  • Gió: tốc độ trung bình; tần suất hướng gió (rose) theo tháng.
  • Áp suất: trung bình, độ lệch chuẩn theo tuần.
  • Chất lượng không khí: p95 PM2.5/PM10 theo ngày; số ngày vượt ngưỡng khuyến nghị; UV Index trung bình tối đa trong ngày.
  • Chỉ số chuẩn hoá (Index=100) theo tháng để so sánh giữa các nhóm.

Lưu bảng: Xuất kết quả phân tích sau QA, đồng bộ thời gian và khu vực theo tọa độ vào thư mục processed/.Tên tệp tuân theo quy ước ví dụ như sau: processed/daily_weather_aqi_lat_lon_YYYY.csv, (trong đó lat, lon lần lượt là vĩ độ và kinh độ, YYYY là 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, đơn vị, chú giải; thông điệp rõ ràng.

Gợi ý:

  • Đường theo thời gian: nhiệt độ/PM2.5/PM10/UV Index.
  • Cột so sánh: số ngày mưa theo tháng; số ngày vượt ngưỡng PM2.5.
  • Heatmap hour × weekday cho PM2.5 hoặc nhiệt độ.
  • Wind rose (tần suất hướng gió) theo tháng/quý.

Lưu hình: vào figures/ (ví dụ: figures/pm25_over_time.png, figures/wind_rose_Q1.png).

5) Diễn giải & kết luận

Yêu cầu: Trình bày phát hiện chính, bối cảnh theo vị trí (địa hình, đô thị hoá), mùa vụ; thảo luận giới hạn dữ liệu; tác động QA; đề xuất theo dõi.

  • Tóm tắt 3–5 phát hiện đáng chú ý, kèm hình/bảng.
  • Phân tích mối liên hệ: mưa/gió ↔ PM2.5/PM10; UV ↔ mây/bức xạ.
  • Ảnh hưởng điều phối thời gian & xử lý thiếu.
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 ý:

  • Dự báo ngắn hạn: PM2.5/Nhiệt độ (hồi quy tuyến tính): báo cáo MAE/MAPE.
  • Phát hiện bất thường: (z-score/IQR/Isolation Forest) cho PM2.5 hoặc O3.
  • Phân cụm: ngày/tuần theo vector thời tiết & chất lượng không khí (k-means), gắn nhãn cụm.
  • Chuẩn hoá nâng cao: theo median năm; phân rã mùa vụ.
  • Kiểm thử dữ liệu nâng cao: phân tích ảnh hưởng của các khu vực xung quanh.

Sản phẩm cần bàn giao

  1. 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 file requirements.txt (để có thể tái lập môi trường Python nhanh bằng pip 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
                
  2. Dữ liệu: bản thô (raw/) và bản đã xử lý (processed/).
  3. Báo cáo kỹ thuật mô tả dữ liệu, quy tắc chất lượng, các chỉ số thống kê, 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 & thống kê: định nghĩa, công thức, đơn vị, bảng tổng hợp.
    • Trực quan hoá: 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.

Cách tính điểm

Hạng mục Mô tả Điểm
Thu thập dữ liệu Đúng thời gian, địa điểm được phân; 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ý (lượng mưa, tốc độ gió, chỉ số không khí, ...); 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 & thống kê Định nghĩa rõ công thức/đơn vị cho các chỉ số thống kê; kết quả tính các chỉ số; 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
— Kết thúc đề bài —