代码之家  ›  专栏  ›  技术社区  ›  user3476463

为所有分类变量值创建柱状图

  •  0
  • user3476463  · 技术社区  · 6 年前

    我有类似下面示例数据的数据,其中列的分类数据如下__var1_157;和_156;var2_157;,然后是具有连续数据的列。我要做的是根据分类列中的每个值为每个连续变量创建柱状图。在下面的示例代码中,我只为var1=__y__完成了这项工作,但是我想为var1=___,以及每个var2值完成这项工作。除了用手一次又一次地对其进行编码或将其转换为一个函数,还有什么简单的方法可以做到这一点吗?

    实例数据:

    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)
    

    代码:

    df[df['var1']=='Y'].hist()
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   jtweeder Todd Gardner    6 年前

    使用 by paradas.dataframe.hist()中的参数

    如果您想为每次看到的 var1 var2 :组合看到一个连续变量

    df.hist(column='cont1',by=['var1','var2'])
    < /代码> 
    
    

    如果您想在同一绘图上看到不同颜色的所有连续变量,对于var1的每一个组合

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

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

    df.hist(by='var1')
    < /代码> 
    
    

    df.hist(by='var2')
    < /代码> 
    
    

    显然,对于您的示例数据,它们有点过于简单,无法看到,但我认为,如果您将该语法应用于您的数据,您应该能够获得所需的内容。

    <编辑>: 如果您想轻松地浏览列列表,可以在列表理解中使用它,并根据需要使用返回的轴数组,或者在for循环中使用它,对轴进行更复杂的操作,使其成为所需输出的图形。

    varstoloop=['var1','var2']
    [varstoloop中x的df.hist(by=x)]
    

    属于var1var2:

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

    enter image description here

    如果您想在同一绘图上看到不同颜色的所有连续变量的每个组合VAR1var以下内容:

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

    enter image description here

    你也可以做通过如果希望以这种方式查看数据,则只使用每个分类列的参数:

    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