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 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 giới thiệu hai cấu trúc dữ liệu chính:
- 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.
- 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)
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.
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!