pandas 使用Seaborn创建for循环以绘制DataFrame的各个列的直方图

6tdlim6h  于 2023-06-28  发布在  其他
关注(0)|答案(2)|浏览(137)

因此,我试图使用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)

我在这里找到的搜索。
但是现在我想用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'])
xqkwcwgp

xqkwcwgp1#

sns.distplot已被sns.histplot替换。请参见Emulating deprecated seaborn distplots以匹配distplot

for i, col in enumerate(df1.columns):
    plt.figure(i)
    sns.histplot(df1[col], stat='density', kde=True, kde_kws={"cut": 3})

看起来你想生成一个 Dataframe 的每列都有distplot的图。因此,您需要指定每个特定图形使用的数据。
正如seaborn documentation对于distplot(a, ...)所说的那样
a:系列、一维数组或列表。观测数据。
所以在这个例子中:

for i, col in enumerate(df1.columns):
    plt.figure(i)
    sns.distplot(df1[col])
hyrbngr7

hyrbngr72#

定义一个函数来绘制直方图
def histograms_plot(dataframe,features,rows,cols):

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)

相关问题