资讯详情

Polars Python DataFrame 全量 API 参考指南:从属性、聚合到导出与绘图的完整方法地图

📅 2026/10/10 11:51:22 | 华诺云谱 👁 阅读
Polars Python DataFrame 全量 API 参考指南:从属性、聚合到导出与绘图的完整方法地图
数据分析大数据【免费下载链接】polarsExtremely fast Query Engine for DataFrames, written in Rust项目地址https://gitcode.com/GitHub_Trending/po/polars点击查看免费下载DataFrame是 Polars 最核心的二维表格数据结构。本文以仓库内 Python API 参考索引页 py-polars/docs/source/reference/dataframe/index.rst 为主线结合其下 11 个分类页面聚合、属性、计算、描述性统计、导出、分组、修改/选择、杂项、绘图、样式等与源码实现 py-polars/src/polars/dataframe/frame.py约 1.3 万行系统梳理全部公开方法。读完本文你将掌握 DataFrame 的完整方法地图、各方法的关键参数与典型用法并能直接在交互式分析或生产脚本中按图索骥。文档索引一份可导航的 DataFrame API 地图index.rst是 Sphinx 文档体系中的 API 参考入口页。它用toctree指令聚合了 11 个子页面.. toctree:: :maxdepth: 2 :hidden: aggregation attributes computation descriptive export group_by modify_select miscellaneous plot style随后通过autoclass:members:指令自动生成DataFrame类的完整成员文档。这种索引页 分类子页的结构意味着 Polars 的 DataFrame API 被清晰地划分为十个功能域聚合、属性、计算、描述性统计、导出、分组、修改/选择、杂项、绘图、样式。以下按此分类逐一展开并在每个分类给出对应子页面如 aggregation.rst的完整方法清单与源码佐证。属性Attributes快速读取框架的元信息对应子页面 attributes.rst共 7 个只读属性在 frame.py 中实现属性返回类型说明columnslist[str]列名列表也支持 setter 批量改名dtypeslist[DataType]各列的数据类型如Int64、Float64、Stringflagsdict[str, dict[str, bool]]每列的优化标志如是否已排序SORTED、快速探索标志heightint行数schemaSchema有序的 {列名: 数据类型} 映射Polars 的 Schema 类型定义见 py-polars/src/polars/schema.pyshapetuple[int, int](行数, 列数)widthint列数import polars as pl df pl.DataFrame({a: [1, 2], b: [3.0, 4.0]}) df.shape # (2, 2) df.height # 2 df.width # 2 df.columns # [a, b] df.dtypes # [Int64, Float64] df.schema # Schema({a: Int64, b: Float64}) df.flags # 例如 {a: {SORTED: False, ...}}值得注意columns同时具备 setter 能力df.columns [x, y]这是快速批量重命名的方式而细粒度重命名应使用rename方法见修改/选择分类。聚合Aggregation列级统计的快捷入口对应子页面 aggregation.rst提供 13 个对整个 DataFrame 所有数值列生效的聚合方法单值统计count、max、mean、median、min、product、quantile、std、sum、var水平跨行聚合max_horizontal、mean_horizontal、min_horizontal、sum_horizontal文档清单中水平聚合有 4 个实际完整清单含max_horizontal/mean_horizontal/min_horizontal/sum_horizontal典型用法df pl.DataFrame({a: [1, 2, 3], b: [4.0, 5.0, 6.0]}) df.sum() # 各列求和a6, b15.0 df.mean() # 各列均值 df.quantile(0.9) # 各列 90% 分位数interpolation 参数可选 df.sum_horizontal() # 逐行对 a、b 求和返回新 Seriesquantile的interpolation参数支持nearest、higher、lower、midpoint、linear、equiprobable六种方式与describe共用同一QuantileMethod类型定义于 py-polars/src/polars/_typing.py。这些方法内部会先转成惰性表达式再执行底层由 Rust 内核的Series聚合算子完成。计算Computation函数式折叠与哈希对应子页面 computation.rst仅两个方法fold(operation, columns)沿列方向做函数式折叠可将多列归约为单个 Series例如df.fold(lambda acc, s: acc s)等价于逐行水平求和hash_rows(seed0, seed_10, seed_20, seed_30)对每一行计算哈希值返回UInt64类型的 Series。多 seed 设计用于需要多路独立哈希的场景如分布式分片、随机打散。行哈希常用于去重、分组键构造与分桶其底层实现在 Rust 侧的 hashing 模块crates/polars-core/src/hashing。描述性统计Descriptive一眼看懂数据概况对应子页面 descriptive.rst包含 10 个方法方法用途describe生成分位数、均值、标准差等汇总统计表estimated_size估算内存占用可按SizeUnit指定单位glimpse类似 R 中glimpse的紧凑预览逐列显示类型与样例值is_duplicated标记重复行布尔 Seriesis_empty是否 0 行is_sorted检查各列是否已排序reverse参数控制升降序is_unique标记唯一行n_chunks列的分块chunk数量Polars 列式存储按 chunk 组织n_unique各列去重后的不同值数量null_count各列空值数量show控制台打印表格截断显示describe是其中使用频率最高的方法源码在 frame.pydf.describe() # 默认输出 count/null_count/mean/std/min/25%/50%/75%/max 共 9 行统计关键参数percentiles默认(0.25, 0.50, 0.75)可传入自定义分位数序列取值必须在[0, 1]区间中位数默认以 50% 分位出现interpolation分位数插值方式默认nearest可选linear等。with pl.Config(tbl_rows12): df.describe(percentiles[0.1, 0.3, 0.5, 0.7, 0.9], interpolationlinear)注意官方文档明确警告describe的输出不保证跨版本稳定适合交互式探索而非程序化依赖。describe内部实现是self.lazy().describe(...)即委托给 LazyFrame 的分位数与统计逻辑。导出Export与生态互操作的核心通道对应子页面 export.rst覆盖 Python 生态互操作的几乎所有出口。完整清单__array__支持np.asarray(df)的协议钩子__arrow_c_stream__实现 Python 社区标准的 Arrow C Stream 协议PEP 734零拷贝暴露底层 Arrow 数据to_arrow转为 PyArrowTable支持compat_level兼容级别参数to_dict/to_dicts转为{列名: 值列表}字典或逐行字典列表to_init_repr生成可重新构造该 DataFrame 的代码字符串即repr重建表达式to_jax导出到 JAX 数组需安装 jaxto_numpy转为 NumPyndarrayto_numpy(*, allow_copy, writable, zero_copy_only)支持零拷贝导出见 frame.pyto_pandas转为 pandasDataFrameto_pandas(*, dtype_backend, engine, maintain_order, ...)见 frame.pyto_struct将整张表压缩为一个Struct类型的 Seriesto_torch导出为 PyTorchTensor需安装 torch。df.to_numpy() # → ndarray df.to_pandas() # → pandas.DataFrame df.to_arrow() # → pyarrow.Table df.to_dict() # → {a: [1, 2], b: [3.0, 4.0]} df.to_struct() # → Series 结构类型这些导出的互操作依赖检查集中在 py-polars/src/polars/_dependencies.py未安装对应库时会抛出带安装指引的ModuleUpgradeRequiredError。核心转换逻辑由 Rust 侧 PyO3 绑定实现入口见 crates/polars-python/src/dataframe/export.rs。分组GroupBy最强大的变换引擎对应子页面 group_by.rst。调用df.group_by(...)后返回GroupBy对象定义于 py-polars/src/polars/dataframe/group_by.py文档列出 17 个方法聚合类agg、all、first、last、len、max、mean、median、min、n_unique、quantile、sum子集选择类head、tail条件过滤类having自定义映射map_groups迭代__iter__group_by方法签名frame.pydf.group_by(*by, maintain_orderFalse, **named_by) - GroupBy*by分组键接受列名字符串、表达式或选择器maintain_orderTrue保证分组顺序与输入一致但会牺牲性能且会阻断流式引擎streaming engine执行**named_by以关键字参数形式传入额外分组列并重命名。df pl.DataFrame({ a: [a, b, a, b, c], b: [1, 2, 1, 3, 3], c: [5, 4, 3, 2, 1], }) df.group_by(a).agg(pl.col(b).sum()) df.group_by(a, maintain_orderTrue).agg(pl.col(c)) # 组内聚合为 list df.group_by([a, b]).agg(pl.max(c)) df.group_by(a, pl.col(b) // 2).agg(pl.col(c).mean()) # 支持表达式键GroupBy对象本身可迭代每次返回(组名元组, 组内 DataFrame)迭代状态由 group_by.py 中的GroupByIter管理for name, data in df.group_by(a): print(name) # (a,) 形式的元组 print(data) # 该组的 DataFramehaving提供分组后的行过滤语义等价于 SQLHAVINGmap_groups允许用 Python 函数对每个分组做自定义处理*args为各组的 Series返回Series或DataFrame。除GroupBy外group_by.py 还定义了DynamicGroupBy动态/时间窗分组与RollingGroupBy滚动窗口分组分别由df.group_by_dynamic(...)与df.rolling(...)返回。修改/选择Modify/Select日常操作的主战场对应子页面 modify_select.rst这是规模最大的一类共 72 个方法覆盖选择、过滤、排序、连接、变形、填充等全部日常操作。按用途可进一步细分选择与切片select、select_seq、__getitem__df[...]索引、head、tail、limit、slice、gather、gather_every、row、rows、rows_by_key、item、get_column、get_column_index、get_columns、iter_columns、iter_rows、iter_slicesdf.head(5) # 前 5 行 df.tail(5) # 后 5 行 df.select(a, b) # 按表达式选择列 df[a] # 取列Series df[0] # 取行 df.gather([0, 2]) # 按行索引取行 df.rows() # 逐行元组 df.row(0, namedTrue) # 命名行过滤与去空filter、drop_nulls、drop_nans、fill_null、fill_nan、drop、removedf.filter(pl.col(a) 1) df.drop_nulls(subset[a]) # 仅检查指定列 df.fill_null(0) # 或 fill_null(strategyforward) df.drop(b) # 删除列排序与极值sort、top_k、bottom_k、set_sorted、reversedf.sort(a, descendingTrue, nulls_lastTrue) df.top_k(3, bya) # 按列 a 取前 3 大行列操作with_columns、with_columns_seq、rename、cast、replace_column、insert_column、remove、hstack、vstack、extend、clear、clone、rechunk、shrink_to_fit、to_series、to_dummies、with_row_index、match_to_schemadf.with_columns((pl.col(a) * 2).alias(a2)) df.rename({a: x}) # 或 rename 接收映射 df.cast({a: pl.Float32}) df.with_row_index(idx) # 添加行号列 df.to_series(0) # 取第 0 列为 Series df.vstack(other) # 纵向堆叠返回新帧 df.extend(other) # 原地追加返回 Nonein-place 语义 df.rechunk() # 合并列的分块变形explode、transpose、pivot、unpivot、unstack、unnest、partition_bydf.explode(list_col) # 展开 List 列 df.pivot(onk, indexid, valuesv) # 宽表 df.unpivot(on[a, b], indexid) # 长表 df.transpose(include_headerTrue) df.partition_by(a) # 按列值切分为多个 DataFrame连接Joinjoin、join_asof、join_where、merge_sorted、update。其中join是使用率最高的方法签名与参数详解见 frame.pydf.join(other, onham) # 默认 inner df.join(other, onham, howfull) # left/right/full/semi/anti/cross df.join(other, howcross) # 笛卡尔积join关键参数一览how连接策略inner默认取两表匹配行、left、right、full不匹配补 null、cross笛卡尔积、semi仅保留左表有匹配的行不含右表列、anti仅保留左表无匹配的行on/left_on/right_on连接键支持列名、表达式、选择器两表键名不同时用left_onright_onsuffix重名列后缀默认_rightvalidate连接基数校验m:m默认不校验、1:1、1:m、m:1可发现键不唯一导致的数据错误注意流式引擎当前不支持该校验nulls_equal是否允许 null 键互相匹配默认Falsenull 永不匹配1.24 版本由join_nulls更名而来coalesce是否合并连接列默认None除full外都合并full连接时可通过coalesceTrue显式合并两边的键列maintain_order结果行的保序策略none默认不保证顺序、left、right、left_right、right_leftbuild_side指定以哪一侧构建哈希表auto默认、prefer_left、prefer_right、force_left、force_right该参数当前标记为实验性。df.join(other_df, onham, howfull, coalesceTrue) df.join(other_df, onham, howsemi) df.join(other_df, howcross)移动与填充shift、interpolate、upsample、sample、unique、rolling、group_by_dynamicdf.shift(1) # 整体下移一行 df.interpolate() # 线性插值填补缺失 df.sample(n2) # 随机抽样支持 frac、with_replacement、seed df.unique(subset[a], keepfirst) df.rolling(index_columndate, period2d).agg(pl.col(v).mean())其他__setitem__df[col] ...原地写列、pipe管道式函数组合、sql对 DataFrame 执行 SQL 查询返回LazyFrame。select、with_columns、filter、sort等方法均接受**表达式Expr**作为核心输入表达式系统定义于 py-polars/src/polars/expr底层由 crates/polars-plan/src/dsl 的逻辑计划与 crates/polars-expr 的表达式求值引擎支撑。杂项Miscellaneous与序列化对应子页面 miscellaneous.rst包含 7 个方法与序列化子模块collect_schema以惰性方式收集并返回 DataFrame 的 Schemacorr计算两列相关系数df.corr(col1, col2)equals与另一 DataFrame 逐值比较支持null_equal参数返回布尔值lazy将 eager DataFrame 转为LazyFrame从而进入惰性查询优化流水线df.lazy().filter(...).collect()map_columns对列名批量应用函数map_rows对每一行应用函数返回新的 Series 或 DataFrame。序列化Serialization小节提供两个方法df.serialize(file, formatjson) # 序列化到 JSON/IPC/二进制 df.deserialize(source, formatjson) # 从文件/字节流反序列化serialize/deserialize的format支持json、ipc、binary三种编码SerializationFormat类型可持久化 DataFrame 结构以便跨进程传输或长期存储。Python 侧序列化入口见 py-polars/src/polars/_utils/serde.pyRust 实现位于 crates/polars-python/src/dataframe/serde.rs。绘图Plot与样式Style对应子页面 plot.rst 与 style.rst。二者均通过autoproperty暴露属性而非方法DataFrame.plot返回DataFramePlot对象定义于 py-polars/src/polars/dataframe/plotting.py提供与 Altair 联动的声明式绘图 API例如df.plot.scatter(xa, yb)仅在安装 Altair 后可用DataFrame.style返回 great_tables 的GT样式对象需安装 great_tables用于生成带格式化、主题、条件着色的 HTML 表格GT类型定义见 py-polars/src/polars/_typing.py 中对great_tables的导入。df.plot.bar(xk, yv) # 依赖 altair df.style.highlight_max() # 依赖 great_tables两者的可用性检查均通过 py-polars/src/polars/_dependencies.py 中的_ALTAIR_AVAILABLE/_GREAT_TABLES_AVAILABLE标记完成未安装时会给出明确的升级指引异常。实现底座Python 门面与 Rust 内核从源码结构看Python 层的DataFrame是一个典型的门面 委托设计Python 层负责参数校验、类型解析与表达式构建类定义在 py-polars/src/polars/dataframe/frame.py真正的列式数据与计算内核位于 Rust 侧通过 PyO3 绑定暴露为_plr.PyDataFrame在frame.py中导入Rust 侧的数据结构与方法定义见 crates/polars-python/src/dataframe含general.rs、export.rs、construction.rs、io.rs、serde.rs、map.rs核心算法哈希分组、排序、连接、聚合在 crates/polars-core、crates/polars-ops、crates/polars-expr 等 Rust crate 中实现构成 crates/polars 主 crate 的生态。例如group_by的 Python 端仅做参数归一化随后委托PyDataFrame.group_by进入 Rust 侧由 polars-core 的哈希分组hashing模块完成分组键的并行归并to_pandas、to_numpy则通过 export.rs 中的零拷贝/拷贝策略进行数据搬运。小结如何高效使用这份 API 地图快速探索用describe、glimpse、show三件套掌握数据概况日常变换select/with_columns/filter/sort/unique构成 CRUD 主干全部以表达式驱动复杂分析group_by含agg、having、map_groups与join7 种策略 基数校验 保序选项是进阶核心生态衔接to_numpy/to_pandas/to_arrow/to_torch/to_jax覆盖主流 Python 数据科学栈持久化serialize/deserialize支持 JSON、IPC、二进制三种格式可视化plotAltair与stylegreat_tables让 DataFrame 直接产出图表与样式化表格。本参考索引覆盖的方法在仓库测试py-polars/tests/unit中均有大量验证用例读者可按分类子页逐个查阅对应方法 docstring 中的 doctest 示例作为最可靠的说明书。赞分享数据分析大数据【免费下载链接】polarsExtremely fast Query Engine for DataFrames, written in Rust项目地址https://gitcode.com/GitHub_Trending/po/polars点击查看免费下载相关推荐pandas DataFrame 完全参考指南从构造、索引到统计、绘图与序列化的全量 API 导航pandas DataFrame 完全参考指南从构造、索引到统计、绘图与序列化的全量 API 导航 本指南以 pandas 官方 API 参考中 DataFr数据分析数据科学数据处理python-prompt-toolkit API 参考导航从 Application 到 Patch Stdout 的完整模块地图python prompt toolkit API 参考导航从 Application 到 Patch Stdout 的完整模块地图 导读 referenceCLIPolars DataFrame 聚合方法全解析逐列归约与水平聚合的 API 语义与底层实现Polars DataFrame 聚合方法全解析逐列归约与水平聚合的 API 语义与底层实现 Polars 为 DataFrame 提供了一整套 将整张表归约数据分析大数据上一篇KubeVirt 中的 Swagger 2.0 校验实践go-openapi/validate 的能力清单、内部机制与源码级解析下一篇如何快速上手hygon-edk2从源码到编译的完整入门指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑