Ngày 22/10/2026, nhóm pandas phát hành pandas 3.1.0, bản tiếp theo của dòng 3.x. Điểm nhấn là read_csv() nhanh hơn 2–3 lần, đọc song song file lớn, và phương thức mới DataFrame.select().
Vì sao đáng đọc? Đọc CSV và chọn cột xuất hiện trong mọi pipeline dữ liệu, và bản này giúp cả hai nhanh hơn.
Có gì mới trong pandas 3.1.0
Đọc CSV nhanh hơn, có đọc song song. Token hoá, suy luận kiểu và chuyển đổi cột trong read_csv() với engine C được tăng tốc, nên lần đọc đơn luồng thường nhanh gấp 2–3 lần pandas 3.0. Với file cục bộ chưa nén từ 5 MB trở lên, pandas 3.1 đọc song song trên nhiều nhân CPU, kết quả giống hệt đọc tuần tự. Số luồng điều khiển bằng tuỳ chọn mới mode.max_threads (tối đa 6).
Phương thức mới DataFrame.select(). Phương thức này trả về DataFrame mới chỉ chứa các cột bạn chỉ định, và làm ba việc trong một lần gọi: chọn cột theo tên, tính cột mới bằng biểu thức pd.col(), hoặc tính cột mới bằng hàm qua tham số từ khoá — cột tính sau có thể tham chiếu cột tính trước.
Lọc bằng mặt nạ boolean gọn hơn. DataFrame.filter() và Series.filter() giờ nhận mặt nạ boolean qua tham số mới cond, giữ lại các hàng (hoặc cột với axis=1) mà mặt nạ bằng True.
Các cải tiến nhỏ khác. read_csv() hỗ trợ kiểu số phức với engine C. Bản 3.1 có wheel cho Python 3.15 và yêu cầu Python 3.11 trở lên.
Điểm cần chú ý khi nâng cấp
Thứ nhất, tham số inplace bắt đầu bị deprecated ở các phương thức vốn không thực sự làm việc “tại chỗ” (kế hoạch PDEP-8). Code cũ như df.dropna(inplace=True) vẫn chạy nhưng in cảnh báo; hãy gán lại kết quả, ví dụ df = df.dropna().
Thứ hai, read_csv() với dtype="category" giờ suy luận danh mục số và boolean thay vì luôn ra chuỗi. Cột mã số 0 ở đầu như mã bưu điện nên đọc dưới dạng chuỗi rồi mới chuyển sang category.
Thứ ba, mặc định độ phân giải datetime dùng micro giây — hãy kiểm tra lại các phép so sánh timestamp sau khi nâng cấp.
Điều này có ý nghĩa gì với bạn
Nếu bạn đang ở pandas 3.0, nâng cấp lên 3.1 ít rủi ro và lợi ích thấy ngay: job đọc CSV lớn chạy nhanh hơn mà không cần sửa code. Nhưng đừng nâng cấp “mù”: chạy bộ test, sửa dần các lệnh inplace=True, và kiểm tra các đoạn đọc CSV có cột category hoặc mã số 0 ở đầu.
Bài viết liên quan
- Python 3.15 ra mắt ngày 1/10: frozendict, lazy import tường minh và JIT nhanh hơn — checklist trước khi nâng cấp
- Tạm biệt Python 3.10: bản 3.10.22 là bản cuối cùng, 5 bản vá bảo mật đồng loạt phát hành ngày 1/10
- SQLModel 0.0.45+: datetime mặc định chuyển sang UTC, thêm hỗ trợ trực tiếp PostgreSQL, MySQL và MariaDB
Câu hỏi thường gặp
pandas 3.1.0 có phải bản nâng cấp lớn không?
Không. Đây là bản minor tiếp nối pandas 3.0, tập trung vào hiệu năng đọc CSV, API chọn cột mới và deprecation theo PDEP-8.
Nâng cấp lên pandas 3.1 có làm vỡ code cũ không?
Phần lớn code chạy bình thường. Hai điểm dễ vỡ nhất là inplace=True bị cảnh báo và read_csv() với dtype="category" suy luận danh mục số — hãy chạy test đầy đủ trước khi triển khai production.
read_csv() song song áp dụng cho mọi file CSV không?
Không. Đọc song song chỉ bật mặc định với file cục bộ chưa nén từ 5 MB trở lên; file nén, file từ URL hoặc file nhỏ vẫn đọc tuần tự.
Tôi có cần Python 3.15 để dùng pandas 3.1 không?
Không. pandas 3.1 yêu cầu Python 3.11 trở lên và có wheel cho Python 3.15, nhưng chạy được trên Python 3.11, 3.12, 3.13 hoặc 3.14.
💬 Tin này ảnh hưởng tới dự án của bạn thế nào? Chia sẻ góc nhìn của bạn trong phần bình luận — mình đọc hết và sẽ tổng hợp những ý hay nhất.
Nguồn tham khảo
- pandas — What’s new in 3.1.0 (October 22, 2026): https://pandas.pydata.org/pandas-docs/dev/whatsnew/v3.1.0.html
- Real Python — Python 3.15 Ships and Other Python News for November 2026: https://realpython.com/python-news-november-2026/
