news 2026/7/7 16:37:50

如何为 Polars DataFrame 添加颜色

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何为 Polars DataFrame 添加颜色

原文:towardsdatascience.com/how-to-color-polars-dataframe-8ada66161226

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/06f1c9a28173f83fce19bf3eba329b9b.png

由 ChatGPT 生成的 AI 图像。提示:在雪地景观中画一只北极熊。

由于 Polars 库于 2022 年发布,它因其作为超快速 DataFrame 库而迅速获得了人气。与 Pandas 相比,白熊经过测试并被证明要快得多。根据官方 Polars 网站,它声称性能提升了 30 倍以上。

然而,没有什么是完美的。Polars 库似乎有一些限制。

当谈到表格风格化时,Polars 提供的选项较少,而 Pandas 提供了 内置的样式化工具。如果你想要为 Polars DataFrame 添加颜色,一个直接的方法是将表格转换为 Pandas。

但等等…如果稍后需要运行某些代码呢?

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e36a2abf76947f9dea2e8540dd236a83.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/594addbb57eed58a4b999a914ed1d7c3.png

本文展示了在本文中风格化前后 Polars 表格的示例。图片由作者提供。

这意味着我们必须运行 Pandas,这可能会导致速度大幅降低。另一个选择是在风格化后,将表格转换回 Polars。然后,如果我们想对结果进行风格化,必须重复相同的过程。尽管这些解决方案是可行的,但它们相当不方便。

幸运的是,有一个名为“Great Tables”的包可以直接应用于 Polars 表格。这个包允许我们在使用 Polars 库的同时创建一个看起来很棒的表格。

本文将逐步指导使用 Great Tables 包来风格化 Polars 表格。

让我们开始吧!!

导入库

从获取我们将要使用的库开始。Great Tables 包是在 MIT 许可下使用的。

importnumpyasnpimportpolarsasplimportpolars.selectorsascsimportreimportwikipediaimportpandasaspdfromgreat_tablesimportGTfromgreat_tablesimportstyle,loc

获取数据

为了展示本文中解释的方法可以应用于现实世界的数据,我将使用来自维基百科的“各国风能”数据。

首先,让我们使用 Wikipedia 库 来检索 HTML 数据。然后,我们将使用 Pandas 读取数据,在将其转换为 Polars DataFrame 之前。维基百科的数据是在 CC BY-SA 4.0 国际许可下使用的。

如果你想尝试另一个数据集,这一步可以跳过。

wikiurl='https://en.wikipedia.org/wiki/Wind_power_by_country'tables=pd.read_html(wikiurl)df=pl.DataFrame(tables[4])df

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6e320b5cf51391e6ab31b6901d597429.png

由于行数较多,我将重点关注*Cap. (GW)*值高于 5 的国家。显示世界数据的第一行也将被删除。以下代码展示了如何过滤 Polars DataFrame。

如果您想选择其他列或使用其他值进行过滤,请随意修改以下代码。

no_list=['World']df=df.filter(pl.col('Cap. (GW)')>6)df=df.filter(~pl.col('Country').is_in(no_list))df

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9dacb4520d7a70dfa3c7e0ad8e2bf552.png


使用 Great Tables 显示 Polars DataFrame

现在 Polars 表格已经准备好了,让我们尝试使用 Great Tables 包来显示表格。

gt_df=GT(df)gt_df

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/40f9c3e5598146344870790ff545809c.png

使用 Great Tables 显示显示 Wind power generation by country 2023 数据。图片由作者提供。

接下来,让我们做一些基本的修改,比如添加标题并使*% cap. growth*列中的最大值加粗。

list_cap=list(df['% cap. growth'])max_idx=str(list_cap.index(max(list_cap)))## Get the maximum valuestr_txt='gt_df.tab_header(title="Wind power generation by country 2023").tab_style(style.text(weight="bold",color="black"),loc.body("% cap. growth",'+ max_idx + '))' tb=eval(str_txt)tb

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/111ee4799df8ceca184cc493534a002a.png

添加标题并使列中的最大值加粗。图片由作者提供。

使用 Great Tables 为 Polars DataFrame 着色

为了着色表格,我们需要从颜色调色板中创建一个颜色列表。如以下代码所示,本文将使用‘summer’调色板。还可以使用其他调色板,如‘coolwarm’或‘viridis’。

提取的颜色数量为 101,因为在下一步中,我们将把列中的 min-max 值缩放到 0–100。然后,将获得的颜色列表枚举以创建用于后续的字典。

importseabornassns colors=list(sns.color_palette(palette='summer_r',n_colors=101).as_hex())dict_colors=dict(enumerate(colors))

在下一步中,我们将对*% cap. growth*列中的值进行缩放。最小值为 0,最大值为 100。之后,使用颜色字典将颜色代码分配给每个缩放值。

n_cap=max(list_cap)-min(list_cap)percentage_cap=[int((i-min(list_cap))*100/n_cap)foriinlist_cap]colors_cap=[dict_colors.get(p)forpinpercentage_cap]

接下来是着色过程,for 循环函数将被应用以创建多个文本代码。每个代码用于根据颜色字典为每一行分配颜色。之后,所有创建的文本将合并为一个文本代码以运行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 8:56:26

轻松突破RPG Maker MV加密壁垒:全方位资源解密实战指南

轻松突破RPG Maker MV加密壁垒:全方位资源解密实战指南 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https://gitcod…

作者头像 李华
网站建设 2026/7/7 7:44:58

国产操作系统深度指南:主流六大系统优劣详解与选用建议

在很长一段时间里,普通用户对操作系统的认知几乎被Windows和macOS所垄断。但近年来,“国产操作系统”这一概念正从政府文件、行业新闻逐步走入公众视野。尤其在中美科技竞争加剧、“卡脖子”风险凸显的背景下,构建自主可控的信息技术体系已成…

作者头像 李华
网站建设 2026/7/7 11:23:20

springboot和vue框架的社区汽车共享租赁预约平台_mj2vgi48

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 同行可拿货,招校园代理 springboot和vue框架的社区汽车共享租赁预约平台_mj2vg…

作者头像 李华
网站建设 2026/7/7 20:06:48

企业运维视角下的Elasticsearch设置密码最佳实践

企业运维视角下的 Elasticsearch 安全加固:从“设置密码”到构建可信访问体系当你的日志平台还在裸奔?是时候正视 Elasticsearch 的安全问题了在一次深夜的应急响应中,某互联网公司发现其 Elasticsearch 集群被加密勒索——所有数据索引被清空…

作者头像 李华
网站建设 2026/7/7 15:20:37

洛谷 P2946 [USACO09MAR] Cow Frisbee Team S

题目描述老唐最近迷上了飞盘,约翰想和他一起玩,于是打算从他家的 N 头奶牛中选出一支队伍。每只奶牛的能力为整数,第 i 头奶牛的能力为 Ri​。飞盘队的队员数量不能少于 1、大于 N。一支队伍的总能力就是所有队员能力的总和。约翰比较迷信&am…

作者头像 李华
网站建设 2026/7/7 17:54:30

LangFlow跨平台部署方案:Linux、Windows、Mac全支持

LangFlow跨平台部署方案:Linux、Windows、Mac全支持 在大语言模型(LLM)技术席卷各行各业的今天,越来越多团队希望快速构建基于自然语言处理的应用。然而现实是:LangChain 这类强大框架虽然功能丰富,但对开…

作者头像 李华