Làm thế nào để bạn biết nếu NaN bằng nhau?

NaN được cho là không bao giờ bằng bất kỳ giá trị nào, kể cả chính nó hoặc các giá trị NaN khác. Trong các ngôn ngữ như Java, JavaScript và các ngôn ngữ khác hỗ trợ số học dấu phẩy động tiêu chuẩn của IEEE, một cách để phát hiện NaN là gán nó cho một biến và biến đó sẽ không bằng chính nó nếu nó là NaN. Thử cái này.
[scratchblocks]
Có thể ngắn mạch khối

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
7 thành đúng nếu cùng một biến được đặt ở cả hai bên.

IEEE 754 cũng cho phép một giá trị bất thường khác. số 0 âm. Giá trị này được tạo ra khi bạn chia một số dương cho âm vô cùng hoặc khi một kết quả âm nhỏ hơn giới hạn biểu diễn

Đối với gấu trúc xác định những gì mà hầu hết các nhà phát triển sẽ biết là giá trị

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
8 là
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 hoặc
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
0 trong gấu trúc. Trong gấu trúc, giá trị
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 được biểu thị bằng
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
2

Trong hầu hết các trường hợp, các thuật ngữ

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 và
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
8 có thể thay thế cho nhau, nhưng để tuân thủ các tiêu chuẩn của gấu trúc, chúng tôi sẽ tiếp tục sử dụng
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 trong suốt hướng dẫn này

Đánh giá dữ liệu bị thiếu

Ở cấp độ cơ sở, gấu trúc cung cấp hai chức năng để kiểm tra dữ liệu

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9,
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
7 và
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
8. Như bạn có thể nghi ngờ, đây là những hàm đơn giản trả về giá trị
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 cho biết liệu giá trị đối số được truyền có thực tế là dữ liệu
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 hay không

Ngoài các chức năng trên, pandas còn cung cấp 2 phương thức để kiểm tra dữ liệu

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 trên các đối tượng Series và DataFrame. Các phương thức này đánh giá từng đối tượng trong Sê-ri hoặc Khung dữ liệu và cung cấp giá trị
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 cho biết dữ liệu có phải là
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 hay không

Ví dụ, hãy tạo một Series đơn giản trong pandas

import pandas as pd
import numpy as np

s = pd.Series[[2,3,np.nan,7,"The Hobbit"]]

Bây giờ đánh giá Sê-ri

In [3]: s.isnull[]
Out[3]:
0    False
1    False
2     True
3    False
4    False
dtype: bool
4, đầu ra hiển thị từng giá trị như mong đợi, bao gồm chỉ số
In [3]: s.isnull[]
Out[3]:
0    False
1    False
2     True
3    False
4    False
dtype: bool
5 mà chúng tôi đặt rõ ràng là
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object

Để kiểm tra phương pháp

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
7 trong loạt bài này, chúng ta có thể sử dụng
In [3]: s.isnull[]
Out[3]:
0    False
1    False
2     True
3    False
4    False
dtype: bool
8 và xem đầu ra

In [3]: s.isnull[]
Out[3]:
0    False
1    False
2     True
3    False
4    False
dtype: bool

Như mong đợi, giá trị duy nhất được đánh giá là

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 là chỉ số
In [3]: s.isnull[]
Out[3]:
0    False
1    False
2     True
3    False
4    False
dtype: bool
5

Xác định xem có BẤT KỲ giá trị nào trong một chuỗi bị thiếu hay không

Mặc dù phương pháp

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
7 rất hữu ích, nhưng đôi khi chúng tôi có thể muốn đánh giá xem có bất kỳ giá trị nào là
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 trong Chuỗi hay không

Có một vài khả năng liên quan đến việc xâu chuỗi nhiều phương thức lại với nhau

Phương pháp nhanh nhất được thực hiện bằng cách xâu chuỗi

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
53

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
5

Trong một số trường hợp, bạn có thể muốn xác định có bao nhiêu giá trị

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 tồn tại trong bộ sưu tập, trong trường hợp đó, bạn có thể sử dụng
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
55 được xâu chuỗi trên

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
8

Đếm các giá trị còn thiếu trong DataFrame

Mặc dù chuỗi

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
56 sẽ hoạt động đối với đối tượng DataFrame để cho biết liệu có bất kỳ giá trị nào là
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 hay không, nhưng trong một số trường hợp, cũng có thể hữu ích khi đếm số lượng giá trị
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 trên toàn bộ DataFrame. Vì DataFrames vốn đã đa chiều, nên chúng ta phải gọi hai phương pháp tổng kết

Ví dụ: trước tiên chúng ta cần tạo một DataFrame đơn giản với một vài giá trị

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
0

Bây giờ nếu chúng ta xâu chuỗi một phương thức

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
55, thay vì lấy tổng của các giá trị
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9, chúng ta sẽ nhận được một danh sách tất cả các tổng của mỗi
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
82

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
3

Chúng ta có thể thấy trong ví dụ này, cột đầu tiên của chúng ta chứa ba giá trị

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9, cùng với mỗi giá trị trong cột
In [3]: s.isnull[]
Out[3]:
0    False
1    False
2     True
3    False
4    False
dtype: bool
5 và
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
85 cũng vậy

Để có được tổng cộng của tất cả các giá trị

In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
9 trong DataFrame, chúng tôi xâu chuỗi hai phương thức
In [2]: s
Out[2]:
0             2
1             3
2           NaN
3             7
4    The Hobbit
dtype: object
55 lại với nhau

Là NaN hay == NaN?

NaN không bằng NaN . Truyện ngắn. Theo thông số kỹ thuật của IEEE 754, mọi thao tác được thực hiện trên các giá trị NaN sẽ mang lại giá trị sai hoặc sẽ gây ra lỗi. Cảm ơn CJ J đã chia sẻ điều này.

NaN có bằng chính nó không?

Vâng, a Số không phải là số Không bằng chính nó . Nhưng không giống như trường hợp không xác định và null khi so sánh một giá trị không xác định với null là đúng nhưng kiểm tra kỹ [===] giống nhau sẽ cho bạn một giá trị sai, hành vi của NaN là do thông số kỹ thuật của IEEE mà tất cả các hệ thống cần tuân thủ.

Tại sao NaN không bằng chính nó?

Để thoát khỏi phép ẩn dụ kỳ lạ này của tôi và quay lại Python, NaN không thể bằng chính nó vì NaN là kết quả của một thất bại . Kết quả của một lỗi không thể bằng kết quả của bất kỳ lỗi nào khác và các giá trị chưa biết không thể bằng nhau.

Làm cách nào để so sánh NaN trong gấu trúc?

Các cách kiểm tra NaN trong Pandas DataFrame như sau. .
Kiểm tra NaN với isnull[]. giá trị. phương thức bất kỳ []
Đếm NaN Sử dụng isnull[]. phương pháp tổng []
Kiểm tra NaN Sử dụng isnull[]. giá trị. phương thức bất kỳ []
Đếm NaN Sử dụng isnull[]. Tổng[]. phương pháp tổng []

Chủ Đề