更好的人类可读数字。

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如何定制springdata存储库方法名称?   html有没有办法将java应用程序或JApplet嵌入到网站中?   Jackson ObjectMapper将java从字符串序列化为JSON作为namevalue   java刷新JTable?   用Java程序分发用JavaDB制作的数据库   java Android如何启动新活动   当集合大小超过500.000时,java的处理速度会显著降低   在java的分层目录中的多个目录中查找相同的文件   java如何将ArrayList数据插入数据库   java如何修改此代码,使其时间复杂度为o(logn)或o(n),而不是o(n^2)   java面板(SimplePanel)中仅显示图像的前1/3(大约),   jakarta ee Java Bean和企业Java Bean之间的区别?   创建AWS Cloudfront自签名URL(java sdk)时出现amazon web服务错误   基于Jersey和Jackson查询参数的java动态属性过滤