Trong bài đăng trên blog này, chúng tôi sẽ khám phá những thách thức khác nhau mà bạn có thể gặp phải với dữ liệu được thu thập và cung cấp hướng dẫn chi tiết về cách làm sạch và xử lý sơ bộ dữ liệu để có kết quả tối ưu. Cho dù bạn là một nhà phân tích dữ liệu dày dạn kinh nghiệm hay một người quét web vừa chớm nở sử dụng Python, hướng dẫn này nhằm mục đích trang bị cho bạn các mẹo và kỹ thuật thiết thực để dọn dẹp bộ dữ liệu của bạn một cách hiệu quả.
Từ những cạm bẫy phổ biến đến các phương pháp hay nhất và ví dụ thực tế, hãy theo dõi để tìm hiểu cách làm cho dữ liệu được thu thập của bạn sạch sẽ và có thể hành động nhất có thể.
Dữ liệu được thu thập thường đi kèm với những thách thức riêng. Một số vấn đề phổ biến nhất là sự bất thường, không nhất quán và thiếu giá trị. Những vấn đề này có thể cản trở đáng kể khả năng phân tích dữ liệu hiệu quả của bạn.
Bất thường có thể có nhiều hình thức. Ví dụ: hãy tưởng tượng giá sản phẩm từ nhiều trang web thương mại điện tử. Một trang web có thể niêm yết giá bao gồm thuế, trong khi một trang web khác có thể loại trừ nó. Các đơn vị đo lường cũng có thể khác nhau — hãy nghĩ đến kilôgam so với pound. Những mâu thuẫn như vậy đòi hỏi phải làm sạch và xử lý sơ bộ kỹ lưỡng để đảm bảo rằng dữ liệu của bạn là chính xác và có thể so sánh được.
Chất lượng dữ liệu kém không chỉ làm sai lệch kết quả của bạn mà còn có thể dẫn đến các quyết định kinh doanh không chính xác. Đối với các nhà phân tích dữ liệu, điều này làm cho giai đoạn làm sạch không thể thương lượng. Dữ liệu được làm sạch đúng cách đảm bảo rằng các phân tích tiếp theo vừa đáng tin cậy vừa sâu sắc.
Hãy xem qua một ví dụ cơ bản về việc làm sạch tập dữ liệu bằng Pandas. Giả sử bạn đã thu thập dữ liệu về phim, nhưng dữ liệu bao gồm các giá trị bị thiếu và định dạng không nhất quán.
Nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv('movies.csv')
df.fillna(method='ffill', inplace=True)
df['release_date'] = pd.to_datetime(df['release_date'])
df.drop_duplicates(inplace = True)
NumPy bổ sung cho Pandas bằng cách cung cấp các hàm toán học hiệu suất cao. Ví dụ: để xử lý các ngoại lệ, bạn có thể sử dụng hàm 'np.where' của NumPy để giới hạn các giá trị cực trị. Dưới đây là một ví dụ về python:
import pandas as pd
import numpy as np
# Sample data
data = {
'A': [1, 2, 3, 1000, 5],
'B': [10, 20, 30, 40, 5000]
}
# Create a DataFrame
df = pd.DataFrame(data)
# Define a threshold to cap the values
threshold_A = 100
threshold_B = 100
# Use np.where to cap the extreme values
df['A'] = np.where(df['A'] > threshold_A, threshold_A, df['A'])
df['B'] = np.where(df['B'] > threshold_B, threshold_B, df['B'])
print("DataFrame after handling outliers:")
print(df)
Đây là kết quả đầu ra từ kịch bản trên:
DataFrame sau khi xử lý các ngoại lệ:
A B
011012202 3303100404 5 100
Tiêu chuẩn hóa là rất quan trọng khi xử lý nhiều nguồn dữ liệu. Đảm bảo rằng các điểm dữ liệu tương tự từ các nguồn khác nhau tuân theo cùng một định dạng. Ví dụ, ngày tháng nên ở định dạng chuẩn như ISO 8601 để tránh sự mơ hồ.
Dữ liệu bị thiếu cần được giải quyết một cách thích hợp. Các kỹ thuật như gán ghép có thể điền vào các giá trị còn thiếu dựa trên dữ liệu có sẵn khác. Mặt khác, dữ liệu không chính xác thường yêu cầu các thuật toán kiểm tra hoặc xác thực thủ công để sửa chữa.
Kiểm tra tính nhất quán là rất quan trọng. Sử dụng tập lệnh để đảm bảo rằng dữ liệu của bạn đáp ứng các quy tắc được xác định trước. Ví dụ: nếu một cột chỉ nên chứa số dương, hãy viết tập lệnh xác thực để gắn cờ bất kỳ sự bất thường nào.
Hãy đi sâu vào một ví dụ thực tế để xem làm thế nào chúng ta có thể giải quyết một số thách thức phổ biến trong dữ liệu được thu thập. Chúng ta sẽ trải qua quá trình cạo, làm sạch và phân tích dữ liệu từ một trang web danh sách công việc giả định, tập trung vào các vấn đề trong thế giới thực mà bạn có thể gặp phải.
Hãy tưởng tượng bạn đang thu thập dữ liệu từ một trang web danh sách việc làm. Mục đích là để thu thập chức danh công việc, tên công ty và phạm vi lương. Dưới đây là một tập lệnh Python mẫu sử dụng BeautifulSoup để trích xuất dữ liệu này:
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = "https://example-jobsite.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
jobs = []
for job_post in soup.find_all('div', class_='job'):
title = job_post.find('h2').text
company = job_post.find('p', class_='company').text
salary = job_post.find('span', class_='salary').text
jobs.append({'title': title, 'company': company, 'salary': salary})
df = pd.DataFrame(jobs)
Tại thời điểm này, dữ liệu có thể trông giống như thế này:
tiêu đề | công ty | lương |
---|---|---|
Kỹ sư phần mềm | Công Nghệ Corp | $100,000 |
Nhà phát triển cấp cao | Innovatech | $120,000 |
Junior Dev | khởi độngX | $80,000 |
Chuyên viên phân tích dữ liệu | BigData Inc | $95000 |
Nhà khoa học dữ liệu cao cấp | Mỏ dữ liệu | 140,000 USD |
Lưu ý sự không nhất quán: viết hoa khác nhau, ký hiệu tiền tệ khác nhau và định dạng không nhất quán cho các giá trị tiền lương.
Làm sạch dữ liệu này là rất quan trọng trước khi bất kỳ phân tích có ý nghĩa nào có thể diễn ra. Hãy chia nhỏ các bước:
1. Chuẩn hóa dữ liệu văn bản: Chức danh công việc và tên công ty thường bị định dạng không nhất quán. Chúng ta có thể chuẩn hóa những điều này bằng cách viết hoa chúng một cách thống nhất.
df['title'] = df['title'].str.strip().str.title()
df['công ty'] = df['công ty'].str.strip().str.title()
Sau bước này, dữ liệu sẽ trông đồng đều hơn:
tiêu đề | công ty | lương |
---|---|---|
Kỹ sư phần mềm | Công Nghệ Corp | $100,000 |
Nhà phát triển cấp cao | Innovatech | $120,000 |
Junior Dev | Khởi nghiệp | $80,000 |
Chuyên viên phân tích dữ liệu | Bigdata Inc | $95000 |
Nhà khoa học dữ liệu cao cấp | Mỏ dữ liệu | 140,000 USD |
2: Chuẩn hóa dữ liệu số: Giá trị tiền lương có thể chứa các ký hiệu và định dạng khác nhau, khiến việc so sánh trực tiếp trở nên khó khăn. Chúng ta sẽ loại bỏ ký hiệu đô la và dấu phẩy, sau đó chuyển đổi các chuỗi này thành các giá trị số.
df['salary'] = df['salary'].str.replace('[\$,]', '').str.replace('USD', '').astype(float)
Bây giờ, cột lương của bạn sẽ có các giá trị số nhất quán:
tiêu đề | công ty | lương |
---|---|---|
Kỹ sư phần mềm | Công Nghệ Corp | 100000 |
Nhà phát triển cấp cao | Innovatech | 120000 |
Junior Dev | Khởi nghiệp | 80000 |
Chuyên viên phân tích dữ liệu | Bigdata Inc | 95000 |
Nhà khoa học dữ liệu cao cấp | Mỏ dữ liệu | 140000 |
3: Xử lý dữ liệu bị thiếu: Giả sử một số danh sách công việc thiếu thông tin lương. Thay vì bỏ các hàng này, bạn có thể chọn điền vào các giá trị còn thiếu dựa trên một số logic, chẳng hạn như mức lương trung bình cho chức danh công việc đó:
df['salary'].fillna(df.groupby('title')['salary'].transform('median'), inplace=True)
Với dữ liệu được làm sạch, giờ đây bạn có thể thực hiện phân tích có ý nghĩa. Ví dụ: bạn có thể muốn hiểu phân phối lương trên các chức danh công việc khác nhau:
print(df.groupby('title')['salary'].describe())
Lệnh này sẽ cung cấp cho bạn một bản tóm tắt thống kê cho từng chức danh công việc, cung cấp thông tin chi tiết về xu hướng lương.
Trong một số trường hợp, dữ liệu của bạn có thể chứa các ngoại lệ — giá trị lương cực kỳ cao hoặc thấp có thể làm sai lệch phân tích của bạn. NumPy có thể được sử dụng để giới hạn các ngoại lệ sau:
Nhập numpy dưới dạng NP
# Mức lương giới hạn ở ngưỡng (ví dụ: 200.000)
threshold_salary = 200000
df['lương'] = np.where(df['lương'] > threshold_salary, threshold_salary, df['lương'])
In (DF)
Sau khi đóng cỡ, tập dữ liệu của bạn có thể trông như thế này:
tiêu đề | công ty | lương |
---|---|---|
Kỹ sư phần mềm | Công Nghệ Corp | 100000 |
Nhà phát triển cấp cao | Innovatech | 120000 |
Junior Dev | Khởi nghiệp | 80000 |
Chuyên viên phân tích dữ liệu | Bigdata Inc | 95000 |
Nhà khoa học dữ liệu cao cấp | Mỏ dữ liệu | 200000 |
Bằng cách làm sạch và tiền xử lý dữ liệu của bạn, bạn đã chuyển đổi một tập dữ liệu lộn xộn thành một tài nguyên có giá trị. Giờ đây, bạn có thể tự tin rút ra những hiểu biết sâu sắc, chẳng hạn như xác định các công ty trả lương cao nhất hoặc phân tích xu hướng lương giữa các ngành. Những hiểu biết này trực tiếp thông báo cho các chiến lược kinh doanh, chẳng hạn như điểm chuẩn lương hoặc kế hoạch thu hút nhân tài.
Trong bài đăng trên blog này, chúng tôi đã đề cập đến tầm quan trọng của việc làm sạch và xử lý sơ bộ dữ liệu cóp nhặt được. Từ việc hiểu những thách thức phổ biến đến tận dụng các thư viện Python mạnh mẽ như Pandas và NumPy, hộp công cụ của bạn hiện đã được lưu trữ với các yếu tố cần thiết.
Hãy nhớ rằng, dữ liệu sạch không chỉ là một thứ xa xỉ mà còn là điều cần thiết để đưa ra quyết định chính xác và đáng tin cậy. Bằng cách làm theo các phương pháp hay nhất được nêu ở đây, bạn có thể đảm bảo rằng phân tích dữ liệu của mình vừa hiệu quả vừa hiệu quả.
Bạn đã sẵn sàng đưa phân tích dữ liệu của mình lên một tầm cao mới? Bắt đầu thực hiện các chiến lược này ngay hôm nay và xem các tài nguyên khác của chúng tôi để hiểu sâu hơn về việc làm sạch và tiền xử lý dữ liệu. Chúc bạn cạo vui vẻ!