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

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

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

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

Q&A

解決済

1回答

183閲覧

pythonでgroupbyした後にキーとそれ以外の列の棒グラフをプロットしたい

monsi

総合スコア12

Python

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

0グッド

0クリップ

投稿2022/08/19 00:29

前提

pythonで総務省から取り寄せたデータの分析を行なっています。
プロットする際に、groupbyしたキーとそれ以外の列をそれぞれx軸、y軸に取ってプロットしたいのですが、エラーメッセージが発生しました。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

実現したいこと

・都道府県コードと搬送人員(計)という列をx・y軸にしてプロットしたい

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

エラーメッセージ

ValueError: Value of 'x' is not the name of a column in 'data_frame'. Expected one of ['搬送人員(計)', '年齢区分:新生児', '年齢区分:乳幼児', '年齢区分:少年', '年齢区分:成人', '年齢区分:高齢者', '年齢区分:不明', '傷病程度:死亡', '傷病程度:重症', '傷病程度:中等症', '傷病程度:軽症', '傷病程度:その他', '発生場所:住居', '発生場所:仕事場①', '発生場所:仕事場② ', '発生場所:教育機関', '発生場所:公衆(屋内)', '発生場所:公衆(屋外)', '発生場所:道路', '発生場所:その他'] but received: 都道府県コード

該当のソースコード

df2_g = df2.groupby("都道府県コード").sum() fig = px.bar(df2_g, x = "都道府県コード", y = "搬送人員(計)") fig.show()

試したこと

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

よろしくお願いします。

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

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

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

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

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

melian

2022/08/19 00:48

元の総務省のデータは都道府県別の集計値になっているのでしょうか?
monsi

2022/08/19 00:52 編集

はい。 日付ごとの集計で、列が都道府県・搬送人員・年齢・搬送された場所となっています。
melian

2022/08/19 00:58

ごめんなさい、今分かりました。 df2_g = df2.groupby("都道府県コード").sum() とされていますので、都道府県コードがインデックスになっていますね。 fig = px.bar(df2_g, x = df2_g.index, y = "搬送人員(計)") としてみてください。
monsi

2022/08/19 01:04

@melianさん プロットうまくいきました。ありがとうございます。 indexとcolumnで分けて考える必要があると学べました。
guest

回答1

0

ベストアンサー

以下のようにx軸としてindexを、y軸(高さ)として集計値の列データを渡せばよいです。

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3 4df = pd.DataFrame({'Code':['a','a','b','c'], 'Val':[1,2,3,4]}) 5dfg = df.groupby('Code').sum() 6 7plt.bar(dfg.index, dfg['Val']) 8 9# 以下でもよい 10#dfg = dfg.reset_index() 11#plt.bar(dfg['Code'], dfg['Val']) 12 13plt.show()

イメージ説明

投稿2022/08/19 00:56

can110

総合スコア38262

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問