当前位置:首页 > AI技术 > 正文内容

Python 中Pandas如何格式化浮点数 利用style设置数值显示精度|Duuu笔记

admin6个月前 (04-01)AI技术153

df.style.format() 不影响原始数据,因其仅为显示层机制,只改变HTML/Notebook渲染外观,底层数值类型、精度、存储均不变;取值如df.iloc[0,0]仍返回原始浮点数(如3.1415926535),导出CSV/Excel默认用原始值,需额外参数或round()修改数据本身。

为什么

df.style.format()

不影响原始数据

因为

style

是纯显示层机制,只改变渲染后的 HTML 或 Notebook 中的外观,底层

df

的数值类型、精度、存储完全不变。你用

df.iloc[0, 0]

取出来的还是原始浮点数,比如

3.1415926535

,不会变成

3.14

常见错误现象:改完

format()

后导出 Excel 或做计算,发现小数位没“生效”——那是正常现象,不是 bug。

导出 CSV/Excel 时默认用原始值,需额外传参如

df.to_excel(..., float_format="%.2f")

想永久截断数值,得用

round()

np.round()

修改数据本身

format()

中的字符串模板(如

"{:.2f}"

)不支持条件逻辑,复杂格式要写自定义函数

按列单独控制精度比全局 format() 更常用

实际分析中,价格列保留 2 位,增长率保留 1 位,误差值保留 6 位很常见。硬套全局

format("{:.3f}")

反而掩盖信息。

推荐直接传字典:

Python免费学习笔记(深入)

”;

df.style.format({

"price": "${:.2f}",

"growth_rate": "{:.1%}",

"error": "{:.6f}"

})

注意:

format()

键名必须严格匹配列名(区分大小写),且只对

object

和数值列生效;如果某列是

category

或含空值,可能静默失效。

列名带空格或特殊字符?用

df.columns = df.columns.str.replace(" ", "_")

预处理更省心

想对所有数值列统一设精度,用

{np.number: "{:.2f}"}

,但会覆盖已定义的字符串列格式

百分比列别忘了先乘 100 再用

{:.1%}

,否则 0.05 会显示成 5.0%

导出 HTML 时样式丢失?检查

set_properties()

to_html()

的配合

style.format()

生成的是

Styler

对象,直接调

to_html()

才能保留格式;如果误用

df.to_html()

,就只剩原始数据。

白瓜AI

白瓜AI,一个免费图文AI创作工具,支持 AI 仿写,图文生成,敏感词检测,图片去水印等等。

下载

正确写法:

df.style.format({"value": "{:.3f}"}).to_html("report.html")

容易踩的坑:

在 Jupyter 里显示正常,但保存 HTML 后打开发现没格式?大概率漏了

.to_html()

,用了

df.to_html()

导出的 HTML 没表格边框?加

.set_properties(**{"border": "1px solid #ddd"})

中文列名乱码?确保

to_html()

escape=False

并用 UTF-8 编码保存文件

性能敏感场景下慎用

format()

+ 大量行数

Styler

在渲染时会对每单元格调用格式化函数,10 万行 × 10 列就是百万次字符串操作。Jupyter 渲染会明显卡顿,导出 HTML 文件体积也暴涨。

替代思路:

仅对前 1000 行用

style

,其余用

df.head(1000).style...

真要导出全量带格式的 HTML?先用

round()

降精度再导出,避免运行时格式化

服务端生成报表?考虑用

plotly.express

dash

动态格式化,而非 Pandas Styler

最常被忽略的一点:

format()

不支持 NaN 的差异化显示,比如想把缺失值标为

"—"

而非空字符串,得用

df.fillna("—").style.format(...)

,但要注意这会改变原始

NaN

类型,后续

isna()

判断会失效。

相关文章

【深度学习】Java DL4J 2024年度技术总结

一、Java DL4J深度学习概述 1.1 DL4J框架简介 1.2 与其他深度学习框架的比较 1.3 DL4J 的优势 1.3.1 与 Java 生态系统的无...

【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习

一、Submarine(Hadoop生态系统) (一)Submarine 介绍 (三)Submarine 属于 Hadoop 生态系统 (四)Submarine 官网版...

Unity 机器学习 基础

ML-Agents 资产导入 Unity 场景创建 Unity 代码部分 Anaconda 执行 rollerball_config.yaml 机器学习逻辑处理...

使用 ESP

针对该分类问题,我们使用了 Kaggle 手势识别数据集 中的一个开源数据集。原始数据集包括 10 个类别,我们只使用了其中 6 个。这些类别更容易识别,且日常生活中更有用,如...

AI核心技巧:如何重置openclaw硬件设置 openclaw恢复出厂设置操作方法【操作】深度解析|Duuu笔记

重置 OpenClaw 配置有四种方法:一、交互式向导重置(openclaw onboard --reset);二、指定作用域的命令行重置(如--reset-scope config);三、手动删除~...

从入门到精通:前端开发之骡子快跑支持热点借势吗 骡子快跑节日营销文案生成|Duuu笔记

骡子快跑平台提供五步节日营销文案生成路径:一、调用内置32个节日模板库;二、输入热点事件触发动态生成;三、绑定自有素材库实现个性化延展;四、多角色视角协同输出;五、接入微信生态直发并校验合规性。 ☞...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。