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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

447閲覧

python matplotlib.pyplotヒストグラム描画でValueError: The truth value of a Series is ambiguous.

recter

総合スコア37

Matplotlib

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

Python 3.x

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

0グッド

0クリップ

投稿2017/10/25 08:38

編集2017/10/25 08:41

###前提・実現したいこと
python3.6.3にてcsvファイルをもとにヒストグラムの描画を行おうとしています。

csvファイルは下記のようになっており、
グループ毎の年齢の分布で描画しようと考えています。
また年齢はあらかじめfloatに変換してあります。
###csvファイル一部抜粋

グループ,年齢,xx,xx,xx,.... 0,20.0,xx,xx,xx,.... 0,21.0,xx,xx,xx,.... 0,30.0,xx,xx,xx,.... . . 1,17.0,xx,xx,xx,.... 1,17.0,xx,xx,xx,.... . . 2,21.0,xx,xx,xx,...

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

Traceback (most recent call last): File "C:\pythonPj\seikei.py", line 51, in <module> checkdata(df,"年齢") File "C:\pythonPj\seikei.py", line 36, in checkdata plt.hist((x1,x2,x3), bins=16, stacked=False ) File "C:\Users\hogemoge\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\pyplot.py", line 3004, in hist stacked=stacked, normed=normed, data=data, **kwargs) File "C:\Users\hogemoge\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\__init__.py", line 1710, in inner return func(ax, *args, **kwargs) File "C:\Users\hogemoge\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\axes\_axes.py", line 6193, in hist xmin = min(xmin, xi.min()) File "C:\Users\hogemoge\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 955, in __nonzero__ .format(self.__class__.__name__)) ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

###該当のソースコード

python

1# -*- coding: utf-8 -*- 2import csv 3import pandas as pd 4from pandas import DataFrame 5import matplotlib 6import matplotlib.pyplot as plt 7 8def checkdata(df,index): 9 10 #各グループ毎のデータを取得 11 x1 = [df[index][df['グループ']==0]] 12 x2 = [df[index][df['グループ']==1]] 13 x3 = [df[index][df['グループ']==2]] 14 15 #ヒストグラムの生成 16 plt.hist((x1,x2,x3), bins=16, stacked=False ) 17 18 #画像の保存 19 plt.savefig("%s_graph.png" %index) 20 21 #画像の表示 22 plt.show() 23 24if __name__ == '__main__': 25 #データ読み込み 26 df = pd.read_csv('hoge.csv') 27 checkdata(df,"年齢")

###試したこと
グループ分けせずに全データでヒストグラムの描画を行ったところ、
上手く描画させることが出来ました。

###補足情報(言語/FW/ツール等のバージョンなど)
python3.6.3
Windows10 64bit

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

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

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

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

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

guest

回答1

0

ベストアンサー

得たい描画結果は以下でしょうか?
イメージ説明

x1 = [df[index][df['グループ']==0]]x1 = df[index][df['グループ']==0]と修正しました。(x2,x3も同様)

投稿2017/10/25 08:57

can110

総合スコア38233

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

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

recter

2017/10/25 09:23

ありがとうございます。 頂いたソースに修正し実行したところ求めていた結果が表示されました。 #こんなに単純なミスだったとは・・・ 参考にしたソースがpython2系のもので苦戦していました。 本当にありがとうございます!
can110

2017/10/25 09:26

Python2.x→3.xはハマりどころ満載ですね…最悪イチからコード書き直す覚悟がいります(^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問