我有浮点数,我只对它们的小数位感兴趣,因为整数部分并不重要(并且在我的问题中总是相同的)。
我必须使用字符串格式,因为数字将显示在seaborn 图中。 我在用着
'0.2f'
仅显示两位小数,但我不知道如何删除整数部分。
示例:
我想展示
.25
而不是0.25
详情:
seaborn.heatmap
中的值:
sns.heatmap(table, annot = True, fmt = '.2f')
但我只想显示如上所述的小数。
.apply
一起使用,以格式化数据框中的所有列,然后什么时候可以传递给 annot=
,与 fmt=''
。
f'{v:.2f}'[-3:]
进行格式化,其中 .2f
四舍五入到小数点后两位,而 [-3:]
则对最后三个字符进行切片(例如 .xx
)。import seaborn as sns
# sample data
glue = sns.load_dataset('glue').pivot(index='Model', columns='Task', values='Score')
# create a new f-string formatted dataframe
annot = glue.apply(lambda col: [f'{v:.2f}'[-3:] for v in col], axis=0)
# plot with annotations
ax = sns.heatmap(data=glue, fmt='', annot=annot)
glue
Task CoLA MNLI MRPC QNLI QQP RTE SST-2 STS-B
Model
BERT 60.5 86.7 89.3 92.7 72.1 70.1 94.9 87.6
BiLSTM 11.6 65.6 81.8 74.6 62.5 57.4 82.8 70.3
BiLSTM+Attn 18.6 67.6 83.9 74.3 60.1 58.4 83.0 72.8
BiLSTM+CoVe 18.5 65.4 78.7 70.8 60.6 52.7 81.9 64.4
BiLSTM+ELMo 32.1 67.2 84.7 75.5 61.1 57.4 89.3 70.3
ERNIE 75.5 92.3 93.9 97.3 75.2 92.6 97.8 93.0
RoBERTa 67.8 90.8 92.3 95.4 74.3 88.2 96.7 92.2
T5 71.6 92.2 92.8 96.9 75.1 92.8 97.5 93.1
annot
Task CoLA MNLI MRPC QNLI QQP RTE SST-2 STS-B
Model
BERT .50 .70 .30 .70 .10 .10 .90 .60
BiLSTM .60 .60 .80 .60 .50 .40 .80 .30
BiLSTM+Attn .60 .60 .90 .30 .10 .40 .00 .80
BiLSTM+CoVe .50 .40 .70 .80 .60 .70 .90 .40
BiLSTM+ELMo .10 .20 .70 .50 .10 .40 .30 .30
ERNIE .50 .30 .90 .30 .20 .60 .80 .00
RoBERTa .80 .80 .30 .40 .30 .20 .70 .20
T5 .60 .20 .80 .90 .10 .80 .50 .10
您可以尝试
nb -= int(nb)
或decimalPart = nb - int(nb)
使数字仅保留小数部分。
以下代码从给定的浮点数中提取 2 位小数。
float_number = 28.31
formatted_number = "{:.2f}".format(float_number).split('.')[1]
您可以将上述内容传递给格式化程序,如下所示,并根据您的要求完成绘图。
乘以 100,然后打印结果,“手动”添加小数点...这假设你的数字都小于 1。
>>> num = 0.675
>>> print(f".{100*num:.0f}")
.68