78089


seabornにて、（エラーバー付きの）棒グラフを描きたいと思っています。

目標は、以下のdf.plot.bar()のように、「体育会出身」「その他」ふたつの項目を棒グラフとして表示させることです。

ご教示のほど、よろしくお願いいたします。

[code]

    a=[[63,237,300],[37,163,200],[100,400,500]]
    
    import pandas as pd
    df=pd.DataFrame(a,index=['体育会出身','その他','合計'],columns=['主任以上','役職なし','合計'])
    df
    
[/code]

[![元のDataFrame](https://i.stack.imgur.com/u6vRR.png)](https://i.stack.imgur.com/u6vRR.png)

[code]

    # 必要な行、列を抽出
    df=df.loc[['体育会出身','その他'],['主任以上','合計']]
    df
    
[/code]

[![必要な項目を抽出してDataFrameを再構築した](https://i.stack.imgur.com/nKt4U.png)](https://i.stack.imgur.com/nKt4U.png)

[code]

    # 比率にする
    df=df.div(df['合計'],axis=0)
    df
    
[/code]

[![比率にする](https://i.stack.imgur.com/80Mr7.png)](https://i.stack.imgur.com/80Mr7.png)

[code]

    # 必要な列のみ抽出する
    df=df['主任以上']
    df
    
[/code]

[![必要な列のみ抽出](https://i.stack.imgur.com/m6JWq.png)](https://i.stack.imgur.com/m6JWq.png)

[code]

    #dataframe.plot.bar()にて描写する
    df.plot.bar()
    df
    
[/code]

[![df.plot.bar\(\)にて描写](https://i.stack.imgur.com/FMvhW.png)](https://i.stack.imgur.com/FMvhW.png)

[code]

    #seaborn.barplot(df)にて描写
    #「体育会出身」「その他」の２つの項目とならず、１つになってしまう。
    import seaborn as sns
    sns.barplot(df)
    
[/code]

[![sns.barplotにて評者](https://i.stack.imgur.com/c0hMl.png)](https://i.stack.imgur.com/c0hMl.png)


CC BY-SA 4.0
2021-07-10T00:51:10.787
78086
2021-07-10T04:57:56.487
2021-07-10T04:57:56.487
3060
47148
question
python python3 pandas seaborn
seabornで（エラーバー付きの）棒グラフを描くには


データを作成する`df=df['主任以上']`でpandasのDataFrameではなくSeriesが出来ているからでしょう。

`df=pd.DataFrame(df['主任以上'])`とするか、最初から以下のようにその形でDataFrameを作成すれば良いと思われます。

[code]

    a=[[0.21],[0.185]]
    df=pd.DataFrame(a,index=['体育会出身','その他'],columns=['主任以上'])
    
[/code]

グラフの作成はこちらのように`x`,`y`,`data`を指定すれば良いでしょう。  
`color`は指定しないとそれぞれの棒が別の色になります。

[code]

    sns.barplot(x=df.index, y="主任以上", data=df, color='steelblue')
    
[/code]

* * *

その上で、棒に付いたヒゲのような部分も表示したいならば、そのためのデータを用意する必要があるでしょう。  
seabornではなくmatplotlibですが、これらの記事とかでその部分の話題を扱っているので、参考にしてみてください。  
[Pandas.DataFrame.plotとmatplotlib.plot,エラーバー(yerr)表示を微調整したいのだが・・・。](https://ja.stackoverflow.com/q/49348/26370)  
[pythonによるエラーバーの作図方法](https://ja.stackoverflow.com/q/75767/26370)


CC BY-SA 4.0
2021-07-10T04:44:12.733
78089
2021-07-10T04:50:42.573
2021-07-10T04:50:42.573
26370
26370
78086
answer