值得与Python结合使用的五个新颖的数据科学工具

译者 | 布加迪
Python/ target=_blank class=infotextkey>Python庞大的数据科学工具生态系统对用户有很大的吸引力 。生态系统如此庞大而丰富的唯一缺点是 , 有时最好的工具可能会被忽视 。

值得与Python结合使用的五个新颖的数据科学工具

文章插图
下面介绍了其中几款面向Python的最优秀的或不太知名的数据科学项目 。Polars等一些项目得到了比以前更多的关注 , 但依然值得更广泛的关注 , ConnectorX等其他工具则是隐藏的瑰宝 。
1.ConnectorX【值得与Python结合使用的五个新颖的数据科学工具】大部分数据位于数据库的某个地方 , 但计算操作通常在数据库外面进行 。为实际工作从数据库倒腾数据可能会减慢速度 。ConnectorX将数据从数据库加载到Python中的许多常见数据整理工具中 , 并通过尽量减少要完成的工作量来保持高速度 。
像后面讨论的Polars一样 , ConnectorX在其核心使用Rust库 。这便于优化 , 比如说能够在分区的同时从数据源加载数据 。PostgreSQL中的数据可以通过指定分区列来加载 。
除了PostgreSQL外, ConnectorX还支持从MySQL/MariaDB、SQLite、Amazon Redshift、Microsoft SQL Server、Azure SQL以及Oracle读取数据 。结果可以汇集到Pandas或PyArrow , 或者通过PyArrow汇集到Modin、Dask或Polars 。
2.DuckDB使用Python的数据科学人员应该了解SQLite , 这是一种用Python打包的小巧、但功能强大且快速的关系数据库 。由于它作为进程内库来运行、而不是作为单独的应用程序来运行 , 因此属于轻量级 , 且响应迅速 。
DuckDB有点像有人回答这个问题:“如果我们设计面向OLAP的SQLite , 会怎么样?”与其他OLAP数据库引擎一样 , 它使用列式数据存储 , 并针对长时间运行的分析查询工作负载进行了优化 。但是它提供了您期望从传统数据库获得的所有功能 , 比如ACID事务 。而且没有单独的软件套件需要配置 。您使用单单一个pip install命令 , 即可在Python环境中让它运行起来 。
DuckDB可以直接摄取采用CSV、JSON或Parquet格式的数据 。为了提高效率 , 还可以根据键(比如按年和按月)将生成的数据库划分为多个物理文件 。查询起来与任何其他基于SQL的关系数据库相似 , 但拥有额外的内置特性 , 比如能够获取数据的随机样本或构造窗口函数 。
DuckDB还有一小批实用的扩展 , 包括全文搜索、Excel导入/导出、直接连接到SQLite和PostgreSQL、Parquet文件导出以及支持许多常见的地理空间数据格式和类型 。
3.Optimus最繁琐的工作之一就是清理和准备数据 , 用于以DataFrame为中心的项目 。Optimus是一种一体化工具集 , 可用于加载、探索和清理数据 , 以及将数据写回众多数据源 。
Optimus可以使用Pandas、Dask、CUDF(及Dask + CUDF)、Vaex或Spark作为底层数据引擎 。数据可以从Arrow、Parquet、Excel、各种常见的数据库源或平面文件格式(比如CSV和JSON)加载 , 并保存成这些格式 。
数据操作API类似Pandas , 但添加了.rows()和.cols()访问器 , 以便易于执行对数据框排序、按列值筛选、根据标准更改数据或根据某些标准缩小操作范围之类的操作 。Optimus还随带处理器 , 用于处理常见的实际数据类型 , 比如电子邮件地址和URL 。
Optimus可能存在的一个问题是 , 它仍在积极开发中 , 但上一次正式发布是在2020年 。这意味着它可能不像您堆栈中的其他组件那样是最新的 。
4.Polars如果您花费大量时间来处理DataFrame , 并且对Pandas的性能限制感到沮丧 , 不妨使用Polars 。这个面向Python的DataFrame库提供了类似Pandas的便捷语法 。
不过与Pandas不同的是 , Polars使用了一个用Rust编写的库 , 可以直接最大限度地利用您的硬件 。您不需要使用特殊语法来利用并行处理或SIMD等提升性能的功能 , 都是自动可以利用的 。就连像从CSV文件读取这样的简单操作也更快了 。
Polars还提供了即时和延迟执行模式 , 因此查询可以立即执行 , 也可以延迟到需要时执行 。它还提供了流式API , 用于增量处理查询 , 不过许多函数还不能使用流式API 。而Rust开发人员可以使用pyo3制作自己的Polars扩展 。
5.Snakemake数据科学工作流很难建立 , 更难以一致的、可预测的方式建立 。Snakemake的创建就是为了实现这一点:在Python中自动建立数据分析机制 , 同时确保其他人都能得到与您相同的结果 。许多现有的数据科学项目都依赖Snakemake 。数据科学工作流中的不定因素越多 , 您就越有可能受益于用Snakemaker自动化处理工作流 。


推荐阅读