Giới Thiệu Về Thư Viện Pandas Trong Python

Thư viện Pandas

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.

Import Pandas vào chương trình Python
Hình 1. Import Pandas vào chương trình Python

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.

Truy vấn dữ liệu thông qua thư viện Pandas
Hình 2. Truy vấn dữ liệu thông qua thư viện Pandas

Cách cài đặt thư viện Pandas trong Python

Cài thư viện Pandas bằng pip như sau:

  1. Mở command prompt hoặc terminal.

  2. Nâng pip lên bản mới nhất:

pip install --upgrade pip
  1. Cài Pandas:
pip install pandas
  1. 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:

  1. DataFrame: kiểu dữ liệu chính, biểu diễn một bảng dữ liệu hai chiều.
  2. Series: dữ liệu một chiều, giống một cột của bảng.
  3. Index: chỉ mục (nhãn) của các hàng hoặc cột trong DataFrame.
  4. MultiIndex: chỉ mục nhiều cấp.
  5. Timedelta: khoảng thời gian.
  6. Sparse: lưu dữ liệu thưa, phần lớn là giá trị thiếu (NaN), để tiết kiệm bộ nhớ.
  7. 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.
  8. Interval: khoảng giá trị.
  9. Period: khoảng thời gian theo chu kỳ, ví dụ một tháng, một quý.
  10. 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.

Series và DataFrame là hai cấu trúc dữ liệu trong thư viện Pandas
Hình 3. Series và DataFrame là hai cấu trúc dữ liệu trong thư viện Pandas

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.

Rate this post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *