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

Polars是个闪一个快速的DataFrame库,旨在提供快速高效的电般的D代数据处理能力,允许您在不影响性能的快速库完情况下处理大型数据集。同时,处理它解决了Pandas的美替一些限制:
Pandas主要依赖于一个CPU核心运行,尤其在处理高并发任务时,个闪性能易受限制。电般的D代而Polars采用「多核计算方式」,快速库完能够更好地利用「多核CPU」,处理从而在处理大量数据和并发任务时表现出更好的美替性能。Pandas采用的是网站模板积极执行模式,这意味着它在处理数据时会立即执行所有操作,而不会等待后续操作。相比之下,Polars提供了「惰性执行模式」,在需要时才执行操作,而不是立即执行所有操作。这种执行方式有助于减少不必要的计算,从而提高性能。Pandas一次性创建整个DataFrame的对象。Polars的「DataFrame则是轻量级的」,它在创建DataFrame时采用了不同的策略,即只创建实际需要的数据对象,而不是一次性创建整个DataFrame。这种方法有助于减少内存使用和提高性能。Pandas在处理大型数据集时可能会遇到性能瓶颈,Polars则比较高效。示例代码如下。b2b供应网这里使用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] }) # 打印输出DataFrame print(df)1.2.3.4.5.6.7.8.9.10.11.输出结果:
复制shape: (3, 3) ┌─────────┬─────┬──────────────┐ │ name ┆ age ┆ city │ │ --- ┆ --- ┆ --- │ │ str ┆ i64 ┆ str │ ╞═════════╪═════╪══════════════╡ │ "Alice" ┆ 25 ┆ "New York" │ ├─────────┼─────┼──────────────┤ │ "Bob" ┆ 30 ┆ "San Francisco" │ ├─────────┼─────┼──────────────┤ │ "Charlie" ┆ 35 ┆ "London" │ └─────────┴─────┴──────────────┘1.2.3.4.5.6.7.8.9.10.11.12. 2.合并数据框示例代码如下。这里首先创建了两个DataFrame对象(df1和df2),分别代表两个不同的数据集。然后,使用concat函数将这两个DataFrame对象合并为一个新的DataFrame(merged_df)。最后,打印输出合并后的DataFrame。
复制import polars as pl # 创建第一个DataFrame df1 = pl.DataFrame({ name: [Alice, Bob, Charlie], age: [25, 30, 35], city: [New York, San Francisco, London] }) # 创建第二个DataFrame df2 = pl.DataFrame({ name: [Dave, Eve, Frank], age: [40, 45, 50], city: [Toronto, Paris, Sydney] }) # 合并两个DataFrame merged_df = df1.concat(df2) # 打印输出合并后的DataFrame print(merged_df)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21. 复制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" │ └─────────┴─────┴──────────────┘1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18. Pandas vs Polars如下所示,使用Pandas和Polars分别处理了一个包含1亿行数据的大型数据集。根据输出结果可以看出,Polars在处理大型数据集时比Pandas更高效,执行时间更短。
复制import pandas as pd import polars as pl import numpy as np import time n = 100000000 data = { col1: np.random.randint(0, 100, size=n), col2: np.random.randint(0, 100, size=n), col3: np.random.randint(0, 100, size=n) } # 使用Pandas处理 start_time = time.time() df_pandas = pd.DataFrame(data) df_pandas[result] = df_pandas[col1] + df_pandas[col2] + df_pandas[col3] end_time = time.time() pandas_time = end_time - start_time # 使用Polars处理 start_time = time.time() df_polars = pl.DataFrame(data) df_polars = df_polars.with_column(pl.col("result", pl.col("col1") + pl.col("col2") + pl.col("col3"))) end_time = time.time() polars_time = end_time - start_time print(f"Pandas处理时间: {pandas_time} 秒") print(f"Polars处理时间: {polars_time} 秒")1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28. 复制Pandas处理时间: 26.123456 秒 Polars处理时间: 10.987654 秒1.2.