0
0
Lập trình
NM

Hướng Dẫn Tối Ưu Hóa Dữ Liệu: Làm Sạch và Chuẩn Bị

Đăng vào 4 ngày trước

• 4 phút đọc

Hướng Dẫn Tối Ưu Hóa Dữ Liệu: Làm Sạch và Chuẩn Bị

Khi bắt đầu làm việc với tư cách là một Nhà phân tích Dữ liệu, bước đầu tiên không phải là xây dựng bảng điều khiển hay tạo biểu đồ. Bước đầu tiên luôn là làm sạch và chuẩn bị tập dữ liệu.

👉 Nếu tập dữ liệu không sạch, phân tích cuối cùng sẽ sai hoặc gây hiểu lầm.

Trong bài viết này, chúng ta sẽ đi qua mọi nhiệm vụ quan trọng mà bạn nên thực hiện với một tập dữ liệu mới (bất kể đó là dữ liệu bán hàng, dữ liệu nhân sự, dữ liệu COVID, dữ liệu ngân hàng hay bất kỳ loại dữ liệu nào khác).

Chúng ta sẽ sử dụng Python (pandas) cho các ví dụ, nhưng các bước này áp dụng cho mọi tập dữ liệu.


Mục Lục

  1. Nhập Thư Viện và Tải Dữ Liệu
  2. Kiểm Tra Kích Thước Tập Dữ Liệu
  3. Lấy Thông Tin Tập Dữ Liệu
  4. Kiểm Tra Một Số Dòng Đầu và Cuối
  5. Kiểm Tra Tên Cột
  6. Xử Lý Kiểu Dữ Liệu
  7. Kiểm Tra Giá Trị Thiếu
  8. Kiểm Tra Bản Sao
  9. Khám Phá Giá Trị Độc Nhất
  10. Thống Kê Mô Tả
  11. Xử Lý Giá Trị Ngoại Lệ
  12. Chuẩn Hóa Dữ Liệu Văn Bản
  13. Đổi Tên hoặc Xóa Cột
  14. Tạo Tính Năng Mới
  15. Kiểm Tra Tính Nhất Quán Dữ Liệu
  16. Sắp Xếp và Đặt Lại Chỉ Số
  17. Lưu Cuối
  18. Danh Sách Kiểm Tra Cuối
  19. Kết Luận

Nhập Thư Viện và Tải Dữ Liệu

python Copy
import pandas as pd

# Ví dụ cho tập tin CSV
df = pd.read_csv("data.csv")

# Ví dụ cho tập tin Excel
# df = pd.read_excel("data.xlsx")

# Ví dụ cho cơ sở dữ liệu SQL
# import sqlite3
# conn = sqlite3.connect("data.db")
# df = pd.read_sql("SELECT * FROM table_name", conn)

print(df.head())

Luôn bắt đầu bằng cách tải dữ liệu và xem một vài dòng đầu tiên.


Kiểm Tra Kích Thước Tập Dữ Liệu

python Copy
print(df.shape)

Kết quả ví dụ:

Copy
(10000, 15)
  • 10,000 dòng (mục dữ liệu)
  • 15 cột (biến số)

Điều này giúp bạn biết kích thước của tập dữ liệu.


Lấy Thông Tin Tập Dữ Liệu

python Copy
print(df.info())

Điều này cho thấy:

  • Tên cột
  • Kiểu dữ liệu (int, float, object, datetime)
  • Số lượng không null

Ví dụ:

Copy
order_id        10000 non-null int64
order_date      9990 non-null object
sales_amount    9800 non-null float64
customer_name   10000 non-null object

Kiểm Tra Một Số Dòng Đầu và Cuối

python Copy
print(df.head(10))
print(df.tail(10))

Giúp bạn:

  • Xác nhận thứ tự cột
  • Kiểm tra sắp xếp (thời gian, id, v.v.)
  • Phát hiện giá trị lạ

Kiểm Tra Tên Cột

python Copy
print(df.columns)

Ví dụ:

Copy
['Order ID', 'Order Date', 'Sales Amount', 'Customer Name']

Đôi khi tên có khoảng trắng, ký hiệu hoặc chữ hoa. Làm sạch chúng:

python Copy
df.columns = df.columns.str.strip().str.lower().str.replace(" ", "_")

Giờ tên cột là:

Copy
['order_id', 'order_date', 'sales_amount', 'customer_name']

Xử Lý Kiểu Dữ Liệu

Luôn kiểm tra xem mỗi cột có kiểu dữ liệu đúng hay không:

python Copy
print(df.dtypes)

Ví dụ về các sửa lỗi:

python Copy
# Chuyển đổi cột ngày
df['order_date'] = pd.to_datetime(df['order_date'], errors='coerce')

# Chuyển đổi các cột số
df['sales_amount'] = pd.to_numeric(df['sales_amount'], errors='coerce')

# Chuyển đổi các cột phân loại
df['customer_name'] = df['customer_name'].astype('category')

Kiểm Tra Giá Trị Thiếu

python Copy
print(df.isnull().sum())

Kết quả ví dụ:

Copy
order_date      10
sales_amount   200
customer_name    0

Cách xử lý các giá trị thiếu:

  1. Xóa các hàng/cột
python Copy
df.dropna(subset=['order_date'], inplace=True)
  1. Điền bằng giá trị trung bình/trung vị/mode
python Copy
df['sales_amount'].fillna(df['sales_amount'].median(), inplace=True)
  1. Điền tiến lên/lùi lại (dữ liệu chuỗi thời gian)
python Copy
df['sales_amount'].fillna(method='ffill', inplace=True)

Kiểm Tra Bản Sao

python Copy
print(df.duplicated().sum())
df = df.drop_duplicates()

Tránh việc tính toán gấp đôi.


Khám Phá Giá Trị Độc Nhất

python Copy
print(df['customer_name'].unique())
print(df['customer_name'].nunique())

Giúp tìm lỗi chính tả như "John Smith" so với "Jon Smith".


Thống Kê Mô Tả

python Copy
print(df.describe(include='all'))

Ví dụ:

Copy
sales_amount   min: -50   max: 100000   mean: 2500

Giúp phát hiện:

  • Giá trị ngoại lệ
  • Giá trị âm (không thể có cho doanh thu)
  • Giá trị quá lớn

Xử Lý Giá Trị Ngoại Lệ

Ví dụ: Doanh thu âm không thể tồn tại.

python Copy
df = df[df['sales_amount'] >= 0]

Hoặc giới hạn các giá trị cực trị:

python Copy
q1 = df['sales_amount'].quantile(0.25)
q3 = df['sales_amount'].quantile(0.75)
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr

df = df[(df['sales_amount'] >= lower) & (df['sales_amount'] <= upper)]

Chuẩn Hóa Dữ Liệu Văn Bản

Ví dụ: tên khách hàng, tên sản phẩm, thành phố

python Copy
df['customer_name'] = df['customer_name'].str.strip().str.title()

Loại bỏ khoảng trắng thừa và chuẩn hóa chữ.


Đổi Tên hoặc Xóa Cột

python Copy
df.rename(columns={'sales_amount': 'revenue'}, inplace=True)

df.drop(columns=['unnecessary_column'], inplace=True)

Tạo Tính Năng Mới

Ví dụ:

  • Biên lợi nhuận
  • Năm, Tháng từ ngày
  • Nhóm tuổi
python Copy
df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

Kiểm Tra Tính Nhất Quán Dữ Liệu

  • Ngày tháng phải theo đúng thứ tự
  • ID phải là duy nhất
  • Các loại phải hợp lý
python Copy
print(df['year'].unique())
print(df['order_id'].nunique(), df.shape[0])

Sắp Xếp và Đặt Lại Chỉ Số

python Copy
df = df.sort_values(by=['order_date'])
df = df.reset_index(drop=True)

Lưu Cuối

python Copy
df.to_csv("clean_data.csv", index=False)

Giờ tập dữ liệu đã sẵn sàng cho phân tích hoặc bảng điều khiển (Power BI, Tableau, v.v.).


Danh Sách Kiểm Tra Cuối cho Mọi Tập Dữ Liệu

✅ Nhập tập dữ liệu
✅ Kiểm tra kích thước, thông tin, đầu/cuối
✅ Làm sạch tên cột
✅ Sửa kiểu dữ liệu
✅ Xử lý giá trị thiếu
✅ Xóa bản sao
✅ Kiểm tra giá trị độc nhất
✅ Thống kê mô tả
✅ Xử lý ngoại lệ
✅ Chuẩn hóa văn bản
✅ Xóa/đổi tên cột
✅ Tạo tính năng mới
✅ Kiểm tra tính nhất quán
✅ Sắp xếp và đặt lại chỉ số
✅ Lưu tập dữ liệu sạch


Kết Luận

Bất kể bạn đang làm việc với tập dữ liệu nào (Bán hàng, Nhân sự, Tài chính, COVID, Marketing, Ngân hàng, Thương mại điện tử), các bước này sẽ luôn giúp bạn làm cho tập dữ liệu sạch và sẵn sàng cho phân tích.

👉 Dữ liệu sạch = Thông tin tốt hơn + Bảng điều khiển chính xác + Khách hàng hài lòng.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào