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

7 Bước Tự Động Hóa Thống Kê Mô Tả Bằng Python

KDnuggets· Kanwal Mehreen· 9/7/2026general

Ngừng viết hàm mean() và std() cho từng cột. Hãy tìm hiểu cách tự động hóa thống kê mô tả trong Python và tạo các bảng tóm tắt sẵn sàng để xuất bản chỉ trong vài bước.

7 bước tự động hóa thống kê mô tả bằng Python - KDnuggets Blog Bài viết hàng đầu Giới thiệu Chủ đề AI Lời khuyên nghề nghiệp Thị giác máy tính Kỹ thuật dữ liệu Khoa học dữ liệu Mô hình ngôn ngữ Học máy MLOps NLP Lập trình Python SQL Bộ dữ liệu Sự kiện Tài nguyên Tài liệu tham khảo nhanh Đề xuất Báo cáo kỹ thuật Quảng cáo Tham gia Bản tin 7 bước tự động hóa thống kê mô tả bằng Python Ngừng viết mean() và std() cho từng cột. Tìm hiểu cách tự động hóa thống kê mô tả trong Python và tạo bảng tóm tắt sẵn sàng xuất bản chỉ trong vài bước. Bởi Kanwal Mehreen, Biên tập viên kỹ thuật & Chuyên gia nội dung của KDnuggets vào ngày 9/7/2026 trong Python # Giới thiệu Mọi phân tích đều bắt đầu giống nhau: tải một tập dữ liệu và cố gắng tìm hiểu nội dung thực sự của nó. Có bao nhiêu hàng? Cột nào là số? Có bao nhiêu dữ liệu bị thiếu? Có điều gì bị lệch nghiêm trọng không? Hầu hết chúng ta trả lời những câu hỏi đó bằng cách sao chép các đoạn mã df.describe(), df.isna().sum() và df.groupby(...).agg(...) mà chúng ta đã gõ hàng nghìn lần, sau đó định dạng lại đầu ra bằng tay khi đến lúc đưa vào báo cáo. Đó là sự lãng phí công sức. Hệ sinh thái Python hiện có các công cụ giúp bạn chuyển từ DataFrame thô sang bảng tóm tắt được định dạng, có thể chia sẻ chỉ trong một hoặc hai dòng — và các công cụ khác được xây dựng đặc biệt để tạo ra loại "Bảng 1" mà bạn thường thấy trong các bài báo nghiên cứu. Hướng dẫn này sẽ hướng dẫn bạn 7 bước để xây dựng một quy trình lặp lại thay vì một đống đoạn mã dùng một lần. Chúng ta sẽ sử dụng tập dữ liệu Palmer Penguins xuyên suốt. Nó nhỏ, mở và có sự kết hợp thực tế giữa các cột số và phân loại, các giá trị bị thiếu thực tế và một biến nhóm tự nhiên (loài). Vậy hãy bắt đầu. # 1. Thiết lập môi trường và tải dữ liệu Cài đặt các gói chúng ta sẽ sử dụng trong hướng dẫn này: pip install pandas seaborn skimpy tableone great-tables fg-data-profiling Một lưu ý quan trọng về gói cuối cùng: thư viện lập hồ sơ phổ biến đã được đổi tên nhiều lần. Ban đầu nó là pandas-profiling, trở thành ydata-profiling vào năm 2023 và được đổi tên lại thành fg-data-profiling vào tháng 4/2026. Gói ydata-profiling cũ hơn vẫn cài đặt và chạy, nhưng nó không còn nhận được cập nhật, vì vậy các dự án mới nên ưu tiên fg-data-profiling. Chúng ta sẽ đề cập đến cả hai kiểu nhập trong Bước 5. Bây giờ hãy tải dữ liệu. Seaborn có một tập dữ liệu chim cánh cụt tích hợp sẵn, giúp chúng ta không phải tải xuống: import pandas as pd import seaborn as sns df = sns.load_dataset("penguins") print(df.shape) print(df.dtypes) print(df.isna().sum()) Đầu ra: (344, 7) species object island object bill_length_mm float64 bill_depth_mm float64 flipper_length_mm float64 body_mass_g float64 sex object dtype: object species 0 island 0 bill_length_mm 2 bill_depth_mm 2 flipper_length_mm 2 body_mass_g 2 sex 11 dtype: int64 Bạn sẽ thấy bảy cột: ba cột phân loại (species, island, sex) và bốn phép đo số (bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g). Các phép đo có 2 giá trị bị thiếu mỗi cột, và cột sex có 11 giá trị bị thiếu. Hãy ghi nhớ chi tiết này — chúng ta sẽ xem mỗi công cụ báo cáo dữ liệu bị thiếu này như thế nào. # 2. Lấy đường cơ sở với df.describe() Hàm `describe()` tích hợp của Pandas là điểm khởi đầu rõ ràng và có lý do chính đáng. Hàm này hoạt động tức thì và không yêu cầu cài đặt bổ sung: `df.describe().round(2)` Kết quả: bill_length_mm bill_depth_mm flipper_length_mm body_mass_g count 342.00 342.00 342.00 342.00 mean 43.92 17.15 200.92 4201.75 std 5.46 1.97 14.06 801.95 min 32.10 13.10 172.00 2700.00 25% 39.22 15.60 190.00 3550.00 50% 44.45 17.30 197.00 4050.00 75% 48.50 18.70 213.00 4750.00 max 59.60 21.50 231.00 6300.00 Kết quả này thực sự hữu ích, nhưng cần lưu ý những điểm hạn chế của nó. Theo mặc định, hàm này bỏ qua hoàn toàn các cột phân loại. Hàm cung cấp số lượng giá trị không rỗng nhưng không trực tiếp cho biết tỷ lệ phần trăm thiếu. Hàm cũng chỉ dừng lại ở tóm tắt năm số – không có độ xiên, không có độ nhọn, không có cảm nhận về hình dạng phân phối. Đối với một kiểm tra nhanh, hàm này là đủ, nhưng làm nền tảng cho một báo cáo thì còn nhiều thiếu sót. Bước tiếp theo sẽ khắc phục một số thiếu sót đó mà không cần rời khỏi Pandas. # 3. Đẩy mạnh Pandas với `include`, `.agg()` và `groupby` Trước khi sử dụng các gói bên ngoài, cần biết Pandas có thể hỗ trợ đến mức nào – bởi vì đối với nhiều công việc hàng ngày, điều này là đủ. Đầu tiên, gộp các cột phân loại vào cùng một bản tóm tắt với `include="all"`: `df.describe(include="all").round(2)` Kết quả: species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex count 344 344 342.00 342.00 342.00 342.00 333 unique 3 3 NaN NaN NaN NaN 2 top Adelie Biscoe NaN NaN NaN NaN Male freq 152 168 NaN NaN NaN NaN 168 mean NaN NaN 43.92 17.15 200.92 4201.75 NaN std NaN NaN 5.46 1.97 14.06 801.95 NaN min NaN NaN 32.10 13.10 172.00 2700.00 NaN 25% NaN NaN 39.22 15.60 190.00 3550.00 NaN 50% NaN NaN 44.45 17.30 197.00 4050.00 NaN 75% NaN NaN 48.50 18.70 213.00 4750.00 NaN max NaN NaN 59.60 21.50 231.00 6300.00 NaN Hiện tại, bạn nhận được các giá trị `unique`, `top` và `freq` cho các cột văn bản cùng với các số liệu thống kê số (với `NaN` điền vào các ô mà một thống kê không áp dụng). Một bảng, mọi cột. Thứ hai, xây dựng một bản tóm tắt tùy chỉnh với `.agg()` để bạn kiểm soát chính xác những số liệu thống kê nào xuất hiện – bao gồm cả những số liệu mà `describe()` bỏ qua, như độ xiên và độ nhọn – và thêm tỷ lệ phần trăm dữ liệu thiếu: `numeric = df.select_dtypes("number")` `summary = numeric.agg(["mean", "median", "std", "skew", "kurt"]).T` `summary["missing_pct"] = df[numeric.columns].isna().mean().mul(100).round(1)` `summary.round(2)` Kết quả: mean median std skew kurt missing_pct bill_length_mm 43.92 44.45 5.46 0.05 -0.88 0.6 bill_depth_mm 17.15 17.30 1.97 -0.14 -0.91 0.6 flip

Nguồn tin: KDnuggets — Tác giả: Kanwal Mehreen. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.