深入浅出数据分析(一)——MySQL+EXCEL+R统计问卷调查
本篇文章面向对象为小白,大牛扫一眼或看看目录就懂了。
目录
先说个人背景:本人于2014年暑假参与校就业信息网的开发,其中一个工作就是开发问卷调查系统,用的是PHP+MySQL(一种主流的后台开发语言和数据库)。
大三学期期末,BOSS紧急给了两个任务:
- 未填写调查问卷的同学的名单
- 学生求职的平均支出和平均工资
第一个任务还好,花点时间查w3c和纠错得到结果(来看EXCEL的同学可以略过):
SELECT DISTINCT `stu_info`.id AS `stu_id`, stu_info.`name`, `endyear`, college.`name` FROM `stu_info`, `quiz_operation`, `college`
WHERE NOT EXISTS (SELECT * FROM quiz_operation WHERE stu_info.id = quiz_operation.stu_id)
AND stu_info.colid = college.`colid` AND endyear = 2015;
直接得出结果发给BOSS。
第二个任务,也就是求得学生求职的平均支出和平均工资,才是我们本篇文章的重点——数据分析相关。
确定问题
未明确明确自己的问题或目标就进行数据分析,如同为定下目的地就上路旅行一样。 —— 《深入浅出数据分析》
本次目标很明确:求得学生求职的平均支出和平均工资。
但是,关于「学生求职的平均支出和平均工资」的问题是单独的两个填空题,如下图。(问卷并不合理,合理就不用我上了,有点挑战)
要处理数据,我们至少有以下几个方面要考虑:
- 可行域范围的确定:平均支出和平均工资多大是合理的;
- 字符识别:元,块,RMB,钱,k,多个数字等等各种情况;
- 筛除不可靠数据:比如学生乱填写的数据。
其中,第二点和第三点是难点。当然,大部分内容会在「分解」中详细叙述。
分解
分解问题
分解问题意在将大问题划分为小问题,通过回答大问题分解出来的小问题,就可找到大问题的答案。
显然,在这里我们不需要这么做。在调查问卷中,有两个单独的关于「学生求职的平均支出和平均工资」的问题,我们要做的就是分解数据。
分解数据
由于之前问卷设计存在纰漏,关于「学生求职的平均支出和平均工资」的问题是一个填空题。
因此分解数据并不简单,在调查问卷中,关于「学生求职的平均支出」的问题是一个填空题。而且当初设计用户填完后上传到数据库的内容为
可见,我是用一对分隔符“\/”将用户填写的每个选项分隔开。其中,quiz_id
= 7的数据中,被分隔符“\/”划分开的第四个选项,就是关于「学生求职的平均支出」的问题。
顺便一提,第五个选项是多选题。
接下来我们要做的是选定我们分解数据的工具。当前情境有以下