一个问题:python 无法输出图片

q793799535 2019-03-01 04:20:07
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
iris_data=pd.read_csv('I:\利用python 进行数据分析\iris-data.csv',na_values='NaN')
print(iris_data.head(10))
sb.pairplot(iris_data.dropna())
sb.pairplot(iris_data.dropna(),hue='class')
plt.show()

ValueError Traceback (most recent call last)
<ipython-input-25-b3a8928ea494> in <module>
----> 1 sb.pairplot(a,hue='class',plot_kws=False)

c:\users\administrator\appdata\local\programs\python\python37-32\lib\site-packages\seaborn\axisgrid.py in pairplot(data, hue, hue_order, palette, vars, x_vars, y_vars, kind, diag_kind, markers, height, aspect, dropna, plot_kws, diag_kws, grid_kws, size)
2109 diag_kws.setdefault("shade", True)
2110 diag_kws["legend"] = False
-> 2111 grid.map_diag(kdeplot, **diag_kws)
2112
2113 # Maybe plot on the off-diagonals

c:\users\administrator\appdata\local\programs\python\python37-32\lib\site-packages\seaborn\axisgrid.py in map_diag(self, func, **kwargs)
1397 color = fixed_color
1398
-> 1399 func(data_k, label=label_k, color=color, **kwargs)
1400
1401 self._clean_axis(ax)

c:\users\administrator\appdata\local\programs\python\python37-32\lib\site-packages\seaborn\distributions.py in kdeplot(data, data2, shade, vertical, kernel, bw, gridsize, cut, clip, legend, cumulative, shade_lowest, cbar, cbar_ax, cbar_kws, ax, **kwargs)
689 ax = _univariate_kdeplot(data, shade, vertical, kernel, bw,
690 gridsize, cut, clip, legend, ax,
--> 691 cumulative=cumulative, **kwargs)
692
693 return ax

c:\users\administrator\appdata\local\programs\python\python37-32\lib\site-packages\seaborn\distributions.py in _univariate_kdeplot(data, shade, vertical, kernel, bw, gridsize, cut, clip, legend, ax, cumulative, **kwargs)
292 "only implemented in statsmodels."
293 "Please install statsmodels.")
--> 294 x, y = _scipy_univariate_kde(data, bw, gridsize, cut, clip)
295
296 # Make sure the density is nonnegative

c:\users\administrator\appdata\local\programs\python\python37-32\lib\site-packages\seaborn\distributions.py in _scipy_univariate_kde(data, bw, gridsize, cut, clip)
364 """Compute a univariate kernel density estimate using scipy."""
365 try:
--> 366 kde = stats.gaussian_kde(data, bw_method=bw)
367 except TypeError:
368 kde = stats.gaussian_kde(data)

c:\users\administrator\appdata\local\programs\python\python37-32\lib\site-packages\scipy\stats\kde.py in __init__(self, dataset, bw_method, weights)
193 self.dataset = atleast_2d(dataset)
194 if not self.dataset.size > 1:
--> 195 raise ValueError("`dataset` input should have multiple elements.")
196
197 self.d, self.n = self.dataset.shape

ValueError: `dataset` input should have multiple elements.


报错信息如上,我照着github里写的,链接:https://github.com/rhiever/Data-Analysis-and-Machine-Learning-Projects/blob/master/example-data-science-notebook/Example%20Machine%20Learning%20Notebook.ipynb
读取csv文件并用图展示,但不知道什么情况,一直报错,搞了一晚上!还是没解决,头大,大神们来看看吧
...全文
827 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
q793799535 2019-03-04
  • 打赏
  • 举报
回复
引用 2 楼 陈年椰子 的回复:
不要这一句,是有显示的。 sb.pairplot(iris_data.dropna(),hue='class')
对的,问题在于python代码下所隐含的数学逻辑,加了hue,则默认kde概率分布,代码本身没错误
q793799535 2019-03-04
  • 打赏
  • 举报
回复
引用 3 楼 陈年椰子 的回复:
另外,你的数据是啥。 我做了测试数据如下
已经找到答案啦,问题在于pairplot如果加hue='class'的话,其分类默认按照KDE画图。只需要加上diag_kind='hist',用直方分布概率图即可
q793799535 2019-03-04
  • 打赏
  • 举报
回复
引用 4 楼 陈年椰子 的回复:
[quote=引用 1 楼 q793799535 的回复:] 求回复,若有用,留下支付宝,有现金红包相送
如果你的数据是这个 那这么写即可

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
iris_data=pd.read_csv('I:\利用python 进行数据分析\iris-data.csv',na_values='NaN')
print(iris_data.head(10))
sb.pairplot(iris_data.dropna())
sb.pairplot(iris_data.dropna(),hue='Species')
plt.show()
[/quote],你这个和我的没有本质区别,你只是把hue='class'改成了hue='species',分类规则是一样的,一个是按class分类,一个是按species分类。
陈年椰子 2019-03-01
  • 打赏
  • 举报
回复
引用 1 楼 q793799535 的回复:
求回复,若有用,留下支付宝,有现金红包相送


如果你的数据是这个

那这么写即可


import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
iris_data=pd.read_csv('I:\利用python 进行数据分析\iris-data.csv',na_values='NaN')
print(iris_data.head(10))
sb.pairplot(iris_data.dropna())
sb.pairplot(iris_data.dropna(),hue='Species')
plt.show()
陈年椰子 2019-03-01
  • 打赏
  • 举报
回复
另外,你的数据是啥。
我做了测试数据如下
陈年椰子 2019-03-01
  • 打赏
  • 举报
回复
不要这一句,是有显示的。
sb.pairplot(iris_data.dropna(),hue='class')

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧