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

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

admin6天前AI技术16

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()

判断会失效。

相关文章

什么是LLM?看这一篇就够了!

一、全套AGI大模型学习路线 AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能! 二、640套AI大模型报告合集 这套包含640份报告的合集,涵盖了AI大...

Unity 机器学习 基础

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

神经网络分类总结

从网络性能角度可分为连续型与离散型网络、确定性与随机性网络。 从网络结构角度可为前向网络与反馈网络。 从学习方式角度可分为有导师学习网络和无导师学习网络。 按连续突触性...

神经网络中的单层神经网络

神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 看一个经典的神经网络。这是一个包...

什么是人工智能 ?

您可以使用 ML 训练 AI,使其精确、快速地执行任务。这可以通过自动化员工感到吃力或厌烦的业务部分来提高运营效率。同样,您可以使用 AI 自动化来腾出员工资源,用于更复杂和更具创造性的工作。...

前端开发高级应用:MuleRun如何连接Slack通知 MuleRun消息推送集成配置步骤实战案例|Duuu笔记

若MuleRun无法向Slack推送通知,需依次配置Incoming Webhook或Bot Token、在MuleRun中设置对应通知目标参数,并通过最小化任务测试验证;常见失败原因包括凭据错误、权...

发表评论

访客

看不清,换一张

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