Nan và inf trong python là gì?

Cách kiểm tra xem một giá trị có phải là NaN trong python không. Có những cách tiếp cận đang sử dụng thư viện (pandas, math và numpy) và không sử dụng thư viện

NaN là viết tắt của Not A Number và là một trong những cách phổ biến để biểu thị giá trị còn thiếu trong dữ liệu. Nó là một giá trị dấu phẩy động đặc biệt và không thể chuyển đổi thành bất kỳ loại nào khác ngoài float

Giá trị NaN là một trong những vấn đề chính trong Phân tích dữ liệu. Điều rất cần thiết là phải xử lý NaN để có được kết quả mong muốn

Dễ dàng tìm và xử lý NaN trong một mảng, chuỗi hoặc khung dữ liệu. Tuy nhiên, việc xác định một giá trị NaN độc lập rất khó. Trong bài viết này, tôi giải thích năm phương pháp để xử lý NaN trong python. Ba phương thức đầu tiên liên quan đến các chức năng dựng sẵn từ các thư viện. Hai cái cuối cùng dựa vào các thuộc tính của NaN để tìm các giá trị NaN

Phương pháp 1. Sử dụng thư viện Pandas

isna() trong thư viện gấu trúc có thể được sử dụng để kiểm tra xem giá trị có phải là null/NaN không. Nó sẽ trả về True nếu giá trị là NaN/null

import pandas as pd
x = float("nan")
print(f"It's pd.isna : {pd.isna(x)}")
OutputIt's pd.isna : True

Phương pháp 2. Sử dụng thư viện Numpy

isnan() trong thư viện numpy có thể được sử dụng để kiểm tra xem giá trị có phải là null/NaN không. Nó tương tự như isna() trong pandas

import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True

Phương pháp 3. Sử dụng thư viện toán học

Thư viện toán học cung cấp có tích hợp sẵn các hàm toán học. Thư viện được áp dụng cho tất cả các số thực. thư viện cmath có thể được sử dụng nếu xử lý các số phức.
Thư viện toán học có sẵn hàm isnan() để kiểm tra giá trị null/NaN.

import math
x = float("nan")
print(f"It's math.isnan : {math.isnan(x)}")
OutputIt's math.isnan : True

Phương pháp 4. So sánh với chính nó

Khi tôi bắt đầu sự nghiệp làm việc với công ty CNTT lớn, tôi phải trải qua khóa đào tạo trong tháng đầu tiên. Huấn luyện viên, khi giới thiệu khái niệm về giá trị NaN, đã đề cập rằng họ giống như người ngoài hành tinh mà chúng ta không biết gì về. Những người ngoài hành tinh này liên tục thay đổi hình dạng và do đó chúng ta không thể so sánh giá trị NaN với chính nó.
Phương pháp phổ biến nhất để kiểm tra các giá trị NaN là kiểm tra xem biến có bằng chính nó không. Nếu không, thì nó phải là giá trị NaN.

def isNaN(num):
return num!= num
x=float("nan")
isNaN(x)
OutputTrue

Phương pháp 5. kiểm tra phạm vi

Một thuộc tính khác của NaN có thể được sử dụng để kiểm tra NaN là phạm vi. Tất cả các giá trị dấu phẩy động nằm trong phạm vi từ âm vô cực đến vô cực

vô cực < số bất kỳ < vô cực

Tuy nhiên, các giá trị NaN không nằm trong phạm vi này. Do đó, NaN có thể được xác định nếu giá trị không nằm trong phạm vi từ âm vô cực đến vô cực

Điều này có thể được thực hiện như dưới đây

def isNaN(num):
if float('-inf') < float(num) < float('inf'):
return False
else:
return True
x=float("nan")
isNaN(x)
OutputTrue

Tôi hy vọng bạn đã tìm thấy bài viết trên hữu ích. Tôi chắc chắn sẽ có nhiều kỹ thuật khác để kiểm tra các giá trị NaN dựa trên nhiều logic khác. Vui lòng chia sẻ các phương pháp khác mà bạn đã gặp để kiểm tra các giá trị NaN/Null

hoặc tính toán một số lớn hơn 1. 796E308 (số lớn nhất mà máy tính của bạn có thể biểu thị bằng 64 bit) -- e. g

1E307 * 100 → Inf

-Inf có nghĩa là vô cực âm, kết quả của việc chia một số âm cho 0 (hoặc một số nhỏ hơn -1. 796E308) -- e. g

-1/0 → -Inf

NAN có nghĩa là "Không phải là số". Nó là kết quả của một phép tính không phải là một con số cũng như vô hạn được xác định rõ ràng -- e. g

0/0 → NANSqrt(-1) → NAN

(Nếu bạn bật Số phức, Sqrt(-1) trả về số ảo hợp lệ, 1j. )

Null có nghĩa là không có giá trị như vậy. Ví dụ: Subscript trả về

import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
0 nếu giá trị lập chỉ mục không khớp với giá trị của Chỉ mục

import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
1
import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
2
import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
31E307 * 100 → Inf0

Bạn cũng có thể chỉ định một kết quả mặc định khác cho giá trị chỉ mục không khớp với chỉ mục

1E307 * 100 → Inf1

Tìm hiểu thêm về INF và NAN

Các tính toán sử dụng 1E307 * 100 → Inf2 và 1E307 * 100 → Inf3 tuân theo các khuyến nghị của ANSI (Hiệp hội các Viện Tiêu chuẩn Quốc gia), tuân theo các định luật toán học càng nhiều càng tốt

_______54____55____56____57

Các biểu thức lấy 1E307 * 100 → Inf3 làm toán hạng hoặc tham số cho kết quả là 1E307 * 100 → Inf3 trừ khi biểu thức có một giá trị logic hoặc số được xác định rõ cho bất kỳ giá trị nào của 1E307 * 100 → Inf3

-1/0 → -Inf1-1/0 → -Inf2-1/0 → -Inf3

Tìm hiểu thêm về NULL

Khi

import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
0 xuất hiện trong các phép toán vô hướng, nó thường tạo ra một cảnh báo và đánh giá thành
import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
0, chẳng hạn

-1/0 → -Inf6-1/0 → -Inf7-1/0 → -Inf8

Sum, Min, Max, ArgMax, JoinText, Npv và các hàm giảm mảng khác bỏ qua -1/0 → -Inf9

0/0 → NAN00/0 → NAN10/0 → NAN20/0 → NAN3

Đồ thị cũng bỏ qua (không hiển thị) bất kỳ điểm nào có giá trị là

import numpy as np
x = float("nan")
print(f"It's np.isnan : {np.isnan(x)}")
OutputIt's np.isnan : True
0

Một số hàm giảm mảng, đáng chú ý là Sum, Min và Max cũng chấp nhận một tham số tùy chọn «IgnoreNaN» để bỏ qua các giá trị 0/0 → NAN5 (nếu không sẽ lan truyền, i. e. trả lại 0/0 → NAN5)

Sự khác biệt giữa NaN và INF là gì?

Inf và -Inf là vô cực dương và âm trong khi NaN có nghĩa là 'Không phải là số' . (Những điều này áp dụng cho các giá trị số và phần thực và phần ảo của các giá trị phức nhưng không áp dụng cho các giá trị của vectơ số nguyên. ) Inf và NaN là các từ dành riêng trong ngôn ngữ R.

INF có nghĩa là gì trong Python?

Định nghĩa và cách sử dụng . Đối với vô cực âm, hãy sử dụng -math. inf. Hằng inf tương đương với float('inf'). inf constant returns a floating-point positive infinity. For negative infinity, use -math. inf . The inf constant is equivalent to float('inf') .

NaN có nghĩa là gì trong Python?

NaN là viết tắt của Không phải là số và là một trong những cách phổ biến để biểu thị giá trị còn thiếu trong dữ liệu. Nó là một giá trị dấu phẩy động đặc biệt và không thể chuyển đổi thành bất kỳ loại nào khác ngoài float.

float ('inf') nghĩa là gì?

Vĩ mô. nổi INFINITY. Một biểu thức đại diện cho số dương vô cực . Nó bằng với giá trị được tạo ra bởi các phép toán như 1. 0 / 0. 0. -INFINITY đại diện cho vô cực âm.