为所有分类变量值创建直方图

时间:2018-11-20 17:20:18

标签: python-3.x pandas

我有下面的示例数据之类的数据,下面有带有分类数据(如“ var1”和“ var2”)的列,然后有包含连续数据的列。我想做的是通过分类列中的每个值为每个连续变量创建直方图。我已经在下面的示例代码中针对var1 ='Y'完成了此操作,但我想针对var1 ='N'和每个var2值进行了此操作。除了手动反复编码或将其转化为函数外,还有其他简单的方法吗?

示例数据:

ltrace

代码:

var1=['Y','N','Y','Y','N','Y']
var2=['S','V','H','S','V','H']
cont1=[1,3,4,5,2,7]
cont2=[4,3,4,5,5,7]
cont3=[3,7,4,5,2,1]

data={'var1':var1,'var2':var2,'cont1':cont1,'cont2':cont2,'cont3':cont3}

df=pd.DataFrame(data)

1 个答案:

答案 0 :(得分:1)

by中使用pandas.DataFrame.hist()参数:

如果您想为var1var2的每种组合看到一个连续变量:

df.hist(column='cont1', by=['var1','var2'])

enter image description here

如果要针对var1var的每种组合在同一图上查看所有不同颜色的连续变量:

df.hist(by=['var1', 'var2'])

enter image description here

如果您希望以这种方式查看数据,也可以对每个分类列单独使用by参数:

df.hist(by='var1')

enter image description here

df.hist(by='var2')

enter image description here

显然,对于您的示例数据而言,它们看起来太简单了一点,但是我认为,如果将这种语法应用于数据,那么您应该能够找到想要的结果。

编辑: 如果您想轻松地浏览列列表,则可以在列表理解中使用它,并根据需要使用返回的轴数组,或者在for循环中使用它,将轴更复杂地处理成所需输出的图形

varsToLoop = ['var1','var2']
[df.hist(by=x) for x in varsToLoop]

enter image description here