前提
python-docxに、pythonからデータフレームを取り込むところまではできました。
5行あったとき、その表の各列に、数字の1から5が入力されているとして
1=青、2=赤、3=紫…というように、数字条件にあった、色を付けたいです。
それも、列1と列2では、(1,2,3,4,5)の配列がバラバラである場合、
どうすれば、良いでしょうか。
実現したいこと
発生している問題・
エクセルで、読み込んだ表の2列分(そこを例えば、達成率1,達成率2のような異なるデータが入っている)に対して、色分けしたいのですが、1列分しかできません。
1つの列に色をつける基準として、列のそれぞれの数字の四分位数を取り、そこで、
4つのカテゴリーに分け、色分けをしようとしています。
確かにエラーはでないのですが、1回目は、達成率1の列に対して
色分けされますが、2回目まわした段階で、達成率2の列は白に戻り。
あらたに、達成率2の列が色分けされます。
これを2列に対して、同時に、色分けできなでしょうか?
エラーメッセージ
エラーメッセージは出ないので、文法的には正しいと思うのですが、 ただ、結果は私の意図とは別のもので、明らかにおかしいです。
該当のソースコード
■1回目 (達成率1の列に対して、色分けを行う)
df_test=pd.read_excel('/content/drive/My Drive/20221120test.xlsx')
m1=df_test.loc[0:8,'達成率1'].quantile(q=[0.0, 0.25, 0.5, 0.75, 1.0])
m1=df1_sinchoku.loc[0:8,'達成率1'].quantile(q=[0.0, 0.25, 0.5, 0.75, 1.0])
print(m1)
結果を色で識別する
def color_background_lightgreen(val):
color = 'lightgreen' if val > 0.75 else ( 'cyan' if val < 0.7 else '') #0.75より大なら薄緑、0.6より小さいなら赤、その他は白
color = 'dodgerblue' if val > m1[0.75] else ( 'lightskyblue' if val <= m1[0.75] and val > m1[0.5] else ('plum' if val <= m1[0.5] and val > m1[0.25] else ('deeppink'if val <=m1[0.25] and val>=m1[0.0] else '' ))) #1より大なら薄緑、0.75~1なら水色、0.75以下は赤
return 'background-color: %s' % color
表示
df1_style = df_test.style.applymap(color_background_lightgreen, subset=['達成率1'])
■2回目 (達成率2の列に対して、色分けを行う)
達成率2の列も色塗り
m2=df_test.loc[0:8,'達成率2'].quantile(q=[0, 0.25, 0.5, 0.75, 1])
結果を色で識別する
def color_background_lightgreen(val):
color = 'lightgreen' if val > 0.75 else ( 'cyan' if val < 0.7 else '') #0.75より大なら薄緑、0.6より小さいなら赤、その他は白
color = 'dodgerblue' if val > m2[0.75] else ( 'lightskyblue' if val <= m2[0.75] and val > m2[0.5] else ('plum' if val <= m2[0.5] and val > m2[0.25] else ('deeppink'if val <=m2[0.25] and val>=m2[0] else '' ))) #1より大なら薄緑、0.75~1なら水色、0.75以下は赤
return 'background-color: %s' % color
表示
df2_style = df_test.style.applymap(color_background_lightgreen, subset=['達成率2'])
python
試したこと
df1_style = df_test.style.applymap(color_background_lightgreen, subset=['達成率1','達成率2'])
として、動かしました。
確かに、これで、エラーもでず、出力されたのですが、
両方とも同じ尺度で、色つけされています。
達成率1と、達成率2の四分位範囲の基準が同じであれば、
良いと思うのですが、今は、別な基準となっています。
なので、当然のことながら、色分けの基準は同じではないです。
〇目標達成率:m1
〇新人目標達成率:m2
補足情報(FW/ツールのバージョンなど)
今回の質問は、特にエラーが出る分けではないのですが、
やりたいことがきちんとできない、不整合が起こっています。
ここにより詳細な情報を記載してください。
![guest](/img/icon/icnUserSample.jpg)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/23 23:52