از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
ارزش حقیقت یک سری مبهم است» خطا در پانداها
سرفصلهای مطلب
معرفی
گاهی اوقات هنگام کار با پانداها در پایتون، ممکن است با یک پیغام خطایی مواجه شوید که می گوید: “مقدار واقعی یک سری مبهم است. از a.empty، a.bool()، a.item()، a.any() یا a.all استفاده کنید. ()”. این بایت به شما در درک این خطا، چرایی بروز آن و روش رفع آن با استفاده از روش های مختلف کمک می کند.
چرا این خطا را دریافت می کنیم؟
این خطا معمولاً زمانی رخ میدهد که میخواهید از سری Pandas در زمینهای استفاده کنید که مقدار بولی مورد انتظار است. این می تواند در یک if
بیانیه، الف while
حلقه یا هر عبارت شرطی دیگری.
import pandas as pd
a = pd.Series((1, 2, 3))
if a:
print("This will throw an error")
وقتی می خواهید این کد را اجرا کنید، با پیغام خطا مواجه می شوید. دلیل آن این است که پایتون نمی داند چگونه مقدار صدق یک سری را تفسیر کند. این می تواند به معنای “آیا سریال خالی نیست؟” یا “آیا همه مقادیر موجود در سری درست هستند؟” یا “آیا حداقل یک مقدار در سری درست است؟”. به دلیل این ابهام، پایتون نمیداند چه کاری انجام دهد و خطایی را مطرح میکند.
چگونه خطا را رفع کنیم
بسته به اینکه چه چیزی را می خواهید بررسی کنید، راه های مختلفی برای رفع این خطا وجود دارد. شما می توانید استفاده کنید a.empty
، a.bool()
، a.item()
، a.any()
، یا a.all()
. هر یک از این روشها یک مقدار بولی را برمیگردانند که پایتون میتواند بهطور واضح تفسیر کند.
استفاده کردن a.خالی برای جلوگیری از خطا
را a.empty
ویژگی چک می کند که آیا سری خالی است یا خیر. اگر سریال هیچ عنصری نداشته باشد، a.empty
برمی گرداند True
. در غیر این صورت برمی گردد False
. در اینجا روش استفاده از آن آورده شده است:
import pandas as pd
a = pd.Series(())
if a.empty:
print("The Series is empty")
else:
print("The Series is not empty")
وقتی این کد را اجرا می کنید، “سری خالی است” را چاپ می کند، زیرا سری a
هیچ عنصری ندارد
استفاده کردن a.bool() برای جلوگیری از خطا
را a.bool()
متد بررسی می کند که آیا سری حاوی یک عنصر واحد است یا خیر True
. اگر سری دقیقاً حاوی یک عنصر باشد و آن عنصر باشد True
، a.bool()
برمی گرداند True
. در غیر این صورت برمی گردد False
. این زمانی می تواند مفید باشد که بدانید سری باید دقیقاً حاوی یک عنصر باشد.
import pandas as pd
a = pd.Series((True))
if a.bool():
print("The Series contains a single True value")
else:
print("The Series does not contain a single True value")
وقتی این کد را اجرا می کنید، “سری حاوی یک مقدار واقعی است” چاپ می شود، زیرا سری a
دقیقاً شامل یک عنصر است و آن عنصر است True
.
استفاده کردن a.item() برای جلوگیری از خطا
را a.item()
این عملکرد برای زمانی که با یک سری یا آرایه سروکار دارید که فقط شامل یک عنصر است عالی است. این تابع مقدار عنصر واحد در سری شما را برمی گرداند. اگر سری شما حاوی بیش از یک عنصر باشد، یک عدد دریافت خواهید کرد ValueError
، بنابراین مطمئن شوید که فقط یک مورد وجود دارد.
import pandas as pd
s = pd.Series((1))
val = s.item()
print(val)
خروجی:
1
در اینجا، شما می توانید آن را ببینید a.item()
مقدار واحد را با موفقیت از سری ما برگرداند. اما بیایید ببینیم اگر بخواهیم استفاده کنیم چه اتفاقی می افتد a.item()
در یک سری با بیش از یک عنصر.
s = pd.Series((1, 2))
val = s.item()
خروجی:
ValueError: can only convert an array of size 1 to a Python scalar
در این مورد، a.item()
الف پرتاب کرده است ValueError
زیرا سری ما حاوی بیش از یک عنصر است. پس به یاد داشته باشید، a.item()
یک ابزار عالی برای سری های تک عنصری است، اما برای سری هایی با چندین عنصر کار نمی کند.
استفاده کردن a.any() برای جلوگیری از خطا
را a.any()
تابع یکی دیگر از ابزارهای مفید برای رسیدگی به خطاهای مقدار صدق است. این تابع باز خواهد گشت True
اگر عنصری در سریال شما درست باشد و False
در غیر این صورت. این می تواند به ویژه زمانی مفید باشد که به دنبال راهی سریع برای بررسی اینکه آیا هر یک از عناصر مجموعه شما شرایط خاصی را دارند یا خیر.
s = pd.Series((False, True, False))
any_true = s.any()
print(any_true)
خروجی:
True
اینجا، a.any()
بازگشته است True
زیرا حداقل یک عنصر در سریال ما درست است. این می تواند یک راه عالی برای بررسی سریع اینکه آیا هر یک از عناصر مجموعه شما شرایط خاصی را دارد یا خیر.
استفاده کردن a.all() برای جلوگیری از خطا
را a.all()
تابع مشابه است a.any()
، اما به جای بررسی درست بودن عناصر، درست بودن همه عناصر را بررسی می کند. این تابع باز خواهد گشت True
اگر تمام عناصر سریال شما درست باشد و False
در غیر این صورت. بیایید نگاهی به یک مثال بیندازیم.
s = pd.Series((True, True, True))
all_true = s.all()
print(all_true)
خروجی:
True
شما می توانید آن را ببینید a.all()
بازگشته است True
زیرا تمام عناصر سریال ما درست است. این می تواند یک راه ساده برای بررسی اینکه آیا همه عناصر مجموعه شما شرایط خاصی را دارند یا خیر.
نتیجه
در این بایت، ما چندین روش برای مدیریت خطای «مقدار حقیقت یک سری مبهم است» در پایتون نشان دادهایم. ما روش استفاده را دیدیم a.item()
، a.any()
، و a.all()
می تواند به ما کمک کند تا از این خطا اجتناب کنیم و سریال خود را به گونه ای دستکاری کنیم که برای نیازهای ما منطقی باشد.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-27 20:48:03