Python 使用For loop和seaborn创建多个分布图

Python 使用For loop和seaborn创建多个分布图,python,for-loop,seaborn,distribution,Python,For Loop,Seaborn,Distribution,我试图一次为几个不同的字段创建多个分布图。我创建了简单for循环,但我总是犯同样的错误,python不理解什么是“I” 这是我写的代码: for i in data.columns: sns.distplot(data[i]) KeyError:“我很高兴。” 我也试着用“I”代替“I”,但出现了错误: TypeError:/:“str”和“int”的操作数类型不受支持 我相信我的错误是一些基本的东西,我不知道循环,所以理解这将在未来帮助我很多 我的最终目标是一次获得多个分布图(带有偏

我试图一次为几个不同的字段创建多个分布图。我创建了简单for循环,但我总是犯同样的错误,python不理解什么是“I”

这是我写的代码:

for i in data.columns:
    sns.distplot(data[i])
KeyError:“我很高兴。”

我也试着用“I”代替“I”,但出现了错误:

TypeError:/:“str”和“int”的操作数类型不受支持

我相信我的错误是一些基本的东西,我不知道循环,所以理解这将在未来帮助我很多


我的最终目标是一次获得多个分布图(带有偏度和峰度值),而不必写入每个分布图。

如注释中所述,您无法从字符串列中创建distplot。如果要忽略字符串列,可以在迭代时检查每一列,如下所示:

for i in data.columns:
    if(data[i].dtype == np.float64 or data[i].dtype == np.int64):
          sns.distplot(data[i])
    else:
          //your code to handle strings.
我根据您的需要运行了一个简单的测试,它在我的机器上运行良好。代码如下:

import seaborn as sns
import matplotlib.pyplot as plt
a = [1,2,3,4]
c = [1,4,6,7,4,6,7,4,3,5,543,543,54,46,656,76,43,56]
d = [43,3,3,56,5,76,686,876,8768,78,77,98,79,8798,987,978,98]
sns.distplot(a)
e = [a,c,d]
for i, col in enumerate(e):
    plt.figure(i)
    sns.distplot(col)
plt.show()
在您的情况下,它将是这样的:

import matplotlib.pyplot as plt
for index, i in enumerate(data.columns):
        if(data[i].dtype == np.float64 or data[i].dtype == np.int64):
              plt.figure(index)
              sns.distplot(data[i])
        else:
              //your code to handle strings.
plt.show()

要仅在数字列上运行,请使用:

numeric_data = data._get_numeric_data()
for i in numeric_data.columns:
    sns.distplot(numeric_data[i])

您的一列包含
字符串格式的数据。不,如果您只想选择数字列,请使用类似
numeric\u data=data的内容。获取\u numeric\u data()
并对
numeric\u data
@zipa进行循环。了解,有没有办法运行for loop,但告诉它跳过一些列?谢谢大家,我这样做了,它运行了,但仍然没有得到不同的绘图,但是有一个绘图没有真正显示distributionRuntimeWarning:在true\u divide Bined=fast\u linbin(X,a,b,gridsize)/(delta*nobs)中遇到无效值C:\path\Reutk\Anaconda3\lib\site packages\statsmodels\nonparametric\kdetools.py:34:RuntimeWarning:double_scalars FAC1=2*(np.pibw/RANGE)中遇到无效值)*您已接受上述答案。你的问题现在已经解决了,我想?我仍然有一些问题,但与“我”无关。看看这篇文章。这和你想要达到的目标非常相似_get_numeric_data()是获取数值的一种非常好的方法。谢谢