Seaborn Distplot 没有响应
Seasborn Distplot goes unresponsive
我正在尝试使用 pandas
和 seaborn
绘制一个简单的 Distplot
以了解数据集的密度。
输入
#Car,45
#photo,4
#movie,6
#life,1
#Horse,14
#Pets,20
#run,67
#picture,89
数据集超过 10K
行,no 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
需要很长时间才能计算并冻结我的屏幕。任何加快进程的建议。
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
认为它可能会将它们作为评论阅读。但是 pandas
中似乎没有使用 comments
。
谢谢
经过多次尝试和大量的网上搜索,我终于得到了我要找的东西。当我们没有 headers 时,代码允许加载带有列号的数据。这也会读取带有 #
评论的行。
代码:
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()
我正在尝试使用 pandas
和 seaborn
绘制一个简单的 Distplot
以了解数据集的密度。
输入
#Car,45
#photo,4
#movie,6
#life,1
#Horse,14
#Pets,20
#run,67
#picture,89
数据集超过 10K
行,no 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
需要很长时间才能计算并冻结我的屏幕。任何加快进程的建议。
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
认为它可能会将它们作为评论阅读。但是 pandas
中似乎没有使用 comments
。
谢谢
经过多次尝试和大量的网上搜索,我终于得到了我要找的东西。当我们没有 headers 时,代码允许加载带有列号的数据。这也会读取带有 #
评论的行。
代码:
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()