所以我试图使用for循环绘制我的DatFrame中所有连续变量的直方图我已经设法使用countplot使用以下代码对我的分类变量执行此操作:
df1 = df.select_dtypes([np.object])
for i, col in enumerate(df1.columns):
plt.figure(i)
sns.countplot(x=col, data=df1)
我在这里搜索SO。
但是现在我想对distplot做同样的事情,所以我尝试将上面的代码修改为:
df1 = dftest.select_dtypes([np.int, np.float])
for i, col in enumerate(df1.columns):
plt.figure(i)
sns.distplot(df1)
但它给了我一个空洞的情节。关于我能做什么的任何想法?
编辑:例如DataFrame:
dftest = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),
columns=['a', 'b', 'c', 'd', 'e'])
答案 0 :(得分:6)
您似乎希望生成一个数据框每列distplot
的数字。因此,您需要为每个特定数字指定使用的数据。
正如seaborn documentation对distplot(a, ...)
a
:系列,1d数组或列表。观察到的数据。
所以在这种情况下:
for i, col in enumerate(df1.columns):
plt.figure(i)
sns.distplot(df1[col])
答案 1 :(得分:1)
定义绘制直方图的函数
def histograms_plot(数据框,要素,行,列):
fig=plt.figure(figsize=(20,20))
for i, feature in enumerate(features):
ax=fig.add_subplot(rows,cols,i+1)
dataframe[feature].hist(bins=20,ax=ax,facecolor='green')
ax.set_title(feature+" Distribution",color='red')
fig.tight_layout()
plt.show()
histograms_plot(df,df.columns,6,3)