从 Pandas 到 Polars 三十九:Polars 和 Matplotlib

news2024/9/22 3:34:41

Polars 与 matplotlib 配合得很好。

在matplotlib中,你可以直接使用polars的数据进行绘制图形,而无需把polars的dataframe转为pandas的dataframe:

import polars as pl
import matplotlib.pyplot as plt

# 创建一个polars DataFrame
df_pl = pl.DataFrame({
    "x": [1, 2, 3, 4, 5],
    "y": [2, 3, 5, 7, 11]
})

# 使用matplotlib绘图
plt.figure(figsize=(10, 6))

plt.plot(df_pl["x"], df_pl["y"], marker='o')
# 数据量大的时候,建议使用表达式API来引用列:
# plt.plot(df_pl.select(pl.col("x")), df_pl.select(pl.col("y")), marker='x')

plt.title("Example Plot")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()

再例如,要制作条形图,我们直接将 Polars 数据框中的列传递给它。

在下面的第一个示例中,我们可以看到北大西洋中爱尔兰波浪浮标测得的最大波浪高度(这只是一个片段,用于向您展示它的工作方式)。

stationAggs = stationAggs.sort("significant_wave_height_max").tail(6)

fig, ax = plt.subplots()

ax.barh(
    y=stationAggs["stationID"],
    width=stationAggs["significant_wave_height_max"],
)
ax.set_xlabel('Max wave height (m)')

我们是否也可以进行一些风暴追踪呢?

在第二个示例中,我们使用快速的 groupby_dynamic 方法对每个站点的波浪高度取3小时的平均值。

为了绘制多线图,我们需要对每个线调用 ax.plot 方法。我们可以通过循环遍历一个分组对象来获取每个站点的数据,并在9月26日看到一场带有一些大块波浪的风暴。

# 每个站点的平均时间序列分为3小时窗口
averagedValuesDf = (
    dfBigWaves
    .groupby_dynamic("time","3h",by="stationID")
     .agg(
            pl.col("significant_wave_height").mean()
        )
)
fig,ax = plt.subplots(figsize=(12, 4), dpi=80)
# 遍历groupby以获取每个站点的值
for stationDf in averagedValuesDf.groupby("stationID"):
    stationID = stationDf[0,0]
    # 为每个站点添加一行
    ax.plot(
        stationDf["time"],
        stationDf["significant_wave_height"],
        label=stationID
)
plt.legend()

总之,如果你习惯了使用matplotlib,polars的数据能够与之无缝连接。

当然,如果你使用其他可视化库,比如Altair、Plotly、holoviews等,这些库也可以与polars直接集成。这在另一篇文章里也有介绍:

从 Pandas 到 Polars 十一:在Polars环境中,Matplotlib与Plotly的比较

退一步说,如果你只习惯使用pandas的数据进行绘图,那也可以使用polars的df.to_pandas()方法将数据转为pandas的格式,只不过在转换为 Pandas DataFrame 时,可能会有一些性能损失,特别是对于大型数据集。

   往期热门文章:

从 Pandas 到 Polars 二十六:在Polars中,不要遍历列

从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

从 Pandas 到 Polars 十三:流式处理的关键参数

从 Pandas 到 Polars 十:“Polars 表达式“是什么?

从 Pandas 到 Polars 六:在 Polars 中流式处理大型数据集

从 Pandas 到 Polars 0:理解Polars嵌套列类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1974167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5 道互联网大厂面试遇到的场景题

1.外卖单子只能被一个骑手接单 这是一个典型的分布式锁问题。可以采用以下几种方案: 基于Redis的分布式锁: 使用Redis的SETNX命令尝试获取锁设置合理的锁超时时间,防止死锁使用Lua脚本保证原子性操作考虑Redis集群环境下的一致性问题 基于Zookeeper的分布式锁: 创建临时顺…

openEuler系统合并home分区到root分区

为了支持国产系统底座,不受美帝卡脖子,加入openEuler,想把业务全部移植到openEuler系统上。在使用默认安装的情况下,会把home分区单独分配一个出来,为了方便,还是想合并到/根目录上。怎么做呢?发…

2023年码蹄杯专科组第三场初赛 解题报告 | 珂学家

前言 题解 这是2023年第三场码蹄杯职业院校算法比赛,3D眩晕(字符串hash)挺有意思的。 这个系列赛,喜欢出典题。 3D眩晕 难度: 钻石 思路: 字符串hash 这题难在容错性上,就是允许有x次修改( x ≤ 3 x \le 3 x≤3)&…

NICE Seminar(2023-07-16)|演化算法的理论研究到底有什么用?(南京大学钱超教授)

模式定理(Schema Theorem) 模式定理(Schema Theorem)是遗传算法(Genetic Algorithm, GA)的重要理论基础,由约翰霍兰德(John Holland)在1975年提出。它描述了具有特定模式…

【机器学习】回归类算法-相关性分析

一、前言 前面的几篇博客我们学习了分类算法,今天我们来了解一下回归类的算法吧。首先我们来谈谈两者有什么区别,首先是我们在之前的分类算法,这类算法可以将让我们学会如何将不同的数据划分到不同的类里面,输出的是一些离散的值。…

新书速览|AI创意商业广告设计:Adobe Firefly + Photoshop

《AI创意商业广告设计:Adobe Fire.yPhotoshop》 本书内容 随着AI技术的出现,平面设计领域也出现了利用人工智能进行创作的程序,比如Firefly、Midjourney、 Stable Di.usion等。这些程序能够创作出高质量的设计作品。其中,Fire.y是由Adobe公司…

内网权限维持——创建影子账户

文章目录 一、RID简介二、修改RID进行权限维持 影子账户,顾名思义就是隐藏的用户,无法通过“计算机管理”或命令行查询,只能在注册表中找到其信息。下面的实验是在win 7上进行的。真正的影子账户其实是windwos RID 劫持。 一、RID简介 在wi…

线程池工具类 Executors源代码详解

​ 快捷导航 一、提供了什么功能?源码中的定义:此类支持以下几种方法: 二、源码中是怎么实现的?1、创建并返回一个配置了常用设置的ExecutorServicenewFixedThreadPool()newSingleThreadExecutor()newCachedThreadPool()newWorkS…

学习C#调用LazyCaptcha模块生成验证码的基本用法

LazyCaptcha是仿EasyCaptcha和SimpleCaptcha的.net开源图形验证码模块,其支持生成验证码及对应的静态图或动态图,还支持在图形中增加气泡、干扰线等噪音以提升图片自动识别难度。LazyCaptcha既能在B/S程序中使用(本文的原由即Admin.NET中使用…

【数据结构初阶】深度理解 “栈” (附源码)

hello,又见面了! 目录 1. 栈的概念与结构 2、栈的实现 Stack.h Stack.c test.c 3、习题 正文开始—— 1. 栈的概念与结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端…

小试牛刀-Telebot区块链游戏机器人(TS升级)

目录 1.编写目的 2.为什么使用TypeScript实现? 3.实现功能 3.1 AI图片生成 3.2 签到 3.3 邀请 3.4 WalletConnect连接 4.功能实现详解 4.1 AI图片生成 4.2 签到 4.3 邀请 4.4 WalletConnect连接 5.功能截图 ​6.问题整理 Welcome to Code Blocks blog 本篇文章主…

塑造美好心灵,激发创造活力|第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展开展

第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展 展览现场 由中央美术学院、景德镇陶瓷大学、景德镇陶文旅控股集团共同主办,由中国非物质文化遗产保护协会陶瓷分会、中国文化艺术发展促进会陶瓷专业委员会、中央美术学院陶瓷艺术研究院、中央美术学院少儿美术教…

无人机无刷电机技术详解及选型

1. 技术原理 无人机无刷电机(Brushless DC Motor, BLDC)是现代无人机动力系统的核心部件,其工作原理基于电磁感应和换向技术,实现了无需物理接触即可持续旋转的高效率动力输出。与传统有刷电机相比,无刷电机通过电子换…

你好! Git——如何进行多人协作

多人协作(5) 一、标签管理二、多人协作2.1 场景一(这种方式不常见)2.2 场景二(常见) 一、标签管理 标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。 …

【给嵌入式新人的几条建议(共勉):三-C语言基础怎么补?】

给嵌入式新人的几条建议(共勉):三-C语言基础怎么补? 前言1、先回答一个问题,对C语言的害怕到底在哪?(纠正认知)2、C语言基础,要补全部吗?No2.1 先看下自己属于…

深耕编程语言18年,对话 Rust、TypeScript、Nushell 核心贡献者 Sophia Turner | Open AGI Forum

作者 | Annie Xu 采访 | 卢威 责编 | Echo Tang 出品丨GOSIM 开源创新汇 编程语言的种类令人眼花缭乱,但成功的、常用的编程语言却是凤毛麟角。在深耕编程语言研发 18 年的 Sophia June Turner 看来,编程语言成功的关键在于其研发团队的透明度和机制建…

Azure OpenAI Embeddings vs OpenAI Embeddings

题意:Azure OpenAI 嵌入与 OpenAI 嵌入的比较 问题背景: Is anyone getting different results from Azure OpenAI embeddings deployment using text-embedding-ada-002 than the ones from OpenAI? Same text, same model, and the results are cons…

Learning vtkjs之Calculator

过滤器 公式计算器 Calculator 介绍 The Calculator filter is a fast way to add derived data arrays to a dataset. These arrays can be defined over points, cells, or just field data that is “uniform” across the dataset (i.e., constant over all of space). Va…

【小尘送书-第十六期】码农职场:IT人求职就业手册

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…