python - 为什么 matplotlib 绘图比 pd.DataFrame.plot() 慢得多?

标签 python pandas matplotlib plot

亲爱的社区,您好,

我在搜索过程中没有发现类似的东西,希望我没有监督任何事情。我有以下问题:

我有一个大数据集,其形状为 1352x121797(1353 个样本和 121797 个时间点)。现在我已经对这些进行了聚类,并希望为每个聚类生成一个图,其中绘制了该聚类的每个时间序列。

但是,当使用 matplotlib 语法时,它就像 super 慢(而且我不确定它来自哪里)。即使过了 5-10 分钟,它也没有完成。

import matplotlib.pyplot as plt
import pandas as pd

fig, ax = plt.subplots()

for index, values in subset_cluster.iterrows(): # One Cluster subset, dataframe of shape (11x121797)
    ax.plot(values)

fig.savefig('test.png')

甚至,在插入 时中断 ax.plot(values)它仍然没有完成。我正在使用 Spyder 并认为这可能是由于 Spyder 总是在控制台中内联渲染绘图。

但是,当简单地使用系列 values.plot() 的 pandas 方法时而不是 ax.plot(values)绘图出现并在 1-2 秒内保存。

因为我需要 matplotlib 的自定义选项来标准化所有绘图并使它们看起来更漂亮一点,所以我很想使用 matplotlib 语法。任何人有任何想法?

提前致谢

编辑:所以虽然尝试了一下,但渲染似乎是耗时的部分。与后端一起运行时 matplotlib.use('Agg') ,绘图命令运行得更快(如果使用 plt.plot() 而不是 ax.plot() ),但是 plt.savefig()然后需要永远。不过,还是应该在相当长的时间内吧?即使是 121xxx 数据点。

最佳答案

发布答案,因为它可能有助于 OP 或其他人:我遇到了同样的问题,发现这是因为我用作 x 轴的数据是一个对象,而 y 轴数据是 float64。将对象显式设置为 DateTime 后,使用 Matplotlib 绘图的速度与 Pandas 的 df.plot() 一样快。我猜 Pandas 在绘图时在理解数据类型方面做得更好。

OP,您可能想检查您绘制的值是否为正确的类型,或者您是否像我一样在从文件加载数据帧时遇到了一些问题。

关于python - 为什么 matplotlib 绘图比 pd.DataFrame.plot() 慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59154530/

相关文章:

python - 将 vlen 与 h5py 一起使用时出现莫名其妙的行为

python - Django:使用户电子邮件成为必需的

python - pandas 数据框中的多个条形图

python - 如何根据条件连接同一列的值?

regex - 使用正则表达式模式从 pandas 数据框中过滤行

python - 如何将主要刻度线显示为每个月的第一天,将次要刻度线显示为每天?

python - 如何将二维列表写入文件

python - 使用 timedelta 索引从 pandas 数据帧进行绘图

python - 如何在Python中绘制二维数组?

python - 如何从 SEC Edgar python 和 json 获取数据