Seaborn与大数据的直方图

3

我正在尝试绘制一个包含三百万行数据的漂亮直方图(我有2个CPU/16GB RAM)。即使我提供了bin,也无法得到绘图。有没有更有效的方法来绘制直方图?请查看下面的代码。

df0 = dd.read_csv(filename, sep="|", header=None, dtype=np.str, error_bad_lines=False, usecols=col0, quoting=3, encoding='ISO-8859-1')
dfs = df0[df0['DocumentTypeStndCode']=='D'].compute()
dfs['Price'] = dfs[pd.to_numeric(dfs['Price'], errors='coerce').notnull()]

sns.distplot(dfs['Price'], bins=[0, 10000, 200000, 400000, 2000000], kde=False)
plt.show()
1个回答

2

这对你来说不应该是一个问题。根据5000万行数据生成图表只需要几秒钟时间。我先尝试使用pandas hist。

import pandas as pd
import numpy as np
%matplotlib inline
df = pd.DataFrame({
  'values': np.random.beta(0.5, 0.1, size=50000000)
})
hist = df.hist(bins=10)

同样适用于seaborn

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

sns.distplot(df['values'], bins=[0, .10000, .200000, .400000, 2.000000], kde=False)
plt.show()

是的,我通过你的示例看到了这不是包的问题。非常奇怪,因为我将该列中的所有数据转换为数字值。有任何想法是什么原因导致执行延迟吗? - Anna Ignashkina
你是在IPython笔记本中执行还是普通的Python执行?如果没有%matplotlib inline,它不会在笔记本中显示图形。除此之外,当我有多个图表时,我遇到了问题。如果它们弹出在单个窗口中,有时需要关闭它们才能继续下一个。 - James Natale
实际上,我在普通的Python环境中使用Dask,我刚刚发现它某种程度上搞乱了我的列,可能这就是原因。无论如何,这不是绘图引擎的问题。 - Anna Ignashkina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接