Giai đoạn 2 · Xây tường · Tháng 2

Biến danh sách khách hàng thành tiến độ nhìn thấy được.

Trong 8 buổi B9–B16, bạn đi từ một file CSV lộn xộn đến bộ lọc marketing và hệ thống SQLite theo dõi công trình: Khảo sát → Thi công → Bàn giao.

8 buổi2 buổi/tuần1 giờ/buổiCode dưới 15 dòng

Mục tiêu giai đoạn

Từ “tôi có một danh sách” đến “tôi biết phải gọi ai”.

Sản phẩm tháng 2

Bạn không học cơ sở dữ liệu như một khái niệm trừu tượng. Bạn học cách trả lời những câu hỏi xảy ra mỗi ngày trong remodeling:

  • Khách hàng nào ở đúng Zip Code tại Mỹ để đưa vào Bộ Lọc Marketing?
  • Dự án nào đang ở Khảo sát, dự án nào đã chuyển sang Thi công?
  • Làm sao thêm, đọc, sửa và xóa một hồ sơ mà không làm rối cả danh sách?
50khách hàng tiềm năng mẫu cho telesale
2bảng chính: KhachHang và DuAn
4thao tác CRUD: Thêm, Đọc, Sửa, Xóa
Bảng dữ liệu khách hàng remodeling dạng spreadsheet với tên mẫu, Zip Code, loại dự án và trạng thái liên hệ
Dữ liệu minh họa không chứa người thật: đủ thật để luyện thao tác, đủ an toàn để dùng trong lớp.

Nguyên tắc làm việc

Đừng sửa dữ liệu bằng mắt nếu có thể ghi lại thao tác.

Mỗi bộ lọc, câu lệnh và thay đổi trạng thái đều phải có thể lặp lại. Đó là khác biệt giữa một bảng tính tạm thời và một công cụ vận hành.

Lịch học · B9–B16

Tám buổi, hai lớp năng lực.

Bốn buổi đầu giúp bạn nhìn và hỏi dữ liệu. Bốn buổi sau giúp bạn lưu dữ liệu để hệ thống có thể dùng lại.

Tuần 5–6 · Sổ Sách Kế Toán

Pandas, Excel/CSV và Bộ Lọc Marketing

B9–B12
  1. B9
    Pandas cơ bảnĐọc Excel/CSV; hiểu bảng dòng và cột qua dữ liệu khách hàng remodeling.
    Bài tập tổng kết: Đọc file khách hàng và in 5 dòng đầu tiên.
    Hiện source code mẫu
    import pandas as pd
    df = pd.read_csv("khach_hang.csv")
    print(df.head())
  2. B10
    Kiểm tra DataFrameXem kiểu dữ liệu, tên cột và các bản ghi trước khi xử lý.
    Bài tập tổng kết: Kiểm tra kích thước, tên cột và kiểu dữ liệu.
    Hiện source code mẫu
    print(df.shape)
    print(df.columns.tolist())
    print(df.dtypes)
  3. B11
    Lọc và sắp xếpLọc theo Zip Code và tiêu chí dự án thay vì tìm thủ công.
    Bài tập tổng kết: Lọc khách hàng theo Zip Code và sắp xếp theo tên.
    Hiện source code mẫu
    target = df[df["Zip Code"] == "10001"]
    print(target.sort_values("Tên mẫu"))
  4. B12
    Truy vấn marketingHoàn thiện bộ lọc chọn 50 khách hàng tiềm năng đúng Zip Code tại Mỹ.
    Bài tập tổng kết: Tạo danh sách tối đa 50 khách hàng đủ điều kiện gọi điện.
    Hiện source code mẫu
    leads = df[(df["Zip Code"] == "10001") & (df["Trạng thái liên hệ"] != "Đã liên hệ")]
    print(leads.head(50))
Sản phẩm: Bộ Lọc Marketing cho telesale.

Tuần 7–8 · Kho Lưu Trữ Dữ Liệu

SQLite, KhachHang, DuAn và CRUD

B13–B16
  1. B13
    Khởi tạo SQLiteTạo bảng KhachHang để lưu thông tin khách hàng.
    Bài tập tổng kết: Tạo database và bảng khách hàng có khóa chính.
    Hiện source code mẫu
    import sqlite3
    db = sqlite3.connect("cong_trinh.db")
    db.execute("CREATE TABLE IF NOT EXISTS KhachHang (id INTEGER PRIMARY KEY, ten TEXT, sdt TEXT)")
    db.commit()
  2. B14
    Khởi tạo DuAnLưu thông tin công trình và liên hệ dự án với khách hàng.
    Bài tập tổng kết: Tạo bảng dự án và liên kết dự án với khách hàng.
    Hiện source code mẫu
    db.execute("CREATE TABLE IF NOT EXISTS DuAn (id INTEGER PRIMARY KEY, ten TEXT, khach_hang_id INTEGER)")
    db.commit()
  3. B15
    CRUD — Thêm và ĐọcThêm bản ghi mới, sau đó lấy danh sách để kiểm tra.
    Bài tập tổng kết: Thêm một khách hàng và đọc lại danh sách.
    Hiện source code mẫu
    db.execute("INSERT INTO KhachHang (ten, sdt) VALUES (?, ?)", ("Nguyen Van A", "0900000000"))
          db.commit()
          for row in db.execute("SELECT * FROM KhachHang"):
            print(row)
  4. B16
    CRUD — Sửa và XóaCập nhật trạng thái và xóa bản ghi mẫu khi cần.
    Bài tập tổng kết: Cập nhật trạng thái một khách hàng rồi xóa bản ghi thử nghiệm.
    Hiện source code mẫu
    db.execute("UPDATE KhachHang SET sdt = ? WHERE id = ?", ("0911111111", 1))
    db.execute("DELETE FROM KhachHang WHERE id = ?", (99,))
    db.commit()
Sản phẩm: Hệ Thống Tiến Độ: Khảo sát → Thi công → Bàn giao.

Worked examples

Nhìn thấy từng bước trước khi tự gõ.

Một quy trình tốt luôn bắt đầu bằng câu hỏi: dữ liệu đang ở đâu, và thao tác này có làm mất dữ liệu gốc không?

01 Đọc và lọc danh sách

  1. 1Đọc file bằng pd.read_csv("khach_hang.csv").
  2. 2Kiểm tra bằng df.head()df.dtypes.
  3. 3Giữ các dòng có Zip Code đúng điều kiện.
  4. 4Sắp xếp theo tiêu chí dự án để ưu tiên cuộc gọi.

02 Đưa hồ sơ vào kho

  1. 1Tạo bảng KhachHangDuAn.
  2. 2Thêm một bản ghi bằng INSERT.
  3. 3Đọc lại bằng SELECT để xác nhận.
  4. 4Dùng UPDATE đổi trạng thái; DELETE chỉ khi chắc chắn.
Minh họa kho lưu trữ dữ liệu với hai ngăn KhachHang và DuAn, cùng các thao tác Thêm, Đọc, Sửa, Xóa
Ẩn dụ “kho lưu trữ”: KhachHang giữ người, DuAn giữ công trình; CRUD là quy trình quản lý hồ sơ trong kho.

Playground · dưới 15 dòng

Chọn một thao tác và đọc kết quả.

Đây là mô phỏng nhỏ ở trình duyệt để bạn thấy luồng suy nghĩ. Khi học thật, bạn sẽ chạy các đoạn Python tương tự.

Pandas hay SQLite?

Pandas phù hợp khi bạn đang phân tích một bảng đang có trong bộ nhớ: lọc, sắp xếp, kiểm tra.

SQLite phù hợp khi dữ liệu cần được lưu bền vững, có nhiều bảng và cần CRUD.

Hệ thống tiến độ

Một trạng thái rõ ràng giúp cả đội nói cùng một ngôn ngữ.

Sau B16, hồ sơ công trình không còn nằm rải rác trong tin nhắn. Trạng thái được cập nhật trong hệ thống và có thể đọc lại khi cần.

Thao tácVí dụ tại công trườngCâu lệnh tư duy
CreateThêm dự án mớiHồ sơ này chưa có trong kho
ReadĐọc danh sách dự ánHiện có những gì?
UpdateKhảo sát → Thi côngThông tin đã thay đổi
DeleteXóa bản ghi mẫuHồ sơ này không còn cần giữ
Bảng tiến độ công trình dạng kanban với ba cột Khảo sát, Thi công và Bàn giao
Kanban là cách nhìn trực quan; SQLite là nơi lưu trạng thái để lần sau mở lại vẫn còn.

Checkpoint B9–B16

Kiểm tra trước khi bàn giao.

Tám câu, mỗi câu kiểm tra một kỹ năng nhỏ. Chọn đáp án rồi gửi kết quả để lưu checkpoint.

B9 · Thư viện trọng tâm để đọc CSV/Excel là gì?
Kỹ năng: đọc dữ liệu dạng bảng
B10 · Thao tác nào giúp xem các dòng đầu của DataFrame?
Kỹ năng: kiểm tra DataFrame
B11 · Muốn giữ khách hàng có Zip Code bằng một giá trị cụ thể, cần làm gì?
Kỹ năng: lọc theo điều kiện
B12 · Bộ Lọc Marketing nhằm chọn nhóm nào?
Kỹ năng: truy vấn marketing
B13 · Bảng nào lưu thông tin khách hàng?
Kỹ năng: schema cơ sở dữ liệu
B14 · Vì sao cần bảng DuAn riêng?
Kỹ năng: mô hình dữ liệu
B15 · Thao tác nào tương ứng với việc lấy danh sách bản ghi?
Kỹ năng: CRUD thêm/đọc
B16 · Thay đổi trạng thái từ Khảo sát sang Thi công là thao tác nào?
Kỹ năng: CRUD cập nhật/xóa
Đã lưu kết quả checkpoint.