从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望
我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。
在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。
这篇文章旨在检验我的预测能力。但我也写这篇文章是为了引发关于关键趋势的讨论,并帮助数据科学家思考他们在未来几年应该发展的技能。
注意事项
- 这篇文章是从一个传统上以Pandas进行探索性数据分析,然后将分析结果以无服务器函数形式进行生产化的工作者的角度出发。生产阶段可能涉及机器学习模型,但也可能是一组定义好的规则和正则表达式。
- 我的经验也包括作为研究科学家在集群上运行大规模分析,而不涉及任何无服务器生产阶段。
预测一:Polars 和 DuckDB 将取代 Pandas 作为表格数据的核心工具
随着性能上相比 Pandas 的巨大飞跃,Polars 和 DuckDB 将成为 Python 中数据分析的标准工具。这一转变已经从那些感受到最大性能压力的用户开始,但随着它们周围生态系统的发展,它们将成为标准。
然而,这些工具的优势并不仅仅在于它们计算速度有多快。Polars 的表达式语法比 Pandas 中相应的语法更适合描述数据转换。这两个库都应用了自动查询优化,避免了 Pandas 代码越来越繁琐的手动优化。它们还都处理了并行化和大于内存的数据,而无需其他无数依赖项。
我认为 Polars 和 DuckDB 将成为双寡头,而不是其中之一取代 Pandas 成为垄断者。尽管这两个库的功能有很多重叠,但有些人会想要一个像 DuckDB 这样的工具,它拥有更多关系型数据库的陷阱,而有些人则不会。
预测二:Arrow 将成为数据科学生态系统的核心技术
Apache Arrow 是一种用于表示内存中数据的格式。Arrow 的设计是语言无关的,并且许多语言中都出现了实现这种格式的库。
Polars 是直接基于名为 Arrow2 的 Rust Arrow 库构建的。DuckDB 并不是基于 Arrow 构建的,但它可以从 Arrow 数据中进行零拷贝读取。
Arrow 将取代 Numpy 数组在数据科学生态系统中表格数据的核心地位。这意味着可视化、机器学习和其他库将接受 Arrow 对象作为输入。由于 Arrow 允许零拷贝数据交换,这些库将能够直接从数据框中直接摄取数据,而无需像现在这样进行大量浪费性的数据复制。
随着 Arrow 使得进程间通信更加容易,我们还将看到数据科学工具的融合,例如在 Python 脚本中拟合 R 模型。
在这方面,变革的步伐比 Polars 和 DuckDB 的采用要慢一些。然而,变革的步伐正在加快。例如,XGBoost 模型现在接受 Arrow 表作为输入,而 Huggingface 的 Datasets 库则使用 Arrow 作为其本地缓存系统。
预测三:Rust 化的趋势
在数据科学蓬勃发展的十年里,我所在领域的日常工作主要由像 Python 这样的动态语言或像 R 和 Julia 这样使用即时编译的语言主导。虽然像 C 和 C++ 这样的编译型语言被用于 Python 扩展或 DuckDB 的内部,但很少有数据科学家直接使用它们。
我预测 Rust 将成为数据科学家常用的第一种预编译语言(而不会取代 Python 和 R 作为主要语言)。Rust 在数据科学家中的普及将受到 Polars 的推动,用户会发现从使用 Python 切换到 Rust API 的门槛相对较低——比从 Pandas 切换到 C 的门槛要低得多!
我们还将看到更多基于 Rust 构建的库,这些库将提供 Python 和 R 的 API。特别是,我认为我们将看到一个广泛使用的、用 Rust 编写并基于 Apache Arrow 的 Scikit-Learn 替代品。
在过去的几个月里,我在 Polars 的工作中明显感受到了 Rust 的优势。相比 Python,Rust 在性能上的提升是巨大的,并且并行化得到了可靠的管理。然而,Rust 周围的现代工具系统,如用于管理依赖项的 Cargo,使得 Rust 对于 Python 开发者来说比旧语言更容易接受。我之所以决定将精力集中在 Polars 而不是 DuckDB 上,其中一个因素就是我对学习 Rust 的热情远超过学习 C++。
关于GPU
我最近将Polars描述为地球上最快的数据科学工具。然而,一位受访者正确地指出,基于GPU的库(如cuDF)更快。但是,使用GPU的额外成本很高,包括GPU本身的成本以及管理额外云实例的成本。
GPU在数据处理方面的流行度将继续增长,但在未来几年内不会成为标准方法。随着Polars和DuckDB通过内置并行化和矢量化指令更高效地利用多核CPU,只有高级用户才会觉得使用GPU的成本效益是合理的。
相关文章:
从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望
我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。 在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…...
【postgresql】pg_dump备份数据库
pg_dump 介绍 pg_dump 是一个用于备份 PostgreSQL 数据库的实用工具。它可以将数据库的内容导出为一个 SQL 脚本文件或其他格式的文件,以便在需要时进行恢复或迁移。 基本用法 pg_dump [选项] [数据库名] 命令选项 -h 或 --host:指定数据库服务器的主…...
服务器的80和443端口关闭也能申请SSL证书
一、简介 在服务器的80和443端口关闭的情况下,确实可以申请SSL证书,但申请过程和方法会根据证书类型和验证方式的不同而有所差异。 通常如果是网站域名申请SSL证书,哪怕服务器的80、443端口都打不开,也可以通过DNS解析的方式来验…...
Odoo17应用、模型、字段
新建最简应用 先启用开发人员模式。 新建一个没有菜单项的空壳应用(模块/插件): 必须至少包含 2 个文件: __manifest__.py 文件和文件 __init__.py 。 该 __init__.py 文件目前可以保持为空,我们将在下一章中返回。另一方面,该…...
Airtest的控制手机滑动位置偏差修正方法总结
提起Airtest的控制手机滑动位置,就会想起swipe,因为这种方法比较常见,对于没有精度控制的朋友完全够用, 我现在遇到精度控制时,大家都觉得精度不够,现在我对滑动精度控制,找到比较好的方法&…...
【机器学习】Grid Search: 一种系统性的超参数优化方法
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 Grid Search: 一种系统性的超参数优化方法引言什么是Grid Search?Gr…...
Laravel Passport:API认证的瑞士军刀
Laravel Passport:API认证的瑞士军刀 在现代Web应用中,API的安全认证是一个核心问题。Laravel Passport提供了一个全面的解决方案,用于构建OAuth2.0认证服务器。它使得API的认证变得简单而强大,支持多种认证方式,包括…...
SpringBoot Bean管理
我们知道可以通过Spring当中提供的注解Component以及它的三个衍生注解(Controller、Service、Repository)来声明IOC容器中的bean对象,同时我们也学习了如何为应用程序注入运行时所需要依赖的bean对象,也就是依赖注入DI。 本篇主要…...
Qt5.12.2安装教程
文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置,添加临时储存库,复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试࿰…...
2024年大数据高频面试题(中篇)
文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…...
Python编程工具PyCharm和Jupyter Notebook的使用差异
在编写Python程序时需要用到相应的编程工具,PyCharm和Jupyter Notebook是最常用2款软件。 PyCharm是很强大的综合编程软件,代码提示、代码自动补全、语法检验、文本彩色显示等对于新手来说实在太方便了,但在做数据分析时发现不太方便…...
顶顶通呼叫中心中间件-被叫路由、目的地绑定(mod_cti基于FreeSWITCH)
顶顶通呼叫中心中间件-被叫路由、目的地绑定(mod_cti基于FreeSWITCH) 1、配置分机 点击分机 -> 找到你需要设置的分机 ->呼叫路由设置为external,这里需要设置的分机是呼叫的并不是坐席的分机呼叫路由 2、配置拨号方案 点击拨号方案 -> 输入目的地绑定 …...
【数据集处理工具】根据COCO数据集的json标注文件实现训练与图像的文件划分
根据COCO数据集的json标注文件实现训练与图像的文件划分 一、适用场景:二、COCO数据集简介:三、场景细化:四、代码优势:五、代码 一、适用场景: 适用于一个常见的计算机视觉项目应用场景,特别是当涉及到使…...
vue 如何做一个动态的 BreadCrumb 组件,el-breadcrumb ElementUI
vue 如何做一个动态的 BreadCrumb 组件 el-breadcrumb ElementUI 一、ElementUI 中的 BreadCrumb 定义 elementUI 中的 Breadcrumb 组件是这样定义的 <template><el-breadcrumb separator"/"><el-breadcrumb-item :to"{ path: / }">主…...
FFmpeg播放视频
VS2017+FFmpeg6.2.r113110+SDL2.30.5 1.下载 ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC++控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下,并设置调试命令...
重叠区间的求和
#摘抄 GetGeneLength/src/GetGeneLength/GetGeneLength.py at main PoShine/GetGeneLength GitHub def main(): """ Extract gene length based on featureCount calculation gene nonredundant exon length method. """ # 引…...
java包装类 及其缓存
Java 包装类(Wrapper Class)是将基本数据类型转换为对象的方式,每个基本数据类型在 java.lang 包中都有一个相应的包装类: Boolean 对应基本类型 boolean Character 对应基本类型 char Integer 对应基本类型 int Float 对应基本…...
大龄程序员的出路在哪里?
对于许多资深程序员而言,年龄并非职业发展的桎梏,反而如同陈年的美酒,随着时间的流逝愈发醇厚。他们手握的是丰富的经验和不断进阶的技能,而这些都为他们打开了职业发展的无数扇大门。让我们一同探索这些令人心动的可能性吧&#…...
Unity不用脚本实现点击按钮让另外一个物体隐藏
1.首先在场景中创建一个按钮和一个其他随便什么东西 2.点击按钮中的这个加号 3.然后将刚刚你创建的物体拖到这里来 4.然后依次点击下面这些给按钮绑定事件 5.运行游戏并点击按钮,就会发现拖进来的物体消失了 总结:如果按钮的功能单一,可以使用…...
RAG技术-为自然语言处理注入新动力
引言: 在自然语言处理(NLP)的领域中,RAG(Retrieval-Augmented Generation)技术以其独特的方式,正在改变我们与机器的交互方式。RAG技术结合了大语言模型的强大能力,使得机器在理解和…...
Docker安装ELK(简易版)
1、下载ELK镜像:打开终端,并执行以下命令以下载Elasticsearch、Logstash和Kibana的Docker镜像。您也可以根据需要选择其他版本: docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.6 docker pull docker.elastic.co/logstash…...
WPF项目实战视频《一》(主要为WPF基础知识)
1.WPF布局: Grid,stackPanel,wrapPanel,DockPanel,UniformGrid Grid 按行列布局, Grid.ColumnDefinitions列,Grid.RowDefinitions行 Grid.Row“0” Grid.Column“0” stackPanel 默认从上往下排…...
iOS ------ ARC的工作原理
一,ARC的概念 ARC (Automatic Reference Counting,自动引用计数) 是苹果公司在其编程语言(如 Objective-C 和 Swift)中的内存管理机制。ARC 通过编译器插入的代码自动管理对象的内存生命周期,减少了手动内存管理的复杂…...
【React】JSX基础
一、简介 JSX是JavaScript XML的缩写,它是一种在JavaScript代码中编写类似HTML模板的结构的方法。JSX是React框架中构建用户界面(UI)的核心方式之一。 1.什么是JSX JSX允许开发者使用类似HTML的声明式模板来构建组件。它结合了HTML的直观性…...
1分钟带你了解苹果手机删除照片恢复全过程
在日常使用苹果手机时,我们可能会不小心删除掉一些重要的照片,这让人非常烦恼。那么苹果手机怎么恢复删除的照片?下面小编将会向大家介绍苹果手机恢复删除的照片的方法,帮助大家轻松找回你丢失的照片。 一、利用“最近删除”文件夹…...
Ruby爬虫技术:深度解析Zhihu网页结构
在互联网时代,数据的价值日益凸显,尤其是在社交媒体和问答平台如Zhihu(知乎)上,用户生成的内容蕴含着丰富的信息和洞察。本文将深入探讨如何使用Ruby爬虫技术来解析Zhihu的网页结构,并获取有价值的数据。 …...
python中的re模块--正则表达式
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科 学的一个概念。正则表达式通常被用来检索、替换那些符合某个模 式(规则)的文本 re模块作用 通过使用…...
sqlalchemy反射视图
sqlalchemy反射视图 一个名为my_view的视图,使用SQLAlchemy来操作这个视图 from sqlalchemy import create_engine, MetaData# 创建数据库连接 engine = create_engine(数据库连接字符串)# 创建一个MetaData对象 metadata = MetaData()# 反射视图 metadata.reflect(bind=eng…...
最新版康泰克完整版- Kontakt v7.10.5 for Win和Mac,支持m芯片和intel,有入库工具
一。世界最受欢迎的采样器的新篇章 Native Instruments Kontakt是采样器领域的标准,您将获得高质量的滤波器,在这里您将找到经典的模拟电路和最现代的滤波器。每一个都可以根据您的口味进行定制,并且由于它,您可以获得前所未有的声…...
spring boot(学习笔记第十三课)
spring boot(学习笔记第十三课) 传统后端开发模式和前后端分离模式的不同,Spring Security的logout,invalidateHttpSession不好用,bug? 学习内容: 传统后端开发模式 vs 前后端分离模式Spring Security的logout功能inv…...
国外 网站 源码/如何进行网络推广营销
SQL JOIN SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。 数据库中的表可通过键将彼此联系起来。主键(Primary Ke…...
哈尔滨网站建设效果/网站seo文章
有时候远程仓库的密码修改了,用pycharm提交时就不会成功(因为本地没修改密码),给一张图,你们自己体会吧...
石家庄企业网站建设价格/英文网站建设
由于使用的是云主机,用键盘操作的话,只能打开本地的,所以底下的操作只用鼠标点击打开windows2012r2“桌面图标设置”窗口的命令如下rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0当然要是本地的话,直接 “windows键” “r…...
做网站賺钱/营销推广方式都有哪些
这篇博客很水……因为本来就没有多少东西能写qwq 正题 在一些网络流的题目中,我们会遇到这样一类问题:跑完网络流之后,要加减一丢丢边,然后问你最大流(最大费用)。 如果因为这一丢丢的改动就去重新建图跑…...
让wordpress图片和头像延迟加载/品牌营销策略
以下是函数代码:/*** 修改一个图片 让其翻转指定度数** param string $filename 文件名(包括文件路径)* param float $degrees 旋转度数* return boolean* author zhaocj*/function flip($filename,$src,$degrees 90){//读取图片$data getimagesize($filename);if…...
现在的网站前端用什么做/windows优化大师的特点
File --> Others Settings --> Default Settings 转载于:https://www.cnblogs.com/fangwu/p/8932847.html...