从事数据分析这份职业的每个人都会有一场博弈:数据重要还是分析重要。 有的人觉得数据重要,没有合适的数据,拿什么去分析?数据获取、数据清洗、数据读写等各个环节也都是技术和经验的积淀;有的人觉得分析重要,数据的各式处理,换个人能做到,在可预见的将来,机器也能做到,而分析,特别是有经验的分析,不是那么可替代的。 我不评论哪方重要。但有一点你得明白,不论是数据的处理还是分析,一个优秀的数据分析师,是要在这些个操作过程中注入自己的思维、经验、智谋的。 如果你拿到一堆数据,依葫芦画瓢的预处理、可视化,而非根据实际的情况选用合适的数据分析模型和方法,那么,你始终都get不到这份职业的快感与激爽! 今天的文章,我就之前做数据可视化展示的一个小片段,做做总结。 我的第一篇数据分析类文章,是一份成都地区测试和数据分析岗的对比报告,意图窥探在成都做数据分析的大环境: 由于之前没有实操,没有经验,我在其中一个对比项“工作经验和薪资水平”卡壳许久: 遇到的问题一:可视化工具的选择 我觉得一个二维的对比,不会太复杂,直接祭出Tableau来制图。 可能当时状态不佳,而且用的还是老版本(mac系统,免费的只找到了8.2版),却非要死磕,不仅无果,还花了大把时间。 然后转战python,用matplotlib包,用seaborn包,用pyecharts,最后用到pyecharts的箱型图和seaborn的散点图,才达到我的预期。 遇到的问题二:未事先规划 虽然我想要一个薪资随经验增长的规律图,但并未深入思考图形可视化的可行性,一开始便选择方向,觉得折线图是最好的表达方式。 殊不知,工作经验、薪资、及对应的数量(eg:工作经验1-3年,薪水为15k的职位的数量),本就构成了三维数据,而采用二维的图形(折线图)是无法表达的。 于是,我踩了这些坑。 — 踩坑 1 — 我以工作年限为横坐标,数量为纵坐标,结果出来的图是这样的。 WTF? 这么多条线是什么,这个图表能表达什么?(线条是不同的工资梯度,eg:10k/15k等) 卒。
— 踩坑 2 —
x轴换成工资梯度如何?
图森破。
更加魔幻了。
卒。
— 踩坑 3 —
听说散点图是个不错的选择。于是我用了pyecharts。
OMG。
这是贪吃蛇吗?
读完了pyecharts的接口文档,也没找到可以优化为我想要的样式的方法。
卒。
— 踩坑 4 —
最后箱型图拯救了我。
But,数据怎么少了一块,工作经验为5-10年的,明明有数据!
我记得当时,走到此处,已过凌晨,本着不肯认输的精神,我原地死磕了1个多小时,依然无果,抱憾而眠。
结果...
第二天起来,10分钟就解决了问题。
原来:
1、pyecharts的箱型图,在0值(1年以下工作经验的数据为0)存在的情况下,后面的数据会向前填充,导致图形紊乱。
2、箱型图本身,每一个x轴,最少需要必须要3个数据
所以,我在代码里进行了如下处理:
# 箱形图实测有两处坑:
# 1、如果某值的df为空,需要特殊处理,填充pd.series,否则图形混乱
# 2、必须保证箱形图的单个y坐标,最低有3个数值[0,0,0],如果有少于3个,则会被覆盖,图形混乱
Years = ['应届毕业生','不限','1年以下','1-3年','3-5年','5-10年']y_test = []
y_analy = []
for j in Years:
analy_data = analy_datas.loc[analy_datas['workYear']==j]
test_data = test_datas.loc[test_datas['workYear']==j]
if analy_data.empty == 1 :
y_analy.append(pd.Series([0,0,0]))
y_test.append(test_data['average'])
elif test_datas.empty == 1 :
y_test.append(pd.Series([0,0,0]))
y_analy.append(analy_data['average'])
else:
y_test.append(test_data['average'])
y_analy.append(analy_data['average'])
图表也就完成了。
(具体分析不再赘述,详情可见文章做数据分析前,先来场职业大PK)
所以此坑让我知道,遇到问题不要死磕,学学一休:休息,休息一会儿。
— 踩坑 5 —
其实最好的,还是散点图来表示。因为箱型图的阅读和分析需要统计学基础。
pyecharts的散点图无法满足需求,其他的包可以吗?
因此我用了seaborn。
图表的展示是比较明朗,但是因为seaborn包在mac系统中文显示乱码的问题不好处理,且x轴展示的顺序,我也无法尽情控制,所以使用效果打个折扣。
来了这么一遭,我深刻的认识到,在合适的时候选用合适的方法进行合适的可视化展示,是多么重要!这既是经验的积淀,也是努力的回报。
不过,我即将面对的,远没这样简单。
我突然想到,将箱型图和散点图展示给不懂图表的人,有区别吗?
没有,分析的最终结果,是要用局外人能听懂的语言进行表达。
可这又涉及到文笔、沟通、演讲上面的技巧了。
所以,你以为战胜了图表,就通向了罗马,然而事实却是,脱离于现实环境的分析,不过是一场场小打小闹。
300多年前,中年的笛卡尔阐述了“我思故我在”的哲学命题。当我怀疑,当我否定,当我思考的时候,证明我是存在的。
唯物or唯心?不重要。
重要的是保持怀疑,保持思考,保持该保持的一切,不就是做数据分析的一种态度吗?
封面 unsplash.com
看这里!看这里!
联系客服