از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه بررسی مقادیر NaN در پایتون
سرفصلهای مطلب
معرفی
امروز قصد داریم نحوه بررسی مقادیر NaN (نه یک عدد) را در پایتون بررسی کنیم. مقادیر NaN می تواند هنگام پردازش داده ها بسیار آزاردهنده باشد و دانستن نحوه شناسایی آنها می تواند شما را از بسیاری از سردردهای احتمالی در مسیر نجات دهد.
چرا بررسی مقادیر NaN مهم است
مقادیر NaN می تواند دردسر واقعی باشد، به خصوص زمانی که با محاسبات عددی یا تجزیه و تحلیل داده ها سر و کار دارید. آنها می توانند نتایج شما را تغییر دهند، خطا ایجاد کنند و به طور کلی زندگی شما را به عنوان یک توسعه دهنده دشوارتر کنند. به عنوان مثال، اگر میانگین لیستی از اعداد را محاسبه میکنید و مقدار NaN به صورت مخفیانه وارد میشود، بدون در نظر گرفتن سایر اعداد، نتیجه شما نیز NaN خواهد بود. تقریباً به نظر می رسد که نتیجه را “مسموم” می کند – یک NaN می تواند همه چیز را از بین ببرد.
توجه داشته باشید: NaN مخفف “عدد نیست”. این یک مقدار ممیز شناور ویژه است که نمی تواند به نوع دیگری غیر از float تبدیل شود.
مقادیر NaN در عملیات ریاضی
هنگام انجام عملیات ریاضی، مقادیر NaN می تواند مشکلات زیادی ایجاد کند. آنها می توانند منجر به نتایج غیرمنتظره یا حتی خطاها شوند. پایتون math
و numpy
کتابخانه ها معمولاً مقادیر NaN را در عملیات ریاضی منتشر می کنند که می تواند منجر به بی اعتبار شدن کل محاسبات شود.
به عنوان مثال، در numpy
، هر عملیات حسابی شامل مقدار NaN به NaN منجر می شود:
import numpy as np
a = np.array((1, 2, np.nan))
print(a.sum())
خروجی:
nan
در چنین مواردی، ممکن است بخواهید از توابعی استفاده کنید که می توانند مقادیر NaN را به طور مناسب مدیریت کنند. Numpy فراهم می کند nansum()
، nanmean()
و دیگران، که مقادیر NaN را نادیده می گیرند:
print(np.nansum(a))
خروجی:
3.0
از سوی دیگر، پانداها معمولاً مقادیر NaN را در عملیات ریاضی خود به طور پیشفرض مستثنی میکنند.
نحوه بررسی مقادیر NaN در پایتون
راه های زیادی برای بررسی مقادیر NaN در پایتون وجود دارد و ما برخی از متداول ترین روش های مورد استفاده در کتابخانه های مختلف را پوشش خواهیم داد. بیایید با داخلی شروع کنیم math
کتابخانه
با استفاده از math.isnan() تابع
را math.isnan()
تابع یک راه آسان برای بررسی NaN بودن یک مقدار است. این تابع برمی گردد True
اگر مقدار NaN و False
در غیر این صورت. در اینجا یک مثال ساده آورده شده است:
import math
value = float('nan')
print(math.isnan(value)) # True
value = 5
print(math.isnan(value)) # False
همانطور که می بینید، وقتی یک مقدار NaN را به عدد ارسال می کنیم math.isnan()
تابع، آن را برمی گرداند True
. وقتی یک مقدار غیر NaN را ارسال می کنیم، برمی گردد False
.
مزیت استفاده از این تابع خاص این است که math
ماژول در پایتون تعبیه شده است، بنابراین نیازی به نصب بسته های شخص ثالث نیست.
با استفاده از numpy.isnan() تابع
اگر با آرایه ها یا ماتریس ها کار می کنید، numpy.isnan()
تابع نیز می تواند ابزار خوبی باشد. از نظر عنصر روی یک آرایه عمل می کند و یک آرایه بولی به همان شکل را برمی گرداند. در اینجا یک مثال است:
import numpy as np
array = np.array((1, np.nan, 3, np.nan))
print(np.isnan(array))
# array((False, True, False, True))
در این مثال، یک آرایه با دو مقدار NaN داریم. وقتی استفاده می کنیم numpy.isnan()
، یک آرایه بولی را در آنجا برمی گرداند True
مطابق با موقعیت مقادیر NaN در آرایه اصلی است.
زمانی که از NumPy در کد خود استفاده می کنید و به تابعی نیاز دارید که با سایر ساختارهای NumPy به خوبی کار کند، می خواهید از این روش استفاده کنید. np.array
.
با استفاده از pandas.isnull() تابع
Pandas یک عملکرد آسان برای استفاده را ارائه می دهد، isnull()
، برای بررسی مقادیر NaN در DataFrame یا Series. بیایید به یک مثال نگاه کنیم:
import pandas as pd
# Create a DataFrame with NaN values
df = pd.DataFrame({'A': (1, 2, np.nan), 'B': (5, np.nan, np.nan), 'C': (1, 2, 3)})
print(df.isnull())
خروجی یک DataFrame خواهد بود که نسخه اصلی را منعکس می کند، اما با True
برای مقادیر NaN و False
برای مقادیر غیر NaN:
A B C
0 False False False
1 False True False
2 True True False
نکته ای که اگر این روش را آزمایش کنید متوجه خواهید شد این است که آن نیز برمی گردد True
برای None
ارزش ها، از این رو چرا به آن اشاره دارد null
در نام روش باز می گردد True
برای هردو NaN
و None
.
مقایسه روش های مختلف
هر روشی که بحث کردیم – math.isnan()
، numpy.isnan()
، و pandas.isnull()
– نقاط قوت و موارد استفاده خاص خود را دارد. را math.isnan()
تابع یک راه ساده برای بررسی NaN بودن یک عدد است، اما فقط روی اعداد جداگانه کار می کند.
از سوی دیگر، numpy.isnan()
از نظر عناصر روی آرایه ها عمل می کند و آن را به انتخاب خوبی برای بررسی مقادیر NaN تبدیل می کند numpy
آرایه ها
سرانجام، pandas.isnull()
برای بررسی مقادیر NaN در اشیاء سری پانداها یا DataFrame مناسب است. شایان ذکر است که pandas.isnull()
را نیز در نظر می گیرد None
به عنوان NaN، که می تواند در هنگام برخورد با داده های دنیای واقعی بسیار مفید باشد.
نتیجه
بررسی مقادیر NaN یک مرحله مهم در پیش پردازش داده ها است. ما سه روش را بررسی کرده ایم – math.isnan()
، numpy.isnan()
، و pandas.isnull()
– بسته به نوع داده ای که با آن کار می کنید، هر کدام نقاط قوت خود را دارند.
ما همچنین در مورد تأثیر مقادیر NaN بر عملیات ریاضی و نحوه مدیریت آنها با استفاده از توابع numpy و pandas بحث کردهایم.
منتشر شده در 1402-12-27 01:46:04