假设我有一个类似以下的数据框:
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),但不是每组显示两个分数,而是在我的数据框中显示每列值的直方图:
答案 0 :(得分:1)
此演示文稿不会重新缩放,它会水平转换单个直方图,使它们不重叠,然后使用列名称(中间值)标记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)
答案 1 :(得分:0)
有numpy的histogram函数和matplotlib的histogram plotting function 'hist'。