Dùng AI

Python cho AI: numpy, pandas, matplotlib, nên học gì trước

Python cho AI học theo thứ tự: Python cơ bản (hàm, lớp, danh sách, từ điển), rồi numpy để tính trên mảng số không cần vòng lặp, pandas để đọc và xử lý bảng dữ liệu, matplotlib để vẽ biểu đồ. Ba thư viện này là nền của scikit-learn và PyTorch; mỗi thư viện có trang hướng dẫn cho người mới trong tài liệu chính thức.

Ý chính
  • Thứ tự: Python cơ bản, numpy, pandas, matplotlib. Sau đó mới tới scikit-learn và PyTorch.
  • numpy: mảng số và phép tính trên cả mảng. pandas: bảng dữ liệu (đọc CSV, xử lý ô thiếu, nhóm, thống kê). matplotlib: biểu đồ.
  • Tài liệu chính thức có trang cho người mới: "NumPy: the absolute basics for beginners" (numpy 2.5), "10 minutes to pandas" (pandas 3.1.1), "Quick start guide" của matplotlib (3.11.2), theo phiên bản tài liệu ngày 11/11/2026.
  • Học bằng một bộ dữ liệu nhỏ của chính bạn, làm đủ ba bước: đọc và làm sạch, tính toán, vẽ.

Bài này dựa trên tài liệu chính thức của numpy, pandas và matplotlib, đọc ngày 11/11/2026. Code trong bài đã chạy với Python 3.13, numpy 2.5.4, pandas 3.1.1 và matplotlib 3.11.2.

Python cơ bản cần đến đâu

Trước khi học thư viện, cần thạo:

  • Biến, kiểu dữ liệu, if, for, while.
  • Hàm, tham số mặc định, trả về nhiều giá trị.
  • Danh sách, từ điển, tập hợp; list comprehension.
  • Đọc ghi tệp; xử lý ngoại lệ (try, except).
  • Lớp và đối tượng ở mức cơ bản (nhiều thư viện AI dùng lớp, như torch.nn.Module).
  • Môi trường ảo và cài thư viện bằng pip; xem bài chạy dự án AI từ GitHub.

Không cần thành thạo mọi thứ, nhưng phải tự viết được một chương trình vài chục dòng mà không tra từng dòng.

numpy: mảng số

numpy là nền của gần như mọi thư viện tính toán khoa học trong Python. Trang "NumPy: the absolute basics for beginners" (tài liệu numpy 2.5) đi qua các phần:

  • Vì sao dùng numpy thay vì danh sách Python; mảng ndarray là gì (một kiểu dữ liệu, kích thước cố định, hình chữ nhật).
  • Thuộc tính ndim, shape, size, dtype; tạo mảng bằng np.zeros, np.ones, np.arange, np.linspace.
  • Chỉ số, cắt lát (cắt lát trả về view, không phải bản sao), chọn theo điều kiện.
  • Đổi hình dạng (reshape), phép toán từng phần tử, tổng hợp theo trục (axis), và broadcasting.

Ý quan trọng nhất là tính trên cả mảng thay vì vòng lặp: (x - x.mean()) / x.std() chuẩn hóa cả cột số trong một dòng. Đây cũng là cách viết toán trong học máy; xem bài toán cho AI.

pandas: bảng dữ liệu

pandas làm việc với bảng (DataFrame) và cột (Series). Trang "10 minutes to pandas" (tài liệu pandas 3.1.1) gồm: tạo đối tượng, xem dữ liệu, chọn dữ liệu (theo nhãn, theo vị trí, theo điều kiện), dữ liệu thiếu, phép tính và thống kê, ghép bảng, nhóm (groupby), đổi hình bảng, chuỗi thời gian, dữ liệu phân loại, vẽ nhanh, đọc ghi CSV, Parquet, Excel.

Với dự án AI, 80% công việc với pandas là: đọc CSV, xem vài dòng đầu và thống kê mô tả, xử lý ô thiếu, lọc dòng, tạo cột mới, nhóm và tính trung bình, rồi chuyển sang mảng numpy để đưa vào mô hình.

matplotlib: biểu đồ

Trang "Quick start guide" (matplotlib 3.11.2) giới thiệu các phần của một hình: Figure (cả hình), Axes (vùng vẽ, có tiêu đề và nhãn trục), Axis (thang đo, vạch chia), Artist (mọi thứ nhìn thấy). Có hai cách viết: kiểu hướng đối tượng, tự tạo fig, ax = plt.subplots() rồi gọi phương thức của ax; và kiểu pyplot, để thư viện tự quản lý hình. Tài liệu khuyên dùng kiểu hướng đối tượng, nhất là với biểu đồ phức tạp và code sẽ dùng lại trong dự án lớn; kiểu pyplot tiện cho thao tác nhanh.

Trong học máy, bạn sẽ vẽ nhiều nhất: đường hàm mất mát theo từng epoch, biểu đồ phân bố của một cột, biểu đồ cột so sánh các nhóm, và ma trận nhầm lẫn.

Python cho AI: học gì trước Mỗi thư viện một việc 1. PythonHàm, lớplist, dict 2. numpyMảng sốkhông vòng lặp 3. pandasBảng dữ liệuCSV, groupby 4. matplotlibBiểu đồfig, ax Sau đó: scikit-learn, rồi PyTorch
Python cho AI: học gì trước 1. PythonHàm, lớplist, dict 2. numpyMảng sốkhông vòng lặp 3. pandasBảng dữ liệuCSV, groupby 4. matplotlibBiểu đồfig, ax Sau đó: scikit-learn, rồi PyTorch
Hình 1. Thứ tự học Python cho AI: Python cơ bản (hàm, lớp, danh sách, từ điển), numpy cho mảng số không cần vòng lặp, pandas cho bảng dữ liệu (đọc CSV, groupby), matplotlib để vẽ biểu đồ theo kiểu fig, ax. Sau đó mới học scikit-learn rồi PyTorch.

Một ví dụ dùng cả ba thư viện

Đoạn Python dưới đây xử lý một bảng điểm giả định của 8 học viên, trong đó một học viên thiếu điểm toán:

  1. pandas đọc CSV, đếm và điền ô thiếu bằng trung bình cột, tạo cột điểm trung bình, nhóm theo lớp.
  2. numpy chuẩn hóa điểm trung bình thành z-score (lệch bao nhiêu độ lệch chuẩn so với trung bình) bằng một dòng tính trên cả mảng.
  3. matplotlib vẽ biểu đồ cột điểm trung bình theo lớp theo kiểu hướng đối tượng và lưu ra tệp ảnh.
"""Một việc nhỏ dùng đủ ba thư viện nền của AI: numpy, pandas, matplotlib.

Bảng điểm giả định của 8 học viên (có một ô trống). Các bước:
1. pandas: đọc CSV, xử lý ô thiếu, tính điểm trung bình, nhóm theo lớp.
2. numpy: chuẩn hóa z-score bằng phép tính trên cả mảng, không cần vòng lặp.
3. matplotlib: vẽ biểu đồ cột, lưu ra tệp ảnh (kiểu hướng đối tượng mà tài liệu matplotlib khuyên dùng).
Cài: python -m pip install numpy pandas matplotlib
"""
import io

import matplotlib
matplotlib.use("Agg")  # vẽ ra tệp, không mở cửa sổ
import matplotlib.pyplot as plt  # noqa: E402
import numpy as np  # noqa: E402
import pandas as pd  # noqa: E402

CSV = """ten,lop,python,toan
An,A,8.5,7.0
Binh,A,6.0,
Chi,A,9.0,8.5
Dung,B,7.5,6.5
Giang,B,5.5,7.5
Hoa,B,9.5,9.0
Khoa,C,6.5,5.0
Lan,C,8.0,8.0
"""


def doc_va_lam_sach(van_ban):
    df = pd.read_csv(io.StringIO(van_ban))
    thieu = int(df["toan"].isna().sum())
    df["toan"] = df["toan"].fillna(df["toan"].mean())   # điền ô thiếu bằng trung bình cột
    df["tb"] = (df["python"] + df["toan"]) / 2
    return df, thieu


def z_score(cot):
    x = np.asarray(cot, dtype=float)
    return (x - x.mean()) / x.std()


def ve(theo_lop, duong_dan):
    fig, ax = plt.subplots(figsize=(5, 3), layout="constrained")
    ax.bar(theo_lop.index, theo_lop.values)
    ax.set_xlabel("Lớp")
    ax.set_ylabel("Điểm trung bình")
    ax.set_title("Điểm trung bình theo lớp")
    fig.savefig(duong_dan)
    plt.close(fig)


def chay_thu(duong_anh=None):
    df, thieu = doc_va_lam_sach(CSV)
    theo_lop = df.groupby("lop")["tb"].mean().round(2)
    df["z"] = z_score(df["tb"]).round(2)
    dong = [f"Số ô thiếu đã điền: {thieu}",
            "Trung bình theo lớp: " + ", ".join(f"{l} {v}" for l, v in theo_lop.items()),
            "Cao nhất: " + df.loc[df["tb"].idxmax(), "ten"],
            "z-score: " + ", ".join(f"{t} {z:+.2f}" for t, z in zip(df["ten"], df["z"]))]
    if duong_anh:
        ve(theo_lop, duong_anh)
        dong.append(f"Đã lưu biểu đồ: {duong_anh}")
    print("\n".join(dong))
    return dong


if __name__ == "__main__":
    chay_thu("diem_theo_lop.png")

Kết quả: điền 1 ô thiếu; điểm trung bình theo lớp là A 7,73, B 7,58, C 6,88; người cao nhất là Hoa với z-score +1,61, người thấp nhất là Khoa với -1,54. Lưu ý x.std() của numpy mặc định tính độ lệch chuẩn tổng thể (chia cho n), còn .std() của pandas mặc định chia cho n - 1; hai con số sẽ hơi khác nhau, đọc tài liệu khi cần chính xác.

Cách điền ô thiếu bằng trung bình chỉ là một lựa chọn đơn giản; trong dự án thật, cần nghĩ xem vì sao dữ liệu thiếu trước khi chọn cách xử lý.

Bốn lỗi hay gặp khi mới dùng

  • Lệch hình dạng mảng. Cộng mảng hình (3, 2) với mảng hình (3,) báo lỗi broadcasting, vì numpy so hình dạng từ chiều cuối. In x.shape trước khi tính là thói quen tốt; cần thì dùng reshape hoặc x[:, None].
  • Số có dấu phẩy thập phân kiểu Việt Nam. Tệp CSV ghi 7,5 sẽ bị pandas đọc thành chữ, hoặc tách sai cột. Dùng pd.read_csv(..., sep=";", decimal=",") khi tệp dùng dấu chấm phẩy phân cột và dấu phẩy thập phân; rồi kiểm df.dtypes.
  • pandas tự khớp theo chỉ số. Cộng hai Series có chỉ số khác nhau cho ra NaN ở chỗ không khớp, không báo lỗi. Khi thấy NaN lạ, kiểm lại chỉ số của hai bên.
  • Quên axis. x.mean() trên mảng hai chiều tính trung bình của tất cả phần tử; muốn trung bình từng cột thì x.mean(axis=0), từng dòng thì axis=1.

Một thói quen tránh được cả bốn lỗi: sau mỗi bước biến đổi, in ra df.head(), df.dtypes, df.isna().sum() với bảng, hoặc x.shape, x.dtype với mảng, để chắc dữ liệu đúng như bạn nghĩ trước khi đi tiếp. Trong notebook, đặt các dòng kiểm này ngay dưới ô biến đổi; khi code đã ổn, chuyển chúng thành câu lệnh assert để chương trình tự dừng nếu dữ liệu sai hình dạng hay sai kiểu.

Tài liệu học thêm

  • Ba trang cho người mới của tài liệu chính thức, như trên. Chúng được cập nhật theo phiên bản thư viện, nên đáng tin hơn bài viết cũ.
  • Python Data Science Handbook của Jake VanderPlas: đọc miễn phí trên web, mỗi chương là một notebook; đi từ IPython, numpy, pandas, matplotlib tới học máy với scikit-learn. Chữ theo giấy phép CC-BY-NC-ND, code theo MIT.
  • Kaggle Learn có các khóa ngắn về Python, pandas và trực quan hóa dữ liệu, làm bài ngay trên notebook.

Xem thêm các tài liệu theo bậc trong bài tài liệu học AI miễn phí.

Học thế nào

  1. Chọn một bộ dữ liệu bạn quan tâm: điểm thi, giá nhà, thời tiết, dữ liệu thể thao.
  2. Làm đủ một vòng: đọc, xem, làm sạch, tính toán, vẽ, rút ra một nhận xét.
  3. Khi viết vòng lặp for trên dữ liệu số, hỏi lại: có cách tính trên cả mảng không?
  4. Đọc thông báo lỗi và tra tài liệu chính thức trước khi hỏi người khác hay hỏi AI.
  5. Sau ba thư viện này, học scikit-learn để làm mô hình học máy đầu tiên.
Cẩn thận
  • Học thư viện khi chưa vững Python cơ bản.
  • Dùng vòng lặp for trên mảng lớn thay vì phép tính numpy.
  • Sửa dữ liệu trên một view của numpy mà tưởng là bản sao, làm thay đổi mảng gốc.
  • Điền ô thiếu tùy tiện mà không xem vì sao dữ liệu thiếu.
  • Học theo bài viết cũ dùng hàm đã bị bỏ trong phiên bản mới; luôn đối chiếu tài liệu đúng phiên bản bạn cài.

Câu hỏi thường gặp

Có cần học hết numpy trước khi học pandas không?

Không. Nắm mảng, chỉ số, cắt lát, phép tính trên mảng và broadcasting là đủ để sang pandas. Quay lại numpy khi cần.

Nên dùng Jupyter hay tệp .py?

Jupyter (hoặc Google Colab) tiện để thử và xem kết quả từng bước khi học. Khi làm dự án, chuyển phần code đã ổn định sang tệp .py để dùng lại và kiểm thử.

Seaborn có cần học không?

Seaborn xây trên matplotlib, giúp vẽ biểu đồ thống kê đẹp nhanh hơn. Học matplotlib trước để hiểu nền, rồi dùng seaborn khi cần.

Học xong ba thư viện này mất bao lâu?

Tùy nền Python. Với người đã vững Python, vài tuần làm bài trên dữ liệu thật là đủ để dùng thành thạo phần thường gặp.

Học tiếp

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483