web-dev-qa-db-fra.com

Comment supprimer les avertissements Pandas Future?

Lorsque je lance le programme, les pandas donnent chaque fois un «avertissement futur» comme ci-dessous.

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) 

J'ai eu le message, mais je veux juste empêcher les Pandas d'afficher ce type de message encore et encore, y a-t-il un paramètre de construction que je peux configurer pour que Pandas ne puisse pas afficher le message 'Future warning'?

57
bigbug

Trouvé ceci sur github ...

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

La réponse de @ bdiamante pourrait ne vous aider que partiellement. Si vous recevez toujours un message après avoir supprimé les avertissements, c'est parce que la bibliothèque pandas elle-même imprime le message. Vous ne pouvez rien y faire à moins d’éditer vous-même le code source de Pandas. Peut-être existe-t-il une option interne pour les supprimer, ou un moyen de passer outre les choses, mais je ne pouvais pas en trouver une.


Pour ceux qui doivent savoir pourquoi ...

Supposons que vous souhaitiez garantir un environnement de travail propre. En haut de votre script, vous mettez pd.reset_option('all'). Avec Pandas 0.23.4, vous obtenez ce qui suit:

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

>>>

Suivant les conseils de @ bdiamante, vous utilisez la bibliothèque warnings. Maintenant, fidèle à Word, les avertissements ont été supprimés. Cependant, plusieurs messages embêtants demeurent:

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

>>>

En fait, la désactivation de tous warnings produit le même résultat:

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

>>>

Au sens standard de la bibliothèque, ce ne sont pas de vrais avertissements. Les pandas implémentent leur propre système d'avertissements. L'exécution de grep -rn sur les messages d'avertissement indique que le système d'avertissement pandas est implémenté dans 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

Poursuivre la poursuite montre que je n'ai pas le temps pour ça. Et vous n'avez probablement pas non plus. Espérons que cela vous évite de tomber dans le terrier du lapin ou inspire peut-être quelqu'un à comprendre comment supprimer réellement ces messages!

0
Lorem Ipsum