时间数据

时间格式是数据类型中基础也不容忽视的一类。不像整数那样大道至简也不像字符串那样包罗万象,却独有魅力,时间数据本身除了加减、比较运算外,也有下周、去年、时区等更专项的时间切换。在各类编程语言里都提供时间对象的支持,在MySQL里也有DATETIME类型。商业里的DAU、GMV、LTV也少不了时间限定和时间属性,因此数据分析时少不了对时间数据类型的处理与转换。
Python通过套件time、datetime、timeit处理时间类型数据,但面对一些情况时会不够灵活和易用,在时间序列生成和截断方面捉襟见肘,于是诞生了Arrow、Pendulum、Maya等库增强了Python的时间处理能力。本篇对4个标准库和6大第三方模块进行介绍,在面对需求时能拿到最趁手的工具。

本文概览鱼骨图

阅读全文 »

Maya简介

用time、datetime等内置库处理时区需要挺多的代码,而且写法很不优雅,Maya是一个不错的第三方时间库,在pytz、pendulum等库基础上增强了对时区的处理。
Maya的时间对象是自定义的MayaDT对象,是按时间戳表示的,因此在时区问题上更容易进行转换了。从功能上看,Maya的时间创建能力上排名前列,在时间偏移和属性获取上方面接口也挺简洁,综合来看是不错的Python时间库,在GitHub上目前有3.2k的star

时间输入与转换

阅读全文 »

Delorean是一个在dateutil基础上进一步拓展的Python时间库,以《回到未来》中的时间旅行车命名。Delorean目前已经发展到1.0版本 ,其接口更偏向面向对象的写法,时间戳使用epoch定义,时间对象可以和datetime.timedelta进行计算,Delorean默认都调为UTC时间以避免一些时区的问题,实践代码如下。

阅读全文 »

Pendulum简介

Pendulum是一款很优秀的Python时间处理模块,其内置数据类型拓展自datetime,与datetime有着很好的兼容性。Pendulum比dateutil功能更丰富,足矣和Arrow对标。Pendulum[ˈpendʒələm]意为钟摆,很好的时间意向。Pendulum在时间解析、转换、属性获取、时区、时间序列等方面都有很好的表现,其用于时间处理的语句概览如下。

Pendulum概览导图

阅读全文 »

Arrow简介

Arrow是一个优秀的Python时间处理库,比起Python内置的多个日期时间库,它简化了时间类型数据的解析和输出方法,增强了时间属性的获取能力。经过多年的发展,现在其他有追求的第三方Python时间处理库基本都会对标Arrow,足矣见其影响力。目前Arrow是0.17版,其GitHub页面 上有6千多Star,而且保持着活跃的更新,可见其未来会更加强大。

Arrow概览导图

阅读全文 »

布局(Layout)可以看成是D3对图形元素的一种排布方式,在绘制柱状图时,是在横平竖直的直角坐标系下,确定矩形的左上角坐标,就可以画出随着高度变化的一系列柱子,以体现数据值的差异,而如果要画饼图呢,有一列数据[30,10,6],映射到饼图的不同楔形里,是一个个手动计算角度和初始位置么?根据图形语法,只需要将坐标系变成极坐标,一系列数据很容易对应为角度。布局和比例尺一样,也属于一种映射,能够将我们提供的数据重新映射/变换成新格式,以便于在某些更特定的图表中的使用。

饼图布局

阅读全文 »

对于前端可视化库来说,交互效果是其基本功能,需要有优雅的效果和简洁的API才能出彩,而如果一个前端可视化工具只能生成静态图表,绝对会显得格格不入,因为在前端拥有交互功能并不复杂。与图表的交互,是指图表元素能根据用户的键盘鼠标操作做出相应的反应,例如悬停高亮、缩放、漫游、拖动节点、点击涟漪效果等等。

阅读全文 »

对数据进行可视化时,我们可以直接把数据值映射为像素值,但是如果数值过小或过大直接用像素得到的图形就很难看甚至无法辨别,例如不能值是10000就绘制1万像素长的矩形,数值全是[0,1]的值不能全部绘制小于1个像素的图,d3提供了比例尺(scale)来解决这个问题。从数据到屏幕图形的像素有一个数据变换的过程,在输入值范围(值域)不确定的情况,我们限定输出的范围,这就是比例尺的作用。

比例尺生成器

阅读全文 »