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

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

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

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1749閲覧

Pandasで列方向の合計にする方法

solid14180

総合スコア13

Python 3.x

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/08/31 07:16

編集2021/08/31 07:53

実現したいこと
PythonでExcelの以下の表を甲乙丙…(列は可変)ごとの積み上げ棒グラフを作成したい
データ.xlsx

条件
・行列ともに可変
・上記のためコード内で['甲']みたいな形で指定する方法を取りたくない
・A1(表の左上)は未記入(記入しないでほしい)

発生している問題
以下のコードを記述して作成すると、「一」ごとの積み上げ棒グラフ、「二」ごとの積み上げ棒グラフとなってしまう

import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel("C:\sample\データ.xlsx") print(df) df.plot(kind='bar',stacked=True) plt.show()

イメージ説明
試したこと
以下のように表を転置して積み上げ棒グラフを作成しようとしたら

import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel("C:\sample\データ.xlsx") print(df) dft=df.T print(dft) dft.plot(kind='bar',stacked=True) plt.show()

このようなエラーが出た

Traceback (most recent call last): File "export.py", line 8, in <module> dft.plot(kind='bar',stacked=True) File "C:\Program Files\Python37\lib\site-packages\pandas\plotting\_core.py", line 955, in __call__ return plot_backend.plot(data, kind=kind, **kwargs) File "C:\Program Files\Python37\lib\site-packages\pandas\plotting\_matplotlib\__init__.py", line 61, in plot plot_obj.generate() File "C:\Program Files\Python37\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 278, in generate self._compute_plot_data() File "C:\Program Files\Python37\lib\site-packages\pandas\plotting\_matplotlib\core.py", line 441, in _compute_plot_data raise TypeError("no numeric data to plot") TypeError: no numeric data to plot

自分の調べ方ではぴったりくるのがなかったので教えていただければと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のように転置すればよいです。

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3from io import StringIO 4 5s = """,A,B,C 6one,1,2,3 7two,4,5,6""" 8df = pd.read_csv(StringIO(s), index_col=[0]) 9#df = pd.read_excel("C:\sample\データ.xlsx") 10df.T.plot(kind='bar',stacked=True) 11plt.show()

イメージ説明

投稿2021/08/31 07:32

編集2021/08/31 07:55
can110

総合スコア38341

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

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

solid14180

2021/08/31 07:52

回答ありがとうございます 条件のところのA1が説明不十分だったので付け加えます A1はデータ.xlsx(表)の一番左上で何も入れてない部分です A1には何も入れない状態では出来ないのでしょうか それと今自分がダイレクトでエクセルから変数dfに格納する方法はそもそも間違っているのでしょうか dt.T.plot…の方法を試しましたがno numeric data to plot と出て出力は出来ませんでした
can110

2021/08/31 08:00

左上が空のケースでコード修正しました。結果は同じです。 > ダイレクトでエクセルから変数dfに格納する方法はそもそも間違っているのでしょうか 間違ってはいませんが、回答コードのようにindex_col=0を指定するようにしてください。 indexを指定していないので、左端列もデータと認識されて「no numeric data to plot」が発生していると思われます。
solid14180

2021/08/31 08:03

df = pd.read_excel("C:\sample\データ.xlsx", index_col=[0]) という形をとることで出力できました。 解説まで丁寧にありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問