Data Science
Phân Tích Dữ Liệu Với Python: Thư Viện Pandas, NumPy, Matplotlib
Hướng dẫn dùng Python cùng ba thư viện Pandas, NumPy, Matplotlib để đọc bảng Excel/CSV, tính tổng, lọc dữ liệu và xuất biểu đồ — dành cho người chưa từng viết code, cài xong là chạy được trong 30 phút.
PNTECH Writer · 13/09/2026

Bạn có một file Excel vài nghìn dòng — và 30 phút là đủ để có biểu đồ
Bạn mở file doanhthu_2024.xlsx ra, lướt xuống dòng thứ 3.872, tự hỏi tháng nào bán chạy, sản phẩm nào đang tụt, rồi lại lọc bằng tay, kéo công thức SUMIF, vẽ biểu đồ cột bằng chuột phải. Cuối ngày bạn có một báo cáo — nhưng mất cả tiếng, và sửa lại cũng ngại.
Có một cách khác: dùng Python (một ngôn ngữ lập trình phổ biến, miễn phí) cùng ba thư viện đi kèm để đọc bảng, tính toán và vẽ biểu đồ chỉ trong vài chục phút. Đây là công cụ mà dân kế toán, marketing và quản lý cửa hàng nhỏ đang dùng để thay thế những thao tác Excel lặp đi lặp lại. Bài viết này dành cho người chưa từng viết một dòng code — đi từ cài đặt đến biểu đồ đầu tiên, không lý thuyết thừa.

Ba thư viện Pandas, NumPy, Matplotlib giải quyết khoảng 80% công việc phân tích dữ liệu hàng ngày — bạn chỉ cần nhớ chừng mười lệnh cốt lõi.
Ba thư viện này thật ra là gì?
Trước khi cài gì cũng không hại gì nếu bạn hình dung ba thư viện này bằng đồ vật quen thuộc:
- NumPy giống như một chiếc máy tính cầm tay siêu tốc. Bạn đưa cho nó cả dãy số (doanh thu cả năm chẳng hạn), nó cộng trừ nhân chia cả dãy một lúc thay vì bạn phải bấm từng số. Cái này gọi là "mảng số" (array) — tạm hiểu là danh sách số xếp hàng, máy tính xử lý theo cả nhóm.
- Pandas giống một tờ Excel thông minh hơn. Bạn vẫn có hàng, có cột, có ô — nhưng thay vì kéo chuột, bạn gõ một dòng lệnh để lọc, sắp xếp, gộp nhóm, tính tổng. Tờ Excel này còn chịu được vài trăm nghìn dòng mà không đứng máy.
- Matplotlib là hộp phấn vẽ biểu đồ. Bạn đưa cho nó bảng số, nó vẽ ra biểu đồ cột, đường, tròn. Xuất ra file ảnh để dán vào báo cáo.
Pandas và NumPy đều miễn phí, mã nguồn mở, chạy được trên Windows, macOS và Linux [S1][S2]. Bạn không cần biết trước bất kỳ thư viện nào — bài này đi từ con số 0.
Cài đặt môi trường trong khoảng 5 phút
Bạn chỉ cần làm đúng ba bước sau, theo thứ tự:
Bước 1 — Tải Python. Vào trang python.org, tải bản 3.x mới nhất về và cài như cài phần mềm bình thường (Next, Next, Install). Khi cài nhớ tick vào ô "Add Python to PATH" — ô này giúp máy tính hiểu lệnh Python khi bạn gõ sau này.
Bước 2 — Cài ba thư viện cần thiết. Mở cửa sổ dòng lệnh (trên Windows gõ cmd trong thanh tìm kiếm, trên macOS mở "Terminal"). Gõ đúng dòng sau rồi nhấn Enter:
pip install pandas numpy matplotlib jupyter
Dòng lệnh pip install nghĩa là "tải và cài từ kho phần mềm miễn phí trên mạng". Chờ khoảng một phút, máy sẽ tự tải về cả ba thư viện cộng thêm Jupyter.
Bước 3 — Mở Jupyter Notebook. Tiếp tục gõ jupyter notebook rồi nhấn Enter. Trình duyệt web sẽ tự bật lên một trang có giao diện giống thư mục. Bấm "New" → "Python 3" để mở một trang giấy mới.
Cách cài trên gọn và nhẹ. Nếu bạn muốn cài một lần đủ mọi thứ liên quan đến khoa học dữ liệu thì có Anaconda — bộ cài nặng hơn (~3 GB) nhưng gom sẵn Python, Jupyter và hàng trăm thư viện. Với người mới bắt đầu, dùng pip + Jupyter như trên là đủ.

NumPy — chiếc máy tính siêu nhanh cho dãy số
NumPy ra đời vì một lý do đơn giản: xử lý cả dãy số một lúc nhanh hơn xử lý từng số. Trong Python thường, nếu bạn muốn cộng 1 triệu phần tử, bạn phải viết vòng lặp (lặp đi lặp lại một thao tác) — chậm. NumPy làm phép tính trên cả dãy trong một nốt nhạc.
Ví dụ bạn có doanh thu 12 tháng, muốn tính trung bình:
import numpy as np
doanh_thu = np.array([120, 150, 170, 200, 180, 210, 250, 230, 260, 300, 280, 350])
print("Trung bình:", doanh_thu.mean())
Một dòng np.array([...]) là tạo một mảng số (array), tức là danh sách số mà NumPy xử lý theo nhóm. .mean() là lệnh tính trung bình. Không cần vòng lặp, không cần cộng tay.
Trong thực tế phân tích dữ liệu, bạn hiếm khi gọi NumPy trực tiếp — vì Pandas đã dùng NumPy ở bên trong rồi. Bạn chỉ cần biết NumPy tồn tại để hiểu vì sao Pandas lại nhanh đến vậy. Nếu muốn đo tốc độ chính xác, dùng %%timeit trong Jupyter — số liệu cụ thể tùy máy, nên ghi nhận là "nhanh hơn nhiều lần so với vòng lặp Python thường" là an toàn.
Pandas — đọc bảng, lọc hàng, gộp nhóm
Đây mới là nhân vật chính của bài. Pandas làm mọi thứ bạn đang làm trong Excel, nhưng gõ lệnh cho gọn. Dữ liệu trong Pandas được lưu trong một cấu trúc gọi là DataFrame — bạn cứ hình dung nó là một cái bảng có hàng và cột có nhãn tên, giống Excel nhưng thông minh hơn.
Giả sử bạn có file doanhthu.csv (đuôi .csv là file bảng tính dạng văn bản, mở được bằng Excel hoặc Google Sheets, xuất ra từ rất nhiều phần mềm). Trong Jupyter Notebook, bạn gõ:
import pandas as pd
df = pd.read_csv('doanhthu.csv')
df là tên ngắn mình tự đặt cho cái bảng đó. Sau đây là sáu lệnh xử lý khoảng 80% công việc hàng ngày:
1. Xem nhanh bảng. df.head() in 5 dòng đầu để bạn biết bảng có cột gì. df.info() cho biết cột nào thiếu dữ liệu, cột nào đang sai kiểu (ví dụ cột ngày đang bị hiểu là chữ).
2. Chọn cột. df['ten_san_pham'] lấy một cột. df[['thang','doanhthu']] lấy nhiều cột cùng lúc (hai dấu ngoặc vuông là danh sách các cột cần lấy).
3. Lọc hàng theo điều kiện. df[df['doanhthu'] > 1000000] — chỉ giữ lại những dòng có doanh thu trên 1 triệu. Bạn có thể kết hợp nhiều điều kiện bằng & (và) hoặc | (hoặc).
4. Nhóm và tính tổng. df.groupby('thang')['doanhthu'].sum() — một dòng lệnh ra ngay doanh thu tổng theo từng tháng. groupby nghĩa là "gom các dòng có cùng giá trị vào một nhóm", ở đây là gom theo tháng.
5. Dọn dữ liệu bẩn. df.dropna() bỏ dòng có ô trống. df.drop_duplicates() bỏ dòng trùng lặp. pd.to_datetime(df['ngay']) đổi cột ngày từ dạng chữ "12/05/2024" về đúng định dạng ngày tháng mà máy hiểu được.
6. Sắp xếp và lấy top. df.sort_values('doanhthu', ascending=False).head(10) — sắp giảm dần rồi lấy 10 dòng đầu, tức là 10 đơn hàng giá trị cao nhất.
Sáu lệnh trên đủ để bạn xử lý phần lớn bảng dữ liệu doanh thu, đơn hàng, khách hàng mà không cần nhớ thêm gì. Khi bạn muốn đào sâu hơn vào các bước làm sạch nâng cao, hãy xem bài tiền xử lý dữ liệu — nơi giải thích chi tiết cách xử lý giá trị thiếu, chuẩn hóa định dạng và lọc ngoại lệ.
Một lưu ý nhỏ nhưng quan trọng: khi bạn gõ df.groupby(...), bạn đang gọi Pandas thông qua API của nó — API là cách hai phần mềm "nói chuyện" với nhau qua lệnh. Hiểu khái niệm này giúp bạn đọc tài liệu kỹ thuật bớt lạ.
Matplotlib — vẽ biểu đồ từ bảng trên
Có bảng rồi, có tổng doanh thu theo tháng rồi, bước cuối là vẽ ra hình để dán vào báo cáo. Matplotlib làm việc này trong vài dòng lệnh.
Tiếp tục với ví dụ doanh thu 12 tháng ở trên, bạn vẽ biểu đồ cột bằng đoạn code sau:
import matplotlib.pyplot as plt
thang = range(1, 13)
doanh_thu = [120, 150, 170, 200, 180, 210, 250, 230, 260, 300, 280, 350]
plt.bar(thang, doanh_thu)
plt.title('Doanh thu theo tháng')
plt.xlabel('Tháng')
plt.ylabel('Triệu đồng')
plt.savefig('bieudo.png', dpi=150)
Chạy xong bạn sẽ có file bieudo.png ngay trong cùng thư mục. Mở ra là thấy biểu đồ cột với tiêu đề và nhãn trục rõ ràng. plt.bar là vẽ cột, plt.plot là vẽ đường — đổi một chữ là bạn có kiểu biểu đồ khác.
Nếu bạn chưa rõ cách mở Jupyter để phân tích dữ liệu với Python, hãy xem bài hướng dẫn riêng — có ảnh minh họa từng bước cho người chưa từng dùng.
Ghép cả ba: ví dụ từ đầu đến cuối
Bạn đã biết từng viên gạch. Bây giờ xếp lại thành bức tường. Dưới đây là đoạn code chạy trọn vẹn trong Jupyter Notebook, từ lúc đọc file đến lúc xuất biểu đồ — bạn copy và chạy thử là thấy ngay kết quả:
import pandas as pd
import matplotlib.pyplot as plt
# 1. Đọc bảng
df = pd.read_csv('doanhthu.csv')
# 2. Xem nhanh
print(df.head())
print(df.info())
# 3. Tổng doanh thu theo tháng (Pandas dùng NumPy bên trong để tính)
doanh_thu_thang = df.groupby('thang')['doanhthu'].sum()
# 4. Vẽ biểu đồ
plt.style.use('ggplot')
doanh_thu_thang.plot(kind='bar')
plt.title('Doanh thu theo tháng')
plt.ylabel('Triệu đồng')
plt.tight_layout()
plt.savefig('bieudo_doanhthu.png', dpi=150)
Bốn bước, chưa đến 20 dòng. Bạn vừa đọc bảng có thể vài nghìn dòng, vừa gom nhóm theo tháng, vừa xuất biểu đồ để dán vào email báo cáo sếp. Thay vì ngồi kéo SUMIF trong Excel cả tiếng, bạn chạy xong trong 30 giây.

Bắt đầu từ đâu nếu bạn muốn đi xa hơn
Bài này chỉ trang bị cho bạn bộ ba công cụ cốt lõi: Pandas xử lý bảng, NumPy làm phép tính nhanh phía sau, Matplotlib vẽ biểu đồ. Cả ba đều miễn phí, mã nguồn mở, chạy trên mọi máy [S3][S4]. Phiên bản cập nhật thường xuyên — khi gặp lỗi, cách nhanh nhất là vào trang pandas.pydata.org hoặc numpy.org để kiểm tra tài liệu mới nhất.
Bước tiếp theo bạn có thể làm ngay hôm nay: tải một file CSV từ Google Sheets (File → Tải xuống → CSV), mở Jupyter, gõ sáu lệnh ở phần Pandas phía trên, xem kết quả. Khi đã quen tay, bạn có thể mở rộng sang các chủ đề nâng cao hơn như trong lộ trình mastering data science.
Tags
- trực quan hóa dữ liệu
- Pandas
- NumPy
- Python cơ bản
- Excel tự động hóa
- SME Việt Nam
- Matplotlib
- phân tích dữ liệu
Câu hỏi thường gặp
Tiếp theo
Xem phần mềm — hoặc nhận tư vấn
Đọc xong thì chọn: phần mềm PN, công cụ khuyên dùng, hoặc nhờ mình làm theo nhu cầu.
