2016-04-14 21 views
0

Distplotpandasseabornを使用してプロットして、データセットの密度を理解しようとしています。データセットが10K行、no headersの上に持っていないと私はcol[1]Seasborn Distplotが応答しなくなる

コード

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

を使用しようとしています、私は、入力欄を印刷することができますようエラーなしのが、

入力

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

distplotは、時間をかけて画面を計算してフリーズしています。プロセスをスピードアップするための提案。

EDIT1:私は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

あなたが問題を再現する最小限の作業例を作成する必要があります。 4行のデータが本当にあなたのファイルの完全な範囲であれば、 'io.StringIO'を使ってそれをあなたのスクリプトに含めます。 –

+0

列ヘッダーを指定してもコードは機能しますが、列番号を使用する必要があるヘッダーはありません。また、データは元のデータセットから4行あります。自然界では続かない。 –

+1

配列を渡すだけで、 –

答えて

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() 
関連する問題