为了账号安全,请及时绑定邮箱和手机立即绑定

在 python 中热图选定列的最简单方法?

在 python 中热图选定列的最简单方法?

拉莫斯之舞 2023-09-26 14:49:52
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 中是否有快速、干净的方法来实现这种基本的选择性热图?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

如果您在笔记本或可以渲染 HTML 的地方工作,则可以使用styledataframe 的访问器和 w/ 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"])

https://img1.sycdn.imooc.com//65127f4a00015cbd02430198.jpg

如果您想要不同的颜色或指定单独的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))

https://img1.sycdn.imooc.com//65127f56000100a902380194.jpg

查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信