有什么方法可以加快Seaborns Pairplot的速度

Qui*_*2k1 7 python parallel-processing performance seaborn

我有一个具有250.000行但140列的数据框,并且正在尝试构建对图。的变量。我知道子图的数量巨大,而且绘制所需的时间也很多。(我在配备3,4 GHZ和32 GB RAM的i5上等待了一个多小时)。

记得scikit learning允许并行构建随机森林,我正在检查seaborn是否也可以这样做。但是,我什么也没找到。源代码似乎为每个图像调用了matplotlib plot函数。

这不能并行化吗?如果是,那么从这里开始的好方法是什么?

ijo*_*eph 6

DataFrame如果速度瓶颈确实存在,您可以降低采样量而不是并行化,比如说要对1000行进行采样。通常,只要获得1000分就可以大致了解正在发生的事情。

sns.pairplot(df.sample(1000))


Mar*_*cel 6

对我来说,由于数据的差异,直方图花费了很长时间。我只有1200行4列,但花了半个小时才放弃。我认为它是如此分散和无序,以至于直方图不断更新。一种解决方法可能是使用 bin 参数,但我的解决方案是使用 KDE 作为对角线。使用 KDE,只需几秒钟。

sns.pairplot(df, diag_kind='kde')
Run Code Online (Sandbox Code Playgroud)


Саш*_*кин 5

将配对图保存到图像,然后显示该图像,而不是在浏览器中全部渲染。

from IPython.display import Image
import seaborn as sns
import matplotlib.pyplot as plt 

sns_plot = sns.pairplot(df, size=2.0)
sns_plot.savefig("pairplot.png")

plt.clf() # Clean parirplot figure from sns 
Image(filename='pairplot.png') # Show pairplot as image
Run Code Online (Sandbox Code Playgroud)

  • 这也是一个重要的想法。但我认为创建图像是当时更大的瓶颈。 (2认同)