Python pd.plotting.register_matplotlib_converters()在Pandas中有什么用途

Python pd.plotting.register_matplotlib_converters()在Pandas中有什么用途,python,pandas,matplotlib,Python,Pandas,Matplotlib,在学习可视化数据的在线课程时,我遇到了这行代码 import pandas as pd pd.plotting.register_matplotlib_converters() import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns 有人能告诉我这有什么用吗 pd.plotting.register_matplotlib_converters() 我参考了官方文件,但没有给出明确的解释 我在: 此函数用

在学习可视化数据的在线课程时,我遇到了这行代码

import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
有人能告诉我这有什么用吗

pd.plotting.register_matplotlib_converters()
我参考了官方文件,但没有给出明确的解释

我在:

此函数用于修改全局matplotlib.units.registry字典。Pandas添加自定义转换器,用于

  • 时间戳
  • pd.周期
  • np.datetime64


所以我想它可以确保
pandas
数据类型,比如
pd.Timestamp
可以在
matplotlib
绘图中使用,而不必将它们转换为其他类型

不久前,我在GitHub上发现了Bletham的以下回应

“谢谢你提出这个问题

进行此更改是为了避免在pandas 0.24周围引入的FutureWarning。如果将fbprophet 0.4与pd 0.24.2一起使用,则在Prophet模型上调用plot时

/usr/lib64/python2.7/site-packages/pandas/plotting/_converter.py:129: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.

To register the converters:
    >>> from pandas.plotting import register_matplotlib_converters
    >>> register_matplotlib_converters()
  warnings.warn(msg, FutureWarning)

基本上,当您导入pandas时,它会向matplotlib注册一组函数,告诉matplotlib如何打印pandas类型。但是,它不仅仅是这样做的——它实际上会用pandas处理程序覆盖一些内置matplotlib处理程序。尤其是,matplotlib内置了打印日期时间对象的功能。导入pandas时,它将使用pandas日期时间打印覆盖matplotlib的内置日期时间打印

在m.plot中,我们首先转换pandas类型的所有内容,然后再将其传递给matplotlib,特别是因为我们不想使用pandas绘图。尽管如此,在fbprophet v0.4中,pandas仍然被用于绘图,因为它覆盖了日期时间绘图。因此,尽管我们没有使用pandas,绘图还是引发了未来警告打印中的类型

如FutureWarning中所述,pandas正在回溯行为,未来将要求您注册转换器,以便在matplotlib中绘制pandas类型。因此,我们决定取消注册它们,以获得未来行为


然而,不幸的是,它确实打破了你的帖子中描述的以前有效的行为,而没有任何关于它无效原因的信息。未来,随着越来越多的人升级到pd 0.24.2,并开始看到未来的警告,他们将养成在尝试绘制其性能之前注册转换器的习惯pes,但在此之前,这将是一个艰难的过渡。我主要责怪熊猫实施了这种不良行为,然后以不向后兼容的方式对其进行回溯,但也许我们可以做些什么来更好地处理过渡。”

谢谢@Daan Klijn,但我已经看到了文档。如果你能多加一些参考资料,那就太好了。对不起,我不能完全确定。我所知道的是,这些转换器只是确保例如
datetime.datetime
pandas.Timestamp
覆盖,允许与
pandas
兼容。也许这会有所帮助:似乎有另一种方法叫做
注销(deregister_matplotlib_converters
),该方法的文档更详细一些()。@Genius所以第二个答案应该被认为是最好的答案?嗯,当然@AstroFloyd。让我们等待更多的回应。