我有下面的示例数据之类的数据,下面有带有分类数据(如“ 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)
答案 0 :(得分:1)
在by
中使用pandas.DataFrame.hist()
参数:
如果您想为var1
和var2
的每种组合看到一个连续变量:
df.hist(column='cont1', by=['var1','var2'])
如果要针对var1
和var
的每种组合在同一图上查看所有不同颜色的连续变量:
df.hist(by=['var1', 'var2'])
如果您希望以这种方式查看数据,也可以对每个分类列单独使用by
参数:
df.hist(by='var1')
df.hist(by='var2')
显然,对于您的示例数据而言,它们看起来太简单了一点,但是我认为,如果将这种语法应用于数据,那么您应该能够找到想要的结果。
编辑: 如果您想轻松地浏览列列表,则可以在列表理解中使用它,并根据需要使用返回的轴数组,或者在for循环中使用它,将轴更复杂地处理成所需输出的图形
varsToLoop = ['var1','var2']
[df.hist(by=x) for x in varsToLoop]