Trong bài này chúng ta sẽ cùng tìm hiểu thư viện Pandas trong ngôn ngữ lập trình Python: Pandas là gì, dùng để làm gì, cách cài đặt và 2 cấu trúc dữ liệu chính là Series và DataFrame.
Nếu NumPy làm việc với mảng số thuần túy, thì Pandas làm việc với dữ liệu dạng bảng có tên cột, tên hàng, giống hệt một sheet Excel. Bạn log dữ liệu cảm biến ra file CSV rồi muốn lọc, thống kê, vẽ đồ thị? Pandas đọc file đó chỉ bằng một dòng code nhé.
Thư viện Pandas trong Python
Pandas là thư viện mã nguồn mở của Python chuyên dùng để phân tích và xử lý dữ liệu. Các công việc như đọc dữ liệu, làm sạch, lọc, tổng hợp, thống kê đều có sẵn hàm trong Pandas.
Trong mảng khoa học dữ liệu (data science), Pandas gần như là công cụ bắt buộc phải biết, vì hầu hết dữ liệu thực tế đều ở dạng bảng.

Tại sao phải dùng thư viện Pandas trong Python?
Thử tưởng tượng bạn có file CSV vài chục nghìn dòng, cần lọc ra các dòng có nhiệt độ trên 30 độ rồi tính trung bình theo từng ngày. Viết bằng Python thuần thì phải tự đọc file, tách cột, ép kiểu, viết vòng lặp… dễ cả trăm dòng. Với Pandas thì chỉ khoảng 3 dòng.
Pandas cho phép bạn thao tác trên cả bảng dữ liệu giống như làm trên Excel, nhưng bằng code nên lặp lại được và xử lý được dữ liệu lớn hơn rất nhiều.
Những tính năng chính của thư viện Pandas
Pandas chuyên làm việc với dữ liệu dạng bảng. Một số tính năng chính:
-
Đọc/ghi dữ liệu: đọc và ghi từ nhiều nguồn như CSV, Excel, SQL, Parquet.
-
Làm sạch dữ liệu: xử lý giá trị bị thiếu, loại bỏ dòng trùng lặp, biến đổi dữ liệu.
-
Truy vấn dữ liệu: lọc dữ liệu theo điều kiện, theo giá trị hoặc theo biểu thức.
-
Gộp và ghép dữ liệu: nối nhiều bảng lại với nhau theo cột chung, giống JOIN trong SQL.

Cách cài đặt thư viện Pandas trong Python
Cài thư viện Pandas bằng pip như sau:
-
Mở command prompt hoặc terminal.
-
Nâng pip lên bản mới nhất:
pip install --upgrade pip
- Cài Pandas:
pip install pandas
- Chờ quá trình cài đặt hoàn tất. Pandas sẽ tự cài kèm NumPy nếu máy bạn chưa có.
Để kiểm tra đã cài thành công chưa, mở trình thông dịch Python và gõ:
import pandas as pd
Không báo lỗi gì là cài thành công rồi nhé.
Những kiểu dữ liệu trong thư viện Pandas
Pandas có khá nhiều kiểu dữ liệu để biểu diễn dữ liệu dạng bảng:
- DataFrame: kiểu dữ liệu chính, biểu diễn một bảng dữ liệu hai chiều.
- Series: dữ liệu một chiều, giống một cột của bảng.
- Index: chỉ mục (nhãn) của các hàng hoặc cột trong DataFrame.
- MultiIndex: chỉ mục nhiều cấp.
- Timedelta: khoảng thời gian.
- Sparse: lưu dữ liệu thưa, phần lớn là giá trị thiếu (NaN), để tiết kiệm bộ nhớ.
- Categorical: biến phân loại, ví dụ cột giới tính chỉ có vài giá trị lặp lại.
- Interval: khoảng giá trị.
- Period: khoảng thời gian theo chu kỳ, ví dụ một tháng, một quý.
- DatetimeIndex: chỉ mục kiểu ngày giờ, rất hay dùng với dữ liệu log theo thời gian.
Người mới chỉ cần nắm chắc 2 kiểu đầu tiên là DataFrame và Series, các kiểu còn lại gặp đến đâu tra đến đó.
Cấu trúc dữ liệu trong thư viện Pandas
Pandas từng có 3 cấu trúc dữ liệu: Series, DataFrame và Panel. Panel đã bị loại bỏ từ các bản Pandas mới, nên giờ chúng ta chỉ cần quan tâm 2 cấu trúc chính là Series và DataFrame.

1. Series
Series là mảng một chiều, mỗi phần tử có thêm một nhãn gọi là index (chỉ mục). Có thể hình dung Series như một cột trong Excel, cột bên trái là số thứ tự (index), cột bên phải là giá trị.
Index mặc định là 0, 1, 2… nhưng bạn có thể tự đặt index là chữ, ngày tháng… để truy xuất dữ liệu dễ hơn.
Ví dụ:
import pandas as pd # Khởi tạo một Series gồm các số nguyên từ 0 đến 4 s = pd.Series([0, 1, 2, 3, 4]) # In ra Series và chỉ mục tương ứng của mỗi phần tử print(s) print(s.index) # Truy xuất phần tử thứ hai của Series print(s[1]) # Truy xuất các phần tử có chỉ mục từ 1 đến 3 của Series print(s[1:4]) # Tạo một Series mới với chỉ mục là các chữ cái s2 = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e']) # In ra Series và chỉ mục tương ứng của mỗi phần tử print(s2) print(s2.index) # Truy xuất phần tử có chỉ mục là 'b' của Series print(s2['b']) # Truy xuất các phần tử có chỉ mục từ 'b' đến 'd' của Series print(s2['b':'d'])
Kết quả:
0 0 1 1 2 2 3 3 4 4 dtype: int64 RangeIndex(start=0, stop=5, step=1) 1 1 1 2 2 3 3 dtype: int64 a 10 b 20 c 30 d 40 e 50 dtype: int64 Index(['a', 'b', 'c', 'd', 'e'], dtype='object') 20 b 20 c 30 d 40 dtype: int64
Ví dụ tạo 2 Series: s dùng index số mặc định, s2 dùng index là chữ cái. Với cả hai, bạn đều truy xuất được từng phần tử hoặc một đoạn bằng slice.
Lưu ý: Slice theo index số s[1:4] không lấy phần tử cuối (giống list), nhưng slice theo nhãn chữ s2['b':'d'] lại lấy cả phần tử ‘d’. Để ý kết quả ở trên sẽ thấy. Đây là chỗ rất hay nhầm khi mới dùng Pandas.
2. DataFrame
DataFrame là bảng dữ liệu hai chiều gồm các hàng và cột, giống một bảng trong SQL hay một sheet Excel. Mỗi cột của DataFrame thực chất là một Series.
Ví dụ:
import pandas as pd
# Khởi tạo một DataFrame từ một dictionary chứa các Series
data = {'name': pd.Series(['Alice', 'Bob', 'Charlie']),
'age': pd.Series([25, 30, 35]),
'city': pd.Series(['Hanoi', 'HCM', 'Da Nang'])}
df = pd.DataFrame(data)
# In ra DataFrame
print(df)
# Truy xuất các hàng và cột của DataFrame
print(df['name'])
print(df.age)
print(df.loc[1])
print(df.iloc[0:2, 1:3])
Kết quả:
name age city
0 Alice 25 Hanoi
1 Bob 30 HCM
2 Charlie 35 Da Nang
0 Alice
1 Bob
2 Charlie
Name: name, dtype: object
0 25
1 30
2 35
Name: age, dtype: int64
name Bob
age 30
city HCM
Name: 1, dtype: object
age city
0 25 Hanoi
1 30 HCM
Giải thích từng lệnh truy xuất:
-
df['name']vàdf.age: lấy một cột theo tên, kết quả là một Series. -
df.loc[1]: lấy một hàng theo nhãn index, ở đây là hàng có index 1 (Bob). -
df.iloc[0:2, 1:3]: lấy theo vị trí số, hàng 0 đến 1 và cột 1 đến 2 (age và city).
Nhớ đơn giản: loc đi theo nhãn (label), iloc đi theo vị trí số (integer location).
Lời kết
Pandas là công cụ cực mạnh để làm việc với dữ liệu dạng bảng. Bắt đầu bằng việc nắm chắc Series, DataFrame và cách truy xuất bằng loc, iloc, sau đó thử đọc một file CSV thật của bạn bằng pd.read_csv() là sẽ thấy ngay sức mạnh của nó.
Hi vọng bài viết này có ích với bạn, hẹn gặp lại trong bài tiếp theo về thư viện Matplotlib.

