python-3.x pandas `styler.bar`方法-对高于阈值的值使用不同的颜色

cedebl8k  于 2023-05-19  发布在  Python
关注(0)|答案(2)|浏览(154)

我有以下 Dataframe

import pandas as pd

df = pd.DataFrame()
df["Value"] =[1,2,3,4,5]

我想为Value列生成条形图,以这种方式,直到值3,条形图的颜色为绿色,条形图的3以上部分为红色。我该怎么做?上述失败:

df.style.bar(subset = ["Value"], color = ["green", "red"])

编辑Amy的回答不正确:

q8l4jmvw

q8l4jmvw1#

你需要像这样声明每个条件:

df2 = df.style.bar(subset=["Value"], color="green", vmin=0, vmax=3).bar(
    subset=["Value"], color="red", vmin=4, vmax=5
)
df2.show()
hjzp0vay

hjzp0vay2#

一个简单的解决方案是使用一个特定的函数来创建一个“颜色”列,然后将其传递给绘图函数:

import pandas as pd

df = pd.DataFrame()
df['Value'] = [1,2,3,4,5]
df.index = ['A', 'B', 'C', 'D', 'E'] #to make the plot more clear

def colorize(row):
    if row.Value > 3:
        return 'red'
    return 'green'

df['color'] = df.apply(colorize, axis=1)

最终的DataFrame看起来像这样:

Value  color
A      1  green
B      2  green
C      3  green
D      4    red
E      5    red

现在是plotting:

df.Value.plot(kind='barh', color=df.color)

相关问题