首页 > 解决方案 > 并排直方图和小提琴图

问题描述

我正在尝试编写一个函数,该函数将仅具有分类特征和相应数字标签 y 的参数数据集 x 作为参数,并并排生成所有特征的直方图和小提琴图。问题是由于某种原因,我的函数只产生直方图或小提琴,而忽略了其他的。我只是不明白为什么。

def plotPerColumnDistribution(x,y, nGraphShown, nGraphPerRow):
    ds = pd.concat([x, y], axis=1)
    nunique = x.nunique()
    x = x[[col for col in x if nunique[col] > 1 and nunique[col] < 50]] # For displaying purposes, pick columns that have between 1 and 50 unique values
    nRow, nCol = x.shape
    columnNames = list(x)
    nGraphRow = (nCol + nGraphPerRow - 1) / nGraphPerRow
    plt.figure(num = None, figsize = (6 * nGraphPerRow, 8 * nGraphRow), dpi = 80, facecolor = 'w', edgecolor = 'k')
    for i in range(min(nCol, nGraphShown)):
        plt.subplot(nGraphRow, nGraphPerRow, i + 1)
        columnDf = x.iloc[:, i]
        columnName = x.columns[i]
        if (not np.issubdtype(type(columnDf.iloc[0]), np.number)):
            valueCounts = columnDf.value_counts()
            sns.histplot(x=columnName, data=ds)
            sns.violinplot(x=columnName, y='total_claim_amount', data=ds)
        else:
            columnDf.hist()
        plt.ylabel('counts')
        plt.xticks(rotation = 90)
        plt.title(f'{columnNames[i]} (column {i})')
    plt.tight_layout(pad = 1.0, w_pad = 1.0, h_pad = 1.0)
    plt.show()

标签: pythonmatplotlibseaborndata-visualization

解决方案


推荐阅读