假设我有一个如下数据框:

     A B C D
s1   1 2 4 2
s2   2 1 4 3
s3   1 4 1 3


我想获得一个条形图,以显示每列值的直方图。即,一个条形图,它在x轴上彼此相邻显示每列直方图,直方图之间的间隔(列)。换句话说,它将是一个两级条形图,其中对于数据框中的每一列,我们都有代表该列直方图的条形图。

如果很重要,我们可以假设每列具有的可能值的数目是已知的,并且对于每列都是恒定的(例如,范围[0,5]

当我尝试做时:

df.plot(kind='bar')


我得到的东西与我想要的东西完全不同(x刻度对应于行,而不是[columns: [value0, value1, valueN])。与我想要的最接近的是:

df.plot(kind='density')


但是我正在寻找每列类似直方图的描述,而不是PDF的叠加。

更新资料

希望有一个例子会有所帮助。我正在寻找类似下面的图(code here),但不是在每个组中显示两个分数,而是在数据框中显示每列值的直方图:

最佳答案

此演示文稿不会重新缩放,它会水平平移各个直方图,以免它们重叠,然后用列名(以中位数表示)标记X轴,而不是表示比例。

from pandas import DataFrame
from numpy.random import randn
sample = 1000
df = DataFrame(randn(sample, 8))
accum1 = 0
accum2 = 0
spacer = 1
MyTics = []
for colname in df.columns:
    TransformedValues = df[colname] - accum1 + accum2
    MyTics.extend([TransformedValues.median()])
    axs = (TransformedValues).hist()
    accum1 += df[colname].min()
    accum2 += df[colname].max() + spacer
axs.set_xticks(MyTics)
axs.set_xticklabels(df.columns)

关于python - Pandas 的柱状图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25447208/

10-13 05:13