Bỏ qua tới nội dung chính
Quay lại tin tức

Pandas không đi đến đâu cả: Tại sao đây vẫn là lựa chọn hàng đầu của tôi để xử lý dữ liệu

Towards Data Science· Soner Yıldırım· 17/5/2026general

Mặc dù hàng tỷ hàng dữ liệu có thể là một trường hợp ngoại lệ, nhưng đối với các tác vụ khác, Pandas vẫn là một công cụ đáng tin cậy.

Lập trình Pandas vẫn là lựa chọn hàng đầu của tôi để xử lý dữ liệu Hàng tỷ hàng có thể là ngoại lệ, nhưng đối với mọi thứ khác, Pandas vẫn là một công cụ rất đáng tin cậy. Soner Yıldırım Ngày 17/5/2026 5 phút đọc Chia sẻ Hình ảnh của Efe Yagiz Soysal qua Unsplash Khi tôi bắt đầu học khoa học dữ liệu vào năm 2020, Pandas là một trong những công cụ phổ biến nhất. Mặc dù các công cụ mới tập trung vào việc cải thiện những điểm yếu của Pandas trong việc xử lý các tập dữ liệu rất lớn, tôi vẫn sử dụng Pandas cho nhiều tác vụ làm sạch, xử lý và phân tích dữ liệu. Đúng vậy, Pandas gây khó khăn cho tôi khi làm việc với hàng tỷ hàng, nhưng nó chắc chắn là quá đủ để làm việc với bất kỳ thứ gì dưới mức đó. Tôi thấy Pandas được sử dụng không chỉ cho EDA (Exploratory Data Analysis - Phân tích dữ liệu thăm dò) hoặc trong các sổ ghi chép (notebooks) mà còn trong các hệ thống sản xuất. Trong bài viết này, tôi sẽ trình bày một số thao tác làm sạch và xử lý dữ liệu để chứng minh khả năng của Pandas. Hãy bắt đầu với tập dữ liệu, chứa các đơn vị lưu kho (SKU) và phản hồi API (Application Programming Interface) tìm kiếm cho các SKU này. import pandas as pd search_results = pd.read_csv("search_results.csv") search_results.head() Kết quả tìm kiếm là một danh sách các từ điển và trông như sau: search_results.loc[0, "search_result"] "[{'my_id': 'HBCV00007F5Y2B', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00007UPQBM', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00008I29IH', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00006U3ZYB', 'distance': 0.8961254358291626, 'entity': {}}, {'my_id': 'HBCV0000AFA4H6', 'distance': 0.8702399730682373, 'entity': {}}, {'my_id': 'HBCV00009CDGD4', 'distance': 0.86175537109375, 'entity': {}}, {'my_id': 'HBCV000046336T', 'distance': 0.8594968318939209, 'entity': {}}, {'my_id': 'HBCV00009QDZRT', 'distance': 0.8572311997413635, 'entity': {}}, {'my_id': 'HBCV00008E11P3', 'distance': 0.8553324937820435, 'entity': {}}, {'my_id': 'HBV00000C4IY6', 'distance': 0.8539167642593384, 'entity': {}}] ... and 5 entities remaining" Như chúng ta thấy trong kết quả đầu ra, đây không phải là một danh sách từ điển đúng định dạng vì phần cuối ("... and 5 entities remaining"). Ngoài ra, nó được lưu dưới dạng một chuỗi duy nhất. Để sử dụng nó tốt hơn, chúng ta cần chuyển đổi nó thành một danh sách từ điển đúng định dạng. Dòng mã sau loại bỏ phần cuối bằng cách tách chuỗi tại "..." và lấy phần tách đầu tiên. search_results.loc[0, "search_result"].split("...")[0].strip() Tuy nhiên, kết quả đầu ra vẫn là một chuỗi duy nhất. Chúng ta có thể sử dụng mô-đun ast tích hợp của Python để chuyển đổi nó thành một danh sách: import ast res = ast.literal_eval(search_results.loc[0, "search_result"].split("...")[0].strip()) res [{'my_id': 'HBCV00007F5Y2B', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00007UPQBM', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00008I29IH', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00006U3ZYB', 'distance': 0.8961254358291626, 'entity': {}}, {'my_id': 'HBCV0000AFA4H6', 'distance': 0.8702399730682373, 'entity': {}}, {'my_id': 'HBCV00009CDGD4', 'distance': 0.86175537109375, 'entity': {}}, {'my_id': 'HBCV000046336T', 'distance': 0.8594968318939209, 'entity': {}}, {'my_id': 'HBCV00009QDZRT', 'distance': 0.8572311997413635, 'entity': {}}, {'my_id': 'HBCV00008E11P3', 'distance': 0.8553324937820435, 'entity': {}}, {'my_id': 'HBV00000C4IY6', 'distance': 0.8539167642593384, 'entity': {}}] Hiện tại, chúng ta có kết quả tìm kiếm dưới dạng một danh sách các từ điển. Thao tác này chỉ áp dụng cho một hàng duy nhất. Chúng ta cần áp dụng cùng một thao tác cho tất cả các SKU (tức là toàn bộ cột SKU). Một lựa chọn là duyệt qua tất cả các hàng trong một vòng lặp và thực hiện cùng một thao tác. Tuy nhiên, đây không phải là lựa chọn tối ưu. Chúng ta nên ưu tiên các thao tác véc-tơ hóa khi có thể. Thao tác véc-tơ hóa về cơ bản có nghĩa là thực thi mã trên tất cả các hàng cùng một lúc. Trên một hàng duy nhất, tôi đã sử dụng phương pháp tách chuỗi để loại bỏ phần cuối của chuỗi nhưng nó không hoạt động trong thao tác véc-tơ hóa. Một lựa chọn mạnh mẽ hơn dường như là sử dụng biểu thức chính quy (regex). search_results.loc[:, 'search_result'] = search_results['search_result'].str.replace(r"\.\.\..*", "", regex=True).str.strip() Đoạn mã này chọn "... " và mọi thứ theo sau nó, sau đó thay thế chúng bằng không. Nói cách khác, nó loại bỏ phần "... và 5 thực thể còn lại". Hiện tại, tất cả các hàng trong cột kết quả tìm kiếm đều là một danh sách các từ điển. search_results.loc[10, "search_result"] "[{'my_id': 'HBCV00007F5Y2B', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00007UPQBM', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00008I29IH', 'distance': 1.0, 'entity': {}}, {'my_id': 'HBCV00006U3ZYB', 'distance': 0.8961254358291626, 'entity': {}}, {'my_id': 'HBCV0000AFA4H6', 'distance': 0.8702399730682373, 'entity': {}}, {'my_id': 'HBCV00009CDGD4', 'distance': 0.86175537109375, 'entity': {}}, {'my_id': 'HBCV000046336T', 'distance': 0.859496831893920

Nguồn tin: Towards Data Science — Tác giả: Soner Yıldırım. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.