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

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

admin2天前AI技术6

深入理解Python原理,本文探讨

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

判断会失效。

相关文章

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

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

LLM介绍

。LLM 被证明在使用指令形式化描述的未见过的任务上表现良好。这意味着 LLM 能够根据任务指令执行任务,而无需事先见过具体示例,展示了其强大的泛化能力。 :小型语言模型通常难以解决涉...

Unity 机器学习 基础

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

推荐10个AI人工智能技术网站

除了研究和开发人工智能技术,OpenAI还积极参与人工智能伦理和安全的研究和探讨。 认为,人工智能技术的发展必须遵循伦理和法律的规范,以确保人工智能的应用不会对人类带来负面影响。...

bp神经网络是什么网络,神经网络和bp神经网络

1、前馈神经网络:一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。 2、BP神经网络:是一种按照误差逆向传播...

前端开发高级应用:Minimax视频生成提示词中文还是英文好实战案例|Duuu笔记

优先使用英文提示词,因其更契合模型训练语料并能稳定触发视觉特征;其次可采用中英混合策略兼顾文化专有名词;纯中文适用于强本土化场景;最终需通过多指标对比验证最优语言形式。 ☞☞☞AI 智能聊天, 问答...

发表评论

访客

看不清,换一张

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