Làm sạch và lưu trữ dữ liệu đã thu thập bằng Pandas
By JoeVu, at: 22:05 Ngày 17 tháng 12 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes


Trích xuất dữ liệu web thường dẫn đến lượng lớn dữ liệu không cấu trúc cần được làm sạch và sắp xếp trước khi có thể sử dụng hiệu quả. Pandas, một thư viện thao tác dữ liệu mạnh mẽ trong Python, là một công cụ tuyệt vời cho nhiệm vụ này.
Hướng dẫn này sẽ đề cập đến các kỹ thuật cần thiết để làm sạch và lưu trữ dữ liệu đã trích xuất bằng Pandas.
Giới thiệu về Pandas
Pandas là một thư viện Python cung cấp các cấu trúc dữ liệu và công cụ phân tích dữ liệu. Nó cực kỳ mạnh mẽ khi làm việc với dữ liệu có cấu trúc và có thể xử lý nhiều định dạng tệp khác nhau như CSV, Excel và cơ sở dữ liệu SQL. Dưới đây là một số thành phần chính của Pandas:
- Series: Một mảng có nhãn một chiều có khả năng lưu trữ bất kỳ kiểu dữ liệu nào.
- DataFrame: Một cấu trúc dữ liệu có nhãn hai chiều với các cột có thể có các kiểu dữ liệu khác nhau, tương tự như bảng tính hoặc bảng SQL.
Đọc dữ liệu đã trích xuất vào Pandas
Đầu tiên, bạn cần tải dữ liệu đã trích xuất vào một DataFrame của Pandas. Giả sử bạn đã trích xuất dữ liệu và lưu trữ nó trong một danh sách các từ điển, bạn có thể tải nó như sau:
import pandas as pd
# Dữ liệu mẫu đã trích xuất
data = [
{'name': 'Comic book', 'price': 28.8, 'author': 'Joey'},
{'name': 'Earphone', 'price': 34.2, 'author': 'Snowy'},
{'name': 'iPhone 5 case', 'price': 22.9, 'author': 'Chiky'}
]
# Đọc dữ liệu vào một DataFrame
df = pd.DataFrame(data)
print(df)
Làm sạch dữ liệu
Làm sạch dữ liệu là một bước quan trọng trong việc chuẩn bị dữ liệu cho phân tích. Nó bao gồm xử lý các giá trị bị thiếu, loại bỏ các bản sao và sửa các sự không nhất quán. Dưới đây là một số nhiệm vụ làm sạch dữ liệu phổ biến:
Xử lý các giá trị bị thiếu
Các giá trị bị thiếu có thể được xử lý theo nhiều cách, tùy thuộc vào ngữ cảnh và tầm quan trọng của dữ liệu bị thiếu.
-
Xác định các giá trị bị thiếu:
print(df.isnull().sum())
-
Điền các giá trị bị thiếu:
df['price'].fillna(df['price'].mean(), inplace=True) # Điền các tuổi bị thiếu bằng giá trị trung bình
-
Bỏ các hàng có giá trị bị thiếu:
df.dropna(inplace=True)
Loại bỏ các bản sao
Các bản sao có thể làm sai lệch phân tích của bạn, vì vậy việc loại bỏ chúng là rất quan trọng:
df.drop_duplicates(inplace=True)
Sửa các sự không nhất quán
Dữ liệu không nhất quán có thể xảy ra do lỗi chính tả hoặc định dạng khác nhau. Việc chuẩn hóa dữ liệu của bạn là rất quan trọng:
df['city'] = df['city'].str.title() # Chuẩn hóa tên thành phố thành chữ hoa đầu dòng
Biến đổi dữ liệu
Biến đổi dữ liệu bao gồm việc chuyển đổi dữ liệu thành định dạng hoặc cấu trúc mong muốn.
Chuyển đổi kiểu dữ liệu
Hãy đảm bảo rằng mỗi cột có kiểu dữ liệu phù hợp:
df['price'] = df['price'].astype(float)
Tạo các cột mới
Đôi khi, bạn có thể cần tạo các cột mới được dẫn xuất từ các cột hiện có:
df['price_category'] = df['price'].apply(lambda x: 'Expensive' if x >= 100 else 'Cheap')
Lưu trữ dữ liệu đã làm sạch
Sau khi dữ liệu được làm sạch và biến đổi, nó cần được lưu trữ trong một định dạng có thể dễ dàng truy cập và phân tích sau này.
Lưu trữ dữ liệu trong CSV
CSV là một định dạng phổ biến để lưu trữ dữ liệu bảng:
df.to_csv('cleaned_data.csv', index=False)
Lưu trữ dữ liệu trong Excel
Định dạng Excel hữu ích cho việc lưu trữ dữ liệu phức tạp hơn:
df.to_excel('cleaned_data.xlsx', index=False)
Lưu trữ dữ liệu trong cơ sở dữ liệu
Đối với các tập dữ liệu lớn hơn, việc lưu trữ dữ liệu trong cơ sở dữ liệu SQL có thể hiệu quả hơn:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///scraped_data.db')
df.to_sql('data', engine, index=False, if_exists='replace')
Kết luận
Làm sạch và lưu trữ dữ liệu đã trích xuất là một bước quan trọng trong đường dẫn phân tích dữ liệu. Bằng cách sử dụng Pandas, bạn có thể xử lý hiệu quả các tập dữ liệu lớn, đảm bảo dữ liệu của bạn chính xác, nhất quán và được tổ chức tốt.
Điều này không chỉ tạo điều kiện thuận lợi cho việc phân tích tốt hơn mà còn làm cho dữ liệu của bạn đáng tin cậy và khả thi hơn.