Làm sạch dữ liệu trong python

Trong hướng dẫn sử dụng Python trong data science của chúng tôi, chúng tôi đã nghiên cứu tổng hợp và chuẩn bị dữ liệu với Python . Hôm nay, chúng ta sẽ thảo luận về hướng dẫn Làm sạch dữ liệu Python, nhằm mục đích cung cấp giới thiệu ngắn gọn về các thao tác làm sạch dữ liệu và cách array dữ liệu của bạn trong Lập trình Python . Với mục đích này, chúng tôi sẽ sử dụng hai thư viện – pandas và numpy. Hơn nữa, chúng ta sẽ thảo luận về các cách khác nhau để làm sạch dữ liệu bị thiếu.

Các bài viết liên quan:

Vì vậy, hãy bắt đầu làm sạch dữ liệu Python.

Làm sạch dữ liệu trong python

  • Chuẩn bị môi trường
  • Thao tác làm sạch dữ liệu Python trên dữ liệu bằng NumPy
  • Thao tác làm sạch dữ liệu Python trên dữ liệu bằng cách sử dụng pandas
  • Làm sạch dữ liệu Python
  • Cách khác để xử lý dữ liệu còn thiếu trong python
  • Kết luận

Chuẩn bị môi trường

Như đã đề cập trước đó, chúng ta sẽ cần hai thư viện để  sử dụng đó là Pandas và Python numpy. Xem thêm Thiết lập Môi trường data science cho Python

Pandas

Python pandas là một thư viện phần mềm tuyệt vời để thao tác và phân tích dữ liệu. Nó sẽ cho phép chúng ta thao tác với các bảng số và chuỗi thời gian bằng cách sử dụng các cấu trúc và phép toán dữ liệu.

Làm sạch dữ liệu trong python

Bạn có thể cài đặt nó bằng pip:

Numpy

Python numpy là một thư viện khác mà chúng tôi sẽ sử dụng ở đây. Nó cho phép chúng tôi xử lý các array và ma trận, đặc biệt là những array và ma trận đa chiều. Nó cũng cung cấp một số hàm toán học cấp cao để giúp chúng tôi hoạt động trên những hàm này.

Làm sạch dữ liệu trong python

Sử dụng lệnh sau trong dấu nhắc lệnh để cài đặt Python numpy trên máy của bạn

Thao tác làm sạch dữ liệu Python trên dữ liệu bằng NumPy

Sử dụng Python NumPy, hãy tạo một array (array n-chiều).

import numpy as np
np.array(['a','b','c','d','e'],ndim= 2)

Tạo một array với kiểu object.

np.array([['a','b'],['c','d','e']])

Tạo một array với kiểu dữ liệu

np.array(['a','b','c','d','e'],ndmin=1)

Tạo một array với số phức(complex)

np.array([1,2,7,9,8],dtype=complex)

Trong khi dtype cho phép chúng tôi cho trình thông dịch của kiểu dữ liệu để sử dụng, quản trị viên, hãy cho phép chúng tôi xác định thứ nguyên tối thiểu.

Các tham số sau đây sẽ cung cấp cho chúng ta thông tin về mảng

a=np.array(['a','b',2,'3.0'])
a

Ta có thể xem kiểu dữ liệu của a thông qua hàm type, và dimension của a thông qua ndim

Để có thể xem số phần tử trong mỗi chiều của array ta có thể sử dụng thuộc tính shape

Để có thể xem độ lớn của array ta dùng thuộc tính size

Để xem kiểu dữ liệu ta sử dụng dtype

Chúng ta cũng có thể thực hiện các toán tử như sau:

b=np.array([[1,2,3],[4,5,6]])
b

Để gom ma trận thành 1 chiều ta sử dụng hàm flatten()

Thay đổi shape của ma trận mà không thay đổi giá trị của chúng sử dụng reshape()

Trừ tất cả phần tử array cho 4

Tổng các phần tử trong array với nhau sử dụng hàm sum()

Sắp xếp các phần tử trong mảng sử dụng hàm sort()

np.sort(np.array([[3,2,1],[5,2,4]]))

Thao tác làm sạch dữ liệu Python trên dữ liệu bằng cách sử dụng pandas

Pandas sử dụng ba loại để giữ dữ liệu – DataFrame, Panel và Series.

Làm sạch dữ liệu trong python

DataFrame

Pandas DataFrame là một cấu trúc dữ liệu chứa dữ liệu theo hai chiều – là hàng và cột. Chúng ta có cú pháp sau:

pandas. DataFrame ( dữ liệu, chỉ mục, cột, loại dtype, bản sao )

Bây giờ chúng ta hãy thử một ví dụ

#sử dụng thư viện pandas
import pandas as pd 
#khai ma trận 2 chiều với  cột element gồm các phần tử 'Silver','Gold','Platinum','Copper'
# cột Number gồm các phần tử số 47,79,78,29
data={'Element':['Silver','Gold','Platinum','Copper'],'Number':[47,79,78,29]}
# khai báo index trong frame
frame=pd.DataFrame(data,index=['element 1','element 2','element 3','element 4'])
#xuất ra màn hình biến frame
frame

Làm sạch dữ liệu trong python

Panel

Panel trong Pandas chứa dữ liệu trong ba chiều. Về mặt từ nguyên, thuật ngữ dữ liệu panel từ một nguồn cho tên pandas. Một panel có cú pháp sau:

pandas.Panel (data, items, major_axis, small_axis, dtype, copy)

Ta có ví dụ như sau:

#khai báo mảng 3 chiều với chiều thứ 3 là red hay blue
data={'Red':pd.DataFrame(np.random.randn(4,2)),
#random mảng 2 chiều
  'Blue':pd.DataFrame(np.random.randn(4,3))}
pd.Panel(data)

Series

Chuỗi Pandas chứa dữ liệu trong một thứ nguyên, ở định dạng được gắn index. Các index là tập hợp các trục nhãn chúng tôi sử dụng.

Nó có cú pháp sau:

pandas.Series(data, index, dtype, copy)

Hãy lấy một ví dụ.

data=np.array([1,2,3,3,4]) # tạo một array
pd.Series(data)

Làm sạch dữ liệu trong python

Hãy lấy một ví dụ khác.

pd.Series(np.array(['a','c','b']))

Làm sạch dữ liệu trong python

Sử dụng các cấu trúc dữ liệu này, chúng ta có thể thao tác dữ liệu theo nhiều cách

Lấy frame từ index 0 đến index 2

Lấy 2 hàng đầu tiên sử dụng hàm head() trong pandas

Mô tả tổng quan về Frame trong pandas ta có thể sử dụng hàm describe()

Làm sạch dữ liệu trong python

Sử dụng hàm rank() để sắp xếp theo thứ tự

Làm sạch dữ liệu trong python

Đây là tất cả cho bây giờ; chúng ta sẽ tìm hiểu về các thư viện pandas và numpy trong các hướng dẫn riêng của chúng.

Làm sạch dữ liệu Python

Khi một số phần dữ liệu của chúng tôi bị thiếu, do bất kỳ lý do nào, độ chính xác của các dự đoán của chúng tôi sẽ giảm mạnh. Trong bài viết của chúng tôi về xử lý và tổng hợp dữ liệu , chúng tôi đã thảo luận về dữ liệu bị thiếu và cách loại bỏ dữ liệu đó. Hãy xem chúng ta có thể giải quyết vấn đề này như thế nào.

Trong các tình huống thời gian thực như phần bình luận trên trang web của chúng tôi. Tên và email là bắt buộc, nhưng đầu vào cho ‘trang web’ có thể để trống. Một số người dùng có thể không chạy một trang web để đủ điều kiện điền vào thông tin này. Theo những cách như thế này và những cách khác, chúng tôi có thể bị thiếu dữ liệu ở một số nơi. Làm thế nào chúng ta nên tiếp tục với điều này? Hãy cùng tìm hiểu.

Python Pandas sẽ mô tả một giá trị bị thiếu là NaN, viết tắt của Not a Number. Chỉ cần sử dụng phương thức reindex () sẽ điền vào NaN cho các giá trị trống.

frame=pd.DataFrame(np.random.randn(4,3),index=[1,2,4,7],columns=['A','B','C'])
#điền giá trị NaN cho các ô giá trị trống
frame.reindex([1,2,3,4,5,6,7])

Tìm cột nào có giá trị bị thiếu

Trong hướng dẫn về wrangling, chúng ta đã biết cách tìm ra cột nào bị thiếu giá trị

frame=frame.reindex([1,2,3,4,5,6,7])
#tìm các collumn thiếu giá trị
frame['B'].isnull()

Cách khác để xử lý dữ liệu còn thiếu trong python

Để thực hiện xóa dữ liệu Python, bạn có thể loại bỏ các giá trị bị thiếu, thay thế chúng, thay thế từng NaN bằng một giá trị vô hướng hoặc điền về phía trước hoặc phía sau.

Làm sạch dữ liệu trong python

Giảm giá trị bị thiếu

Bạn có thể loại trừ các giá trị bị thiếu khỏi tập dữ liệu của mình bằng phương thức dropna ().

Điều này mặc định giảm trên trục = 0, không bao gồm toàn bộ một hàng cho giá trị NaN.

Thay thế các giá trị bị thiếu

Để thay thế từng NaN mà chúng ta có trong tập dữ liệu, chúng ta có thể sử dụng phương thức Replace ().

from numpy import NaN
#thay thế giá trị NaN bằng 0.00
frame.replace({NaN:0.00})

Bằng cách này, chúng tôi cũng có thể thay thế bất kỳ giá trị nào mà chúng tôi tìm thấy đủ số lần trong tập dữ liệu.

Thay thế bằng Giá trị vô hướng

Chúng ta có thể sử dụng phương thức fillna () cho việc này.

Điền về phía trước hoặc phía sau

Nếu chúng ta cung cấp một tham số phương thức cho phương thức fillna (), chúng ta có thể điền về phía trước hoặc phía sau khi chúng ta cần. Để fillna về phía trước, sử dụng các phương pháp pad, và bfill cho phía sau .

frame.fillna(method='pad')

frame.fillna(method='backfill')

Đổi tên các cột

Để đổi tên một cột, bạn có thể sử dụng phương thức rename ().

>>> frame.rename(columns={'Atomic Number':'Number','Element':'Name'},inplace=True)
>>> frame

Kết luận

Do đó, trong phần Làm sạch dữ liệu Python này, chúng tôi đã tìm hiểu cách dữ liệu được xử lý trong Ngôn ngữ lập trình Python cho mục đích này, chúng tôi đã sử dụng hai thư viện – pandas và numpy. Vì các nhà khoa học dữ liệu dành 80% thời gian của họ để làm sạch và thao tác dữ liệu, điều đó làm cho nó trở thành một kỹ năng thiết yếu để học về khoa học dữ liệu. Hãy cho chúng tôi biết suy nghĩ của bạn trong phần bình luận bên dưới.