当前位置: 首页 > 知识库问答 >
问题:

Google Colab:为什么matplotlib在导入pandas\u评测后的行为与默认行为不同?

子车青青
2023-03-14

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

如果我不导入分析,默认情况下,绘图将以内联方式显示。但是,如果导入库,绘图将停止内联显示。

  • 在导入pandas分析库之前更新它可以解决此问题
  • 导入分析后添加%matplotlib inline可以解决此问题

在GoogleColab中运行此代码以重现问题。在导入和不导入U分析的情况下对其进行测试。对于每个测试,您都需要终止会话(运行时)-

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

默认情况下,预期的行为是以内联方式显示绘图,但导入后,绘图将停止以内联方式显示。

当我的海运绘图功能开始崩溃时,我偶然发现了这个问题。

例如,考虑以下代码。

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

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

  • 无需配置:每个函数调用将打印1
  • 使用pandas profiling:每个函数调用将向上一个输出添加1

共有1个答案

满子实
2023-03-14

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

我们可以看到,在导入熊猫分析之前和之后运行以下操作:

import matplotlib
matplotlib.get_backend()

此行为在拉取请求#125中被更改,这将停止更改matplotlib的后端。

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

!pip install --upgrade pandas_profiling
 类似资料:
  • 问题内容: 我正在尝试解析MySQL 文档。他们可能会更清楚。他们似乎在说的是,有五种可能性:SET NULL,NO ACTION,RESTRICT,CASCADE和SET DEFAULT。 NO ACTION和RESTRICT会执行相同的操作(防止破坏FK的任何数据库更改),并且该操作是默认操作,因此,如果省略ON DELETE子句,则表示NO ACTION(或RESTRICT -是相同的操作)

  • 这可能是几乎每个使用matplotlib的人都会遇到的问题。如果您生成一个图形——它通常包含轴标签和图例——并使用默认设置保存它,您将得到一个裁剪后的图像。 演示代码: (多亏了stackoverflow),我们知道很少的变通方法,但每种方法都有自己的警告… 变通方法#1:从matplotlib中:使用选项。 它适用于简单的图形。< br >但是,根据我的经验,对于更复杂的多面板图形,这不是一个可

  • 问题内容: 我很难理解算法中问题的根本原因。然后,通过逐步简化函数,我发现Python中对默认参数的求值行为不符合我的预期。 代码如下: 问题是,如果未显式给出属性,则Node类的每个实例都共享相同的属性,例如: 我不了解此设计决定的逻辑吗?为什么Python设计人员决定在定义时评估默认参数?这对我来说似乎很违反直觉。 问题答案: 另一种选择是重量级的-将“默认参数值”存储为函数对象的“ thun

  • 问题内容: 切片是对基础数组的引用。这是有道理的,似乎可以在内置/原始类型上使用,但是为什么不能在结构上使用呢?我假设即使我更新了一个struct字段,引用/地址也仍然相同。 需要说明的是:我知道我可以在两种情况下都使用指针。我只是对为什么不更新结构感兴趣(与int不同)。 问题答案: 调用时要做的是传递一个包含值副本的新数组,并立即丢弃该数组。这与您使用基元不同,因为您保留了数组。 这里有两种方

  • 问题内容: 另一个更新:已解决(请参阅评论和我自己的答案)。 更新:这就是我要解释的。 答:这是通过贝塞尔校正来解释的,而不是通过标准偏差公式的分母来解释的。我希望熊猫使用与numpy相同的约定。 有一个相关的讨论在这里,但他们的建议都不能工作。 我有许多不同餐厅的数据。这是我的数据框(想象不止一家餐厅,但效果只再现了一家): 问题:返回每个餐厅的价格均值。我想得到标准偏差。但是, 返回错误的值

  • 在的末尾,我们将 将声明为的默认导出。 然后当我们将这个文件导入到中时,我们简单地将 也以这种方式导入。 但是,中没有包含导出默认寄存器ServiceWorker语句。 我有两个问题- 这是如何工作,而没有一个语句中的? 而且还 为什么registerServiceWorker从一开始就没有大写?如本SO答案所述,它是内置组件吗? 以下是,供参考: