Đối với phân tích dữ liệu, Exploratory Data Analysis (EDA) phải là bước đầu tiên. EDA giúp:
- Đưa ra insight vào tập dữ liệu.
- Hiểu cấu trúc bên dưới.
- Trích xuất tham số quan trọng và mối quan hệ giữa chúng.
- Kiểm tra các giả định bên dưới.
Hiểu EDA qua Sample Data Set
Để hiểu EDA bằng Python, lấy sample data từ website hoặc local disk. Lấy data từ UCI Machine Learning Repository - red variant của Wine Quality dataset công khai, thử thu thập insight bằng EDA.
import pandas as pd
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv")
df.head()
Chạy trong Jupyter Notebook cho kết quả như hình.
Các bước khởi đầu:
- Import thư viện cần thiết (pandas).
- Đọc file CSV bằng
read_csv()của pandas, dữ liệu phân cách bằng delimiter ";". - Trả về 5 quan sát đầu tiên bằng
.head(). Lấy 5 cuối bằng.tail().
Lấy tổng số hàng và cột bằng .shape:
df.shape
Xem columns, kiểu dữ liệu, giá trị null hay không bằng info():
df.info()
Nhận xét:
- Data chỉ chứa float và integer.
- Tất cả biến column non-null (không rỗng/thiếu).
Hàm describe() của pandas cung cấp count, mean, std, min, max, quantiles:
df.describe()
Insight từ describe:
- Giá trị mean của mỗi cột nhỏ hơn median (50%) ở cột index.
- Chênh lệch lớn giữa 75% và max của predictors: "residual sugar", "free sulfur dioxide", "total sulfur dioxide".
- Chỉ ra có extreme values - deviations trong dataset.
Insights từ biến phụ thuộc (dependent variable)
df.quality.unique()
- Thang điểm "quality": 1 = poor (tệ), 10 = best (tốt nhất).
- Không quan sát nào điểm 1, 2, 9, 10. Tất cả điểm từ 3 đến 8.
df.quality.value_counts()
- Vote count cho mỗi quality score theo thứ tự giảm dần. >Phần lớn quality trong khoảng 5-7. >Ít quan sát nhất ở 3 và 6.
Data Visualizations (Trực quan hóa dữ liệu)
Kiểm tra Missing Values
Dùng seaborn library check missing values trong white-wine CSV dataset:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set()
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv", sep=";")
sns.heatmap(df.isnull(), cbar=False, yticklabels=False, cmap='viridis')
Kết quả: Không missing values (nếu có, sẽ thấy màu khác trên nền tím).
Kiểm tra Correlation (Tương quan)
plt.figure(figsize=(8,4))
sns.heatmap(df.corr(), cmap='Greens', annot=False)
- Tương quan dương: màu đậm, tương quan âm: màu nhạt.
- Đặt
annot=Trueđể hiển thị giá trị tương quan trong ô lưới.
Tạo correlation matrix khác với annot=True:
k = 12
cols = df.corr().nlargest(k, 'quality')['quality'].index
cm = df[cols].corr()
plt.figure(figsize=(8,6))
sns.heatmap(cm, annot=True, cmap='viridis')
Nhận xét:
- Tương quan dương mạnh giữa density và residual sugar.
- Tương quan âm mạnh giữa density và alcohol.
- Không tương quan giữa free sulphur dioxide và quality.