Phân tích đơn biến và đa biến nhẹ nhàng, đơn giản với TTTH_Analyzer package

ngày 06-09-2022

Khi thực hiện một dự án Data Science, chúng ta phải tiến hành rất nhiều công đoạn khác nhau như xác định vấn đề cần giải quyết; tìm hiểu, thu thập, xử lý và chuẩn bị dữ liệu; phân tích dữ liệu, xây dựng, đánh giá model; và triển khai, bảo trì và nhận phản hồi. 
 
Trong đó, việc tìm hiểu, thu thập, xử lý và chuẩn bị dữ liệu là công đoạn chiếm nhiều thời gian và công sức nhất, với 70~80% tổng thời gian của cả dự án. Chất lượng của dữ liệu ảnh hưởng trực tiếp đến kết quả của dự án. Vì vậy, nếu chúng ta thực hiện tốt công đoạn này, chúng ta sẽ có kết quả tốt ở các công đoạn sau.
Một trong những việc quan trọng cần làm ở công đoạn nói trên là phân tích đơn biến và phân tích đa biến. Để hiểu về từng biến (thuộc tính) đơn lẻ trong bộ dữ liệu, chúng ta cần thực hiện phân tích đơn biến, còn khi muốn biết các biến có liên quan đến nhau hay không, chúng ta cần thực hiện phân tích đa biến. Nếu bộ dữ liệu có quá nhiều biến, chúng ta phải thực hiện rất nhiều lần việc phân tích này, vì vậy cũng khó tránh khỏi sai sót khi lập trình. Với mong muốn giúp việc phân tích đơn biến và đa biến được nhẹ nhàng, đơn giản và nhanh chóng hơn, Trung Tâm Tin Học gửi đến các bạn thư viện TTTH_Analyzer. Mời các bạn cài đặt, dùng thử và góp ý nhé.
Cài đặt
- Thư viện được đóng gói và xuất bản tại:  TTTH_Analyzer 
- Việc cài đặt vô cùng dễ dàng với câu lệnh: pip install ttth-mds5-analyzer
- Tham khảo source code chi tiết tại: repo

Danh sách các tính năng hỗ trợ

1. Phân tích đơn biến - Biến liên tục

  • show_central_tendency(variable_name, df)
Trong đó:
- variable_name: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- df: dataframe chứa biến liên tục cần phân tích  - kiểu dataframe pandas
Chức năng: hiển thị các thông tin thống kê của biến như Mean, Median, Mode, Min, Max, Range
  • show_dispersion(variable_name, df)
Trong đó:
- variable_name: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- df: dataframe chứa biến liên tục cần phân tích  - kiểu dataframe pandas
Chức năng: hiển thị thông tin thống kê liên quan đến sự phân tán dữ liệu của biến như: Range, Q1, Q3 , IQR, phương sai, độ lệch, độ nhọn của phân phối
  • visualize_hist_box_plot(variable_name, df)
Trong đó: 
- variable_name: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- df: dataframe chứa biến liên tục cần phân tích  - kiểu dataframe pandas
Chức năng: Trực quan hóa biến bằng histogram và boxplot để biết được phân phối của biến, quan sát outlier
  • analyze_numeric_variable(variable_name, df)
Trong đó:
- variable_name: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- df: dataframe chứa biến liên tục cần phân tích  - kiểu dataframe pandas
Chức năng: hiển thị các thông tin :
- Thông tin thống kê: Mean, Median, Mode, Min, Max và Range
- Thông tin thống kê liên quan đến sự phân tán dữ liệu như : Range, Q1, Q3, IQR, phương sai, độ lệch, độ nhọn của phân phối
- Trực quan hóa bằng histogram và boxplot
 

2. Phân tích đơn biến - Biến phân loại

  • analyze_category_variable(variable_name, df)
Trong đó:
- variable_name: tên biến phân loại cần phân tích - kiểu  chuỗi (string)
- df: dataframe chứa biến phân loại cần phân tích  - kiểu dataframe pandas
Chức năng: Cung cấp thông tin về count values của từng loại và trực quan hóa thông qua barchart

3. Phân tích đa biến: Phân loại với Phân loại

  • create_unique_pair_variable(variables)
    Trong đó: 
- variables: danh sách biến phân loại
Chức năng: Tạo ra danh sách các cặp biến phân loại duy nhất
VD: danh sách biến gồm `A-B-C` --> danh sách các cặp biến duy nhất (không lặp) `[{A,B}, {A,C}, {B,C}]`
Kết quả trả về: Danh sách các cặp biến phân loại duy nhất (không lặp)
  • create_tw_table(var1, var2, df)
Trong đó:
- var1: tên biến phân loại thứ 1 - kiểu chuồi (string)
- var2: tên biến phân loại thứ 2 -  kiểu chuỗi (string)
- df: dataframe chứa cả 2 biến phân loại cần phân tích  - kiểu dataframe pandas 
Chức năng: tạo bảng 2 chiều (two-way table) dựa vào dataframe và 2 biến đưa vào
Kết quả trả về: thống kê dưới dạng bảng 2 chiều của cặp biến đưa vào
  • use_chi_2_evaluation(tw_table, prob=0.95)
Trong đó:
- tw_table: bảng 2 chiều (two-way table) của 2 biến  
- prob: xác suất chấp nhận giả định null (H0-2 biến độc lập)
Chức năng:  Sử dụng chi2 để kiếm tra xem 2 biến độc lập hay phụ thuộc với khả năng chấp nhận H0 là 95%
Kết quả trả về: Có phủ định giả thuyết H0 hay không?
  • analyze_category_vs_category(var1, var2, df, prob=0.95)
Trong đó:
- var1: tên biến phân loại thứ 1 - kiểu chuồi (string)
- var2: tên biến phân loại thứ 2 -  kiểu chuỗi (string)
- df: dataframe chứa cả 2 biến phân loại cần phân tích  - kiểu dataframe pandas
Chức năng: tạo bảng 2 chiều (two-way table), trực quan hóa bằng biểu đồ cột chồng (stacked columns bar) và sử dụng chi2 để đánh giá 2 biến có độc lập với nhau hay không?
Kết quả trả về: Có phủ định giả thuyết H0 hay không và hiển thị  biểu đồ cột chồng (stacked columns bar).
 

4. Phân tích đa biến: Liên tục với Phân loại

  • visualize_box_for_continous_vs_categories(continous_var,     category_vars, df)
Trong đó:
- continous_var: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- category_vars: danh sách hoặc tên biến phân loại cần phân tích - kiểu danh sách (list)  hoặc kiểu  chuỗi (string)
- df: dataframe chứa biến phân loại và biến liên tục cần phân tích  - kiểu dataframe pandas  
Chức năng:  Trực quan hóa boxplot cho biến liên tục và 1 hoặc 2 biến phân loại
  • analyze_anova_table_for_continous_vs_categories(continous_var,   category_vars, df)
Trong đó:
- continous_var: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- category_vars: danh sách hoặc tên biến phân loại cần phân tích - kiểu danh sách (list)  hoặc kiểu  chuỗi (string)
- df: dataframe chứa biến phân loại và biến liên tục cần phân tích  - kiểu dataframe pandas  
Chức năng: Sử dụng bảng ANOVA để phân tích cho biến liên tục và 1 hoặc 2 biến phân loại
  • analyze_continous_vs_categories(continous_var, category_vars, df)
Trong đó:
- continous_var: tên biến liên tục cần phân tích - kiểu  chuỗi (string)
- category_vars: danh sách hoặc tên biến phân loại cần phân tích - kiểu danh sách (list)  hoặc kiểu  chuỗi (string)
- df: dataframe chứa biến phân loại và biến liên tục cần phân tích  - kiểu dataframe pandas
Chức năng: Trực quan hóa boxplot, sử dụng ANOVA để phân tích cho biến liên tục và 1 hoặc 2 biến phân loại
 
Bạn có thể tham khảo một bài demo sử dụng các function trong package theo link này với bộ dữ liệu titanic.
Nếu bạn có các package hay và bổ ích, hãy cùng chia sẻ nhé.
 
CHƯƠNG TRÌNH ĐÀO TẠO