数据时代程序员必备技能:数据可视化
说到数据可视化,大家可谓耳熟能详,设计师、数据分析师、数据科学家等,都用各种方式各种途径做着数据可视化的工作......实际上,我们每一个人,天生具有可视化思维,甚至经常性地做一些可视化操作。
比如,做工作总结 PPT,要尽量字少有图; 展示报表,会选择柱状图;走在马路上,更容易被图形而不是文字吸引...... 这并不是因为我们聪明,只是大脑讨厌枯燥的数据,天生喜欢鲜明直观的可视化图形。
在这里我还是要推荐下我自己建的大数据学习交流qq裙:522189307 , 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴。
下面我们看个例子。
2018 年中美“贸易战”,美国的媒体为了向美国老百姓说明中国经济发展的情况,特别是对美国经济的威胁,一定要使用到中国经济和美国经济相关数字。那么,你觉得这些数字怎么展示?
图 1 常规展示中美 GDP
这是一张预测中美 GPD 走势的图示。看此图,我想,美国人也没有什么太被刺激的感觉,因为看看两条线,未来即使有高低之别,但差别也没有那么吓人,况且,预测还可能不准确呢。
再对比图 2。
虽然这张图中也包含了数字,但是,它同时配置了表示数字的图示,并且都很形象,人的视觉无形中就被图示所吸引了。把数字本来的抽象意义,用直观方式表达出来,更刺激人的大脑。
这是个普通的数据可视化案例。今天我们想跟大家分享的是数据科学领域的数据可视化。分享的过程中,我们会明白,数据可视化已经成为数据时代程序员的必备技能。
我们从数据科学开始说起。
01
数据科学
下面的定义来自“维基百科”中的“数据科学”词条。
数据科学(英语:Data Science),又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。
它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。
阅读了词条的解释,算是对数据科学有了初步的感性认识。
根据经验,对于专有名词的英文词条解释与其对应的汉语说明,还是有差异的。因此,特别建议再阅读“数据科学”的英文词条:Data science。
Data science is an interdisciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from data in various forms, both structured and unstructured, similar to data mining.
Data science is a "concept to unify statistics, data analysis, machine learning and their related methods" in order to "understand and analyze actual phenomena" with data.
It employs techniques and theories drawn from many fields within the context of mathematics, statistics, information science, and computer science.
显然,中文“数据科学”和英文的“Data Science”两个词条的内容,从信息量上看,还是有差别的。
根据 Data Science 中的说明,数据科学所处理的数据包括 “Structured” 和 “Unstructured” (即“结构化的”和“非结构化的”)。数据科学中有一个重要环节,名曰“特征工程”,就是要将一些非结构化的数据转变成通常算法能够处理的结构化的数据。
通常,科学是基础理论部分,它不直接产生价值,它的价值会通过工程体现出来。因此,对应着“数据科学”的应用,就是“数据工程”。那么“数据工程”是怎样的实施流程呢?
02
数据工程
下图是综合了一些书籍所述和个人工作经验而来的。
图 3 数据工程流程
图的优势是能够把很多信息集中显示在眼前,给人以直观视觉化的体验,这也是“可视化”的优势。
但是,图示也有明显的劣势,那就是表述上不严谨,容易产生歧义。比如面对一幅山水画,可能会有各种不同的理解;但是面对 F = ma 这个牛顿第二定律的表达式时,就只能有一种理解,不能仁者见仁智者见智。
因此,通常图示都要配说明。
03
理解商业问题
这是“数据工程”的开始,从业者——数据工程师,必须对相应的业务有所了解,这也是数据工程师特有的市场价值之一。
理解商业问题,并非是成为业务高手,而是要能够从业务中梳理出与数据工程项目有关的环节,特别是将业务中某些问题转化为数据问题。
比如,某公司打算开发一套能够评价学生学习情况的软件系统,其中应用了所谓“过程性评价”的学习发展评价方式,要实现这种评价方式,就需要用到数据分析、机器学习的有关技能。
面对这个项目,首先问如下几个问题:
哪些类型的数据能够支持“过程性评价”?
通过什么渠道可以获取这些数据?
所获得的数据可靠程度如何?
以上问题获得了明确答复之后,再考虑后续的工作,否则项目就成为了空中楼阁。
通过理解商业问题,把通常的业务人员习惯用的描述性语言,转变为具体的科学性语言,才能对某些环节作出“数据性”回复,实现“数据驱动决策”目标。
还是用前面的例子来说明,通常的教育工作者或者业务人员,会对“过程性评价”的结果这样描述:过程性评价能够对学生的成长发展提供指导,而不是一考定终身。
这种说法貌似容易理解,但里面充满了歧义,列出几项(包含但不限于):
学生成长发展的指标是什么?是考试成绩?心理发展?身体状况?
如果是考试成绩,是周考试成绩?月考试成绩?学期末考试成绩?
如果是心理发展,用什么量表测量?还是凭借主观观察?
如果是身体状况,又要测量哪些项目?
衡量学生发展的周期是多长?学年?学期?月?周?日?小时?每次作业?
显然,要落实所谓的“素质教育”,需要解决的问题真的太多、太复杂,绝非几句口号和几篇文章就能解决的。
若要从数据层面解决上述问题,就必须把有关数据的问题提炼出来,用准确的语言表述,然后考查业务是否能够支持这些问题。
04
数据收集
数据收集和前述理解商业问题,两者之间是一个互动关系。研究收集数据的方法,也是对商业问题的再度理解。
此外,数据收集还包含着从某个数据集中获得数据的含义。这里所说的数据集,包括但不限于:
数据库,包括关系型和非关系型
数据接口(API)
保存数据的文件,比如 Excel、CSV 文档等
以上这些是常用的数据集,如何从这些数据集中读取到数据?需要的技能应该是:
熟练使用 SQL
熟练使用某种编程语言
05
数据清洗和特征工程
假设已经通过某种合法的方式“不作恶”的途径得到了某些数据,接下来要做的是了解这些数据,主要通过以下两种方式:
对数据进行简单的描述性统计
对数据实行可视化,直观地了解数据概况
06
两个分支
有了“训练好”的数据之后,根据商业问题的目标,可以从事两个方面的具体工作。
(1)数据分析
应用各种数据分析的方法,最终得到一份分析报告。分析结果,除了用数字表达之外,可视化是不可避免的(又见“数据可视化”)。
(2)机器学习
机器学习是另外一个专门领域,目前正火热。
通过机器学习算法,实现对数据的分类、预测和聚类等操作,在这个过程中,也难免要用“数据可视化”表达某种结论。
07
评估
不论是机器学习,还是数据分析,其结果都要进行评估。
对于机器学习而言,有专门的模型评估方式。即便如此,用可视化的方式把结果表达出来,也是一种重要的手段。
根据评估结果,确定是否采用机器学习所获得的模型,亦或数据分析的报告是否被采纳。
以上是数据工程项目的基本流程,从中可知,“数据可视化”并不是流程中的一个独立环节,它是几个环节中必不可少的实现手段。
08
数据可视化是必备技能
毋庸置疑,人工智能正在改变着现在和将来。
数据可视化就是人工智能领域诸项技术的宠儿。
数据清洗、特征工程中有它的身影
机器学习、数据分析离不开它
项目评估、商业分析中需要它出手
不仅如此,数据可视化还能作为独立的业务。
同时,数据可视化还广泛存在于各种商业、政务、教育等领域的业务表述之中。
图才是喜闻乐见、通俗易懂的,是大脑喜欢的。数据可视化技能已经成为数据时代程序员的必备技能。
09
灯火阑珊处的选择
数据可视化的学习材料有很多了,为什么要选择本课程作为学习资料?
那就要了解本课程为读者做了什么。深入浅出阐述有关知识点和技能,同时“授人以渔”,这是核心目标。
介绍目前常用的几种工具,当然不可能穷尽所有工具,挑选了部分具有代表性的。
Matplotlib
Seaborn
Plotnine
Plotly
Pyecharts
Bokeh
在讲解的过程中,配以丰富的示例。