Chuyển tới nội dung chính

Ngày 45: Giới thiệu Pandas - Bắt đầu làm quen với DataFrames và Series

Chào mừng các bạn đến với Ngày 45 của chuỗi Hướng dẫn Python 365 ngày! Hôm nay, chúng ta sẽ cùng nhau khám phá một thư viện vô cùng mạnh mẽ và quan trọng trong thế giới xử lý dữ liệu với Python: Pandas.

Pandas Logo

Pandas là thư viện mã nguồn mở cung cấp các cấu trúc dữ liệu hiệu suất cao và dễ sử dụng cùng với các công cụ phân tích dữ liệu mạnh mẽ. Nó là nền tảng cho hầu hết các công việc phân tích dữ liệu, machine learning và khoa học dữ liệu trong Python.

Tại sao lại là Pandas?

Trong các bài trước, chúng ta đã làm việc với dữ liệu dưới dạng list hoặc dictionary. Tuy nhiên, khi làm việc với lượng dữ liệu lớn hơn hoặc dữ liệu có cấu trúc phức tạp hơn (giống như bảng tính Excel hoặc bảng trong cơ sở dữ liệu), việc sử dụng các cấu trúc dữ liệu cơ bản của Python trở nên khó khăn và kém hiệu quả. Pandas ra đời để giải quyết vấn đề này với các cấu trúc dữ liệu tối ưu cho dữ liệu dạng bảng.

Hai Cấu Trúc Dữ Liệu Chính: Series và DataFrame

Pandas Data Structures

Pandas giới thiệu hai cấu trúc dữ liệu chính:

  1. Series: Một mảng một chiều (1D) có nhãn. Nó giống như một cột trong bảng tính hoặc một Series trong toán học. Mỗi phần tử trong Series có một chỉ mục (index) đi kèm.
  2. DataFrame: Một cấu trúc dữ liệu hai chiều (2D) có nhãn với các cột có kiểu dữ liệu khác nhau. Nó giống như một bảng tính, một bảng trong cơ sở dữ liệu hoặc một dictionary của các đối tượng Series. DataFrame là cấu trúc dữ liệu được sử dụng phổ biến nhất trong Pandas.

Bắt đầu với Series

Để sử dụng Pandas, bạn cần cài đặt và import nó:

pip install pandas
import pandas as pd

Tạo Series từ List

import pandas as pd

data = [10, 20, 30, 40, 50]
my_series = pd.Series(data)

print(my_series)

Series Example

Kết quả:

0    10
1 20
2 30
3 40
4 50
dtype: int64

Ở đây, Pandas tự động tạo chỉ mục số nguyên từ 0 đến 4. Bạn cũng có thể chỉ định chỉ mục riêng:

import pandas as pd

data = [10, 20, 30, 40, 50]
indices = ['a', 'b', 'c', 'd', 'e']
my_series = pd.Series(data, index=indices)

print(my_series)

Kết quả:

a    10
b 20
c 30
d 40
e 50
dtype: int64

Tạo Series từ Dictionary

Dictionary có thể được sử dụng để tạo Series, trong đó keys của dictionary trở thành index của Series:

import pandas as pd

data_dict = {'apple': 3, 'banana': 5, 'cherry': 6}
my_series = pd.Series(data_dict)

print(my_series)

Kết quả:

apple    3
banana 5
cherry 6
dtype: int64

Bắt đầu với DataFrame

DataFrame là cấu trúc dữ liệu mạnh mẽ nhất trong Pandas. Nó giống như một tập hợp các Series có cùng chỉ mục.

DataFrame Structure

Tạo DataFrame từ Dictionary các List

Cách phổ biến nhất để tạo DataFrame là sử dụng dictionary, trong đó keys là tên cột và values là list dữ liệu cho cột đó:

import pandas as pd

data = {
'Tên': ['An', 'Bình', 'Hoa', 'Dung'],
'Tuổi': [25, 30, 22, 28],
'Thành phố': ['Hà Nội', 'TP.HCM', 'Đà Nẵng', 'Hà Nội']
}

df = pd.DataFrame(data)

print(df)

Kết quả:

    Tên  Tuổi Thành phố
0 An 25 Hà Nội
1 Bình 30 TP.HCM
2 Hoa 22 Đà Nẵng
3 Dung 28 Hà Nội

Pandas lại tự động tạo chỉ mục số nguyên. Bạn có thể chỉ định chỉ mục riêng:

import pandas as pd

data = {
'Tên': ['An', 'Bình', 'Hoa', 'Dung'],
'Tuổi': [25, 30, 22, 28],
'Thành phố': ['Hà Nội', 'TP.HCM', 'Đà Nẵng', 'Hà Nội']
}

indices = ['sv1', 'sv2', 'sv3', 'sv4']
df = pd.DataFrame(data, index=indices)

print(df)

Kết quả:

      Tên  Tuổi Thành phố
sv1 An 25 Hà Nội
sv2 Bình 30 TP.HCM
sv3 Hoa 22 Đà Nẵng
sv4 Dung 28 Hà Nội

Xem Dữ Liệu Cơ Bản

Với DataFrame, bạn có thể xem vài dòng đầu hoặc cuối:

print(df.head(2)) # Xem 2 dòng đầu
print(df.tail(1)) # Xem 1 dòng cuối

Kết quả head(2):

      Tên  Tuổi Thành phố
sv1 An 25 Hà Nội
sv2 Bình 30 TP.HCM

Kết quả tail(1):

      Tên  Tuổi Thành phố
sv4 Dung 28 Hà Nội

Truy cập Cột và Hàng

Bạn có thể truy cập một cột bằng tên cột (kết quả là một Series):

print(df['Tuổi'])
print(type(df['Tuổi']))

Kết quả:

sv1    25
sv2 30
sv3 22
sv4 28
Name: Tuổi, dtype: int64
<class 'pandas.core.series.Series'>

Truy cập nhiều cột (kết quả là một DataFrame):

print(df[['Tên', 'Thành phố']])
print(type(df[['Tên', 'Thành phố']]))

Kết quả:

      Tên Thành phố
sv1 An Hà Nội
sv2 Bình TP.HCM
sv3 Hoa Đà Nẵng
sv4 Dung Hà Nội
<class 'pandas.core.frame.DataFrame'>

Để truy cập hàng bằng index, sử dụng .loc[]:

print(df.loc['sv1'])

Kết quả:

Tên           An
Tuổi 25
Thành phố Hà Nội
Name: sv1, dtype: object

Hoặc truy cập hàng bằng vị trí số nguyên, sử dụng .iloc[]:

print(df.iloc[0]) # Hàng đầu tiên (index 0)

Kết quả:

Tên           An
Tuổi 25
Thành phố Hà Nội
Name: sv1, dtype: object

Kết Luận

Bài viết này đã giới thiệu những kiến thức cơ bản nhất về Pandas, bao gồm hai cấu trúc dữ liệu chính là Series và DataFrame, cùng với cách tạo và xem dữ liệu ban đầu. Pandas là một thư viện rất rộng lớn với nhiều chức năng mạnh mẽ khác mà chúng ta sẽ khám phá trong các bài viết tiếp theo.

Ở Ngày 46, chúng ta sẽ tìm hiểu sâu hơn về cách lọc và chọn dữ liệu trong DataFrame.

Hẹn gặp lại các bạn!