Polars 是一个 Rust 和 Python 中的快速多线程 DataFrame 库/内存查询引擎。它使用 Apache Arrow(2) 作为内存模型在 Rust 中实现。并行执行、高效的缓存算法和富有表现力的 API 使其成为高效数据处理、数据管道、快速 API 等的完美选择。
更多信息可读用户指南。
>>> df = pl.DataFrame( { "A": [1, 2, 3, 4, 5], "fruits": ["banana", "banana", "apple", "apple", "banana"], "B": [5, 4, 3, 2, 1], "cars": ["beetle", "audi", "beetle", "beetle", "beetle"], } ) # embarrassingly parallel execution # very expressive query language >>> (df .sort("fruits") .select([ "fruits", "cars", lit("fruits").alias("literal_string_fruits"), col("B").filter(col("cars") == "beetle").sum(), col("A").filter(col("B") > 2).sum().over("cars").alias("sum_A_by_cars"), # groups by "cars" col("A").sum().over("fruits").alias("sum_A_by_fruits"), # groups by "fruits" col("A").reverse().over("fruits").flatten().alias("rev_A_by_fruits"), # groups by "fruits col("A").sort_by("B").over("fruits").flatten().alias("sort_A_by_B_by_fruits") # groups by "fruits" ])) shape: (5, 8) ┌──────────┬──────────┬──────────────┬─────┬─────────────┬─────────────┬─────────────┬─────────────┐ │ fruits ┆ cars ┆ literal_stri ┆ B ┆ sum_A_by_ca ┆ sum_A_by_fr ┆ rev_A_by_fr ┆ sort_A_by_B │ │ --- ┆ --- ┆ ng_fruits ┆ --- ┆ rs ┆ uits ┆ uits ┆ _by_fruits │ │ str ┆ str ┆ --- ┆ i64 ┆ --- ┆ --- ┆ --- ┆ --- │ │ ┆ ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞══════════╪══════════╪══════════════╪═════╪═════════════╪═════════════╪═════════════╪═════════════╡ │ "apple" ┆ "beetle" ┆ "fruits" ┆ 11 ┆ 4 ┆ 7 ┆ 4 ┆ 4 │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ "apple" ┆ "beetle" ┆ "fruits" ┆ 11 ┆ 4 ┆ 7 ┆ 3 ┆ 3 │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ "banana" ┆ "beetle" ┆ "fruits" ┆ 11 ┆ 4 ┆ 8 ┆ 5 ┆ 5 │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ "banana" ┆ "audi" ┆ "fruits" ┆ 11 ┆ 2 ┆ 8 ┆ 2 ┆ 2 │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ "banana" ┆ "beetle" ┆ "fruits" ┆ 11 ┆ 4 ┆ 8 ┆ 1 ┆ 1 │ └──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘
Polars 是使用 Apache Arrow 列格式作为内存模型,使用rust语言实现,目前已经支持python、rust、nodejs编程语言。 polars非标准库实现了多线程、查询优化以及强大的表达式接口,在同样场景的数据分析中效率提高了很多。 开始之前,我们还是一如既往的来安装一下相关的python非标准库。除了这次需要安装的polars,我们安装pandas库来做运行效率上的对比。 下
polars 库文档查看 【点击】 数据结构与特征: DataFrame struct Series struct Series trait ChunkedArray struct 数据读写 CSV/ JSON 点击查看更多示例 在使用相应的模块时,需要开启此特性,否则该方法无法使用。 则会出现报错:use of undeclared type 'JsonReader' [dependencies
polars库是python的又一dataframe库,显然,在pandas库的光芒下,要上位是不容易的,必须有过硬的功夫。 一、用法基本一致 从长相上看,两者有孪生相,用法和接口基本无二。至少大部分非常非常相似。估计很多只需要在import 这行改一行,估计就能用上了。 安装: pip install polars 也可以通过镜像,这样快一些。 二、速度polars优势明显 import t
导引:Python 得益于丰富的生态库,是科学计算以及大数据处理首选的编程语言,但是受限于 GIL 导致的多线程执行问题使得并发处理大量数据时性能相对迟缓。但 Rust FFI 的互操作性使得改良数据处理库的性能很方便。今天日报就给大家带来两款基于 Rust 后端并提供 Python API 的数据处理库: polars 闪电般快速的数据框架库 类似 pandas 的数据框架库,提供强大的表达式、
专注于为预测市场开发的去中心化平台Polars以极地代币概念的推出,开始在以太坊 "rinkeby "测试网进行智能协议的beta版本测试。 Polars的beta测试过程相当有趣,而且非常实用。开发者将测试分解成几个连续的阶段,鼓励用户一步一步地完成。因此,在测试过程中,Polars生态系统的所有的智能合约都会进行测试,用户将会完全熟悉平台的所有基本功能。目前,超过25000名用户正在参加测试。
本文向大家介绍Linux多线程编程快速入门,包括了Linux多线程编程快速入门的使用技巧和注意事项,需要的朋友参考一下 本文主要对Linux下的多线程进行一个入门的介绍,虽然是入门,但是十分详细,希望大家通过本文所述,对Linux多线程编程的概念有一定的了解。具体如下。 1 线程基本知识 进程是资源管理的基本单元,而线程是系统调度的基本单元,线程是操作系统能够进行调度运算的最小单位,它被包含在进程
本文向大家介绍快速了解Boost.Asio 的多线程模型,包括了快速了解Boost.Asio 的多线程模型的使用技巧和注意事项,需要的朋友参考一下 Boost.Asio 有两种支持多线程的方式,第一种方式比较简单:在多线程的场景下,每个线程都持有一个io_service,并且每个线程都调用各自的io_service的run()方法。 另一种支持多线程的方式:全局只分配一个io_service,
本文向大家介绍Python实现快速多线程ping的方法,包括了Python实现快速多线程ping的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现快速多线程ping的方法。分享给大家供大家参考。具体如下: 执行结果: administrator@nagios:/win/pexpect$ ./ping.py [2011-04-25 21:30:22.126981] 192
问题内容: 我想检查多线程是否比单线程快,然后在这里进行演示: 首先我用两个sum方法运行singleThreadStart,结果是 然后我运行secondThreadStart,结果是 然后我用五和方法运行singleThreadStart,结果是 最后我运行FiveThreadStart,结果是 我的问题是: SecondThreadStart比singleThreadStart花费更多的时间
我想检查多线程是否比单线程快,然后我在这里做一个演示: 首先,我用二和方法运行singleThreadStart,结果是 然后我运行第二个ThreadStart,结果是 然后我用五和方法运行singleThreadStart,结果是 最后我运行fiveThreadStart,结果是 我的问题是: SecondThreadStart比singleThreadStart花费更多的时间,是因为创建线程的
问题内容: 我正在尝试使用Java并行化算法。我从合并排序开始,然后在这个问题上发表了自己的尝试。我修改后的尝试在下面的代码中,在这里我尝试并行化快速排序。 我的多线程实现或方法中是否有菜鸟错误?如果不是,我是否应该期望对决核上的顺序算法和并行算法之间的速度提高超过32%(请参阅底部的时序)? 这是多线程算法: 这是我的开始方式: 我针对Arrays.sort和类似的顺序快速排序算法进行了测试。以