Python的创始人是荷兰人Guido van Rossum,据说这个如今大火的编程语言是他在一个无聊的圣诞节夜晚编写出来的(在此顶礼膜拜,深表敬意!!!)。
Python是从ABC语言发展起来的,是ABC语言的一种继承。Python现在已经成为了最受欢迎的程序设计语言之一。目前我们熟知的只要是Python 2.X和Python 3.X。Python 2.X是2004年的10月16日正式发布,稳定版本是Python 2.7,Python 3.X是于2008 年12月3日发布的,不完全兼容Python 2.X版本。值得一提的是,目前Python 2.X版本已经不在维护,所以墙裂建议使用Python 3.X版本。
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的编程脚本语言,什么是脚本语言呢?就是采用解释方式执行的语言。解释方式是将源代码逐条的转换成目标代码的同时,同时逐条的运行目标代码的过程。和Python同为脚本语言的还有很多,像Javascript。而我们平时耳熟能详的C、Java语言是属于静态语言,采用编译的方式运行。
接下来,我们将会说说Python都有哪些特点吧:
简单易学:Python的关键字只有33个,相较于其他的程序设计语言,是相对少的,同时Python的结构也十分简单,也拥有自己明确的语法。跨平台移植:基于Python的开放源码特性,可以被移植到其他的平台之上,像Linux、Windows、macOS等。强制可读生态丰富:Python届解释器提供了几百个内置库和函数库。支持中文:Python 2.X是不支持的,需要通过设置编码等方式间接支持。类库便捷:可以通过使用pip在线安装类库。 2 Python编程语法基础 2.1 变量类型
任何的程序设计语言都需要使用变量,因为这样会方便我们对数据的处理。通常情况下我们将程序存储在变量中,这就说明了在创建变量的时候会在内存中开辟一个空间。基于变量的数据类型,会开辟不同的存储空间,并且会决定什么样的数据可以被存储。因此,变量有多种数据类型。
在Python中,我们常见的数据类型有数字、字符串、列表、元组、集合和字典。
2.1.1 数字 数字是不可变的数据类型,这就说明了我们要是改变了一个数字的数据类型,就会重新分配一个新的对象。Python现在支持4种不同的数据类型:
int:有符号整型
long:长整型,是int型更大表示范围的数据类型。
float:浮点型
complex:复数
还有一点需要说明的是,数字在Python中不止一种表示方式,也可以有二进制、八进制,十六进制的表示方式,以上示例都用的是十进制表示方式。关于各种其他的表示方式,比如说二进制、八进制和十六进制。
2.1.2 字符串 字符串是由数字、字母、下划线组成的一串字符,在Python中,字符串必须使用括号括起来,可以使用单引号也可以是双引号,只要成对即可,字符串中的内容几乎可以包含任何字符,英文字符、中文字符都可以。
2.1.3 列表 list(列表)是Python中使用最频繁的的数据类型,是一种可变的数据类型,列表可以实现大部分集合类的数据结构的实现。支持字符、数字、字符串甚至可以包含列表,列表用“[]”标识。是Python最通用的复合数据类型。
2.1.4 元组 元组是另外一种数据类型,类似于list,元组用“()”标识,内部元素用逗号隔开,但是元组不能二次赋值。
2.1.5 字典 字典和列表一样,也是许多数据的一种集合,属于可变性序列的数据类型, 不同之处设计,这是一种无序的可变序列,它的保存内容是以一种“键-值”对的形式保存。字典是Python中唯一的一种利用映射结构进行数据保存的数据类型。映射指的是元素之间相互对应的关系,也就是通过一个元素,可以唯一的找到另外一个值,字典中,我们习惯将对应的索引称为键(key),每个键所对应的就是唯一的值(value)。
2.1.6 集合 集合是用来保存Python中不重复的元素,即使集合中有重复元素,也会输出一个值,也就是不同的值之出现一次,从形式上看,Python地集合和字典一样,会使用“{}”将所有元素放入其中,但是集合不是键值对的形式,元素之间用“,”进行分割。在集合中的元素可以是不同的数据类型。
2.2 运算符 Python中支持算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算术运算符:用于两个对象算术运算(加减乘除等运算)。
| 运算符 | 描 述 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取余(取模)运算 |
| ** | 幂运算 |
| // | 取整除 |
比较(关系)运算符:用于比较两个对象的大小(判断是否相等、大于等运算)。
| 运算符 | 描 述 |
|---|---|
| == | 等于 |
| != | 不相等 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
赋值运算符:给所声明的对象赋值,将运算符右侧的值(或者其他的数据类型)赋值给左侧的名字。
| 运算符 | 描 述 |
|---|---|
| = | 赋值运算符 |
| += | 加法赋值运算符 |
| -= | 减法赋值运算符 |
| *= | 乘法赋值运算符 |
| /= | 除法赋值运算符 |
| %= | 取余(取模)赋值运算符 |
| **= | 幂赋值运算符 |
| //= | 整除赋值运算符 |
逻辑运算符:常见的逻辑运算符有与、或、非等。
位运算符:对Python对象进行按照存储的bit操作。
| 运算符 | 描 述 |
|---|---|
| and | 逻辑与 |
| or | 逻辑或 |
| not | 逻辑非 |
| & | 按位与 |
| | | 按位或 |
| ^ | 按位异或 |
| ~ | 按位取反 |
| << | 左移动运算符 |
| >> | 右移动运算符 |
成员运算符:判断一个对象是否包含另一个对象。
| 运算符 | 描 述 |
|---|---|
| in | 若在指定序列中找到指定值,则返回True;否则返回False |
| not in | 若在指定序列中没有找到指定值,则返回True;否则返回False |
身份运算符:判断是不是引用自一个对象。
| 运算符 | 描 述 |
|---|---|
| is | 判断两个标识符是不是引用自一个对象 |
| is not | 判断两个标识符是不是引用自不同对象 |
Python中提供两种基本的流程控制结构:分支结构(也称条件结构)和循环结构。分支结构用于实现根据条件来选择性地执行某行代码;循环结构用于实现根据循环条件重复执行某段代码。
2.3.1 条件语句 Python中的条件语句一般结构的(if-else)或(if-elif-else)。经由判断条件选择要执行的语句块。具体的语句结构如下:
(1)结构一
if 判断条件: 执行语句1 else: 执行语句2
(2)结构二
if 判断条件1: 执行语句1 elif 判断条件1: 执行语句2 else: 执行语句3
下面我们通过一个实例来使用这种结构:
print("请输入你的分数!!!!")
score = int(input("我的分数:"))
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("差")
当然,你可以将elif换成(if-else)的结构,但是elif这种结构更为精简。
2.3.2 循环语句 Python中提供while和for两种循环结构。while循环是条件语句为真的时候才会执行循环,执行while中的代码块;当为一个集合知心输出所有元素时,我们就会使用for循环。
我们会依据以下的实例来应用这两种循环。
while循环
打印所有0至10的奇数
n = 0 while n < 10: n += 1 if n % 2 == 0: # 如果n是偶数,执行continue语句 # continue语句会直接继续下一轮的循环,后续的print()语句就不会执行 continue print(n)
自行运行程序,验证结果。
for循环
a. 循环打印客户名字
names = ['Ade', 'Sam', 'Mary', 'Kate'] fo name in names: print(name)
b. 计算1~10的自然数之和
import numpy as np sum = 0 # 使用arange迭代方法输出1~10的数 for i in np.arange(1, 11, 1):、 # 相当于sum = sum + i sum += i print(sum)
以上两个代码结果自行验证。
2.4 函数 在许多的程序设计语言中,都会用函数来定义自己的代码行为,其实我们之前的实例中就使用到了input()、print()等函数,这些是Python中的内置函数,是可以直接使用的。
除了可以直接使用内置函数之外,Python还支持自定义函数,也就是一段有规律的、可以重复使用的代码,我们将它定义为一个函数,这样我们不就可以达到“一次编写,多次调用”的目的。
我们定义自定义函数需要使用def关键字,具体的语法格式如下:
def 函数名(参数1, 参数2, ...): 函数体 return 返回值
我们通过一个简单的实例来说明如何定义函数,比如判断是否成年:
def judge_age(age):
if age > 18:
print("YES")
else:
print("NO")
3 第三方Python库介绍
3.1 Numpy库
Numpy几乎是我们在做数据分析时使用最多的库,它是一个科学计算工具包,最长用的就是它的N维数组对象,其中的还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包、线性代数、傅里叶变换和随机数函数等。Numpy提供ndarray(也就是我们之前提到的N维数组对象)和ufunc(通用函数对象)两种基本的对象,ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
3.2 Pandas库 Pandas是基于Numpy和Matplotlib开发的,主要用于数据分析和数据可视化,它的数据结构Dataframe和R语言中的数据框很像,特别是对于时间序列数据有自己的一套分析机制。
3.3 SciPy库 SciPy是一种开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用到的计算,它的功能和MATLAB类似,Numpy和SciPy常常结合使用,Python中大多数的机器学习课都依赖这两个模块。
3.4 Matplotlib库 Matplotlib是Python中有名的绘图库,它提供一整套的与MATLAB相似命令API,很适合交互式制图,而且也可以方便的把它作为一种绘图控件,嵌入GUI应用程序中。Matplotlib是可以配合ipython使用,提供不亚于MATLAB的绘图功能支持。
3.5 Seaborn库 Seaborn是基于Matplotlib的Python可视化库,该库提供一个高级界面来绘制有吸引力的统计图形,可以使得数据的可视化更加方便、美观。
Seaborn是在Matplotlib的基础上进行的更高级的API包装,这样可以使得作图更加的方便,在大多数情况下使用Seaborn可以做出更加吸引人的视图。而我们使用Matplotlib就可以制作出具有更多有特色的的图,所以我们应该将Seaborn作为Matplotlib的一种补充,Matplotlib是Seaborn所替代不了的。同时Seaborn能够高度兼容Numpy和Pandas的的数据结构,以及SciPy和StatsModels等统计模式。
3.6 StatsMobels库 StatsModels是一个Python模块,该库提供许多不同统计模型估计的类和函数,并且可以统计测试和统计数据的探索。
相比于Pandas主要功能是数据读取、处理和探索,StatsModels更加注重数据的统计建模分析,这让Python和R语言有了几分相像。StatsModels支持和Pandas进行数据交互,因此该库和Pandas结合,成为了让Python下强大的数据分析工具组合。
3.7 Scikit-Learn库mpy和Pandas的的数据结构,以及SciPy和StatsModels等统计模式。
3.6 StatsMobels库 StatsModels是一个Python模块,该库提供许多不同统计模型估计的类和函数,并且可以统计测试和统计数据的探索。
相比于Pandas主要功能是数据读取、处理和探索,StatsModels更加注重数据的统计建模分析,这让Python和R语言有了几分相像。StatsModels支持和Pandas进行数据交互,因此该库和Pandas结合,成为了让Python下强大的数据分析工具组合。
3.7 Scikit-Learn库 Scikit-Learn是一个基于Numpy、SciPy、Matplotlib的开源机器学习工具包,主要涵盖分类、回归和聚类算法,像线性回归、逻辑回归、支持向量机、朴素贝叶斯、随机森林、K-Means等算法。Scikit-Learn最大的特点是为用户提供了各种机器学习的是算法接口,可以让用户简单的、高效的进行数据挖掘和数据分析。



