Seaborn boxplot: TypeError: unsupported operand type(s) for /: 'str' and 'int'
Question: I try to make vertical seaborn boxplot like this

    
    
    import pandas as pd
    df = pd.DataFrame({'a' : ['a', 'b' , 'b', 'a'], 'b' : [5, 6, 4, 3] })
    import seaborn as sns
    import matplotlib.pylab as plt
    %matplotlib inline
    sns.boxplot(  x= "b",y="a",data=df )
    

i get

[![enter image description
here](http://i.stack.imgur.com/7mzYW.png)](http://i.stack.imgur.com/7mzYW.png)

i write orient

    
    
    sns.boxplot(  x= "c",y="a",data=df , orient = "v")
    

and get

    
    
    TypeError: unsupported operand type(s) for /: 'str' and 'int'
    

but

    
    
    sns.boxplot(  x= "c",y="a",data=df , orient = "h")
    

works coreect! what's wrong?

    
    
    TypeError                                 Traceback (most recent call last)
    <ipython-input-16-5291a1613328> in <module>()
    ----> 1 sns.boxplot(  x= "b",y="a",data=df , orient = "v")
    
    C:\Program Files\Anaconda3\lib\site-packages\seaborn\categorical.py in boxplot(x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, fliersize, linewidth, whis, notch, ax, **kwargs)
       2179     kwargs.update(dict(whis=whis, notch=notch))
       2180 
    -> 2181     plotter.plot(ax, kwargs)
       2182     return ax
       2183 
    
    C:\Program Files\Anaconda3\lib\site-packages\seaborn\categorical.py in plot(self, ax, boxplot_kws)
        526     def plot(self, ax, boxplot_kws):
        527         """Make the plot."""
    --> 528         self.draw_boxplot(ax, boxplot_kws)
        529         self.annotate_axes(ax)
        530         if self.orient == "h":
    
    C:\Program Files\Anaconda3\lib\site-packages\seaborn\categorical.py in draw_boxplot(self, ax, kws)
        463                                          positions=[i],
        464                                          widths=self.width,
    --> 465                                          **kws)
        466                 color = self.colors[i]
        467                 self.restyle_boxplot(artist_dict, color, props)
    
    C:\Program Files\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs)
       1816                     warnings.warn(msg % (label_namer, func.__name__),
       1817                                   RuntimeWarning, stacklevel=2)
    -> 1818             return func(ax, *args, **kwargs)
       1819         pre_doc = inner.__doc__
       1820         if pre_doc is None:
    
    C:\Program Files\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in boxplot(self, x, notch, sym, vert, whis, positions, widths, patch_artist, bootstrap, usermedians, conf_intervals, meanline, showmeans, showcaps, showbox, showfliers, boxprops, labels, flierprops, medianprops, meanprops, capprops, whiskerprops, manage_xticks, autorange)
       3172             bootstrap = rcParams['boxplot.bootstrap']
       3173         bxpstats = cbook.boxplot_stats(x, whis=whis, bootstrap=bootstrap,
    -> 3174                                        labels=labels, autorange=autorange)
       3175         if notch is None:
       3176             notch = rcParams['boxplot.notch']
    
    C:\Program Files\Anaconda3\lib\site-packages\matplotlib\cbook.py in boxplot_stats(X, whis, bootstrap, labels, autorange)
       2036 
       2037         # arithmetic mean
    -> 2038         stats['mean'] = np.mean(x)
       2039 
       2040         # medians and quartiles
    
    C:\Program Files\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in mean(a, axis, dtype, out, keepdims)
       2883 
       2884     return _methods._mean(a, axis=axis, dtype=dtype,
    -> 2885                           out=out, keepdims=keepdims)
       2886 
       2887 
    
    C:\Program Files\Anaconda3\lib\site-packages\numpy\core\_methods.py in _mean(a, axis, dtype, out, keepdims)
         70         ret = ret.dtype.type(ret / rcount)
         71     else:
    ---> 72         ret = ret / rcount
         73 
         74     return ret
    
    TypeError: unsupported operand type(s) for /: 'str' and 'int'
    


Answer: For seaborn's boxplots it is important to keep an eye on the x-axis and y-axis
assignments, when switching between horizontal and vertical alignment:

    
    
    %matplotlib inline
    import pandas as pd
    import seaborn as sns
    
    df = pd.DataFrame({'a' : ['a', 'b' , 'b', 'a'], 'b' : [5, 6, 4, 3] })
    
    # horizontal boxplots
    sns.boxplot(x="b", y="a", data=df, orient='h')
    
    # vertical boxplots
    sns.boxplot(x="a", y="b", data=df, orient='v')
    

Mixing up the columns will cause seaborn to try to calculate the summary
statistics of the boxes on categorial data, which is bound to fail.

