csvファイルから出力した2次元配列において、最大値がその行の2番目に大きい値の2倍を超える行を対象として、
グラフのタイトルに「その行の0番目の要素(この場合"A"から"H"まで)」
x軸に「1行目の文字列(この場合"One"から"Five"まで)を入れ替えて、グループ化したもの(←まだできてません)」,
y軸に「最大値」
として表示させたグラフを写真のように並べようとしてコードを書いた所、以下のようになってしまいました。
やりたい事は以下の2点です。
・if文の条件を満たす行として、A,C,D,E,F,Hのグラフを出力したい
・X軸の「One,Three,Five」「Two,Four」のまとまりを「Odd」「Even」とグループ化したい。
解決に向けてお知恵をお貸しいただけますと幸いです。宜しくお願いします。
現状
理想の出力結果
コード
comp2.py
1import pandas as pd 2import matplotlib.pyplot as plt 3 4df = pd.read_csv('renshu.csv', index_col='Name', usecols=['Name','One','Three','Five','Two','Four']) 5 6fig, axes = plt.subplots(nrows=2, ncols=3) 7fig.suptitle('条件を満たす行とその分布', fontsize=12) 8plt.subplots_adjust(hspace=0.5) 9 10for idx, row in df.iterrows(): 11 for ax in axes.ravel(): 12 score = row.sort_values(ascending=False) 13 if score.iloc[0] >= score.iloc[1] * 2: 14 ax.bar(df.columns, row.values, align="center", width=0.8) 15 ax.set_xticklabels(df.columns, rotation=85) 16 ax.set_title(idx) 17 18plt.show()
ファイル
renshu.py
1Name,One,Two,Three,Four,Five 2A,3,3,14,4,2 3B,3,8,2,4,5 4C,3,2,12,4,3 5D,2,4,5,14,6 6E,4,3,5,12,4 7F,10,2,3,4,2 8G,2,5,16,7,9 9H,3,16,5,6,8
補足情報(FW/ツールのバージョンなど)
iOS 10.14.6, Python 3.7.4, Atom
回答1件
あなたの回答
tips
プレビュー