Làm sạch và xử lý trước dữ liệu đã thu thập

Hướng dẫn , Cách thực hiện ,09-08-20245 phút đọc

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 đã thu thập và cung cấp hướng dẫn chi tiết về cách dọn dẹp và xử lý trước dữ liệu để có kết quả tối ưu. Cho dù bạn là nhà phân tích dữ liệu dày dạn kinh nghiệm hay người mới vào nghề sử dụng Python để thu thập dữ liệu, hướng dẫn này sẽ cung cấp cho bạn những mẹo và kỹ thuật thực tế để sắp xếp hiệu quả các tập dữ liệu của bạn.

Từ những sai lầm phổ biến đến các biện pháp thực hành tốt 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 thu thập được của bạn sạch và dễ xử lý nhất có thể.

Những thách thức phổ biến trong dữ liệu bị thu thập

Dữ liệu thu thập được 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.

Ví dụ về sự bất thường và không nhất quán

Sự bất thường có thể có nhiều hình thức. Ví dụ, hãy tưởng tượng việc thu thập giá sản phẩm từ nhiều trang web thương mại điện tử. Một trang web có thể liệt kê giá bao gồm thuế, trong khi trang web khác có thể không bao gồm thuế. Các đơn vị đo lường cũng có thể khác nhau—hãy nghĩ đến kilogam so với pound. Những sự bất nhất như vậy đòi hỏi phải làm sạch và xử lý trước kỹ lưỡng để đảm bảo dữ liệu của bạn chính xác và có thể so sánh được.

Tác động của chất lượng dữ liệu kém

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 khiến 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 có hiểu biết sâu sắc.

Công cụ và kỹ thuật để làm sạch dữ liệu

Hướng dẫn từng bước sử dụng Pandas

Hãy cùng xem qua một ví dụ cơ bản về việc dọn dẹp một 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.

Bước 1 - Tải dữ liệu:

   nhập pandas dưới dạng pd df = pd.read_csv( 'movies.csv' )

Bước 2 - Xử lý các giá trị bị thiếu:

   df.fillna( phương thức =' ffill ', inplace = True )

Bước 3 - Chuẩn hóa định dạng:

df [ 'ngày phát hành' ] = pd .to_datetime (df [ 'ngày phát hành' ] )

Bước 4 - Xóa các mục trùng lặp:

df.drop_duplicates( tại chỗ = Đúng )

Tận dụng NumPy để dọn dẹp dữ liệu

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 giá trị 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ị. Sau đâ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)

Sau đây là kết quả từ đoạn mã trên:

DataFrame sau khi xử lý các giá trị ngoại lai: A B 0 1 10 1 2 20 2 3 30 3 100 40 4 5 100

Thực hành tốt nhất trong việc xử lý trước dữ liệu đã thu thập

Chuẩn hóa định dạng và cấu trúc dữ liệ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 phải ở định dạng chuẩn như ISO 8601 để tránh sự mơ hồ.

Xử lý dữ liệu bị thiếu hoặc không chính xác

Dữ liệu bị thiếu cần được xử lý phù hợp. Các kỹ thuật như imputation có thể điền vào các giá trị bị 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 kiểm tra thủ công hoặc thuật toán xác thực để sửa.

Đảm bảo tính nhất quán của dữ liệu

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 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ỉ chứa các số dương, hãy viết tập lệnh xác thực để đánh dấu bất kỳ sự bất thường nào.

Nghiên cứu tình huống: Ứng dụng thực tế

Hãy cùng tìm hiểu một ví dụ thực tế để xem cách 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ẽ xem xét quy trình thu thập, dọn dẹp và phân tích dữ liệu từ một trang web tuyển dụng giả định, tập trung vào các vấn đề thực tế mà bạn có thể gặp phải.

Bước 1: Thu thập dữ liệu

Hãy tưởng tượng bạn đang thu thập dữ liệu từ một trang web liệt kê việc làm. Mục tiêu là thu thập tiêu đề việc làm, tên công ty và mức lương. Sau đâ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)

Lúc này, dữ liệu có thể trông giống như thế này:

tiêu đềcông tylương
kỹ sư phần mềmCông ty công nghệ$100,000
nhà phát triển cao cấpCông nghệ đổi mới$120,000
Junior Devkhởi nghiệpX$80,000
Nhà phân tích dữ liệuCông ty BigData Inc$95000
nhà khoa học dữ liệu cao cấpkhai thác dữ liệu140,000 USD

Lưu ý những điểm không nhất quán: chữ 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 giá trị lương.

Bước 2: Làm sạch dữ liệu

Việc dọn dẹp dữ liệu này là rất quan trọng trước khi có thể tiến hành bất kỳ phân tích có ý nghĩa nào. Hãy cùng phân tích các bước sau:

1. Chuẩn hóa dữ liệu văn bản: Tiêu đề 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 chúng bằng cách viết hoa chúng một cách thống nhất.

df [ 'tiêu đề' ] = df [ 'tiêu đề' ] .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 tylương
Kỹ sư phần mềmCông ty công nghệ$100,000
Nhà phát triển cao cấpCông nghệ đổi mới$120,000
Junior DevKhởi nghiệpx$80,000
Nhà phân tích dữ liệuCông ty Bigdata$95000
Nhà khoa học dữ liệu cao cấpKhai thác dữ liệu140,000 USD

2: Chuẩn hóa dữ liệu số : Giá trị 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 tôi sẽ loại bỏ dấu đô la và dấu phẩy, sau đó chuyển đổi các chuỗi này thành giá trị số.

df [ 'tiền lương' ] = df [ 'tiền lương' ] .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 tylương
Kỹ sư phần mềmCông ty công nghệ100000
Nhà phát triển cao cấpCông nghệ đổi mới120000
Junior DevKhởi nghiệpx80000
Nhà phân tích dữ liệuCông ty Bigdata95000
Nhà khoa học dữ liệu cao cấpKhai thác dữ liệu140000

3: Xử lý dữ liệu bị thiếu: Giả sử một số danh sách việc làm bị thiếu thông tin về mức lương. Thay vì xóa các hàng này, bạn có thể chọn điền vào các giá trị bị 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 [ 'lương' ] .fillna (df .groupby ( 'tiêu đề' ) [ 'lương' ] .transform ( 'trung vị' ), inplace=True)

Bước 3: Phân tích dữ liệu đã được làm sạch

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 giữa các chức danh công việc khác nhau:

in (df.groupby( 'title' ) [ 'salary' ] .describe ())

Lệnh này sẽ cung cấp cho bạn 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.

Ví dụ: Xử lý các giá trị ngoại lệ bằng NumPy

Trong một số trường hợp, dữ liệu của bạn có thể chứa các giá trị ngoại lệ—giá trị lương cực cao hoặc cực thấp có thể làm lệch hướng phân tích của bạn. NumPy có thể được sử dụng để giới hạn các giá trị ngoại lệ này:

import numpy as np # Giới hạn mức lương ở ngưỡng (ví dụ: 200.000) threshold_salary = 200000 df [ 'salary' ] = np.where( df [ 'salary' ] > threshold_salary, threshold_salary, df [ 'salary' ]) print ( df )

Sau khi giới hạn, tập dữ liệu của bạn có thể trông như thế này:

tiêu đềcông tylương
Kỹ sư phần mềmCông ty công nghệ100000
Nhà phát triển cao cấpCông nghệ đổi mới120000
Junior DevKhởi nghiệpx80000
Nhà phân tích dữ liệuCông ty Bigdata95000
Nhà khoa học dữ liệu cao cấpKhai thác dữ liệu200000

Tác động đến hiểu biết sâu sắc và quyết định

Bằng cách dọn dẹp và xử lý trước dữ liệu, bạn đã biến một tập dữ liệu lộn xộn thành một nguồn tài nguyên có giá trị. Bây giờ, 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 trong các ngành. Những hiểu biết sâu sắc này cung cấp thông tin trực tiếp cho các chiến lược kinh doanh, chẳng hạn như chuẩn mực lương hoặc kế hoạch thu hút nhân tài.

Kết luận và các bước tiếp theo

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 dọn dẹp và xử lý trước dữ liệu đã thu thập. 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 trang bị đầy đủ 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 tuân theo các biện pháp thực hành tốt 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 suất.

Sẵn sàng đưa phân tích dữ liệu của bạn lên một tầm cao mới? Hãy bắt đầu triển khai 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 dọn dẹp và xử lý dữ liệu. Chúc bạn thu thập dữ liệu vui vẻ!