Chuyển đến nội dung chính

Python NaN: 4 cách kiểm tra giá trị thiếu trong Python

Khám phá 4 cách phát hiện giá trị NaN trong Python bằng NumPy và Pandas. Tìm hiểu khác biệt chính giữa NaN và None để làm sạch và phân tích dữ liệu hiệu quả.
· 5 phút đọc

Khám phá cùng AI

Trong thế giới khoa học dữ liệu và phân tích, việc gặp dữ liệu thiếu là chuyện thường xuyên hơn là ngoại lệ. Giá trị thiếu có thể làm sai lệch phân tích, dẫn đến kết luận không chính xác và nói chung phá vỡ quy trình xử lý dữ liệu. Giải quyết những khoảng trống này là điều then chốt để duy trì tính toàn vẹn của phân tích. Bài viết này nhằm trang bị cho bạn các cách khác nhau để nhận diện các giá trị NaN (Not a Number) trong Python.

Câu trả lời ngắn gọn: Dùng hàm isnan() của NumPy hoặc phương thức .isna() của Pandas

Khi xử lý giá trị thiếu trong Python, cách tiếp cận phụ thuộc nhiều vào cấu trúc dữ liệu mà bạn đang làm việc.

Với giá trị đơn lẻ hoặc mảng: Dùng NumPy

Hàm isnan() của NumPy lý tưởng để nhận diện NaN trong các mảng số hoặc giá trị đơn lẻ, mang đến giải pháp đơn giản và hiệu quả. Dưới đây là ví dụ minh họa!

import numpy as np

# Single value check
my_missing_value = np.nan
print(np.isnan(my_missing_value))

# Output: True

# Array check
my_missing_array = np.array([1, np.nan, 3])
nan_array = np.isnan(my_missing_array)
print(nan_array)

# Output: [False  True False]

Với DataFrame: Dùng Pandas

Pandas cung cấp các phương thức toàn diện như .isna() và .isnull() để phát hiện giá trị thiếu trên các đối tượng DataFrame hoặc Series, tích hợp trơn tru với quy trình phân tích dữ liệu.

import pandas as pd
import numpy as np

my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(my_dataframe.isna())

#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

Khi bạn chạy đoạn mã này, đầu ra sẽ cho biết sự hiện diện của các giá trị NaN trong một bối cảnh thú vị hơn, như thể hiện ở trên.

Sự khác nhau giữa NaN và None

Hiểu sự khác biệt giữa NaN và None là rất quan trọng trong Python. NaN là biểu diễn số thực cho "Not a Number", chủ yếu dùng trong các tính toán số học. Ngược lại, None là đối tượng của Python đại diện cho việc không có giá trị, tương tự null trong các ngôn ngữ khác. Trong khi NaN được dùng trong các phép toán toán học hoặc khoa học, None mang tính khái quát hơn, chỉ sự thiếu vắng dữ liệu.

4 cách kiểm tra NaN trong Python

Dò tìm giá trị thiếu trong tập dữ liệu là bước quan trọng của tiền xử lý dữ liệu. Hãy khám phá bốn phương pháp thực tiễn để kiểm tra các giá trị NaN trong Python, tiếp nối những ví dụ trực quan mà chúng ta đã dùng.

1. Kiểm tra NaN bằng np.isnan()

Như đã thấy trước đó, NumPy cung cấp cách tiếp cận đơn giản để nhận diện NaN trong cả giá trị đơn và mảng, điều rất cần thiết cho phân tích dữ liệu số.

import numpy as np

# Checking a single value
print(np.isnan(np.nan))

# Output: True

# Checking an array
my_array = np.array([1, 5, np.nan])
print(np.isnan(my_array))

# Output: [False False  True]

2. Kiểm tra NaN bằng pd.isna()

Pandas đơn giản hóa việc phát hiện giá trị NaN trong các cấu trúc dữ liệu, từ scalar đến DataFrame phức tạp, khiến nó trở nên vô giá cho các tác vụ thao tác dữ liệu.

import numpy as np
import pandas as pd

# Checking a single value
print(pd.isna(np.nan))

# Output: True

# Checking a pandas Series
my_series = pd.Series(["Python", np.nan, "The Best"])
print(my_series.isna())

# Output:
# 0    False
# 1     True
# 2    False

# Checking a pandas DataFrame
my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(pd.isna(my_dataframe)) # Output a DataFrame with True for missing values

3. Kiểm tra NaN trong DataFrame bằng các phương thức .isna() hoặc .isnull() của Pandas

Các DataFrame của Pandas cũng cung cấp các phương thức .isna() và .isnull() để xác định dễ dàng các giá trị thiếu trên toàn tập dữ liệu, cho cái nhìn rõ ràng về mức độ đầy đủ của dữ liệu.

import numpy as np
import pandas as pd

# Create a dataframe with missing values
my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(my_dataframe.isna())
# Output:
#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

print(my_dataframe.isnull())
# Output:
#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

4. Kiểm tra NaN trong DataFrame bằng math.isnan()

Với các kiểm tra từng số riêng lẻ, hàm math.isnan() mang đến giải pháp đơn giản nhưng hiệu quả, đặc biệt khi làm việc với kiểu dữ liệu thuần Python.

import math

# Assuming my_number is a float or can be converted to one
my_number = float('nan')
print(math.isnan(my_number))

# Output: True

Lời kết và tài nguyên bổ sung

Nhận diện và xử lý các giá trị NaN là bước nền tảng khi làm sạch và chuẩn bị dữ liệu cho phân tích. Dù bạn đang làm việc với mảng, series hay data frame, việc hiểu các công cụ và phương pháp sẵn có trong Python để xử lý dữ liệu thiếu là điều thiết yếu. Để tìm hiểu thêm, hãy xem các tài nguyên sau:

Adel Nehme

Tác giả

Adel Nehme

Adel là một nhà giáo dục Khoa học Dữ liệu, diễn giả, và Phó Chủ tịch phụ trách Truyền thông tại DataCamp. Adel đã phát hành nhiều khóa học và buổi đào tạo trực tiếp về phân tích dữ liệu, học máy và kỹ thuật dữ liệu. Anh đam mê lan tỏa kỹ năng dữ liệu và hiểu biết dữ liệu trong toàn tổ chức, cũng như những điểm giao thoa giữa công nghệ và xã hội. Anh có bằng Thạc sĩ Khoa học Dữ liệu và Phân tích Kinh doanh. Thời gian rảnh, bạn có thể bắt gặp anh vui đùa cùng chú mèo Louis.

Chủ đề

Liên quan