1

在 Google Colab 中使用笔记本时,无论我是否导入库pandas-profiling ,我的matplotlib绘图都有不同的行为。

如果我不导入pandas-profiling,则默认情况下会内联显示这些图。但是,如果我导入库,这些图将停止显示 inline

解决方法(可能的解决方案)

  • 在导入之前更新pandas-profiling库可以解决问题。
  • 在导入pandas-profiling%matplotlib inline 添加可以解决问题。

复制

在 Google Colab 中运行此代码以重现该问题。在导入和不导入pandas_profiling的情况下对其进行测试。对于每个测试,您都需要终止会话(运行时->管理会话->终止)。仅仅重新启动运行时是不够的。

import matplotlib.pyplot as plt
# importing the pandas_profiling makes matplotlib
# to stop showing the plot inline
# import pandas_profiling
plt.plot([1, 2], [1, 2])

预期的行为是默认显示 inline 绘图,但在导入pandas-profiling后,绘图停止显示 inline

真正的问题

当我的seaborn绘图功能开始出现故障时,我偶然发现了这个问题。

例如,考虑以下代码。

import matplotlib.pyplot as plt
# import pandas_profiling
import seaborn as sns

def plot():
    ax = sns.pointplot([1, 2], [1, 2])
    print(len(ax.collections))

现在调用plot()两个不同的 jupyter 单元。

  • 没有pandas-profiling:每个函数调用都会打印 1。
  • 使用pandas-profiling:每个函数调用都会在前一个输出中加 1。
4

1 回答 1

2

问题出pandas_profiling在 Google Colab 中默认安装的版本中。已安装的版本 (1.4.1) 用于将matplotlib的后端更改为agg导入时。Colab 中默认的matplotlib后端是module://ipykernel.pylab.backend_inline.

我们可以通过在导入pandas-profiling之前和之后运行以下命令来看到这一点:

import matplotlib
matplotlib.get_backend()

此行为已在 pull-request #125中更改,它停止更改matplotlib的后端。

在 Google Colab 更新已安装的版本之前,手动更新似乎是最好的解决方案。只需在 Colab Notebook 中运行以下命令:

!pip install --upgrade pandas_profiling
于 2019-11-02T00:43:24.743 回答