Hướng dẫn thực tế về cách xử lý dữ liệu trước với gấu trúc
Tín dụng hình ảnh: Stephanie Klepacki trên UnplashThông điệp về nhà của bạn là gì?
Thông qua bài đăng này, bạn sẽ tìm hiểu các phương pháp sau:
- Nhập và xuất dữ liệu
- Nhận tổng quan về dữ liệu
- Xử lý với các bản sao, các giá trị bị thiếu, lỗi chính tả, cặp cột có mối quan hệ tỷ lệ
Giới thiệu
Tiểu sử
Hiểu các cấu trúc dữ liệu và đặc điểm của chúng là một trong những khóa quan trọng, không chỉ để tạo ra mô hình học máy chính xác cao mà còn từ quan điểm đưa nó vào thực tế.
Trên thực tế, quá trình xử lý trước dữ liệu là khác nhau đối với mỗi bộ dữ liệu và cần phải được thực hiện như thể nó được thiết kế riêng. Do đó, khi chúng tôi xây dựng một mô hình học máy, hầu hết thời gian dành cho phần này.
Những gì tôi muốn chia sẻ
Trong bài đăng này, tôi sẽ tóm tắt các chức năng trong gấu trúc thường được sử dụng để xử lý trước dữ liệu.
Tôi là một nhà tư vấn khoa học dữ liệu và bài đăng này dựa trên kinh nghiệm của tôi về việc phân tích một loạt dữ liệu cho các công ty khác nhau.this post is based on my experience of analyzing a wide range of data for various companies.
Ở dưới cùng của bài đăng này, tôi đã đính kèm liên kết chứa sổ ghi chép Jupyter mà chúng tôi sẽ sử dụng.
Nhập các mô -đun
Trước hết, chúng tôi nhập các mô -đun sau chúng tôi sẽ sử dụng.
- Gấu trúc
- Numpy
- Scikit-learn | load_boston, tiền xử lý
import pandas as pd
import numpy as np
from sklearn.datasets import load_boston
from sklearn import preprocessing
Cài đặt hiển thị trong Notebook Jupyter
Tiếp theo, chúng tôi sẽ thay đổi số lượng hàng và cột được hiển thị của Pandas DataFrame trong Notebook Jupyter.
Trong ví dụ này, chúng tôi đã đặt cả số lượng hàng và cột được hiển thị thành 50:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
Đọc tập dữ liệu
Ở đây chúng tôi đọc dữ liệu mà chúng tôi sẽ xem xét. Một ví dụ, bộ dữ liệu nhà ở Boston từ Scikit-Learn sẽ được sử dụng thông qua bài đăng này:
As an example, the Boston Housing Dataset from scikit-learn will be used through this post:
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
Đọc dữ liệu CSV
Nói chung, bạn sẽ đọc dữ liệu thông qua các tệp CSV hoặc Excel và đây là cách thực hiện:
df_X = pd.read_csv['boston_X.csv']
- Nếu tiêu đề không tồn tại: bạn có thể chỉ định rằng không có tiêu đề nào bằng cách thêm tiêu đề = không có gì:
You can specify that there is no header by “adding header=None”:
df_X = pd.read_csv['boston_X_noheader.csv', header=None]
- Nếu chỉ mục đã tồn tại: cột KTH có thể được chỉ định dưới dạng chỉ mục bằng cách chỉ số của Index_col = kv:
The kth column can be specified as an index by “index_col=k”:
df_X = pd.read_csv['boston_X_withindex.csv', index_col=k]
Đọc dữ liệu Excel
Pandas cũng có thể chấp nhận các tệp Excel [.xlsx]:
df_X = pd.read_excel['boston_X.xlsx']
- Chọn Sheet_Nameif Bạn có nhiều tờ trong một tệp Excel duy nhất, bạn có thể chọn trang riêng lẻ để đọc bằng cách sử dụng bảng tính
If you have multiple sheets in a single excel file, you can select the individual sheet to read using “sheet_name”:
df_X = pd.read_excel['boston.xlsx', sheet_name='sheet_X']
df_y = pd.read_excel['boston.xlsx', sheet_name='sheet_y']
Tổng quan về dữ liệu
Trong phần này, chúng tôi sẽ xem xét tổng quan về DataFrame bạn đã đọc.
Ở đây, chúng tôi đọc lại dữ liệu mới. Tuy nhiên, một số phần của dữ liệu đã được sửa đổi một cách có chủ ý cho thực tiễn.some parts of the data have been intentionally modified for the practice.
df_X = pd.read_csv['boston_X_mod.csv']
Hình dạng
Kiểm tra số lượng hàng và cột của DataFrame bằng cách sử dụng hình dạng hình chữ nhật. Trong ví dụ này, nó là 509 hàng * 15 cột.
In this example, it is 509 rows * 15 columns.
df_X.shape
Đầu, đuôi
Kiểm tra các hàng X đầu tiên và nội dung hàng Y cuối cùng bằng cách sử dụng đầu và đuôi đuôi.
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
0Nhận tên cột
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
1Nếu bạn muốn làm danh sách
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
2Các hàng, cột trùng lặp
Đôi khi, bạn sẽ đối mặt với các hàng hoặc cột trùng lặp. [Đáng ngạc nhiên!] Trong thực tế, bộ dữ liệu đôi khi được thực hiện hoặc thường được kết hợp và sửa chữa bằng bàn tay con người. Do đó, chúng tôi phải kiểm tra cẩn thận các bản sao mỗi lần.
Hàng [chỉ mục]
Làm thế nào để hiển thị các hàng trùng lặp? Đây là cách làm.
- Hiển thị hàng cuối cùng của các hàng trùng lặp:the last row of duplicated rows:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
3- Hiển thị hàng đầu tiên của các hàng trùng lặp:the first row of duplicated rows:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
4- Hiển thị tất cả các hàng của các hàng trùng lặp:all the rows of duplicated rows:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
5Như đã chỉ ra ở trên, vì bộ dữ liệu được sử dụng trong bài đăng này đã được sửa đổi một cách có chủ ý, một số hàng trùng lặp xuất hiện. Trong trường hợp này, chúng tôi đã tìm thấy 3 cặp hàng trùng lặp: 303 và 508; 368 và 507; 453 và 506.
cột
Chúng ta có thể tìm thấy các cột trùng lặp theo cách tương tự như chúng ta đã làm cho các hàng bằng cách sử dụng ma trận chuyển vị.
Hiển thị tất cả các cột của các cột trùng lặp:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
6Chúng tôi đã tìm thấy các cột trùng lặp về thuế và thử nghiệm, mà tôi đã cố tình tạo ra. Chúng tôi cũng chỉ có thể hiển thị các cột đầu tiên hoặc cuối cùng như chúng tôi đã làm cho các hàng. Cột của thử nghiệm trên mạng được loại bỏ sau.
Giá trị bị mất
Kiểm tra các giá trị bị thiếu
Một vấn đề khác của bộ dữ liệu thô là các giá trị bị thiếu. Đầu tiên, chúng tôi xem xét nơi các giá trị còn thiếu đang sử dụng PD.isnull.
Nó trả về một dataFrame ở định dạng Boolean. Ngoài ra, chúng ta có thể truy xuất các hàng và cột tương ứng bằng cách sử dụng NP NP.where,:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
7Chúng tôi tìm thấy các giá trị bị thiếu định vị [296, 12], [308, 6], [494, 7]. Kiểm tra chúng chỉ trong trường hợp:
Chúng tôi xác nhận đây là những giá trị bị thiếu.
Điền vào Blanc
Thứ hai, chúng ta phải thay thế các giá trị bị thiếu này bằng một số giá trị thay thế, có thể là giá trị trung bình hoặc trung bình trong cùng một cột hoặc chỉ 0 [phần này là thời điểm tốt để hiển thị các kỹ năng của bạn với tư cách là nhà khoa học dữ liệu!].
Sử dụng thay thế trên mạng, có thể thay thế Blanc bằng các chữ cái và số được chỉ định. Ở đây chúng tôi chỉ điền vào các số không cho các giá trị bị thiếu này như một trường hợp đơn giản:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
8Chúng tôi chỉ đảm bảo các giá trị bị thiếu được thay thế bằng Zeros:
Kiểm tra các loại biến và cách tìm lỗi chính tả
Tiếp theo, chúng tôi sẽ kiểm tra các loại biến cho mỗi cột. Kiểm tra các loại biến không chỉ chỉ dành cho việc kiểm tra trên mạng. Nó rất hữu ích để kiểm tra xem bộ dữ liệu có bao gồm một lỗi đánh máy hay không, đặc biệt là đối với các giá trị số. Theo kinh nghiệm của tôi, loại sai lầm này đã xảy ra nhiều lần.
Tiết DTYPES Tiết lộ các loại biến cho tất cả các cột:
pd.set_option['display.max_rows', 50]
pd.set_option['display.max_columns', 50]
9Có vẻ như các cột của Dis Dis [khoảng cách có trọng số đến năm trung tâm việc làm của Boston] và B Biêu [1000 [BK - 0,63] ² trong đó BK là tỷ lệ của người da đen theo thị trấn] không phải là cột số. Nhưng chờ đợi, chỉ cần kiểm tra lại dữ liệu!
Như bạn có thể thấy, các cột của dis dis dis dis và bv bao gồm các giá trị số ít nhất là 5 hàng đầu tiên. Nó có nghĩa là một số yếu tố khác với giá trị số được bao gồm trong các cột này.
Ở đây, tôi sẽ chỉ cho bạn cách tìm thấy chúng.
Đầu tiên, xác định danh sách các cột đáng ngờ trong col_miss. Và sau đó, trích xuất các giá trị duy nhất trong cột và cố gắng chuyển đổi từng giá trị thành dữ liệu số. Nếu các giá trị được biểu thị đúng là các giá trị số, chúng ta chỉ cần bỏ qua chúng. Tuy nhiên, nếu các giá trị không thể được chuyển đổi chính xác, chúng tôi sẽ hiển thị các giá trị đó:
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
0Từ kết quả, chúng tôi đã tìm thấy lỗi chính tả là 1..7554 trong DIS và 396.9.9 trong B. Các giá trị chính xác sẽ lần lượt là 1.7554 và 396,99.
Đó là lý do tại sao, chúng tôi sẽ sửa các giá trị sau:
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
1- Thay đổi loại dữ liệu
Đối với các cột của dis dis dis dis và bv, hãy chuyển đổi chúng thành định dạng float, đây là loại dữ liệu gốc sử dụng trên Ast Astype,:
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
2Số lượng giá trị duy nhất
Ở đây chúng ta thấy có bao nhiêu giá trị khác nhau [số lượng giá trị duy nhất] được chứa trong mỗi cột bằng cách sử dụng Nun Nunique,:
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
3Từ những kết quả này, chúng ta có thể thấy rằng Crim có 504 giá trị khác nhau, trong khi Chas chỉ bao gồm hai giá trị khác nhau, điều này khẳng định các biến giả.
Mối quan hệ theo tỷ lệ
Ở trên, chúng tôi đã xác nhận các bản sao, các giá trị bị thiếu và lỗi chính tả. Tuy nhiên, ngay cả khi các số không khớp chính xác giữa hai cột, một số cặp cột đôi khi tỷ lệ hoàn toàn với nhau. Ở đây, chúng tôi kiểm tra xem loại cặp cột này có được bao gồm trong DataFrame hay không bằng cách chuẩn hóa các giá trị cho mỗi cột bằng cách sử dụng Min MinMaxScaler,:
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
4Từ đầu ra, chúng tôi thấy rằng, Test Test2 [được bao gồm một cách có chủ ý] tỷ lệ thuận với RM RM. Trong học máy, một tính năng tỷ lệ như vậy có nghĩa là trùng lặp, vì vậy chúng ta cần loại bỏ một trong số chúng.
Thả cột
Ở đây, chúng tôi xóa các cột trùng lặp, thử nghiệm và thử nghiệm mà chúng tôi đã tìm thấy trước đó, sử dụng Drop Drop :[ Axis = 1 có nghĩa là xóa theo hướng cột]
[axis=1 mean that delete in the column direction]
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
5Mô tả
Sau khi làm cho DataFrame sạch sẽ, chúng tôi rút ra các tham số thống kê cơ bản như giá trị trung bình, độ lệch chuẩn, giá trị tối đa và tối thiểu, cho mỗi cột của DataFrame bằng cách sử dụng mô tả.
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
6Xuất khẩu
Sau khi xử lý dữ liệu, chúng ta muốn làm gì? Tất nhiên, hãy cứu họ! Đây là cách xuất DataFrame dưới dạng các tệp CSV và Excel.
- CSV trên index = false, để loại trừ chỉ mục khỏi các mục đầu ra
“index=False” to exclude index from output items
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
7- Excel
boston = load_boston[]
df_X = pd.DataFrame[boston.data, columns=boston.feature_names]
df_y = pd.DataFrame[boston.target, columns=['target']]
8Đó là về nó!
Cảm ơn bạn đã đọc bài viết này và hy vọng bạn thích nó. Tôi rất vui khi nhận được bất kỳ bình luận nào từ tất cả các bạn!