কীভাবে পান্ডাসকে ভবিষ্যতের সতর্কতা দমন করবেন?


118

আমি যখন প্রোগ্রামটি চালাচ্ছি, পান্ডারা প্রতিবারের মতো নীচে 'ভবিষ্যতের সতর্কতা' দেয়।

D:\Python\lib\site-packages\pandas\core\frame.py:3581: FutureWarning: rename with inplace=True  will return None from pandas 0.11 onward
  " from pandas 0.11 onward", FutureWarning) 

আমি এইপিপি পেয়েছি, তবে আমি কেবল বারবার পান্ডাকে এই ধরনের চিত্র প্রদর্শন করা বন্ধ করতে চাই, এমন কোনও বিল্টিন প্যারামিটার রয়েছে যা আমি পাণ্ডাদের 'ফিউচার সতর্কতা' পপ-আপ না করার জন্য সেট করতে পারি?

উত্তর:


265

এটি গিথুবে পাওয়া গেছে ...

import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)

import pandas

28
বিশেষ দ্রষ্টব্য: করা warnings....ignore আগেimport pandas... কারণ FutureWarningউপেক্ষা করা হবে।
মাইকেল 13 ই

18

@ বিডিআমান্টের উত্তর কেবল আংশিকভাবে আপনাকে সহায়তা করতে পারে। সতর্কতা দমন করার পরে আপনি যদি এখনও কোনও বার্তা পান তবে এটি কারণ pandasগ্রন্থাগারটি নিজেই বার্তাটি মুদ্রণ করছে। আপনি নিজেরাই পান্ডাস উত্স কোড সম্পাদনা না করলে আপনি এ বিষয়ে অনেক কিছুই করতে পারবেন না। অভ্যন্তরীণভাবে সেগুলি দমন করার বিকল্প রয়েছে বা জিনিসগুলিকে ওভাররাইড করার একটি উপায় আছে তবে আমি এটির সন্ধান করতে পারি নি।


যাদের কেন তাদের জানা দরকার ...

মনে করুন যে আপনি একটি পরিচ্ছন্ন কাজের পরিবেশ নিশ্চিত করতে চান। আপনার স্ক্রিপ্টের শীর্ষে, আপনি রেখেছেন pd.reset_option('all')। পান্ডাস 0.23.4 সহ, আপনি নিম্নলিখিত পান:

>>> import pandas as pd
>>> pd.reset_option('all')
html.border has been deprecated, use display.html.border instead
(currently both are identical)

C:\projects\stackoverflow\venv\lib\site-packages\pandas\core\config.py:619: FutureWarning: html.bord
er has been deprecated, use display.html.border instead
(currently both are identical)

  warnings.warn(d.msg, FutureWarning)

: boolean
    use_inf_as_null had been deprecated and will be removed in a future
    version. Use `use_inf_as_na` instead.

C:\projects\stackoverflow\venv\lib\site-packages\pandas\core\config.py:619: FutureWarning:
: boolean
    use_inf_as_null had been deprecated and will be removed in a future
    version. Use `use_inf_as_na` instead.

  warnings.warn(d.msg, FutureWarning)

>>>

@ বিডিআমান্টের পরামর্শ অনুসরণ করে আপনি warningsলাইব্রেরিটি ব্যবহার করেন । এখন, এটি সত্য সত্য, সতর্কতাগুলি সরানো হয়েছে। তবে, বেশ কয়েকটি উদ্বেগজনক বার্তা রয়ে গেছে:

>>> import warnings
>>> warnings.simplefilter(action='ignore', category=FutureWarning)
>>> import pandas as pd
>>> pd.reset_option('all')
html.border has been deprecated, use display.html.border instead
(currently both are identical)


: boolean
    use_inf_as_null had been deprecated and will be removed in a future
    version. Use `use_inf_as_na` instead.

>>>

আসলে, সমস্ত সতর্কতা অক্ষম করা একই আউটপুট উত্পাদন করে:

>>> import warnings
>>> warnings.simplefilter(action='ignore', category=Warning)
>>> import pandas as pd
>>> pd.reset_option('all')
html.border has been deprecated, use display.html.border instead
(currently both are identical)


: boolean
    use_inf_as_null had been deprecated and will be removed in a future
    version. Use `use_inf_as_na` instead.

>>>

স্ট্যান্ডার্ড লাইব্রেরি অর্থে, এগুলি সত্য সতর্কবার্তা নয় । পান্ডাস তার নিজস্ব সতর্কতা ব্যবস্থা প্রয়োগ করে। grep -rnসতর্কবার্তা বার্তাগুলি চালানো থেকে বোঝা যায় যে pandasসতর্কতা সিস্টেমটি এতে প্রয়োগ করা হয়েছে core/config_init.py:

$ grep -rn "html.border has been deprecated"
core/config_init.py:207:html.border has been deprecated, use display.html.border instead

আরও তাড়া করা দেখায় যে এর জন্য আমার কাছে সময় নেই। এবং আপনি সম্ভবত না। আশা করি এটি আপনাকে খরগোশের গর্তের নীচে পড়ার হাত থেকে বাঁচায় বা সম্ভবত এই বার্তাগুলিকে কীভাবে দমন করতে হবে তা নির্ধারণ করার জন্য কাউকে অনুপ্রেরণা জোগাবে!


7

সতর্কতাগুলি বিরক্তিকর। অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনি এগুলি ব্যবহার করে দমন করতে পারেন:

import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)

তবে আপনি যদি একে একে পরিচালনা করতে চান এবং আপনি যদি একটি বড় কোডবেস পরিচালনা করেন তবে কোডের লাইনটি খুঁজে পাওয়া মুশকিল হবে যা সতর্কবার্তা তৈরি করছে। যেহেতু ত্রুটিগুলির বিপরীতে সতর্কবার্তা কোড ট্রেসব্যাকের সাথে আসে না। ত্রুটিগুলির মতো সতর্কতাগুলি সনাক্ত করতে, আপনি কোডের শীর্ষে এটি লিখতে পারেন:

import warnings
warnings.filterwarnings("error")

তবে যদি কোডবেস বড় হয় এবং এটি অন্যান্য গ্রন্থাগার / প্যাকেজগুলি গুচ্ছ আমদানি করে, তবে সমস্ত ধরণের সতর্কতাগুলি ত্রুটি হিসাবে উত্থাপিত হতে শুরু করবে। ত্রুটি হিসাবে কেবলমাত্র নির্দিষ্ট ধরণের সতর্কতাগুলি (আপনার ক্ষেত্রে, এর ফিউচার ওয়ার্নিং) উত্থাপনের জন্য, আপনি লিখতে পারেন:

import warnings
warnings.simplefilter(action='error', category=FutureWarning)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.