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

NaN đã được giới thiệu, ít nhất là chính thức, theo Tiêu chuẩn IEEE cho Số học dấu phẩy động (IEEE 754). Đó là một tiêu chuẩn kỹ thuật cho tính toán dấu phẩy động được thành lập vào năm 1985 - nhiều năm trước khi Python được phát minh và thậm chí còn lâu hơn nữa trước khi Pandas được tạo ra - bởi Viện Kỹ sư Điện và Điện tử (IEEE). Nó được giới thiệu để giải quyết các vấn đề được tìm thấy trong nhiều triển khai dấu phẩy động khiến chúng khó sử dụng một cách đáng tin cậy và di động

Tiêu chuẩn này đã thêm NaN vào các định dạng số học. "các định dạng số học. tập hợp dữ liệu dấu phẩy động nhị phân và thập phân, bao gồm các số hữu hạn (bao gồm các số không có dấu và số phụ), vô hạn và các giá trị 'không phải là số' đặc biệt (NaN)"

Đào tạo Python trực tiếp

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

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

'nan' trong Python

Python cũng biết các giá trị NaN. Chúng ta có thể tạo nó với "float"

n1 = float("nan")
n2 = float("Nan")
n3 = float("NaN")
n4 = float("NAN")
print(n1, n2, n3, n4)

ĐẦU RA

nan nan nan nan

"nan" cũng là một phần của mô-đun toán học kể từ Python 3. 5

import math
n1 = math.nan
print(n1)
print(math.isnan(n1))

ĐẦU RA

nan
True

Cảnh báo. Không thực hiện so sánh giữa giá trị "NaN" hoặc giá trị "Nan" với số thông thường. Một lý do đơn giản hoặc đơn giản hóa là đây. Hai thứ "không phải là số", vì vậy chúng có thể là bất cứ thứ gì nhưng hầu hết có thể không giống nhau. Trên hết, không có cách nào để đặt hàng NaN

print(n1 == n2)
print(n1 == 0)
print(n1 == 100)
print(n2 < 0)

ĐẦU RA

False
False
False
False

NaN trong gấu trúc

Ví dụ không có NaN

Trước khi chúng tôi làm việc với dữ liệu NaN, chúng tôi sẽ xử lý một tệp không có bất kỳ giá trị NaN nào. Nhiệt độ tập tin dữ liệu. csv chứa dữ liệu nhiệt độ của sáu cảm biến được thực hiện cứ sau 15 phút giữa 6. 00 đến 19. 15 giờ

Việc đọc trong tệp dữ liệu có thể được thực hiện bằng hàm read_csv

import pandas as pd

df = pd.read_csv("../data1/temperatures.csv",
                 sep=";",
                 decimal=",",
                 index_col=0)
df[:5]

cảm biến1 cảm biến2 cảm biến3 cảm biến4cảm biến5cảm biến6time06. 00. 0014. 313. 714. 214. 313. 513. 606. 15. 0014. 514. 514. 015. 014. 514. 706. 30. 0014. 615. 114. 815. 314. 014. 206. 45. 0014. 814. 515. 615. 214. 714. 607. 00. 0015. 014. 915. 715. 614. 015. 3

Chúng tôi muốn tính toán nhiệt độ trung bình trên mỗi điểm đo trên tất cả các cảm biến. Chúng ta có thể sử dụng phương thức DataFrame 'có nghĩa là'. Nếu chúng tôi sử dụng 'trung bình' mà không có tham số, nó sẽ tổng hợp các cột cảm biến, đây không phải là điều chúng tôi muốn, nhưng nó cũng có thể thú vị

df.mean()

ĐẦU RA

________số 8

average_temp_series = df.mean(axis=1)
print(average_temp_series[:8])

ĐẦU RA

nan nan nan nan
0

nan nan nan nan
1

ĐẦU RA

nan nan nan nan
2

Bây giờ chúng tôi sẽ chỉ định các giá trị nhiệt độ trung bình dưới dạng cột 'nhiệt độ' mới

nan nan nan nan
3

nan nan nan nan
4

nhiệt độthời gian06. 00. 0013. 93333306. 15. 0014. 53333306. 30. 0014. 666667

Ví dụ với NaN

Bây giờ chúng tôi sẽ sử dụng một tệp dữ liệu tương tự như csv nhiệt độ trước đó, nhưng lần này chúng tôi sẽ phải xử lý dữ liệu NaN, khi các cảm biến bị trục trặc

Chúng tôi sẽ tạo DataFrame nhiệt độ, trong đó một số dữ liệu không được xác định, tôi. e. NaN

Chúng tôi sẽ sử dụng và thay đổi dữ liệu từ nhiệt độ. tệp csv

nan nan nan nan
5

cảm biến1 cảm biến2 cảm biến3 cảm biến4cảm biến5cảm biến6time06. 00. 0014. 313. 714. 214. 313. 513. 606. 15. 0014. 514. 514. 015. 014. 514. 706. 30. 0014. 615. 114. 815. 314. 014. 206. 45. 0014. 814. 515. 615. 214. 714. 607. 00. 0015. 014. 915. 715. 614. 015. 307. 15. 0015. 215. 214. 615. 315. 514. 907. 30. 0015. 415. 315. 615. 614. 715. 107. 45. 0015. 514. 815. 415. 514. 614. 9

Chúng tôi sẽ gán ngẫu nhiên một số giá trị NaN vào khung dữ liệu. Với mục đích này, chúng tôi sẽ sử dụng phương thức where từ DataFrame. Nếu chúng tôi áp dụng vị trí cho đối tượng DataFrame df, tôi. e. df. trong đó(cond, other_df), nó sẽ trả về một đối tượng có cùng hình dạng với df và có các mục nhập tương ứng là từ df trong đó phần tử tương ứng của cond là True và nếu không thì được lấy từ other_df

Trước khi tiếp tục với nhiệm vụ của mình, chúng tôi sẽ trình bày cách thức hoạt động của where bằng một số ví dụ đơn giản

s = pd. Sê-ri(phạm vi(5)) s. trong đó (s > 0)

nan nan nan nan
6

FooBar018-27114-23228-2136-23

Đối với nhiệm vụ của chúng tôi, chúng tôi cần tạo một DataFrame 'nan_df', hoàn toàn bao gồm các giá trị NaN và có hình dạng giống như DataFrame nhiệt độ của chúng tôi 'temp_df'. Chúng tôi sẽ sử dụng DataFrame này ở 'where'. Chúng tôi cũng cần một DataFrame với các điều kiện "df_bool" là giá trị True. Với mục đích này, chúng tôi sẽ tạo một DataFrame với các giá trị ngẫu nhiên trong khoảng từ 0 đến 1 và bằng cách áp dụng 'random_df < 0. 8', chúng tôi nhận được Khung dữ liệu df_bool, trong đó khoảng 20% ​​giá trị sẽ là Đúng

nan nan nan nan
7

cảm biến1 cảm biến2 cảm biến3 cảm biến4cảm biến5cảm biến6time06. 00. 00SaiĐúngTrueTrueTrueTrueSai06. 15. 00SaiĐúngTrueTrueTrueSaiTrue06. 30. 00SaiĐúngTrueTrueTrueTrueTrue06. 45. 00TrueTrueTrueTrueTrueFalse07. 00. 00TrueFalseTrueTrueTrueSai

Cuối cùng, chúng tôi đã có mọi thứ cùng nhau để tạo DataFrame với các phép đo bị xáo trộn

nan nan nan nan
8

cảm biến1 cảm biến2 cảm biến3 cảm biến4cảm biến5cảm biến6time06. 00. 00NaN13. 714. 214. 313. 5NaN06. 15. 00NaN14. 514. 015. 0NaN14. 706. 30. 00NaN15. 114. 815. 314. 014. 206. 45. 0014. 814. 515. 615. 214. 7NaN07. 00. 0015. 0NaN15. 715. 614. 0NaN07. 15. 0015. 215. 214. 615. 315. 514. 907. 30. 00NaN15. 315. 6NaN14. 715. 107. 45. 0015. 514. 815. 415. 514. 614. 908. 00. 0015. 715. 615. 916. 215. 415. 408. 15. 0015. 915. 8NaN16. 9NaN16. 2

Đào tạo Python trực tiếp

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

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

Các khóa học trực tuyến sắp tới

Python dành cho kỹ sư và nhà khoa học

Phân tích dữ liệu với Python

đăng ký tại đây

Sử dụng dropna trên DataFrame

'dropna' là một phương thức DataFrame. Nếu chúng ta gọi phương thức này mà không có đối số, nó sẽ trả về một đối tượng mà mọi hàng đều bị bỏ qua, trong đó dữ liệu bị thiếu, tôi. e. một số giá trị là NaN

nan nan nan nan
9

cảm biến1 cảm biến2 cảm biến3 cảm biến4cảm biến5cảm biến6time07. 15. 0015. 215. 214. 615. 315. 514. 907. 45. 0015. 514. 815. 415. 514. 614. 908. 00. 0015. 715. 615. 916. 215. 415. 408. 30. 0016. 115. 716. 115. 914. 915. 209. 15. 0017. 117. 517. 517. 316. 616. 809. 45. 0018. 419. 019. 019. 418. 418. 310. 30. 0020. 419. 420. 021. 020. 219. 812. 15. 0023. 823. 724. 825. 122. 222. 413. 30. 0022. 921. 922. 924. 322. 923. 014. 15. 0022. 322. 921. 922. 322. 521. 116. 00. 0021. 121. 620. 720. 619. 921. 417. 45. 0019. 920. 419. 421. 120. 020. 518. 30. 0019. 519. 119. 219. 718. 318. 3

'dropna' cũng có thể được sử dụng để loại bỏ tất cả các cột trong đó một số giá trị là NaN. Điều này có thể đạt được bằng cách gán 1 cho tham số trục. Giá trị mặc định là Sai, như chúng ta đã thấy trong ví dụ trước. Vì mọi cột từ cảm biến của chúng tôi đều chứa giá trị NaN nên tất cả chúng sẽ biến mất

import math
n1 = math.nan
print(n1)
print(math.isnan(n1))
0

thời gian06. 00. 0006. 15. 0006. 30. 0006. 45. 0007. 00. 00

Hãy để chúng tôi thay đổi nhiệm vụ của chúng tôi. Chúng tôi chỉ muốn loại bỏ tất cả các hàng chứa nhiều hơn một giá trị NaN. Tham số 'thresh' là lý tưởng cho nhiệm vụ này. Nó có thể được đặt thành số tối thiểu. 'thresh' được đặt thành một giá trị số nguyên, xác định số lượng giá trị không phải NaN tối thiểu. Chúng tôi có sáu giá trị nhiệt độ trong mỗi hàng. Đặt 'thresh' thành 5 đảm bảo rằng chúng tôi sẽ có ít nhất 5 số float hợp lệ trong mỗi hàng còn lại

import math
n1 = math.nan
print(n1)
print(math.isnan(n1))
1

cảm biến1 cảm biến2 cảm biến3 cảm biến4cảm biến5cảm biến6time06. 00. 00NaN13. 714. 214. 313. 5NaN06. 15. 00NaN14. 514. 015. 0NaN14. 706. 30. 00NaN15. 114. 815. 314. 014. 206. 45. 0014. 814. 515. 615. 214. 7NaN07. 00. 0015. 0NaN15. 715. 614. 0NaN07. 15. 0015. 215. 214. 615. 315. 514. 907. 30. 00NaN15. 315. 6NaN14. 715. 1

Bây giờ chúng tôi sẽ tính toán lại các giá trị trung bình, nhưng lần này trên DataFrame 'cleansed_df', tôi. e. nơi chúng tôi đã loại bỏ tất cả các hàng, nơi xảy ra nhiều hơn một giá trị NaN

import math
n1 = math.nan
print(n1)
print(math.isnan(n1))
2

nhiệt độthời gian06. 00. 0013. 92500006. 15. 0014. 55000006. 30. 0014. 68000006. 45. 0014. 96000007. 00. 0015. 07500007. 15. 0015. 116667

NaN loại Python là gì?

NaN , viết tắt của not a number, là một loại dữ liệu số được sử dụng để biểu thị bất kỳ giá trị nào không xác định hoặc không thể trình bày . Ví dụ: 0/0 không được xác định là số thực và do đó, được biểu thị bằng NaN.

Làm cách nào để sử dụng NaN Python?

nan (không phải số) trong Python .
nan là một giá trị float trong Python
Tạo nan. float('nan') , ​​toán học. nan , numpy. nan
Kiểm tra xem một giá trị có phải là nan không. môn Toán. isnan() , np. isnan()
Hành vi cho các toán tử so sánh ( < , > , == ,. = ) với nan
Kiểm tra nan trong câu lệnh if
Xóa và thay thế nan trong danh sách
Thao tác với nan

Tại sao tôi nhận được NaN trong Python?

Nan có nghĩa là “Không phải là một số”, điều này là do bên trong hàm lập phương của bạn, bạn không gọi hàm vuông mà nhận được nội dung của nó. Thay đổi trả về x * vuông;

NaN và null có giống nhau trong Python không?

Trong pandas, một giá trị còn thiếu được biểu thị bằng NaN. Trong hầu hết các trường hợp, các thuật ngữ thiếu và không có thể hoán đổi cho nhau , nhưng để tuân thủ các tiêu chuẩn của gấu trúc, chúng ta sẽ tiếp tục sử dụng từ thiếu trong suốt hướng dẫn này.