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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

10447閲覧

Python 棒グラフ 降順ソートを行いたい

PU-TARO

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/08/10 07:19

編集2021/08/10 08:17

Pythonで横棒グラフで、有る列データ:Aの出現回数をX軸、列データ:インデックス化したAの内容をY軸にしたいと考えています。
データ元が、年間の車の地区ごとの販売実績、Aは車の車種と捉えてください。

現在、グラフそのものを作成することは完了したものの、降順に並べかえたいと考えていますが、思うようにできません。
下記のようなコードを書いておりますが、どうすれば、Aの出現回数から降順に並べ替えられますでしょうか?お手数おかけしますが助けて頂けますと本当に助かります。

df = pd.read_csv('data.csv')

s = df.groupby('A').count()['B'].reset_index().set_index('A')

df = df.sort_values(
by = 'A',
ascending = False,
)

s.plot(
kind = 'barh',
legend = None,
figsize = [20, 20]
)

plt.ylabel("Company")

plt.savefig('plot.png')

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

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

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

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

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

meg_

2021/08/10 07:35

・コードは「コードの挿入」で記入してください。 ・data.csvのサンプルデータを提示できますか? ・現在のグラフと理想のグラフの画像を追加いただけませんか?
PU-TARO

2021/08/10 08:22

早速のコメント有難うございます。大変助かります。今回"can110"様にアドバイス頂いた通りのデータイメージ、現在・理想のイメージとなります。今後とも何卒宜しくお願いいたします!
guest

回答1

0

ベストアンサー

描画対象がsなのでdfではなくsに対してsort_valuesすべきかと思います。
また、グラフ描画の順番(見た目)は行の並びと逆順になるので、昇順にソートします。

Python

1import pandas as pd 2from io import StringIO 3import matplotlib.pyplot as plt 4 5# テストデータ 6s = """A,B 7T,Asia 8H,Asia 9N,Asia 10T,EU 11H,EU 12T,USA""" 13df = pd.read_csv(StringIO(s)) 14 15s = df.groupby('A').count()['B'].reset_index().set_index('A') 16s = s.sort_values(['B']) # 降順に 17print(s) 18""" 19 B 20A 21N 1 22H 2 23T 3 24""" 25 26s.plot( kind = 'barh', legend = None) 27 28plt.ylabel("Company") 29plt.savefig('plot.png')

イメージ説明

投稿2021/08/10 07:45

can110

総合スコア38341

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

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

PU-TARO

2021/08/10 08:16

早速有難うございます!"from io import StringIO"というのは、初めて使いました。指摘頂いた箇所を修正して、イメージ通りに出来ました。本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問