पंडों की भविष्य की चेतावनी को कैसे दबाएं?


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
nb: डाल warnings....ignore से पहलेimport pandas... पैदा करने के लिए FutureWarningध्यान नहीं दिया जा करने के लिए।
माइकल

18

@ bdiamante का जवाब केवल आंशिक रूप से आपकी मदद कर सकता है। अगर आपको चेतावनियों को दबाने के बाद भी संदेश मिलता है, तो यह इसलिए है क्योंकि 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)

>>>

@ Bdiamante की सलाह के बाद, आप warningsलाइब्रेरी का उपयोग करते हैं । अब, यह शब्द के लिए सच है, चेतावनी हटा दी गई है। हालाँकि, कई pesky संदेश बने हुए हैं:

>>> 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")

लेकिन अगर कोडबेस बड़ा है और यह अन्य पुस्तकालयों / पैकेजों का गुच्छा आयात कर रहा है, तो सभी तरह की चेतावनियाँ त्रुटियों के साथ उठने लगेंगी। त्रुटि के रूप में केवल कुछ प्रकार की चेतावनी (आपके मामले में, इसके FutureWarning) को बढ़ाने के लिए, आप लिख सकते हैं:

import warnings
warnings.simplefilter(action='error', category=FutureWarning)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.