作者 | CDA数据分析师
循环语句
1、for循环
For循环用来遍历任何序列的项目,这个序列可以是一个列表也可以是一个字符串,针对这个序列中的每个项目去执行相应的操作。
举一个例子,一个数据分析师的必修课主要有Excel、SQL、Python和统计学,你要想成为一名数据分析师,那么这四门课是必须要学的呃,且学习顺序也应该是先Excel,再SQL,然后Python,最后是统计学。依次学习这四门课的过程就是在遍历一个for循环。
2、while循环
While循环用来循环执行某程序,即当条件满足时,一直执行某程序,直到条件不满足时,终止程序。
举一个例子,七周成为数据分析师,即只要你按课程表学习七周,你就算是一名数据分析师了,可以去找工作了。这里就是以你是否已经学习了七周作为判断条件,如果学习时间没有达到七周,那么你就需要一直学,直到学习时间大于七周,你才可以停止学习,去找工作了。用while语句执行时的具体流程如下图所示:
下面为其实现代码:
条件语句
1、if语句
if条件语句是程序先去判断某个条件是否满足,如果该条件满足,则执行判断语句后的程序。If条件后面的程序需要首行缩进。
举一个例子,如果你好好学习数据分析师的必备技能,那么你就可以找到一份数据分析相关的工作,但是如果你不好好学习,那么你很难找到一份数据分析相关的工作。
我们用1表示好好学习,0表示没有好好学习,并赋初值为1,也就是假设你好好学习了。
当判断条件为是否好好学习时,具体流程如下图所示:
下面为其实现代码:
当判断条件为是否没有好好学习时,具体流程如下图所示:
下面为其实现代码:
因为条件不满足,所以执行if条件后面的程序,即输出为空。
2、else语句
else语句是if语句的补充,if条件只说明了当条件满足时程序做什么,没有说当条件不满足时程序做什么。而else语句正好是用来说明当条件不满足时,程序做什么。
当判断条件为是否好好学习时,具体流程如下图所示:
下面为其实现代码:
当判断条件为是否没有好好学习时,下面为其代码实现:
3、elif语句
elif语句可以近似理解成else_if,前面提到的if语句、else语句都只能对一条语句进行判断,但是当你需要读多条语句进行判断时,就可以用elif语句判断。
elif中可以有else语句,也可以没有,但是必须有if语句,具体执行顺序是先判断if后面的条件是否满足,如果满足则运行if为真时的程序,结束循环;如果if条件不满足时就判断elif语句。可以有多个elif语句,但是只有0个或者1个elif语句会被执行。
比如你要猜某个人考试考了多少分,你该怎么猜?先判断这个人是否及格(60分为准),如果不及格,分数范围直接猜一个小于60分的即可,如果及格了再去判断他的分数到底在哪个分数段,具体流程如下图所示:
代码实现如下图所示:
函数
函数是再一个程序中可以被重复使用的一段程序。这段程序是由一块语句和一个名称组成的,只要函数定义好以后,你就可以在程序中通过该名字调用执行这段程序。
1、普通函数
普通函数一般由函数名(必需)、参数、语句块(必需)、return、变量这几部分组成。
函数定义语法如下图所示:
定义函数使用的关键词是def,函数名后面的括号里面放参数(参数可以为空),参数后面要以冒号结尾,语句块要缩进四个空格,语句块是函数具体要做的事情。
定义一个名为learn_python的函数:
上面的函数利用函数名learn_python调用了多次learn_python对应的语句块。
函数的参数有形参(形式参数)和实参(实际参数)两种,在定义函数的时候使用的参数是形参,比如上面的location;在调用函数时传递的参数是实参,比如上面的地铁。
上面语句块中直接执行了print操作,没有返回值,我们也可以利用return对语句块的运行结果进行返回。
定义一个含有return的函数:
这次调用函数以后,没有直接进行print操作,而是将运行结果利用return进行了返回。
定义一个含有多个参数的函数:
2、匿名函数
匿名函数,顾名思义就是没有名字的函数,也就是省略了def定义函数的过程。Lambda只是一个表达式,没有函数体,lambda使用方法如下:
arg1,arg2,arg3表示具体的参数,expresion表示参数要执行的操作。
现在我们分别利用普通函数和匿名函数两种方式来建立一个两数相加的函数,让大家看看两者的不同。
普通函数如下:
匿名函数如下:
匿名函数比普通函数简洁的多,也是比较常用的,大家务必熟练的掌握。
高级特性
1、列表生成式
现在有一个列表,你需要对该列表中的每一个,你需要对该列表中的每个值求平方,然后将结果组成一个新列表,我们先看看普通方法怎么实现的。
普通方法实现如下:
列表生成式实现如下:
上面的需求比较简单,你可能没有领略到列表生成式的妙用。我们再来看一些复杂的需求。
现在有两个列表,需要把这两个列表中的值两两组合,我们分别用普通方法和列表生成式实现一下。
普通方法实现如下;
列表生成式实现如下:
上面的需求用普通的方法要嵌套两个for循环,但是用列表生成式只要一行代码即可。如果数据量很小,那么for循环嵌套运行速度还行;如果数据量很大的话,那么for循环嵌套太多的程序,运行就会变的很慢。
2、map函数
map函数的表现形式是map(function,agrs),表示对序列args中的每个值进行function操作,最终得到一个结果列。
map函数生成的结果序列不会直接把全部结果显示出来,要想获取到结果需要for循环遍历取出来。也可以使用list方法,将结果值生成一个列表。
模块
模块是升级版的函数,我们前面说过,在一段程序中可以通过函数名多次调用函数,但是必须在定义函数的这段程序里面调用,如果换到其他程序里该函数就不起作用了。
模块之所以是升级版的函数,是因为在任意程序中都可以通过模块名去调用该模块对应的程序。
你要调用函数首先需要定义一个函数,同理,你要调用模块,首先需要导入模块,导入模块的方法主要有两种。
数据分析领域用的比较多的三个模块分别是Numpy、Pandas、matplotlib,Python中还有很多类似的模块,正是因为这类模块的存在,使得Python变的很简单,受到越来越多人的欢迎。