目次
1. Cách kiểm tra NaN trong Python
NaN là gì?
NaN(Not a Number) là một giá trị số dấu phẩy động đặc biệt biểu thị rằng phép toán số không hợp lệ hoặc không được xác định. Điển hình, nó xuất hiện khi chia cho 0 hoặc như kết quả của các phép toán không hợp lệ, vì vậy cần đặc biệt lưu ý khi phân tích dữ liệu và xử lý số liệu. Nếu không xử lý NaN đúng cách, kết quả tính toán có thể sai lệch, hoặc chương trình có thể không hoạt động như mong đợi。Tầm quan trọng của việc kiểm tra NaN
Nếu bộ dữ liệu có chứa NaN, độ tin cậy của dữ liệu và kết quả tính toán có thể bị ảnh hưởng. Vì vậy, trước hết cần kiểm tra NaN và thực hiện các xử lý tiếp theo (xóa, thay thế, v.v.) một cách phù hợp。2. Cách tạo NaN
Trong Python, bạn có thể tạo NaN bằngfloat('nan')
. Nó được dùng để biểu thị rõ ràng một kết quả không hợp lệ trong các phép tính số.num = float('nan')
print(num) # Kết quả: nan
Khác biệt so với None
NaN là giá trị không hợp lệ về mặt số học, cònNone
biểu thị trạng thái “không có gì”. None
có thể so sánh bằng ==
, nhưng do NaN thậm chí không bằng chính nó, nên việc dùng ==
để kiểm tra là không phù hợp.num = float('nan')
print(num == num) # Kết quả: False
none_value = None
print(none_value == None) # Kết quả: True

3. Cách kiểm tra NaN
3.1. Kiểm tra bằng thư viện chuẩn(math.isnan()
)
Để kiểm tra NaN bằng thư viện chuẩn của Python, hãy dùng math.isnan()
. Hàm này trả về True
nếu giá trị được truyền vào là NaN。import math
num = float('nan')
print(math.isnan(num)) # Kết quả: True
3.2. Kiểm tra bằng NumPy(numpy.isnan()
)
NumPy là một thư viện chuyên cho tính toán mảng và ma trận, cung cấp hàm numpy.isnan()
để kiểm tra NaN trong mảng một cách hiệu quả. Thường được sử dụng trong phân tích số liệu và xử lý dữ liệu khoa học。import numpy as np
num_list = [1, 2, np.nan, 4]
print(np.isnan(num_list)) # Kết quả: [False False True False]
3.3. Kiểm tra với pandas(pandas.isna()
)
Khi làm việc với DataFrame, hãy dùng isna()
hoặc isnull()
của pandas để kiểm tra NaN. Những hàm này hữu ích cho việc làm sạch dữ liệu và xử lý giá trị khuyết thiếu。import pandas as pd
import numpy as np
data = pd.Series([1, 2, np.nan, 4])
print(pd.isna(data)) # Kết quả: 0 False
# 1 False
# 2 True
# 3 False
4. Cách xóa hoặc thay thế NaN
4.1. Xóa NaN khỏi danh sách
Để xóa NaN trong danh sách, bạn có thể kết hợpmath.isnan()
với list comprehension.import math
num_list = [1, 2, float('nan'), 4]
clean_list = [num for num in num_list if not math.isnan(num)]
print(clean_list) # Kết quả: [1, 2, 4]
4.2. Xóa NaN bằng pandas(dropna()
)
Khi muốn xóa NaN khỏi DataFrame, hãy dùng phương thức dropna()
. Nhờ đó, bạn có thể loại bỏ các hàng hoặc cột chứa NaN.import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
clean_df = df.dropna()
print(clean_df)
4.3. Thay thế NaN bằng pandas(fillna()
)
Nếu không muốn xóa NaN mà muốn thay thế bằng một giá trị cụ thể, hãy dùng phương thức fillna()
.import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
df.fillna(0, inplace=True)
print(df)

5. Các phép tính có chứa NaN
Các phép tính có chứa NaN sẽ cho ra kết quả cũng là NaN, nên để nhận được kết quả chính xác, cần loại bỏ NaN trước hoặc thay thế nó.import numpy as np
result = 10 + np.nan
print(result) # Kết quả: nan
Ví dụ về các phép tính thống kê có chứa NaN
Khi thực hiện các phép tính thống kê trên tập dữ liệu có chứa NaN và muốn bỏ qua NaN khi tính toán, hãy sử dụng hàmnanmean()
của NumPy. Hàm này loại trừ NaN khi tính giá trị trung bình.import numpy as np
data = [1, 2, np.nan, 4]
mean = np.nanmean(data) # Tính giá trị trung bình bỏ qua NaN
print(mean) # Kết quả: 2.3333...
6. Lưu ý về việc kiểm tra NaN
6.1. Hành vi của các toán tử so sánh
NaN có một tính chất đặc biệt: khi so sánh bằng các toán tử so sánh, nó không bằng bất kỳ số nào khác, thậm chí không bằng chính nó. Do đó, không thể kiểm tra bằng==
hoặc !=
; cần sử dụng các hàm chuyên dụng (isnan()
hoặc isna()
).num = float('nan')
print(num == num) # Kết quả: False
6.2. Điểm cần lưu ý khi làm sạch dữ liệu
Trong phân tích dữ liệu, nếu vẫn còn NaN thì không thể tính toán chính xác. Vì có thể làm sai lệch kết quả tính toán, cần làm sạch thích hợp trước. Bằng cách loại bỏ hoặc thay thế NaN một cách phù hợp, có thể nâng cao độ tin cậy của dữ liệu.7. Tổng kết
Trong Python, bằng cách tận dụngmath
, numpy
, pandas
, bạn có thể kiểm tra và xử lý NaN một cách hiệu quả. Việc hiểu đúng cách xử lý NaN và trang bị kiến thức nền tảng để duy trì độ tin cậy của phân tích dữ liệu và tính toán số là một kỹ năng hữu ích trong mọi lĩnh vực lập trình.