首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:美化数值和dict输出

Python:美化数值和dict输出
EN

Stack Overflow用户
提问于 2016-02-14 09:15:42
回答 2查看 631关注 0票数 1

我正在做一个循环来输出和比较gof_traingof_test

代码语言:javascript
运行
复制
pp.pprint(gof_train)
pp.pprint(gof_test)

这将给我这样的结果(在IPython笔记本中):

代码语言:javascript
运行
复制
# gof_train
{'Chi_square': 2835.3674597856002,
 'K_S': 0.05029482196934898,
 'MSE': 7.3741561732037447e-08,
 'RMSE / Mean': 0.46193590138914759,
 'RMSE / Mode': 0.050926962892235687,
 'R_square': 0.88494738072721291}
# gof_test
{'Chi_square': 708.90289308802267,
 'K_S': 0.05029482196934898,
 'MSE': 7.3741561732037447e-08,
 'RMSE / Mean': 0.46193590138914759,
 'RMSE / Mode': 0.050926962892235687,
 'R_square': 0.88494738072721291}

他们很难看。我想知道有没有办法美化产品?

具体来说,我想缩短数字,并使这两个词的属性相互比较。就像这样:

代码语言:javascript
运行
复制
'Chi_square': 2835.3674, 'Chi_square': 708.902,
'K_S': 0.050294,         'K_S': 0.0502,
'R_square': 0.8849,      'R_square': 0.8849

我怎么想的

  1. 对于数值输出,我想我可以试试%precisionhttp://ipython.org/ipython-doc/2/api/generated/IPython.core.magics.basic.html#IPython.core.magics.basic.BasicMagics.precision
  2. 但我不知道有什么好方法来比较结果。如果我能设置css of gof_traingof_test float: left会很有趣,但我认为这是不可能的。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-14 09:53:18

只需使用熊猫

代码语言:javascript
运行
复制
In [1]: import pandas as pd

更改小数:

代码语言:javascript
运行
复制
In [2]: pd.options.display.float_format = '{:.3f}'.format

建立一个数据框架:

代码语言:javascript
运行
复制
In [3]: df = pd.DataFrame({'gof_test': gof_test, 'gof_train': gof_train})

和展示:

代码语言:javascript
运行
复制
In  [4]:  df
Out [4]:  

另一种选择是使用工程前缀

代码语言:javascript
运行
复制
In  [5]:  pd.set_eng_float_format(use_eng_prefix=True)
          df
Out [5]: 

代码语言:javascript
运行
复制
In  [6]: pd.set_eng_float_format()
         df
Out [6]: 

票数 4
EN

Stack Overflow用户

发布于 2016-02-14 09:35:56

实际上,您不能用CSS来影响Python输出的显示,但是您可以将结果交给一个格式化函数来处理,从而使它变得“漂亮”。在你的例子中,你可能需要这样的东西:

代码语言:javascript
运行
复制
def compare_dicts(dict1, dict2, col_width):
    print('{' + ' ' * (col_width-1) + '{')
    for k1, v1 in dict1.items():
        col1 = u"  %s: %.3f," % (k1, v1)
        padding = u' ' * (col_width - len(col1))
        line = col1 + padding
        if k1 in dict2:
            line = u"%s  %s: %.3f," % (line, k1, dict2[k1])
        print(line)
    print('}' + ' ' * (col_width-1) + '}')

dict1 = {
    'foo': 0.43657,
    'foobar': 1e6,
    'bar': 0,
}


dict2 = {
    'bar': 1,
    'foo': 0.43657,
}

compare_dicts(dict1, dict2, 25)

这意味着:

代码语言:javascript
运行
复制
{                        {
  foobar: 1000000.000,   
  foo: 0.437,              foo: 0.437,
  bar: 0.000,              bar: 1.000,
}                        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35390141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档