web-dev-qa-db-ja.com

抑制する方法Pandas Future warning?

プログラムを実行すると、Pandasは毎回以下のような「将来の警告」を出します。

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) 

メッセージを取得しましたが、Pandasそのようなメッセージを何度も表示するのを止めたいだけです。Pandas not 「将来の警告」をポップアップしますか?

77
bigbug

これを github ...で見つけました.

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

@bdiamanteの答えは部分的にしか役に立たないかもしれません。警告を抑制した後でもメッセージが表示される場合は、pandasライブラリ自体がメッセージを出力しているためです。 Pandasソースコードを自分で編集しない限り、あなたがそれについてできることはあまりありません。たぶんそれらを抑制する内部オプションがあります。


need必要な人のために...

清潔な作業環境を確保したいとします。スクリプトの先頭に、pd.reset_option('all')を配置します。 Pandas 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ライブラリを使用します。さて、Wordのとおり、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.

>>>

実際、all警告を無効にすると、同じ出力が生成されます。

>>> 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.

>>>

標準ライブラリの意味では、これらは真の警告ではありません。 Pandasは独自の警告システムを実装しています。警告メッセージで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
Lorem Ipsum