Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Bảng chéo (Contingency Table) trong Python

Bảng chéo (contingency table) hiển thị phân phối của một biến theo hàng và biến khác theo cột. Dùng để nghiên cứu tương quan giữa hai biến. Là bảng đa chiều mô tả tập dữ liệu mà mỗi quan sát thuộc một danh mục cho từng biến. Về cơ bản là bảng đếm tần suất giữa hai hoặc nhiều biến phân loại. Còn gọi là crosstabs hoặc two-way tables, dùng trong thống kê tóm tắt mối quan hệ giữa các biến phân loại.

Hệ số chéo (contingency coefficient) là hệ số liên kết cho biết hai biến/đối tượng có độc lập hay phụ thuộc. Còn gọi là Hệ số Pearson.

Ví dụ

Dùng bộ dữ liệu hoa iris (50 mẫu mỗi loài: Iris setosa, Iris virginica, Iris versicolor). 4 đặc trưng: dài/rộng đài hoa và cánh hoa (cm). Tạo mô hình bảng chéo trên các đặc trưng để phân biệt loài.

Đọc dữ liệu

import numpy as np
import pandas as pd
datainput = pd.read_csv("iris.csv")
print(datainput.head(5))

Kết quả (5 dòng đầu):

SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa

Thống kê tổng quan

Dùng describe() xem mean, quartiles, phân phối dữ liệu.

print(datainput.describe())
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.054000 3.758667 1.198667
std 0.828066 0.433594 1.764420 0.763161
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000

Kiểu dữ liệu

print(datainput.dtypes)
SepalLengthCm float64
SepalWidthCm float64
PetalLengthCm float64
PetalWidthCm float64
Species object
dtype: object

Tạo bảng chéo

Tạo bảng chéo cho cột độ rộng cánh hoa (PetalWidthCm) theo từng loài. Dùng crosstab của pandas.

width_species = pd.crosstab(datainput['PetalWidthCm'], datainput['Species'], margins=False)
print(width_species)
Species Iris-setosa Iris-versicolor Iris-virginica
PetalWidthCm
0.1 6 0 0
0.2 28 0 0
0.3 7 0 0
1.0 0 7 0
1.1 0 3 0
1.2 0 5 0
1.8 0 1 11
1.9 0 0 5
2.0 0 0 6
2.1 0 0 6
2.5 0 0 3

Bảng chéo đa biến

Dùng nhiều hơn 2 cột: cả độ dài và độ rộng cánh hoa cho mỗi loài.

length_width_species = pd.crosstab([datainput.PetalLengthCm, datainput.PetalWidthCm], datainput.Species, margins=False)
print(length_width_species)
Species Iris-setosa Iris-versicolor Iris-virginica
PetalLengthCm PetalWidthCm
1.0 0.2 1 0 0
1.1 0.1 1 0 0
1.2 0.2 2 0 0
1.3 0.2 4 0 0
0.3 2 0 0
... ... ... ...
6.4 2.0 0 0 1
6.6 2.1 0 0 1
6.7 2.0 0 0 1
2.2 0 0 1
6.9 2.3 0 0 1