NaN là viết tắt của Không phải là một số. Nó được sử dụng để đại diện cho các mục không xác định. Nó cũng được sử dụng để biểu thị các giá trị bị thiếu trong tập dữ liệu
Khái niệm về NaN đã tồn tại ngay cả trước khi Python được tạo ra. Tiêu chuẩn IEEE cho số học dấu phẩy động [IEEE 754] đã giới thiệu NaN vào năm 1985
NaN là một giá trị dấu phẩy động đặc biệt không thể chuyển đổi thành bất kỳ loại nào khác ngoài float
Trong hướng dẫn này, chúng ta sẽ xem xét cách NaN hoạt động trong Pandas và Numpy
NaN trong Numpy
Hãy xem cách NaN hoạt động dưới Numpy. Để quan sát các thuộc tính của NaN, hãy tạo một mảng Numpy với các giá trị NaN
import numpy as np arr = np.array[[1, np.nan, 3, 4, 5, 6, np.nan]] pritn[arr]
đầu ra
[ 1. nan 3. 4. 5. 6. nan]
1. Các phép toán trên mảng Numpy với NaN
Hãy thử gọi một số hàm cơ bản trên mảng Numpy
print[arr.sum[]]
đầu ra
nan
Hãy thử tìm giá trị lớn nhất từ mảng
print[arr.max[]]
đầu ra
nan
Rất may, Numpy cung cấp các phương thức bỏ qua các giá trị NaN trong khi thực hiện các phép toán
2. Cách bỏ qua các giá trị NaN trong khi thực hiện các phép toán trên mảng Numpy
Numpy cung cấp cho bạn các phương thức như np. nansum[] và np. nanmax[] để tính tổng và giá trị lớn nhất sau khi bỏ qua các giá trị NaN trong mảng
np.nansum[arr]
đầu ra
19.0
________số 8
6.0
Nếu bạn bật tính năng tự động hoàn thành trong IDE của mình, bạn sẽ thấy danh sách các tùy chọn sau khi làm việc với np. nan
3. Kiểm tra các giá trị NaN
Để kiểm tra các giá trị NaN trong mảng Numpy, bạn có thể sử dụng hàm np. phương thức isnan[]
Điều này tạo ra một mặt nạ boolean có kích thước của mảng ban đầu
[ 1. nan 3. 4. 5. 6. nan]0
đầu ra
[ 1. nan 3. 4. 5. 6. nan]1
Mảng đầu ra đúng với các chỉ số là NaN trong mảng ban đầu và sai đối với phần còn lại
4. Đánh đồng hai nan
Hai NaN có bằng nhau không?
Đây có thể là một câu hỏi khó hiểu. Hãy thử trả lời nó bằng cách chạy một số mã python
[ 1. nan 3. 4. 5. 6. nan]2
Hai câu lệnh này khởi tạo hai biến a và b với nan. Hãy thử đánh đồng hai
[ 1. nan 3. 4. 5. 6. nan]3
đầu ra
[ 1. nan 3. 4. 5. 6. nan]4
Trong Python chúng ta cũng có toán tử is. Hãy thử sử dụng nó để so sánh hai biến
[ 1. nan 3. 4. 5. 6. nan]5
đầu ra
[ 1. nan 3. 4. 5. 6. nan]6
Lý do cho điều này là == toán tử so sánh các giá trị của cả hai toán hạng và kiểm tra sự bằng nhau về giá trị. Mặt khác,
print[arr.sum[]]7 kiểm tra xem cả hai toán hạng có tham chiếu đến cùng một đối tượng hay không
Trên thực tế, bạn có thể in ra ID của cả a và b và thấy rằng chúng đề cập đến cùng một đối tượng
[ 1. nan 3. 4. 5. 6. nan]7
đầu ra
[ 1. nan 3. 4. 5. 6. nan]8
[ 1. nan 3. 4. 5. 6. nan]9
đầu ra
[ 1. nan 3. 4. 5. 6. nan]8
NaN trong khung dữ liệu Pandas
Pandas DataFrames là một cách phổ biến để nhập dữ liệu vào python. Hãy xem cách chúng ta có thể xử lý các giá trị NaN trong Khung dữ liệu Pandas
Hãy bắt đầu bằng cách tạo một khung dữ liệu
print[arr.sum[]]1
đầu ra
1. Kiểm tra các giá trị NaN
Bạn có thể kiểm tra các giá trị NaN bằng cách sử dụng phương thức isnull[]. Đầu ra sẽ là mặt nạ boolean với kích thước của khung dữ liệu gốc
print[arr.sum[]]2
đầu ra
2. Thay thế các giá trị NaN
Có nhiều cách để thay thế các giá trị NaN trong Khung dữ liệu Pandas. Cách phổ biến nhất để làm như vậy là sử dụng. phương thức fillna[]
Phương pháp này yêu cầu bạn chỉ định một giá trị để thay thế NaN bằng
print[arr.sum[]]3
đầu ra
Ngoài ra, bạn cũng có thể đề cập đến các giá trị theo cột. Điều đó có nghĩa là tất cả các NaN trong một cột sẽ được thay thế bằng cùng một giá trị
print[arr.sum[]]4
đầu ra
Bạn cũng có thể sử dụng phép nội suy để điền vào các giá trị còn thiếu trong khung dữ liệu. Nội suy là một phương pháp hơi tiên tiến so với. điền []
Nội suy là một kỹ thuật mà bạn có thể ước tính các điểm dữ liệu chưa biết giữa hai điểm dữ liệu đã biết
3. Xoá hàng chứa giá trị NaN
Để thả các hàng hoặc cột bằng NaN, bạn có thể sử dụng. phương thức dropna[]
Để thả hàng với NaN, hãy sử dụng
print[arr.sum[]]5
Để thả các cột bằng NaN, hãy sử dụng
print[arr.sum[]]6
Phần kết luận
Hướng dẫn này là về NaN trong Python. Chúng tôi chủ yếu tập trung vào việc xử lý NaN trong Numpy và Pandas. Hy vọng bạn đã có niềm vui học tập với chúng tôi