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

Exploratory Data Analysis (EDA) trong Python

Đố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.