因为实验需要处理大量excel文档,繁琐且重复耗时,所以萌生用电脑语言做自动处理以取代人工操作的想法。在R语言和pyhon之间有过犹豫,但因为之前有接触过一点python且在电脑上已经有了python的安装,所以决定用python作为第一个学习的对象争取达到处理自己实验数据的目的。

挑选python的原还有一部分在于有pandas的架构,一些基础的阅读文档和处理数据的methods都已经规范化,所以遂认为比较好上手。

对于单纯用于处理excel的方面,我是在学习数据基础之前就通过爬别人的代码解决了自己的需求。但在学习的过程中出遇到很多次因为不了解基础而无法解决问题的局面,所以短短的10几行代码花了3天时间才搞明白应该怎么写。事后回顾这些代码才发现基础的编程逻辑,在写之前就了解的话会事半功倍一些,而这些内容仅仅就是一些非常基础的概念,通过阅读一篇详细的介绍,在20分钟之内应该就可以有相当程度的了解。我写这篇学习笔记的原因也是想对上述提到的抽象基础概念进行一个总结,并对自己完成的IBM的data science intro课程进行一个总结(就是python基础课)。

数据基础

在python中,数据的基础类型拥有:整数 integer 无小数点的数字,缩写为int

实数 float 带小数点的数字,float (Double是64位的实数,但是我目前的需求只需要了解到float)

文字内容 string,str 通常由 ‘‘ 符号包含,即‘ ’内的任何内容都是string,包括‘2’其中的2也是string。这里要注意string不能用于数学计算

从基础应用python的方面来说,了解这些数据结构是起步,因为在Python中实现的也是对这些基础数据的重新整理,或者是计算。建立这些基础的数据概念,就相当于小学我们学习数字和字母拼音,单独的数字和字母拼音不构成有意义的单位,不过我们可以运用这些基础去做进一步的运算和拼字从而构成有意义的单元。比如1+1=2,Shua刷。在python中我们也可以做这些基础释义单元的构成,但在构成这些释义单元之前,我们还需要了解一些基本的运算规则。

变量(Variables)

首先,变量在python中是基础的数据容器,相当于现实生活中的建房子的砖块

我们在python中要进行任何的数据处理,都是用‘砖块’作为基础,例如

a = 1

b = 1

c = a + b

c: 2

但每个变量可以赋予的数据不仅仅是数字1这么简单,他可以拥有很多内容比如

a = ['a', 'b', 1, 2]

这个变量里面就包含了,a (string), b(string),1(int), 2(int) 这里面很有意思的一点是,如果你用‘1’放入a变量内那么 1也会是一个string。

知道了变量可以是一个数据的容器之后,还要知道在这个容器里,每一个数据都是有位置编号的,而编号存在的意义是赋予数据在容器内的顺序。这个编号我们叫做指数(index),比如上述变量a中‘a’的index就是0,表示‘a’在变量中是第一个数据,随之,‘b’的index就是1。(计算机中数字从0开始,第一个是1不是0)而这个变量的意义就是:我们拥有的有序分类的数据,第一个数据是‘a’,第二个数据是‘b’,第三个数据是1,第四个数据是2。

这种最基础的变量就叫做list,用[]做数据代入的工具,list本身是个有顺序的数据序列,如下图所示。如果你要读取一个list里面的数据,你只用输入这个数据的index就可以调出该index对应的数据,无论是string或者是数字,都可以作为输出内容。

例如

a = ['a', 'b', 1, 2]

a[0] : a (变量的第一个数据)

a[1] : b

a[2] : 1

a[3] : 2

上图中除了list之外还有另一类的变量类型叫做Dictionary,这种变量的特点是,以非数字的string作为每一个数据的index。对于dictionary类别的的变量,通常使用{}符号的作为数据的代入方式,例如:

a = {'allen': 12, 'Mark': 13 }

a['mark']: 12 (输出变量中,mark的数值,当然,mark可以被赋予拥有很多数值,

例如 a= {'mark':[12, 13, 14]} 这个例子中mark就被赋予了一个list的数值

与list相似,dictionary只是用不同的index方式去整理数据,其目的都是为了让数据不再散乱而呈现一个高度工整且随时可以调用的形式,其调用方式,就是以index调用对应的数据。其本质就是贴标签。

但在变量结构中,最常用的形式叫做tuple,用()代入数据 。tuple和list的主要区别在于,tuple变量是不可以改变的,list变量是可以进行改变和修整的。

例如:

a1 = (1,2,3,4)

a2 = [1, 2, 3, 4]

a1是一个tuple变量,这个变量中不能再增加数据,原本在a1变量中的数据也是不能被改变的

换而言之,a2变量中的数据是可以进行修正和改变的,例如我们想往list中的第三个位置加一个数据

a2.insert(2, 'new data')

a2: [1, 2, 'new data', 3, 4]

任何以上这种形式的数据修改都不能在tuple的变量中进行,也就是说tuple无法增加数据,无法替换数据,我们称这种性质叫作immutable,不可变。tuple的这种性质,也决定了在Dictionary的变量中,tuple变量通常被作为keys(也就是数据的index)

例如

a1 = {['mark', 'Allen']: [2, 3]} 但不用作 a2 = {('mark', 'Allen'): [2, 3]}

因为在后续如果还要用到这组变量,并且想改变这个变量内数据的index,a2这组变量是无法改变index的,只有a1中的数据可以去调整index。不过tuple和list的应用都非常的广泛,也是基础,只是在使用之前,要依据自己后续的需求去调整使用哪种变量结构。