از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نام ‘df’/’pd’ در پایتون تعریف نشده است
سرفصلهای مطلب
معرفی
هنگام استفاده از پانداها در پایتون، کتابخانه ای برای دستکاری و تجزیه و تحلیل داده ها، ممکن است با خطای “NameError: name ‘df’/’pd’ is not defined” مواجه شده باشید. در این بایت، نشان خواهیم داد که چرا این خطاها رخ می دهند و چگونه می توانید از آنها اجتناب کنید.
درک این خطای نام ‘df’
را df
خطای نام معمولاً زمانی رخ می دهد که شما سعی می کنید از یک شی DataFrame استفاده کنید df
قبل از اینکه تعریف شود این یک اشتباه رایج هنگام کار با پانداها (یا هر اسکریپت پایتون، واقعاً) است، که از شی DataFrame برای ذخیره دادهها به شکل جدولی با تغییر اندازه دو بعدی و بالقوه ناهمگن استفاده میکند.
print(df)
NameError: name 'df' is not defined
خطای بالا پرتاب می شود زیرا df
قبل از دسترسی به آن تعریف نشده است.
اعلان متغیرها قبل از دسترسی
برای جلوگیری از NameError
، باید مطمئن شوید که DataFrame شماست df
قبل از دسترسی به آن اعلام می شود. این کار را می توان با استفاده از تابع Pandas انجام داد pd.DataFrame()
برای ایجاد یک DataFrame
import pandas as pd
data = {
'apples': (3, 2, 0, 1),
'oranges': (0, 3, 7, 2)
}
df = pd.DataFrame(data)
print(df)
apples oranges
0 3 0
1 2 3
2 0 7
3 1 2
کد بالا کاملاً کار خواهد کرد زیرا df
قبل از دسترسی به آن تعریف شده است.
دلایل رایج برای خطای نام ‘df’
چندین موقعیت رایج وجود دارد که ممکن است باعث ایجاد این مشکل شود df
خطا همانطور که دیدیم، یکی از این موارد تلاش برای استفاده است df
قبل از اینکه اعلام شود مورد دیگر زمانی است که شما به اشتباه فکر می کنید یک کتابخانه یا ماژول وارد شده است، اما اینطور نیست.
df = pd.DataFrame(data)
print(df)
NameError: name 'pd' is not defined
در کد بالا، pandas
ماژول وارد نشده است، از این رو NameError
.
یکی دیگر از محرک های رایج برای خطا، مسائل مربوط به محدوده است. اگر یک DataFrame df
در داخل یک تابع تعریف شده است، خارج از آن تابع شناسایی نخواهد شد. این بخاطر این است که df
محلی برای تابع است و یک متغیر سراسری نیست.
def create_df():
df = pd.DataFrame(data)
return df
print(df)
NameError: name 'df' is not defined
در این کد، df
در داخل تعریف شده است create_df()
عملکرد و خارج از آن قابل دسترسی نیست.
اجتناب از ورود پانداها به محدوده تودرتو
در پایتون، محدوده یک متغیر به زمینه ای اشاره دارد که در آن “قابل مشاهده” است. دو نوع رایج دامنه عبارتند از: سراسری (بلوک کدی که از آن قابل دسترسی است) و محلی (عملکرد یا روشی که در آن تعریف شده است). وقتی تو import pandas
مانند pd
در یک تابع (حوزه محلی)، و سپس سعی کنید از آن خارج از آن تابع (حوزه جهانی) استفاده کنید، احتمالاً با NameError
.
در اینجا یک مثال است:
def my_function():
import pandas as pd
my_function()
print(pd)
با اجرای این کد به شما پاسخ می دهد NameError: name 'pd' is not defined
زیرا pandas
ماژول در محدوده محلی تابع وارد شده است و در محدوده جهانی قابل دسترسی نیست.
برای جلوگیری از این، همیشه import pandas
در ابتدای اسکریپت شما، خارج از هر توابع یا روش، بنابراین در سراسر کد شما در دسترس است.
پانداها را وارد نکنید امتحان کنید/به جز بلوک ها
ما اغلب میبینیم که توسعهدهندگان پایتون ماژولهایی را درون بلوکهای try/ex وارد میکنند تا بتوانند پتانسیل را مدیریت کنند import خطاها با این حال، این می تواند منجر به غیر منتظره شود NameError
اگر به درستی انجام نشود
کد زیر را در نظر بگیرید:
try:
import pandas as pd
except ImportError:
print("pandas module not installed")
print(pd)
اگر Pandas نصب نشده باشد، آخرین print
بیانیه الف را مطرح خواهد کرد NameError: name 'pd' is not defined
از آنجا که pd
هرگز قابل تعریف نبود برای جلوگیری از این امر، مطمئن شوید که فقط به ماژول در بلوک try ارجاع می دهید یا قبل از اجرای اسکریپت از نصب آن اطمینان حاصل کنید. در این مورد، except
بلوک یا باید از اسکریپت خارج می شد یا بک بک دیگری داشت.
خطای نام ‘pd’
را NameError: name 'pd' is not defined
در پایتون زمانی اتفاق می افتد که شما سعی می کنید استفاده کنید pandas
(با نام مستعار pd
) قبل از وارد کردن آن. وقتی از نام مستعار استفاده می کنید pd
تماس گرفتن pandas
بدون وارد کردن پاندا به عنوان کار می کند pd
، پایتون تشخیص نمی دهد pd
و الف را بالا می برد NameError
.
در اینجا یک مثال است:
df = pd.DataFrame()
اجرای این کد بدون وارد کردن pandas
مانند pd
منجر به الف خواهد شد NameError: name 'pd' is not defined
.
واردات پاندا قبل از استفاده
برای حل و فصل NameError: name 'pd' is not defined
، شما نیاز دارید import پانداها قبل از استفاده از آن کنوانسیون استاندارد این است که import pandas
در ابتدای فیلمنامه شما و نام مستعار آن به عنوان pd
برای استفاده راحت تر
در اینجا روش انجام آن آمده است:
import pandas as pd
df = pd.DataFrame()
این کد بدون بالا بردن a اجرا می شود NameError
زیرا pandas
قبل از استفاده وارد می شود.
مشکلات املایی با ماژول پانداها
در حالی که پایتون به حروف بزرگ حساس است، اشتباه تایپی یا حروف بزرگ می تواند منجر به a شود NameError
. به عنوان مثال، اگر شما import پانداها به عنوان pd
اما بعداً به آن اشاره کنید PD
یا Pd
، پایتون a را افزایش می دهد NameError: name 'PD' is not defined
یا NameError: name 'Pd' is not defined
.
import pandas as pd
df = PD.DataFrame()
برای جلوگیری از این امر، هنگام مراجعه به پانداها یا سایر ماژول های پایتون، همیشه مطمئن شوید که با این مورد سازگار هستید.
از واردات پانداها در محدوده تودرتو خودداری کنید
اغلب، توسعه دهندگان پایتون تلاش می کنند import ماژول های درون یک تابع یا یک کلاس، که منجر به یک محدوده تودرتو می شود import. این می تواند مشکلاتی را ایجاد کند، به خصوص با پانداها، زیرا ممکن است ماژول در محدوده جهانی در دسترس نباشد. بیایید به یک مثال نگاه کنیم:
def some_function():
import pandas as pd
df = pd.DataFrame()
some_function()
print(df)
این کد یک را پرتاب می کند NameError
زیرا df
در حوزه جهانی تعریف نشده است. DataFrame df
فقط در داخل تابع موجود است some_function
.
توجه داشته باشید: برای جلوگیری از چنین مسائلی، همیشه import ماژول های خود را در بالای اسکریپت خود قرار دهید، و آنها را در سراسر محدوده برنامه خود در دسترس قرار دهید.
استفاده از بیانیه صحیح واردات پاندا
Pandas یک کتابخانه محبوب پایتون برای دستکاری و تجزیه و تحلیل داده ها است. به طور معمول با نام مستعار وارد می شود pd
. اگر در حال دیدن یک NameError
برای pd
، به احتمال زیاد شما یا فراموش کرده اید import پانداها، یا آن را اشتباه وارد کرده اند. در اینجا روش انجام این کار آمده است:
import pandas as pd
هنگامی که پانداها با نام مستعار وارد شدند pd
، می توانید از آن برای ایجاد یک DataFrame استفاده کنید، مانند:
df = pd.DataFrame()
توجه داشته باشید: همیشه مطمئن شوید که Pandas به درستی در ابتدای اسکریپت وارد شده است. اگر Pandas نصب نشده است، می توانید آن را با استفاده از آن نصب کنید pip: $ pip install pandas
در شما console.
نتیجه
در پایتون، a NameError
به طور معمول نشان می دهد که یک متغیر یا ماژول قبل از تعریف استفاده شده است. این می تواند با پانداها (که معمولاً با نام مستعار شناخته می شوند) رخ دهد pd
) و با DataFrames (اغلب نامگذاری می شوند df
). برای جلوگیری از این خطاها، همیشه مطمئن شوید که ماژولهای شما در بالای اسکریپت شما با استفاده از نحو صحیح وارد میشوند. همچنین، مطمئن شوید که متغیرها قبل از دسترسی به آنها اعلام شده باشند.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-29 14:52:06