更好的人类可读数字。

ballpark的Python项目详细描述


当人们想到人类可读的数字时,他们会想到四舍五入到 小数点后两位,加上千位分隔符。12214.17是 已经比12214.16666667有了很大的进步。但是标准格式 对于人类可读的数字仍然有各种缺陷:

  • 即使有上千个分隔符,乍一看你也很容易出错 十亿换一万亿
  • 即使是四舍五入,12214.17美元也是一笔不小的数目 通信用数字噪声12.2K
  • 科学符号导致像1.22e4这样的指数,这些指数很难 因为我们习惯了和成千上万的人一起工作 几十亿个数量级,是3的倍数
  • 当比较同一基础变量的多个测量值时, 就像2010-2015年的年度销售数字一样,有 一些数字以千计,其他数字以百万计-你想要 一致性,使同一位置的数字是相同的 震级

python-ballpark引入了业务符号,它是 engineering notation,用于 产生更好的人类可读的数字。

使用pip install ballparkpip3 install ballpark安装。

它的样子

numbersroundedengineering notationbusiness notation
11234.22, 233000.55, 1175125.211,234.22, 233,000.55, 1,175,125.211.2E+3, 233E+3, 1.18E+611K, 233K, 1,180K
111, 1111.23, 1175125.234111, 1,111.23, 1,175,125.23111, 1.11E+3, 1.18E+60.11K, 1.11K, 1,180.00K

如何使用

>>>fromballparkimporthuman,scientific,engineering,business,ballpark>>>business([11234.22,233000.55,1175125.2])['11K','233K','1,180K']>>>>>># business notation is also aliased as `ballpark`>>>ballpark([11234.22,233000.55,1175125.2])['11K','233K','1,180K']>>>>>># or use the shortcut functions>>>fromballparkimportH,S,E,B>>>B([11234.22,233000.55,1175125.2])['11K','233K','1,180K']>>>>>># all notations accept single numbers too, but then we can't guarantee>>># that all numbers will have the same prefix (kilo, mega etc.)>>>[B(value)forvaluein[11234.22,233000.55,1175125.2]]['11.2K','233K','1.18M']

工作原理

business(values,precision=3,prefix=True,prefixes=SI,statistic=median)
  • 精度:有效数字量。必要时, business也将舍入到小数点之后:在 上面的示例,1175125.2被转换为1,180K,而不是 1,175K只保留3个有效数字。
  • 前缀:是否使用诸如m(milli)、k(kilo)和 所以不要像e+03这样的科学指数。
  • 前缀:数量级到前缀的映射,例如。 {-3: 'm', 3: 'K'},允许您自定义前缀 例如,使用b表示十亿,而不是t表示tera。
  • statistic:生成引用号的函数。这个 参考号决定了 整个数字组,例如 数字是23.3k,1.1k这样的小数字不会得到小数点。 更大的数字,比如1180K,不会跳一个数量级到 1.18米。中位数通常工作得很好,但如果你想要更精确的话 对于小的异常值,请尝试ballpark.statistics.Q1,甚至python的 内置min

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Hibernate:合并并删除,而不是从数据库中删除实体对象   java如何在WebFilter中有条件地从Mono返回?   java调用mysql c3p0函数   可执行jar Java jar文件加载错误:无法找到或加载主类。类导致的错误:java。lang.ClassNotFoundException:某些东西。班   java如何减少/更改爬网后的延迟?   从其他语言(如Java、PHP、Perl、Python等)调用C/C++代码的最佳方式是什么?   java如何模拟影响对象的void返回方法   当我试图在ubuntu上启动JavaScala时,它抛出了一个异常   java如何正确输出游戏   理解java和C++背景下的JavaScript原型   oracle如何将Java函数转换为postgresql函数   多线程为什么我的java服务器程序在超时后不退出?   java如何使listView中的按钮在单击时工作?   试图将这个嵌套的java forloop转换为python,但我不知道如何转换。有没有一种方法可以像这样为循环执行if语句?   java幂函数在计算器中的应用   如何在java中滚动浏览mysql数据库   在Spring Boot应用程序的JUnit测试中,java没有符合自动连线JPA存储库要求的bean   java如何使用扩展类的JPanel对象?