Dọn dẹp trong Python là gì?
Python là ngôn ngữ lập trình dễ học, khiến nó trở thành lựa chọn ưu tiên nhất cho người mới bắt đầu trong Khoa học dữ liệu, Phân tích dữ liệu và Học máy. Nó cũng có một cộng đồng người học trực tuyến tuyệt vời và các thư viện tập trung vào dữ liệu tuyệt vời Show
Với rất nhiều dữ liệu được tạo ra, điều quan trọng là dữ liệu chúng tôi sử dụng cho các ứng dụng Khoa học dữ liệu như Học máy và Mô hình dự đoán phải sạch. Nhưng ý nghĩa của dữ liệu sạch là gì? Dữ liệu bẩn đơn giản có nghĩa là dữ liệu bị lỗi. Hồ sơ trùng lặp, dữ liệu không đầy đủ hoặc lỗi thời và phân tích cú pháp không đúng cách có thể làm cho dữ liệu bị bẩn. Dữ liệu này cần được làm sạch. Làm sạch dữ liệu (hay làm sạch dữ liệu) đề cập đến quá trình “làm sạch” dữ liệu bẩn này, bằng cách xác định các lỗi trong dữ liệu và sau đó khắc phục chúng Làm sạch dữ liệu là một bước quan trọng trong dự án Machine Learning và chúng tôi sẽ đề cập đến một số kỹ thuật làm sạch dữ liệu cơ bản (bằng Python) trong bài viết này Làm sạch dữ liệu trong PythonChúng ta sẽ tìm hiểu thêm về cách làm sạch dữ liệu trong Python với sự trợ giúp của tập dữ liệu mẫu. Chúng tôi sẽ sử dụng bộ dữ liệu nhà ở của Nga trên Kaggle Chúng tôi sẽ bắt đầu bằng cách nhập các thư viện cần thiết # import libraries import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline Tải xuống dữ liệu, sau đó đọc dữ liệu đó vào Khung dữ liệu Pandas bằng cách sử dụng hàm read_csv() và chỉ định đường dẫn tệp. Sau đó sử dụng thuộc tính shape để kiểm tra số hàng và số cột trong tập dữ liệu. Mã cho điều này là như dưới đây df = pd.read_csv('housing_data.csv') df.shape Tập dữ liệu có 30.471 hàng và 292 cột Bây giờ chúng ta sẽ tách các cột số khỏi các cột phân loại # select numerical columns df_numeric = df.select_dtypes(include=[np.number]) numeric_cols = df_numeric.columns.values # select non-numeric columns df_non_numeric = df.select_dtypes(exclude=[np.number]) non_numeric_cols = df_non_numeric.columns.values Bây giờ chúng ta đã hoàn thành các bước sơ bộ. Bây giờ chúng ta có thể chuyển sang làm sạch dữ liệu. Chúng tôi sẽ bắt đầu bằng cách xác định các cột chứa giá trị bị thiếu và cố gắng khắc phục chúng Giá trị bị mấtChúng tôi sẽ bắt đầu bằng cách tính phần trăm giá trị bị thiếu trong mỗi cột, sau đó lưu trữ thông tin này trong DataFrame # % of values missing in each column values_list = list() cols_list = list() for col in df.columns: pct_missing = np.mean(df[col].isnull())*100 cols_list.append(col) values_list.append(pct_missing) pct_missing_df = pd.DataFrame() pct_missing_df['col'] = cols_list pct_missing_df['pct_missing'] = values_list Khung dữ liệu pct_missing_df hiện chứa tỷ lệ phần trăm giá trị bị thiếu trong mỗi cột cùng với tên cột Chúng tôi cũng có thể tạo hình ảnh trực quan từ thông tin này để hiểu rõ hơn bằng cách sử dụng mã bên dưới pct_missing_df.loc[pct_missing_df.pct_missing > 0].plot(kind='bar', figsize=(12,8)) plt.show() Đầu ra sau khi thực hiện dòng mã trên sẽ trông như thế này Rõ ràng là một số cột có rất ít giá trị bị thiếu, trong khi các cột khác có % giá trị bị thiếu đáng kể. Bây giờ chúng tôi sẽ sửa các giá trị còn thiếu này Có một số cách để chúng tôi có thể khắc phục các giá trị bị thiếu này. Một số trong số họ là” Thả quan sátMột cách có thể là loại bỏ những quan sát chứa bất kỳ giá trị null nào trong chúng cho bất kỳ cột nào. Điều này sẽ hoạt động khi tỷ lệ phần trăm giá trị bị thiếu trong mỗi cột rất ít. Chúng tôi sẽ loại bỏ các quan sát chứa null trong các cột có ít hơn 0. 5% không. Các cột này sẽ là metro_min_walk, metro_km_walk, Railroad_station_walk_km, Railroad_station_walk_min và ID_railroad_station_walk less_missing_values_cols_list = list(pct_missing_df.loc[(pct_missing_df.pct_missing < 0.5) & (pct_missing_df.pct_missing > 0), 'col'].values) df.dropna(subset=less_missing_values_cols_list, inplace=True) Điều này sẽ giảm số lượng bản ghi trong tập dữ liệu của chúng tôi xuống còn 30.446 bản ghi Xóa cột (tính năng)Một cách khác để giải quyết các giá trị bị thiếu trong tập dữ liệu là loại bỏ các cột hoặc tính năng có tỷ lệ phần trăm giá trị bị thiếu đáng kể. Các cột như vậy không chứa nhiều thông tin và có thể bị loại bỏ hoàn toàn khỏi tập dữ liệu. Trong trường hợp của chúng tôi, hãy để chúng tôi loại bỏ tất cả các cột có hơn 40% giá trị bị thiếu trong đó. Các cột này sẽ là build_year, state, Hospital_beds_raion, cafe_sum_500_min_price_avg, cafe_sum_500_max_price_avg và cafe_avg_price_500 # dropping columns with more than 40% null values _40_pct_missing_cols_list = list(pct_missing_df.loc[pct_missing_df.pct_missing > 40, 'col'].values) df.drop(columns=_40_pct_missing_cols_list, inplace=True) Số lượng các tính năng trong tập dữ liệu của chúng tôi hiện là 286 Áp đặt các giá trị còn thiếuVẫn còn thiếu dữ liệu trong bộ dữ liệu của chúng tôi. Bây giờ chúng ta sẽ gán các giá trị còn thiếu trong mỗi cột số với giá trị trung bình của cột đó df_numeric = df.select_dtypes(include=[np.number]) numeric_cols = df_numeric.columns.values for col in numeric_cols: missing = df[col].isnull() num_missing = np.sum(missing) if num_missing > 0: # impute values only for columns that have missing values med = df[col].median() #impute with the median df[col] = df[col].fillna(med) Các giá trị bị thiếu trong các cột số hiện đã được sửa. Trong trường hợp cột phân loại, chúng tôi sẽ thay thế các giá trị bị thiếu bằng các giá trị chế độ của cột đó ________số 8_______Tất cả các giá trị còn thiếu trong tập dữ liệu của chúng tôi hiện đã được xử lý. Chúng tôi có thể xác minh điều này bằng cách chạy đoạn mã sau df.isnull().sum().sum() Nếu đầu ra bằng 0, điều đó có nghĩa là không còn thiếu giá trị nào trong tập dữ liệu của chúng tôi bây giờ Chúng tôi cũng có thể thay thế các giá trị bị thiếu bằng một giá trị cụ thể (như -9999 hoặc 'thiếu') sẽ cho biết thực tế là dữ liệu bị thiếu ở vị trí này. Điều này có thể thay thế cho việc quy nạp giá trị còn thiếu ngoại lệMột ngoại lệ là một quan sát bất thường nằm cách xa phần lớn dữ liệu. Các ngoại lệ có thể ảnh hưởng đáng kể đến hiệu suất của mô hình Machine Learning. Do đó, điều quan trọng là phải xác định các ngoại lệ và xử lý chúng. Hãy để chúng tôi lấy cột 'life_sq' làm ví dụ. Đầu tiên chúng ta sẽ sử dụng phương thức description() để xem xét các số liệu thống kê mô tả và xem liệu chúng ta có thể thu thập bất kỳ thông tin nào từ nó không df = pd.read_csv('housing_data.csv') df.shape0 Đầu ra sẽ trông như thế này df = pd.read_csv('housing_data.csv') df.shape1 Từ đầu ra, rõ ràng là có điều gì đó không đúng. Giá trị tối đa dường như lớn bất thường so với giá trị trung bình và trung bình. Hãy để chúng tôi tạo một boxplot dữ liệu này để hiểu rõ hơn df = pd.read_csv('housing_data.csv') df.shape2 Đầu ra sẽ trông như thế này Rõ ràng từ boxplot rằng quan sát tương ứng với giá trị tối đa (7478) là một ngoại lệ trong dữ liệu này. Thống kê mô tả, biểu đồ hộp và biểu đồ phân tán giúp chúng tôi xác định các giá trị ngoại lệ trong dữ liệu Chúng ta có thể xử lý các giá trị ngoại lai giống như cách chúng ta xử lý các giá trị còn thiếu. Chúng tôi có thể loại bỏ các quan sát mà chúng tôi cho là ngoại lệ hoặc chúng tôi có thể thay thế các ngoại lệ bằng các giá trị phù hợp hoặc chúng tôi có thể thực hiện một số loại chuyển đổi trên dữ liệu (như nhật ký hoặc hàm mũ). Trong trường hợp của chúng tôi, hãy bỏ bản ghi có giá trị của 'life_sq' là 7478 df = pd.read_csv('housing_data.csv') df.shape3 Bản ghi trùng lặpDữ liệu đôi khi có thể chứa các giá trị trùng lặp. Điều quan trọng là phải xóa các bản ghi trùng lặp khỏi tập dữ liệu của bạn trước khi bạn tiến hành bất kỳ dự án Machine Learning nào. Trong dữ liệu của chúng tôi, vì cột ID là mã định danh duy nhất nên chúng tôi sẽ loại bỏ các bản ghi trùng lặp bằng cách xem xét tất cả trừ cột ID df = pd.read_csv('housing_data.csv') df.shape4 Điều này sẽ giúp chúng tôi loại bỏ các bản ghi trùng lặp. Bằng cách sử dụng phương thức shape, bạn có thể kiểm tra xem các bản ghi trùng lặp đã thực sự bị loại bỏ chưa. Số lượng quan sát hiện tại là 30.434 Sửa kiểu dữ liệuThông thường trong tập dữ liệu, các giá trị không được lưu trữ theo đúng kiểu dữ liệu. Điều này có thể tạo ra sự cố trong các giai đoạn sau và chúng tôi có thể không nhận được đầu ra mong muốn hoặc có thể gặp lỗi khi thực hiện. Một lỗi kiểu dữ liệu phổ biến là với ngày tháng. Ngày thường được phân tích thành đối tượng trong Python. Có một loại dữ liệu riêng cho ngày trong Pandas, được gọi là DateTime Trước tiên, chúng tôi sẽ kiểm tra loại dữ liệu của cột dấu thời gian trong dữ liệu của chúng tôi df = pd.read_csv('housing_data.csv') df.shape5 Điều này trả về kiểu dữ liệu 'đối tượng'. Bây giờ chúng tôi biết dấu thời gian không được lưu trữ chính xác. Để khắc phục điều này, hãy chuyển đổi cột dấu thời gian sang định dạng DateTime df = pd.read_csv('housing_data.csv') df.shape6 Bây giờ chúng tôi có dấu thời gian ở định dạng chính xác. Tương tự, có thể có các cột lưu trữ số nguyên dưới dạng đối tượng. Việc xác định các tính năng như vậy và sửa loại dữ liệu là rất quan trọng trước khi bạn tiếp tục với Machine Learning. May mắn thay cho chúng tôi, chúng tôi không có bất kỳ vấn đề nào như vậy trong tập dữ liệu của mình Ghi chú cuốiTrong bài viết này, chúng ta đã thảo luận về một số cách cơ bản để chúng ta có thể làm sạch dữ liệu trong Python trước khi bắt đầu với dự án Machine Learning của mình. Chúng tôi cần xác định và xóa các giá trị bị thiếu, xác định và xử lý các giá trị ngoại lệ, xóa các bản ghi trùng lặp và sửa loại dữ liệu của tất cả các cột trong tập dữ liệu của chúng tôi trước khi chúng tôi tiến hành tác vụ ML của mình Tác giả của bài viết này là Vishesh Arora. Bạn có thể kết nối với tôi trên LinkedIn Phương tiện được hiển thị trong bài viết này về Nhận dạng ngôn ngữ ký hiệu không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả Làm sạch văn bản trong Python là gì?Văn bản sạch là ngôn ngữ của con người được sắp xếp lại thành định dạng mà các mẫu máy có thể hiểu được . Việc làm sạch văn bản có thể được thực hiện bằng cách sử dụng mã Python đơn giản để loại bỏ các từ dừng, loại bỏ các từ unicode và đơn giản hóa các từ phức tạp về dạng gốc của chúng.
Một ví dụ về làm sạch dữ liệu là gì?Làm sạch dữ liệu là sửa lỗi hoặc điểm không nhất quán hoặc sắp xếp lại dữ liệu để dễ sử dụng hơn. Điều này bao gồm những thứ như chuẩn hóa ngày tháng và địa chỉ, đảm bảo giá trị trường (e. g. , "Closes won" và "Closed Won") đối sánh, phân tích cú pháp mã vùng ra khỏi số điện thoại và làm phẳng cấu trúc dữ liệu lồng nhau .
Làm sạch dữ liệu của bạn là gì?Làm sạch dữ liệu, còn được gọi là làm sạch dữ liệu hoặc xóa dữ liệu, là quá trình sửa dữ liệu không chính xác, không đầy đủ, trùng lặp hoặc nói cách khác là dữ liệu bị lỗi trong một bộ dữ liệu. It involves identifying data errors and then changing, updating or removing data to correct them.
Tại sao Python tốt cho việc dọn dẹp dữ liệu?Sử dụng R và Python để làm sạch dữ liệu tốt hơn
. Xem xét một tập dữ liệu có nhiều dữ liệu bị thiếu. Python's re library makes string operations much faster and simpler than using SQL for the same action, dramatically reducing the amount of time and effort that goes into cleaning. Consider a dataset with a lot of missing data. |