极地在熊猫的轻松度和Spark的尺度之间占据了甜点。
如果你曾等待过一个组合或诅咒过一个内存错误,这个作弊单是给你的。
而不是玩具的例子。
在您下次 ETL 运行前将此书签 。
设置和基础第一,获得极地和数据集.
懒惰的API是现在的默认,所以你很少需要明确拨打.lazy().
从 CSV 或 Parquet 文件开始, 或者从头创建 DataFrame 。 pip 安装极地 pyarrow 导入极地作为 pl df = pl.read csv ('data.csv') # 或 pl.read parquet () df = pl.
DataFrame ({'a': [1, 2], 'b': ['x','y']) 选择和过滤极地使用表达式,而不是字符串.
一开始感觉很奇怪,但当你连锁操作时会有所回报。
语法一致:每个列都是可以转换,过滤,或聚合的表达式. df.select(['a','b']) #列按名称为df.select(pl.col ('a').alias ('renamed')) df.filter (pl.col ('a') > 10) df.filter (p.col ('b').is in (['x','z']) df.filter (p.col ('a').is null ()) 变形数据极的表达式是可相容的.
你可以筑巢,再利用,甚至把它们储存在变量中.
图书馆就在这里为熊猫放光. df. with coluins(pl.col ('a').cast(pl.Float64)) df. with coluins(pl.col ('a').fill null (0)) df. with coluins ((pl.col ('a') * 2.alias ('a doubled')) df. with coluins (p.col ('''.'.str.to uppercase ()) df. with coluins (pl.col (').is col (' ('a'.)) 极地组群和群群群之间('10,20') 默认懒惰.
这意味着可以堆放多个汇总而不实现中间结果.
语法是干净的,但注意操作顺序. df.group by ('b'). agg (pl.col ('a'. sum ()). df.group by ('b'). agg ([pl.col ('a'.max ()]). df.group by ('b'. agg (p.col ('a'.). quantile (0.9)). df.group by 动态 ('timp', every='1d'). agg (p.col ('a'. sum ())) 加入和加入极地是明确的。
您将指定加盟类型和加入的列 。
凝聚是直截了当的,但请记住,极地对策略相配是严格的. df.join(其他, on='key', how='in') df.join(其他,on='key', how='left') df.hstack([他]) #列向 df.vstack([他]) #列向 pl.concat([df1,df2], how='diagonal') #计划安全联盟 性能提示极地速度快,但你可以让它更快.
懒惰的API是你的朋友。
使用它的任何管道 长于几次操作。
另外,避免Python循环.
极地表达式被矢量化了,所以让引擎来做工作.
将.lazy()和.collect()用于多步骤的管道.
更喜欢CSV的i/O。
它的速度越来越快。
使用 columns () 而不是多个 .select () 调用 。
除非绝对有必要,否则应避免.apply().
先使用表达式.
设置 pl.Config.set fmt str 长( 100) 以在调试输出中看到完整的字符串 。
调试和检查极地有很好的调试工具. .解释 () 方法显示查询计划,这对优化懒惰管道是十分宝贵的.
快速检查时,使用.head()或.sample(..df.head(5)#前5行df.sample(5)#随机5行df.decript ()#汇总统计df.schema#列名和懒惰-df.explain ()#查询计划 懒惰DataFrames Polars不会取代熊猫进行每一项任务,但它是大多数数据管道的正确工具.
语法取一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出一出.
一旦点击,你会写得更快、更干净的代码。
保持这个骗局的方便,直到模式停止。
这篇文章最初刊登在我的网站上。
阅读全文及更多