在 python 中热图选定列的最简单方法?
Simplest way to heatmap selected columns in python?
df = pd.DataFrame({"name": ['a','b','c','d','e'],
"year": ['2012','2013','2010','2008','2011'],
"value": ['10','22','7','8','32']})
将热图仅应用于值列的简单方法是什么?我想避免年份被热图。
df2 = pd.DataFrame({"name": ['a','b','c','d','e'],
"year": ['2012','2013','2010','2008','2011'],
"value": ['254','220','275','283','323'],
"age": ['42','32','27','28','32']})
同样的问题,但分别针对值和年龄 - 即我希望将每一列分别进行热映射并缩放到该列(因此年龄不会显示为所有一个极端值而对另一个极端值)。
我有很多令人费解的代码片段来实现这一点,但通常我只是将粘贴复制到 excel 中,因为它速度更快......有没有快速和干净的方法来实现这种基本的选择性热映射 python?
谢谢!
如果您在笔记本或可以渲染的地方工作 HTML,您可以使用数据框的 style
访问器和 background_gradient
。 Seaborn 使为此目的生成颜色图变得非常容易。
您可以使用 subset
参数指定要应用颜色图的列。
import pandas as pd
import seaborn as sns
df2 = pd.DataFrame({"name": ['a','b','c','d','e'],
"year": ['2012','2013','2010','2008','2011'],
"value": ['254','220','275','283','323'],
"age": ['42','32','27','28','32']})
df2["value"] = pd.to_numeric(df2["value"])
df2["age"] = pd.to_numeric(df2["age"])
cm = sns.light_palette("green", as_cmap=True)
df2.style.background_gradient(cmap=cm, subset=["value", "age"])
如果您想要不同的颜色或为列指定单独的 vmin
/vmax
,您可以简单地多次调用 background_gradient
。
green_cm = sns.light_palette("green", as_cmap=True)
blue_cm = sns.light_palette("blue", as_cmap=True)
(df2.style
.background_gradient(cmap=blue_cm, subset="value", vmin=200, vmax=400)
.background_gradient(cmap=green_cm, subset="age", vmin=0, vmax=50))
df = pd.DataFrame({"name": ['a','b','c','d','e'],
"year": ['2012','2013','2010','2008','2011'],
"value": ['10','22','7','8','32']})
将热图仅应用于值列的简单方法是什么?我想避免年份被热图。
df2 = pd.DataFrame({"name": ['a','b','c','d','e'],
"year": ['2012','2013','2010','2008','2011'],
"value": ['254','220','275','283','323'],
"age": ['42','32','27','28','32']})
同样的问题,但分别针对值和年龄 - 即我希望将每一列分别进行热映射并缩放到该列(因此年龄不会显示为所有一个极端值而对另一个极端值)。
我有很多令人费解的代码片段来实现这一点,但通常我只是将粘贴复制到 excel 中,因为它速度更快......有没有快速和干净的方法来实现这种基本的选择性热映射 python?
谢谢!
如果您在笔记本或可以渲染的地方工作 HTML,您可以使用数据框的 style
访问器和 background_gradient
。 Seaborn 使为此目的生成颜色图变得非常容易。
您可以使用 subset
参数指定要应用颜色图的列。
import pandas as pd
import seaborn as sns
df2 = pd.DataFrame({"name": ['a','b','c','d','e'],
"year": ['2012','2013','2010','2008','2011'],
"value": ['254','220','275','283','323'],
"age": ['42','32','27','28','32']})
df2["value"] = pd.to_numeric(df2["value"])
df2["age"] = pd.to_numeric(df2["age"])
cm = sns.light_palette("green", as_cmap=True)
df2.style.background_gradient(cmap=cm, subset=["value", "age"])
如果您想要不同的颜色或为列指定单独的 vmin
/vmax
,您可以简单地多次调用 background_gradient
。
green_cm = sns.light_palette("green", as_cmap=True)
blue_cm = sns.light_palette("blue", as_cmap=True)
(df2.style
.background_gradient(cmap=blue_cm, subset="value", vmin=200, vmax=400)
.background_gradient(cmap=green_cm, subset="age", vmin=0, vmax=50))