【问题标题】:Histogram for all column data against one column data from Data Frame所有列数据与数据框中的一列数据的直方图
【发布时间】:2021-05-19 05:46:37
【问题描述】:

我想针对一个数据框中的最后一列值显示所有列的直方图,总共 5 个。 因此,该框架将针对第 6 列值的每列有 10 个直方图。

df.hist(column=['col1','col2','col3','col4','col5'])

我尝试按属性使用,但结果错误。

【问题讨论】:

    标签: python pandas matplotlib histogram


    【解决方案1】:

    seaborn library 有很多方便的功能可以快速创建这种绘图。一个烦恼可能是您需要将数据帧转换为"long form",例如使用pd.melt()

    sns.displot() 的用法如下:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    df = pd.DataFrame(np.random.rand(100, 5), columns=['col1', 'col2', 'col3', 'col4', 'col5'])
    sns.displot(data=df.melt(var_name='column name'), x='value', col='column name', height=3, kind='hist')
    plt.show()
    

    【讨论】:

      【解决方案2】:

      我认为您有点困惑,直方图仅使用 1 列中的值来获取所述列的分布。所以关于你的问题,直方图不是正确的工具。

      除非第 6 列有 2 个值,并且您希望从按值 1 和 2 过滤的 5 列中获取直方图,否则您可以这样做:

      df[df['col6']==1].hist(column=['col1','col2','col3','col4','col5'])
      df[df['col6']==2].hist(column=['col1','col2','col3','col4','col5'])
      

      如果不是上述情况,并且您想要绘制 2 列之间的交互,其形状类似于直方图,那么您需要的是条形图:

      df.plot.bar(x='col1', y='col6', rot=0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-22
        • 2019-09-12
        • 2017-01-02
        • 2019-07-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        相关资源
        最近更新 更多