Python Polars: The Definitive Guide
Python Polars: The Definitive Guide
Jeroen Janssens, Thijs Nieuwdorp
陈松 译
出版时间:2025年12月
页数:407
“Polars已成为Python数据生态中一颗冉冉升起的新星,展现了新一代DataFrame库的无限潜力。Jeroen和Thijs撰写的这本及时而权威的指南,可帮助读者充分挖掘Polars的强大功能,尽享其带来的便利。”
——Wes McKinney
pandas创始人及Posit PBC首席架构师

Polars是一款功能强大的Python工具包,可用于数据转换、分析与可视化。通过这本实践指南,Jeroen Janssens和Thijs Nieuwdorp将带你深入探索Polars的每一项功能,展示如何将其应用于数据整理、探索性数据分析、构建数据管道等实际任务。
无论你是资深数据从业者还是数据科学新人,都能快速掌握Polars强大的API及其核心概念。你无须具备pandas使用经验,但如果有相关基础,本书将帮助你平滑过渡到Polars。书中大量实用示例和真实数据集可在GitHub上获取,,方便你同步操作。
通过学习本书,你将能够:
● 处理来自CSV、Parquet、电子表格、数据库及云平台的数据。
● 深入理解表达式——查询的核心构建块。
● 处理复杂数据类型,包括文本、时间及嵌套结构。
● 灵活运用即时API与惰性API。
● 使用Altair、hvPlot、plotnine和Great Tables实现数据可视化。
● 通过自定义Python函数和Rust插件扩展Polars功能。
● 利用GPU加速,实现性能突破。
  1. 前言
  2. 第一篇 基础
  3. 第1章 Polars简介
  4. 1.1 Polars技术解析
  5. 1.1.1 核心特性
  6. 1.1.2 核心概念
  7. 1.1.3 技术优势
  8. 1.2 使用Polars的理由
  9. 1.2.1 性能
  10. 1.2.2 易用性
  11. 1.2.3 流行度
  12. 1.2.4 可持续性
  13. 1.3 对比Polars与其他数据处理工具
  14. 1.4 聚焦Python Polars
  15. 1.5 本书内容结构
  16. 1.6 ETL示例
  17. 1.6.1 数据抽取
  18. 1.6.2 附加环节:可视化街区与站点分布
  19. 1.6.3 数据转换
  20. 1.6.4 附加环节:各行政区每日行程可视化
  21. 1.6.5 数据加载
  22. 1.6.6 附加环节:使用惰性求值加速计算
  23. 1.7 小结
  24. 第2章 Polars入门
  25. 2.1 配置环境
  26. 2.1.1 下载项目
  27. 2.1.2 安装uv
  28. 2.1.3 安装项目
  29. 2.1.4 虚拟环境操作指南
  30. 2.1.5 验证安装
  31. 2.2 JupyterLab快速入门
  32. 2.3 在其他项目中安装Polars
  33. 2.3.1 所有可选依赖项
  34. 2.3.2 数据交互依赖项
  35. 2.3.3 表格处理依赖项
  36. 2.3.4 数据库依赖项
  37. 2.3.5 远程文件系统依赖项
  38. 2.3.6 其他I/O格式依赖项
  39. 2.3.7 扩展功能依赖项
  40. 2.3.8 安装可选依赖项
  41. 2.4 配置Polars
  42. 2.4.1 使用上下文管理器实现临时配置
  43. 2.4.2 使用装饰器进行本地配置
  44. 2.5 从源码编译Polars
  45. 2.5.1 特殊情况:超大型数据集
  46. 2.5.2 特殊情况:不支持AVX的处理器
  47. 2.6 小结
  48. 第3章 从pandas到Polars
  49. 3.1 动物数据集
  50. 3.2 共同之处
  51. 3.3 外观差异
  52. 3.3.1 代码层面的差异
  53. 3.3.2 数据展示差异
  54. 3.4 需要摒弃的概念
  55. 3.4.1 索引
  56. 3.4.2 数据轴
  57. 3.4.3 索引与切片
  58. 3.4.4 即时求值
  59. 3.4.5 宽松性
  60. 3.5 需要摒弃的语法
  61. 3.6 与pandas互操作
  62. 3.7 小结
  63. 第二篇 数据形态
  64. 第4章 数据结构和数据类型
  65. 4.1 Series、DataFrame与LazyFrame
  66. 4.2 数据类型
  67. 4.2.1 嵌套数据类型
  68. 4.2.2 缺失值
  69. 4.3 数据类型转换
  70. 4.4 小结
  71. 第5章 即时API和惰性API
  72. 5.1 即时API:DataFrame
  73. 5.2 惰性API:LazyFrame
  74. 5.3 性能对比
  75. 5.4 功能差异
  76. 5.4.1 属性
  77. 5.4.2 聚合方法
  78. 5.4.3 计算方法
  79. 5.4.4 描述方法
  80. 5.4.5 分组方法
  81. 5.4.6 导出方法
  82. 5.4.7 操作与选取方法
  83. 5.4.8 其他方法
  84. 5.5 技巧与窍门
  85. 5.5.1 在LazyFrame与DataFrame间转换
  86. 5.5.2 连接DataFrame与LazyFrame
  87. 5.5.3 缓存中间结果
  88. 5.6 小结
  89. 第6章 读取和写入数据
  90. 6.1 格式概览
  91. 6.2 读取CSV文件
  92. 6.3 正确解析缺失值
  93. 6.4 读取非UTF-8编码文件
  94. 6.5 读取Excel电子表格
  95. 6.6 处理多个文件
  96. 6.7 读取Parquet文件
  97. 6.8 读取JSON与NDJSON文件
  98. 6.8.1 JSON
  99. 6.8.2 NDJSON
  100. 6.9 其他文件格式
  101. 6.10 数据库查询
  102. 6.11 写入数据
  103. 6.11.1 CSV格式
  104. 6.11.2 Excel格式
  105. 6.11.3 Parquet格式
  106. 6.11.4 其他考量
  107. 6.12 小结
  108. 第三篇 表达式
  109. 第7章 表达式入门
  110. 7.1 方法与命名空间
  111. 7.2 表达式应用示例
  112. 7.2.1 用表达式选取列
  113. 7.2.2 用表达式创建新列
  114. 7.2.3 用表达式过滤行
  115. 7.2.4 用表达式进行聚合
  116. 7.2.5 用表达式对行排序
  117. 7.3 表达式的定义
  118. 7.4 创建表达式
  119. 7.4.1 基于现有列创建表达式
  120. 7.4.2 通过字面值创建表达式
  121. 7.4.3 基于数值范围创建表达式
  122. 7.4.4 通过其他函数创建表达式
  123. 7.5 重命名表达式
  124. 7.6 表达式属于惯用法
  125. 7.7 小结
  126. 第8章 表达式扩展
  127. 8.1 操作类型
  128. 8.1.1 示例A:元素级操作
  129. 8.1.2 示例B:单值汇总操作
  130. 8.1.3 示例C:多值汇总操作
  131. 8.1.4 示例D:数据扩展操作
  132. 8.2 元素级操作
  133. 8.2.1 执行数学变换操作
  134. 8.2.2 三角函数相关操作
  135. 8.2.3 圆整与分类操作
  136. 8.2.4 处理缺失值与无限值操作
  137. 8.2.5 其他操作
  138. 8.3 非归约型Series级操作
  139. 8.3.1 累积型操作
  140. 8.3.2 填充与偏移操作
  141. 8.3.3 重复值相关操作
  142. 8.3.4 计算滚动统计相关操作
  143. 8.3.5 排序相关操作
  144. 8.3.6 其他操作
  145. 8.4 汇总为单值的Series级操作
  146. 8.4.1 量词操作
  147. 8.4.2 统计操作
  148. 8.4.3 计数操作
  149. 8.4.4 其他操作
  150. 8.5 汇总为单值或多值的Series级操作
  151. 8.5.1 唯一值相关操作
  152. 8.5.2 选取操作
  153. 8.5.3 删除缺失值操作
  154. 8.5.4 其他操作
  155. 8.6 扩展Series级操作
  156. 8.7 小结
  157. 第9章 表达式组合
  158. 9.1 内联运算符与方法链式调用
  159. 9.2 算术运算
  160. 9.3 比较运算
  161. 9.4 布尔代数运算
  162. 9.5 位运算
  163. 9.6 函数应用
  164. 9.7 小结
  165. 第四篇 转换
  166. 第10章 列的选取与创建
  167. 10.1 选取列
  168. 10.1.1 选择器入门
  169. 10.1.2 基于列名选取
  170. 10.1.3 基于数据类型选取
  171. 10.1.4 基于位置选取
  172. 10.1.5 组合选择器
  173. 10.2 创建新列
  174. 10.3 列的相关操作
  175. 10.3.1 删除列
  176. 10.3.2 重命名列
  177. 10.3.3 堆叠
  178. 10.3.4 添加行索引
  179. 10.4 小结
  180. 第11章 行的过滤与排序
  181. 11.1 行过滤
  182. 11.1.1 基于表达式进行过滤
  183. 11.1.2 基于列名进行过滤
  184. 11.1.3 基于约束条件进行过滤
  185. 11.2 行排序
  186. 11.2.1 基于单列进行排序
  187. 11.2.2 逆向排序
  188. 11.2.3 基于多列进行排序
  189. 11.2.4 基于表达式进行排序
  190. 11.2.5 基于嵌套数据类型进行排序
  191. 11.3 相关行操作
  192. 11.3.1 过滤缺失值
  193. 11.3.2 切片
  194. 11.3.3 极值筛选
  195. 11.3.4 采样
  196. 11.3.5 半连接
  197. 11.4 小结
  198. 第12章 处理文本、时间和嵌套数据类型
  199. 12.1 字符串数据类型
  200. 12.1.1 字符串方法
  201. 12.1.2 字符串示例
  202. 12.2 类别数据类型
  203. 12.2.1 类别方法
  204. 12.2.2 类别示例
  205. 12.3 枚举数据类型
  206. 12.4 时间数据类型
  207. 12.4.1 时间方法
  208. 12.4.2 时间示例
  209. 12.5 列表数据类型
  210. 12.5.1 列表方法
  211. 12.5.2 列表示例
  212. 12.6 数组数据类型
  213. 12.6.1 数组方法
  214. 12.6.2 数组示例
  215. 12.7 结构体数据类型
  216. 12.7.1 结构体方法
  217. 12.7.2 结构体示例
  218. 12.8 小结
  219. 第13章 汇总与聚合
  220. 13.1 “拆分-应用-合并”范式
  221. 13.2 GroupBy上下文
  222. 13.2.1 统计概要
  223. 13.2.2 高级方法
  224. 13.3 行级聚合
  225. 13.4 选择上下文中的窗口函数
  226. 13.5 动态分组
  227. 13.6 滚动聚合
  228. 13.7 上采样
  229. 13.8 小结
  230. 第14章 连接与拼接
  231. 14.1 连接
  232. 14.1.1 连接策略
  233. 14.1.2 多列连接
  234. 14.1.3 验证
  235. 14.2 非精确连接
  236. 14.2.1 非精确连接策略
  237. 14.2.2 微调
  238. 14.2.3 用例:营销活动归因分析
  239. 14.3 垂直与水平拼接
  240. 14.3.1 垂直
  241. 14.3.2 水平
  242. 14.3.3 对角
  243. 14.3.4 对齐
  244. 14.3.5 宽松模式
  245. 14.3.6 堆叠
  246. 14.3.7 追加
  247. 14.3.8 扩展
  248. 14.4 小结
  249. 第15章 重塑
  250. 15.1 宽表与长表
  251. 15.2 将长表转换为宽表
  252. 15.3 反透视为长表
  253. 15.4 转置
  254. 15.5 展开
  255. 15.6 DataFrame分区
  256. 15.7 小结
  257. 第五篇 进阶
  258. 第16章 数据可视化
  259. 16.1 NYC自行车行程记录
  260. 16.2 使用内置的Altair进行绘图
  261. 16.2.1 Altair介绍
  262. 16.2.2 绘图命名空间方法
  263. 16.2.3 DataFrame可视化
  264. 16.2.4 数据量过大的处理方案
  265. 16.2.5 绘制Series图表
  266. 16.3 类似pandas的hvPlot绘图
  267. 16.3.1 hvPlot介绍
  268. 16.3.2 第一个绘图示例
  269. 16.3.3 hvPlot命名空间中的方法
  270. 16.3.4 pandas作为备用方案
  271. 16.3.5 手动数据转换
  272. 16.3.6 切换绘图后端
  273. 16.3.7 绘制地图坐标
  274. 16.3.8 组合绘图
  275. 16.3.9 添加交互式控件
  276. 16.4 使用plotnine创建出版级质量的图像
  277. 16.4.1 plotnine介绍
  278. 16.4.2 探索性可视化
  279. 16.4.3 图表美化
  280. 16.5 使用Great Tables美化DataFrame
  281. 16.6 小结
  282. 第17章 扩展Polars
  283. 17.1 使用Python自定义函数
  284. 17.1.1 将函数应用于元素
  285. 17.1.2 将函数应用于Series
  286. 17.1.3 将函数应用于分组
  287. 17.1.4 将函数应用于表达式
  288. 17.1.5 将函数应用于DataFrame或LazyFrame
  289. 17.2 注册自定义命名空间
  290. 17.3 基于Rust的Polars插件
  291. 17.3.1 前提条件
  292. 17.3.2 插件项目结构分析
  293. 17.3.3 插件实现详解
  294. 17.3.4 编译插件
  295. 17.3.5 性能基准测试
  296. 17.3.6 注册参数
  297. 17.3.7 使用Rust库
  298. 17.3.8 用例:geo
  299. 17.4 小结
  300. 第18章 Polars内部原理
  301. 18.1 Polars架构解析
  302. 18.2 Apache Arrow
  303. 18.3 多线程计算与SIMD指令集
  304. 18.4 内存中的字符串类型
  305. 18.5 Series中的分块数组
  306. 18.6 查询优化机制
  307. 18.6.1 LazyFrame扫描阶段优化
  308. 18.6.2 其他优化
  309. 18.7 检查表达式
  310. 18.7.1 meta命名空间概述
  311. 18.7.2 meta命名空间示例
  312. 18.8 Polars性能剖析
  313. 18.9 Polars测试
  314. 18.10 常见反模式
  315. 18.10.1 滥用方括号选择列
  316. 18.10.2 误用Collect方法
  317. 18.10.3 在Polars查询中使用Python代码
  318. 18.11 小结
  319. 附录 使用GPU加速Polars
书名:Python Polars: The Definitive Guide
译者:陈松 译
国内出版社:机械工业出版社
出版时间:2025年12月
页数:407
书号:978-7-111-79290-1
原版书书名:Python Polars权威指南
原版书出版商:O'Reilly Media
Jeroen Janssens
 
Jeroen Janssens是Posit PBC公司的高级开发者关系工程师,开源技术布道者,著有Data Science at the Command Line(O'Reilly出版)。他拥有蒂尔堡大学机器学习博士学位和马斯特里赫特大学人工智能硕士学位。
 
 
Thijs Nieuwdorp
 
Thijs Nieuwdorp是Xomnia公司的首席数据科学家。作为Polars的早期采用者与贡献者,他至今仍在日常工作中使用该工具。他擅长构建高效工作流自动化系统,善于从数据中挖掘战略洞见,并通过经验分享帮助同行规避常见陷阱,提升专业技能。
 
 
本书封面展示的是伊比利亚猞猁(学名:Lynx pardinus)。作为猞属四个物种之一,这种珍稀动物仅栖息于欧洲西南部的伊比利亚半岛。它的皮毛呈黄褐色并带有深色斑点,腹部颜色较浅,耳尖与面颊处生有标志性的黑色簇毛。这种中型猫科动物的成年体长可达81~102cm,其最显著的特征是仅有13~15cm长的短尾,这与加拿大猞等近缘物种的特征相似。
伊比利亚猞猁曾广泛分布于西班牙与葡萄牙全境,但在20世纪后期,因盗猎猖獗、栖息地破碎化及主要食物源(欧洲兔)数量锐减,其栖息范围缩减了约80%。至 2000年,该物种仅在西班牙南部有94只,濒临灭绝。通过多方努力,目前种群数量已恢复至约2000只,并成功回归部分历史栖息地。得益于这些保护措施,伊比利亚猞的保护等级已从“极危”调整为“易危”。
购买选项
定价:149.00元
书号:978-7-111-79290-1
出版社:机械工业出版社