Polar的标志
表列数据是任何数据科学家的面包和主食。几乎所有的数据湖和仓库都使用数据表格来处理数据,并提取关键特征进行处理。最常用的数据制表方法之一是Dataframes。它们在收集和清理来自限定文本文件、电子表格和数据库查询的数据方面提供了灵活性。最常用的数据框架是Pandas,这是一个python包,对于有限的数据来说,它的表现足够好。然而,如果数据太大,Pandas无法处理,但对Spark等分布式文件管理系统来说又太小,怎么办?Polars试图弥补这一差距。
Polars是用Rust编写的,以获得更强大的性能,并使用Apache Arrow(2)作为内存模型。PyPolars(目前更新为Polars)是一个围绕Polars的python包装器。它有类似于Pandas的API,这使得它更容易过渡。
◆ 安装
安装Polars很简单。Polars可以用pip进行安装,方法如下。
代码语言:javascript复制pip install polars
不幸的是,Polars目前还不能在Anaconda上使用。如果情况发生变化,我们会进行更新。
免责声明:由于稳定版本尚未发布,创建并激活一个新的环境来安装Polars。
导入Polars和导入Pandas一样顺利。
代码语言:javascript复制import polars as pl
让我们来读一下Polars提供的其中一个数据集。
代码语言:javascript复制df = pl.read_csv('my_data.csv')
Polars的最新版本(v=0.8.10)支持csv、ipc、json、parquet和sql。
为了检查你的数据是否被加载,你可以像Pandas一样使用head。
代码语言:javascript复制df.head()
同样,最后10个条目,数据框架的形状和类型可以用以下代码检查。
代码语言:javascript复制df.tail(10)
df.shape
type(df)
目前的版本没有提供导入压缩分隔文件或读取文件前n行的选项。对于一个加载的Polars数据框架,describe和dtype提供了各列数据类型的信息。列名可以用df.columns检查。
df.describe()中的特征可以传递给Pandas,以便更好地显示与。
代码语言:javascript复制df.description().to_pandas()
◆ 访问表元素
Polars可以通过与pandas.DataFrame.iloc函数类似的行索引直接访问表的行,如下所示。
代码语言:javascript复制df[:10] #访问前十行。
列可以通过名称直接引用。
代码语言:javascript复制df['name'] #找到'name'列
可以通过向数据框架传递索引列表来选择指数。
代码语言:javascript复制df[[1,4,10,15], :]
可以使用内置函数slice来完成对索引的切分
代码语言:javascript复制df.slice(0,5) #从索引0和5行开始对df进行切片。
Polars还可以用条件布尔值对数据帧进行切片。
代码语言:javascript复制df[df['sale']>=10]
Polars也有.value_counts、.unique和.dtypes函数
代码语言:javascript复制df['name'].value_counts() #返回带有出现次数的唯一值
df['name'].unique() #返回列中唯一值的列表
df.dtypes() #返回数据类型
Polars也支持Groupby和排序。
代码语言:javascript复制df.groupby('country').sort('products',reverse=True)
Polars中的apply()和map()。
与Pandas类似,Polars支持.apply()和.map()函数。
代码语言:javascript复制df['value'].map(lambda x: 'high' if x>=5 else 'low')
df['values].apply(my_func)
唯一需要注意的是,字典不能被传递给这些函数。
代码语言:javascript复制mydict = {k:v for v,k in enumerate(df['catagories'].unique()) }
df['catagories'].map(mydict) #这将抛出一个错误
◆ 用Polars作图
Polars,就像Pandas一样,有内置的绘图功能。它还允许与Matplotlib和Seaborn集成。
代码语言:javascript复制import matplotlib.pyplot as plt
fig,ax=plt.subplots(figsize=(10,5))
ax.hist(df['name'])。
plt.show()
◆ Eager和Lazy的API
Polars的Eager和Lazy APIs
Polars(引申为Pandas)默认采用了Eager的运行,这意味着函数会实时映射到每个数据。但随着表的规模越来越大,Lazy的实现在加载和转换选定的值时更有效率。一个示例实现看起来如下。
代码语言:javascript复制from polars.lazy import *
lazy_df = pl.scan_csv('large_dataset.csv',ignore_erros=True)
filt_lazy_df = (lazy_df.filter(col('name').str_lengths() > 5).filter(col('country').str_contains(r'US-Germany-France').is_not()))
与Spark的Lazy 实现类似,filt_lazy_df是在调用collect函数时进行评估的。
代码语言:javascript复制lazy_df.collect()
如前所述,Polars最吸引人的地方是其转换大型数据集的能力。h2oai有不同数据集之间的基准性能表。根据该基准,在一个1,000,000,000x9的50GB文件上应用的。
◆ 最后的思考
Polars在对Pandas来说可能太大的非常大的数据集上有很好的前景,它的快速性能。它的实现与Pandas类似,支持映射和应用函数到数据框架中的系列。绘图很容易生成,并与一些最常见的可视化工具集成。此外,它允许在没有弹性分布式数据集(RDDs)的情况下进行Lazy评估。
总的来说,Polars可以为数据科学家和爱好者提供更好的工具,将数据导入到数据框架中。有很多Pandas可以做的功能目前在Polars上是不存在的。在这种情况下,强烈建议将数据框架投向Pandas。
来源:
https://www.toutiao.com/a7066136701642719783/?log_from=4ae1bc3f027ee_1645423841536
“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com
来都来了,走啥走,留个言呗~
IT大咖说 | 关于版权
由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!
感谢您对IT大咖说的热心支持!
- 相关推荐
- 推荐文章
- 整洁架构、DDD 和 CQRS 简介
- 2022技术趋势预测,Python、Java占主导,Rust、Go增长迅速,元宇宙成为关注焦点
- 400 行 C 代码实现一个虚拟机
- 如何通过查询实施数据解放?
- 什么是流式SQL,它有什么用?
- 卷起来了!手把手带你写一个中高级程序员必会的分布式RPC框架
- 大数据技术SpringBoot框架---实现前后端分离(MVC)对数据进行可视化
- 2021年11个最佳无代码/低代码后端开发利器
- 事件驱动的基于微服务的系统的架构注意事项
- 2022年的五个大数据趋势