首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Polars数据分析 - 快如闪电的全新体验

Excel报表再也满足不了你的数据分析需求?Pandas运行速度慢,无法处理更大规模的数据?想找到一个更快更高效的工具来加速数据处理流程?那么Polars绝对是你的最佳选择!可以毫不夸张的说Polars无疑是最近两年在Kaggle,各类数据科学社区中最常被提及的数据分析库。从Github中星标对比我们就可以看出Polars是当之无愧的黑马,自从2022年异军突起后就大有在未来2年超越Pandas和Spark的趋势!

Polars作为新一代数据分析库,它具有以下优势:

性能强大,可以轻松处理GB级大数据

运算速度明显快于Pandas,部分场景下提速超过10倍

占用内存更少,降低系统资源消耗

下图是DuckDb的开发人员做的一个性能对比,开发人员使用了50G的数据集来进行对比,其中的Pandas选用了最新的2.0版本,而Polars选用了0.16.18版本(最新版为0.19.7,性能还有提升)。从对比数据可以看出Pandas已经无法胜任,而Polars处理50G数据毫无压力!

同样的我自己也使用如下代码构建了一个模拟数据1千万行的数据集,在自己的计算机上针对读,写文件,排序,分组等进行了简单对比测试(注意这里我还没有使用Polars的懒加载模式,如果使用该方式性能更高!!)

def create_dataframe(n_rows, library): if library == 'pandas': data = { 'name': np.random.choice(['Alice', 'Bob', 'Charlie', 'David', 'Eva'], n_rows), 'age': np.random.randint(18, 65, size=n_rows), 'city': np.random.choice(['New York', 'San Francisco', 'Los Angeles'], n_rows), 'income': np.random.normal(50000, 10000, size=n_rows), 'gender': np.random.choice(['Male', 'Female'], n_rows), 'is_married': np.random.choice([True, False], n_rows), 'children': np.random.randint(0, 5, size=n_rows), 'zip_code': np.random.randint(10000, 99999, size=n_rows), 'interest_rate': np.random.uniform(0, 0.1, size=n_rows), 'is_default': np.random.choice([True, False], n_rows) } return pd.DataFrame(data)

elif library == 'polars': data = { 'name': np.random.choice(['Alice', 'Bob', 'Charlie', 'David', 'Eva'], n_rows).astype('str'), 'age': np.random.randint(18, 65, size=n_rows).astype('int'), 'city': np.random.choice(['New York', 'San Francisco', 'Los Angeles'], n_rows).astype('str'), 'income': np.random.normal(50000, 10000, size=n_rows).astype('float'), 'gender': np.random.choice(['Male', 'Female'], n_rows).astype('str'), 'is_married': np.random.choice([True, False], n_rows).astype('bool'), 'children': np.random.randint(0, 5, size=n_rows).astype('int'), 'zip_code': np.random.randint(10000, 99999, size=n_rows).astype('str'), 'interest_rate': np.random.uniform(0, 0.1, size=n_rows).astype('float'), 'is_default': np.random.choice([True, False], n_rows).astype('bool') } return pl.DataFrame(data)

最终我自己的计算机上的对比结果如下,从图中可以看出除了创建数据文件以外,Polars相比Pandas的性能都是成倍的提升,最少达到2倍,最高达到了30倍!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OKP5arYh8baZskV9QKr02pew0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券