質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1149閲覧

Python Matplotlibでのデータ別グラフ作成

Admiral

総合スコア1

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/03 00:20

前提・実現したいこと

PythonのMatplotlibを使い、'商品名'別に見た男女別の売上金額の棒グラフを作成したい。
イメージ説明

発生している問題・エラーメッセージ

性別を含むある売上データ:dfを'性別'で抽出し、売上金額を 男->my,女->fy の変数に格納しました。
plt.barでmy, fyをそれぞれ棒グラフにしてみたのですが、男女で別のグラフにならず、同じグラフが出てきてしまい困っています。

該当のソースコード

#Item別男女別積上棒グラフ

#データ
df_m=df.query('性別=="男"')
mx=df_m['商品名']
my=df_m['売上金額']

df_f=df.query('性別=="女"')
fx=df_f['商品名']
fy=df_f['売上金額']

#グラフ
plt.figure(figsize=(10,5))
ax4 = plt.subplot(1,2,1)
plt.bar(mx,my,width=0.5)

ax5 = plt.subplot(1,2,2)
plt.bar(fx,fy,width=0.5,color='pink')

試したこと

元々のデータをgroupbyで確認しました。
やはり男、女の売上金額はイコールではなかったのですが、グラフでは男、女が合算された数字で出てきてしまったようです。

df_s = df.groupby(['商品名','性別']).mean()
df_s.applymap('{:,.0f}'.format)

イメージ説明

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

やってみましたが再現しません。正しく男女別に表示されています。
わかりやすいようにわざとデータを変えてあります。

python

1print(df) 2df_m=df.query('性別=="男"') 3mx=df_m['商品名'] 4my=df_m['売上金額'] 5 6df_f=df.query('性別=="女"') 7fx=df_f['商品名'] 8fy=df_f['売上金額'] 9 10plt.figure(figsize=(10,5)) 11ax4 = plt.subplot(1,2,1) 12plt.bar(mx,my,width=0.5) 13 14ax5 = plt.subplot(1,2,2) 15plt.bar(fx,fy,width=0.5,color='pink') 16 17plt.show()

データは

python

1>>> print(df) 2 商品名 性別 単価 数量 売上金額 30 シャツ 女 4000 15 60000 41 シャツ 男 4000 6 22933 52 ジャケット 女 10000 5 52941 63 ジャケット 男 10000 6 60000

結果は、

男女

投稿2021/05/03 01:06

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Admiral

2021/05/05 03:14

コメントありがとうございました。 頂いたデータで自分でも試してみたところ、きちんと男女別にグラフが描写できました。 コード自体は正しく書けていたのだと思いますが、原因がまだよくわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問