一个闪电般快速的 DataFrame 处理库,完美替代 Pandas

众所周知,SQL和Pandas是数据科学领域常用工具,精通这两大工具对数据科学家来说极有价值 。而最近,又有一个新的工具库——「Polars」也开始受到青睐 。

一个闪电般快速的 DataFrame 处理库,完美替代 Pandas

文章插图
Polars简介Polars是一个快速的DataFrame库,旨在提供快速高效的数据处理能力,允许您在不影响性能的情况下处理大型数据集 。同时,它解决了Pandas的一些限制:
  • Pandas主要依赖于一个CPU核心运行,尤其在处理高并发任务时 , 性能易受限制 。而Polars采用「多核计算方式」 , 能够更好地利用「多核CPU」,从而在处理大量数据和并发任务时表现出更好的性能 。
  • Pandas采用的是积极执行模式 , 这意味着它在处理数据时会立即执行所有操作,而不会等待后续操作 。相比之下,Polars提供了「惰性执行模式」,在需要时才执行操作,而不是立即执行所有操作 。这种执行方式有助于减少不必要的计算,从而提高性能 。
  • Pandas一次性创建整个DataFrame的对象 。Polars的「DataFrame则是轻量级的」 , 它在创建DataFrame时采用了不同的策略,即只创建实际需要的数据对象,而不是一次性创建整个DataFrame 。这种方法有助于减少内存使用和提高性能 。
  • Pandas在处理大型数据集时可能会遇到性能瓶颈 , Polars则比较高效 。
Polars使用示例1.创建DataFrame示例代码如下 。这里使用pl.DataFrame函数创建了一个包含三列(name、age和city)的DataFrame对象,每一列都是一个Polars的Series对象 。最后打印输出整个DataFrame 。
import polars as pl# 创建一个Polars的DataFrame对象df = pl.DataFrame({'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'San Francisco', 'London']})# 打印输出DataFrameprint(df)【一个闪电般快速的 DataFrame 处理库,完美替代 Pandas】输出结果:
shape: (3, 3)┌─────────┬─────┬──────────────┐│ name┆ age ┆ city││ ---┆ --- ┆ ---││ str┆ i64 ┆ str│╞═════════╪═════╪══════════════╡│ "Alice" ┆ 25┆ "New York"│├─────────┼─────┼──────────────┤│ "Bob"┆ 30┆ "San Francisco" │├─────────┼─────┼──────────────┤│ "Charlie" ┆ 35┆ "London"│└─────────┴─────┴──────────────┘2.合并数据框示例代码如下 。这里首先创建了两个DataFrame对象(df1和df2),分别代表两个不同的数据集 。然后,使用concat函数将这两个DataFrame对象合并为一个新的DataFrame(merged_df) 。最后,打印输出合并后的DataFrame 。
import polars as pl# 创建第一个DataFramedf1 = pl.DataFrame({'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'San Francisco', 'London']})# 创建第二个DataFramedf2 = pl.DataFrame({'name': ['Dave', 'Eve', 'Frank'],'age': [40, 45, 50],'city': ['Toronto', 'Paris', 'Sydney']})# 合并两个DataFramemerged_df = df1.concat(df2)# 打印输出合并后的DataFrameprint(merged_df) shape: (6, 3)┌─────────┬─────┬──────────────┐│ name┆ age ┆ city││ ---┆ --- ┆ ---││ str┆ i64 ┆ str│╞═════════╪═════╪══════════════╡│ "Alice" ┆ 25┆ "New York"│├─────────┼─────┼──────────────┤│ "Bob"┆ 30┆ "San Francisco" │├─────────┼─────┼──────────────┤│ "Charlie" ┆ 35┆ "London"│├─────────┼─────┼──────────────┤│ "Dave"┆ 40┆ "Toronto"│├─────────┼─────┼──────────────┤│ "Eve"┆ 45┆ "Paris"│├─────────┼─────┼──────────────┤│ "Frank" ┆ 50┆ "Sydney"│└─────────┴─────┴──────────────┘


推荐阅读