Seasborn Distplot没有反应

时间:2016-04-14 07:12:11

标签: python pandas plot data-visualization seaborn

我正在尝试使用Distplotpandas绘制一个简单的seaborn来了解数据集的密度。

输入

#Car,45
#photo,4
#movie,6
#life,1
#Horse,14
#Pets,20
#run,67
#picture,89

数据集上面有10Kno headers,我正在尝试使用col[1]

代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


df = pd.read_csv('keyword.csv', delimiter=',', header=None, usecols=[1])
#print df
sns.distplot(df)

plt.show()

没有错误,因为我可以打印输入列,但distplot需要很长时间才能计算并冻结我的屏幕。任何加速这一过程的建议。

修改1:根据以下评论中的建议我尝试从pandas.read_csv更改为np.loadtxt,现在我收到错误消息。

代码:

import numpy as np
from numpy import log as log
import matplotlib.pyplot as plt
import seaborn as sns
import pandas

df = np.loadtxt('keyword.csv', delimiter=',', usecols=(1), unpack=True)
sns.kdeplot(df)
sns.distplot(df)

plt.show()

错误:

Traceback (most recent call last):
  File "0_distplot_csv.py", line 7, in <module>
    df = np.loadtxt('keyword.csv', delimiter=',', usecols=(1), unpack=True)
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 726, in loadtxt
    usecols = list(usecols)
TypeError: 'int' object is not iterable 

编辑2:我确实尝试了评论部分提到的建议

sns.distplot(df[1])

这与最初提到的相同。屏幕被冻结了很长时间。

sns.distplot(df[1].values)

在这种情况下,我看到一种奇怪的行为。

当输入

Car,45
photo,4
movie,6
life,1
Horse,14
Pets,20
run,67
picture,89

它确实是绘图但输入低于

#Car,45
#photo,4
#movie,6
#life,1
#Horse,14
#Pets,20
#run,67
#picture,89

同样冻结整个屏幕并且什么都不做。

我确实试图让comments=None认为它可能正在阅读它们作为评论。但comments中似乎没有使用pandas

谢谢

1 个答案:

答案 0 :(得分:1)

经过多次试验和大量在线搜索,我终于得到了我想要的东西。当我们没有标题时,代码允许使用列号加载数据。这也会使用#条评论来读取行。

代码:

import numpy as np
import matplotlib.pyplot as plt
from pylab import*
import math
from matplotlib.ticker import LogLocator
from scipy.stats.kde import gaussian_kde
import seaborn as sns

data = np.genfromtxt('keyword.csv', delimiter=',', comments=None)

d0=data[:,1]

#Plot a simple histogram with binsize determined automatically
sns.kdeplot(np.array(d0), color='b', bw=0.5, marker='o', label='keyword')

plt.legend(loc='upper right')
plt.xlabel('Freq(x)')
plt.ylabel('pdf(x)')
#plt.gca().set_xscale("log")
#plt.gca().set_yscale("log")
plt.show()