Pandas中的列直方图

时间:2014-08-22 12:35:57

标签: python matplotlib pandas

假设我有一个类似以下的数据框:

     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),但不是每组显示两个分数,而是在我的数据框中显示每列值的直方图

enter image description here

2 个答案:

答案 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)   

Resulting multi-historgram picture

答案 1 :(得分:0)

有numpy的histogram函数和matplotlib的histogram plotting function 'hist'