美文网首页数据分析指北
数据分析指北 - 基础(基础数据操作之三,从"完备&q

数据分析指北 - 基础(基础数据操作之三,从"完备&q

作者: HaveF | 来源:发表于2018-07-26 09:50 被阅读0次
    *欢迎关注公众号 数据分析指北*

    数据分析指北 - 基础(基础数据操作之三,从"完备"到基础操作 select)


    历史回看:
    数据分析指北 - 前言(02)
    方法论 之 你会问问题吗?
    数据分析指北 - 基础(数据来源及轮廓)
    有必要搞清楚数据的原始出处以及大致轮廓(分布)。
    数据分析指北 - 基础(基础数据操作之一)
    计算机是怎么处理表数据的,以及一些小学数学题?


    *Photo by Markus Spiske on Unsplash*

    微信公众号:数据分析指北

    关于完备

    假如有人给你出了一套数学题,但从来没有人教过你怎样去做,甚至连基础的操作运算符,加减乘除,你都是不知道的,需要你自己去发明。

    出题的人知道答案,只要存在 "加一","减一" 这两个运算规则就可以解决这套题里面的所有问题。

    你开始不停的研究啊研究,终于发明出来 "加一" 这个运算规则,但可惜的是,"加一" 这个运算规则,只能解决那套题中的部分问题,还有一些问题无论如何只通过 "加一" 是没办法解决的。

    这种情况下,你所知道的规则,就是不完备的(解决不了这套数学题中的所有问题)。

    你接着研究,终于又发明出来 "减一" 这个运算规则,bingo! 这套数学题中的所有问题都解决了!你发明的这两个规则就是完备的。

    但你觉得做题还是有点慢,于是又发明出来 "加二","减二" 等等方便运算的规则,在这种情况下,你之前所发明的整个规则加起来,也是完备的。后面发明出来的规则在遇到一些特定的问题时,会方便快捷一些,但如果没有这些规则,只通过 "加一","减一" 也是没有问题的。

    另外一位同学,小T,和你面对着同样一套数学题,但他的研究过程和你有些差异,他在研究出来 "加一" 规则之后,并没有发明出来 "减一" 这个规则,而是发明出来了 "加负一" 这个规则。小T拥有的这两个规则,也解决了这套数学题中的所有问题,虽然和你的最终结果有所差异,但也是完备的。

    以上就是完备的大概意思。在计算机中,有一种叫做图灵完备的概念。数学家艾伦·图灵(Alan Turing)发明了一台叫做"图灵机"的东西,这台机器能够计算可计算的一切问题。其他人发明出来的虚拟机或编程语言如果和 "图灵机" 一样计算可计算的一切问题,那么这样的虚拟机或编程语言就叫做图灵完备,或是图灵等价的。这个概念在计算机语言方面用的比较多。

    会几种编程语言

    也许你曾遇到这样的问题,"你会几种编程语言?"。其实语言种类不是特别重要,只要你理解一种编程语言,其他大部分的编程语言中基础的概念你就不用再学,只需要记记基本的格式就可以了。计算机程序无非就是,赋值语句,判断分支语句,循环执行语句等。有了这些基本功能,这门语言就可以算"完备"了,有时这些语言会增加一些特别的功能方便用户使用,但其实,如果没有这些特别增加的功能,只使用一些基本功能,也是可以完成任务的。以上述完备例子中的数学题为例,如果你走了 "加一","加负一" 的研究路线,那么在能解决现有问题的情况下,这就是一种 最小完备 的状态,不再投入时间等资源就是 最实用 的一种方式,提纲挈领说的就是这个意思。在其他学科中,可能会用正交,最小正交等词来表达近似概念。

    这种思维方式我们会在后期有意无意的使用。

    之前的作业

    让我们从之前的数据和部分作业继续聊起。

    *示例数据*
    1. 想得到只有班级和姓名组成的新表;
    2. 想得到只有2班同学的新表;
    3. 想得到姓"李"的同学的新表;
    4. 想得到2班同学且只有班级和姓名组成的新表;
    5. 想把上一个问题中得到的表的表头--"班"改成"班级";

    SQL是数据库的标准语言,逻辑,结构都比较清晰,里面的基础语法可以认为是我们上面所提到的操作数据的 最小完备 的语法。鉴于本系列在工具层面会侧重于 KNIME ,那么下面描述逻辑会将SQL的 最小完备 操作对应到 KNIME 中去,以期用最小的时间以及精力代价获得最大收益。

    SQL的语法超级简单,但这种超级简单的语法却能派生出一些复杂的操作。我们先看 SELECT 这个语法。

    SELECT in SQL

    想遴选(select)数据出来,那么必须得知道从什么地方(from)去遴选什么(*),条件是什么(where)。

    我一般将select的操作分为以下两种以及它们的组合。

    *通过SELECT遴选整行* *通过SELECT遴选特定列*

    第一种,通过 SELECT 遴选整行

    select * from sampleData where 1=1
    

    其中的 "*" 代表了要选取那一行中所有的列,where后面的部分可以列写你的筛选条件,写"1=1"只是想在这里放一个占位符,示意这里放你的条件(只不过1=1这个条件是永远成立的)。比如你想要选出 "性别" 列中,元素值为"男"的列,那么你只需要写

    select * from sampleData where 性别='男'
    

    就可以得到你的结果了。

    第二种,通过 SELECT 遴选特定列

    select column1, column2 from sampleData
    

    这句选择展示了 sampleData 表中名叫 column1 和 column2 的列。

    好了,再看我们的作业用SQL的话怎么做:

    1. 想得到只有班级和姓名组成的新表;
      select 班级,姓名 from sampleData
    2. 想得到只有2班同学的新表;
      select * from sampleData where 班级=2
    3. 想得到姓"李"的同学的新表;
      select * from sampleData where 姓名 like "李%"
    4. 想得到2班同学且只有班级和姓名组成的新表;
      select 班级,姓名 from sampleData where 班级=2
    5. 想把上一个问题中得到的表的表头--"班"改成"班级";
      select 班级 AS 班,姓名 from sampleData where 班级=2

    SELECT in KNIME

    对应于SQL中的select语句,KNIME要稍微麻烦一些(但带来了其他好处)。
    我们上节已经把CSV文件导入到了 KNIME 中,这次只需要把对应的基本操作找出来就可以了。(在附录2中我们对 KNIME 有基本介绍。)对于之前图中"通过SELECT遴选整行"的情况,我们只需要把模块 Manipulation/Row/Filter/Row Filter模块放进去就可以代替我们前面所说的 where 功能了。

    *KNIME中的row filter*

    可以从截图看到,row filter 支持各种条件过滤,比如选取符合某种条件的行,或是排除某种条件的行,普通的条件,通配符,正则表达式,或是范围条件,它都是支持的。

    对于之前图中"通过SELECT遴选特定列"的情况,我们只需要把模块 Manipulation/Column/Filter/Column Filter模块放进去就可以代替我们前面所说的 select xxx,yyy 的功能了。

    *KNIME中的column filter*

    通过这两个模块的各种组合,就可以完成上面在SQL中完成的五道作业。第5题改表头的特殊要求,需要我们找到KNIME中的一个叫 rename 的模块,组合进去就可以了。

    本次作业是:熟悉一下这次谈到的模块,并自己组合一下试试看。

    配套练习下载方法:关注公众号,回复 "作业" 二字即可获得下载链接。

    回头聊

    反馈,转发或赞赏?

    相关文章

      网友评论

        本文标题:数据分析指北 - 基础(基础数据操作之三,从"完备&q

        本文链接:https://www.haomeiwen.com/subject/dbmvmftx.html