目录:python
Python基础:数组
Numpy:简述数据结构
Pandas:简述app
1、 Python基础:函数
1.1 文件读取工具
1).打开文件
2).操做数据(读、写)
3).关闭文件 **编码
打开文件:spa
fp = open(path, 打开方式, encoding=, errors='Ignore')翻译
操做数据:对象
打开方式:
'r':表示只读字符(readonly)
#'r+':在只读的功能下,在追加一个写的功能
'w':表示只写字符(readwrite),第一次写完,若是没有关闭文件,继续写,那么会将本来的内容覆盖
#'w+':在只写的功能下,在追加一个读的功能
'a':表示追加内容
#'a+':在保留追加内容的同时,新增了一个读的功能
'rb':表示只读字节(二进制数据)
'wb':表示只写字节(二进制数据)
encoding:
编码集若是不显示定义,对应:gbk
errors:
若是不写,默认是报错(编解码不一致)
咱们也能够定义为ignore,这样就不会报错了,可是会出现乱码
读取文件中的数据:
fp = open(path, ‘r’)
content = fp.read() #读取所有内容
content = fp.read(num) #读取num个字节数
content = fp.readline() #读取一行数据
content = fp.readlines() #读取全部行,以一个列表的形式返回
print(content) #打印读取到的内容
写入数据到文件中:
fw = open(path, 'w')
fw.write(str1) #将变量str1中的内容写入到path对应的文件中(覆盖)
【注意】写文件,若是文件不存在,先建立文件,再写入内容;若是存在了,将之前的内容覆盖
fw = open(path, 'a')
fw.write(str1) #将变量str1中的内容写入到path对应的文件中(追加)
关闭文件:
fp.close() #关闭文件(释放资源)
2.二、控制语句
1).判断结构
分类:三种格式
①.
if 条件表达式:
语句块
②.
if 条件表达式:
语句块1
else:
语句块2
③.
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
elif 条件表达式3:
语句块3
elif 条件表达式4:
语句块4
else:
语句块n
1.循环结构:
1).while循环:
四要素
①.初始化条件 能够认为是一个起始值(起点位置),代码体现就是定义一个变量,只会执行一次
②.循环条件 获得的确定是一个布尔值,True --> 循环继续,False --> 循环结束 通常循环条件中都会用到
初始化条件的变量
③.迭代条件 不断的去改变变量的值
④.循环体 须要重复执行的业务逻辑代码
对于②、③、④而言可能都会被执行屡次
格式:
①
while ②:
④
③
执行流程:① -> ② -> ④ -> ③ -> ② -> ④ -> ③ -> ② -> 循环结束
False
2).break和continue的使用
对于break而言: 若是在循环中执行到break关键字,那么就会马上结束当前循环
对于continue而言: 若是在循环中执行到continue关键字,那么就会马上结束当次循环,进行下一次循环
3).无限循环(死循环)
解释:循环操做若是循环条件一直为True,整个循环永远结束不了
死循环极其消耗系统资源,可是配合某些关键字(break),那么这个无限循环仍是有意义的
对于while的死循环格式以下:
while True:
4).else的语法:
在循环结构的最后能够配合else一块儿使用,
若是整个循环是正常结束,程序必定会执行else中的代码,
若是整个循环是经过break结束的,程序就不会执行else中的代码
5).forin循环:
1).定义格式一:
for x in seq:
循环体
执行流程:
从seq容器中依次去除它内部的元素给到x,后续的循环体中有可能会用到x中临时存储的值,
等到seq容器中的元素所有被遍历完成了,整个循环也就结束了!
①.能够遍历的容器有str、list、tuple、set、dict
②.若是是遍历字典,只在for关键字后面定义一个变量的话,只能获取到的是整个字典的键,
咱们通常定义两个变量(k, v)来实现键和值的双向获取
2).range()函数
range()函数一旦执行完毕,会返回给我一个序列(容器)
格式:range(start, end, step)
举例:
range(10): 获得[0, 10)
range(0, 6): 获得[0, 6)
range(0, 10, 2) 获得[0, 2, 4, 6, 8]
3).定义格式2:
for x in range(num):
循环体
执行过程:
每次都会从num中取出一个整数值给到x,直到range容器中的全部值所有被遍历执行过了,循环结束!
break和continue关键字一样能够在forin中被使用,做用和在while中是同样的
else也能够被配合使用
4).嵌套循环
格式:
while中能够定义forin ①
while中也能够定义while ②
forin中能够定义forin ③
forin中也能够定义while ④
最为经常使用的两层循环的格式是: ③
结论:
1).外层循环执行m次,内层循环执行n次,程序一共执行了m * n 次循环
2).外层循环走一次,内层循环所有执行一边
3).外层循环中定义的变量,不要和内层循环中定义的变量重名
7).列表生成式
语法糖:
是一种既简洁快捷的表达式。这种式子能够给python的解释器翻译成为业务逻辑比较复杂的代码
如:
三元运算符:简化if-else这种分支结构而出现的
列表生成式:它能够速度,效率的帮助咱们生成一个新的列表
格式:
[expr for x in iterable(可迭代对象:list、tuple、set...)]
8).类型转换函数:
int():
将字符串类型的整数值转换为一个int值
float():
将字符串类型的整数值,浮点值转换为一个float值
bool():
None:False
空字符串:False
空列表: False
空元祖: False
空集合: False
空字典: False
整数的0表示False,其他都是True
str():
能够将整数、浮点数、布尔值、列表、元祖、集合、字典、None转换成str
list():
能够将元祖、集合、字符串转换成列表
能够将字典的键放入到一个列表中
tuple():
能够将列表、集合、字符串转换成元祖
能够将字典的键放入到一个元祖中
set():
能够将元祖、字典、字符串转换成集合,可是会顺便去重
dict():
能够将相似如下的代码转换为字典:
lt1 = [['name', 'zhangsan'],('age', 23),{123, '123'}]
print(dict(lt1))
9).ascii码
在python中有两个内置函数:
chr():将编码值(整数),转换为对应的字符
ord():将字符,转换为对应的编码值
三、函数
定义:将一段功能逻辑代码,封装到一块区域中,这块区域有本身单独的名字(方法名),
以后若是想要执行次功能,只要经过方法名调用,就能够实现了
函数是一种功能、行为,一个方法只表示一个功能。
函数的定义格式:
def 函数名(形参列表):
方法体
方法的命名:
方法名也须要知足标识符的规则和规范
函数的返回值:
有返回值:
须要使用return关键字将方法最终执行之后的结果给到方法的调用处
在同一做用范围内的return关键字后面不要去定义其它的代码,由于永远不可能被执行到
没有返回值:
不须要使用return关键字,方法执行完就over
能够定义return关键字,可是return后面什么内容都不能写,此时的return仅仅意味着方法结束
方法的参数:
方法的形参:
定义在def方法的小括号内的标识符,能够有[0, +无穷]多个
方法的实参:
方法被调用时,显示的传入的具体数据,实参给到形参的过程,
实参是真正在方法体内用到的。
1).一旦定义了有参数的函数,在调用的时候,就必须显示的传递参数(实参),个位和位置都是须要咱们注意的
2).函数的内部还能够调用别的函数
3).python中能够定义默认参数,
若是在调用函数时,不传递任何的参数,或者少传,没有接受到的所有使用默认值
4).python中的函数重载现象,定义在一个.py文件中的两个函数,名字相同,
若是形参列表相同:那么执行调用的是后者的内容
若是形参列表不相同:须要注意,只能调用第二个方法,若是调用第一个,直接报错!
内部函数:
定义在某个函数的内部,它能够获取到外部函数的变量,
可是不能修改它,若是想要修改外部函数的变量,须要显示的定义nonlocal关键字:nonlocal 变量名
全局变量:
直接定义在.py文件中的变量(函数的外部),能够给任何一个函数所使用,
若是想要在某个函数中去修改全局变量的值,咱们能够先定义global关键字:global 变量名
局部变量:
直接定义在函数的内部,只能被本身的函数所使用,
列表函数:
append:
追加一个元素到列表的末尾,固然也能够追加一个列表,可是这个列表会充当一个末尾元素
extend:
追加一个元素到列表的末尾,固然也能够追加一个列表,可是这个列表中的每个元素
都会依次追加到原列表最后
count:
计算列表中某相同元素的个数
index:
返回某个元素在列表中第一次出现的下标位置
insert:
插入某个元素到列表的某个位置,原列表的元素依次向后移
pop:
弹出某个索引位置上的元素,默认弹出末尾元素,一次一个
remove:
删除列表中的某个匹配的元素,一个只能删除一个,最早匹配到的先删除
clear:
清空列表元素
reverse:
对列表进行反转
copy:
拷贝列表中的全部元素,返回一个新的列表(与旧的原来一致) ---》 深拷贝
sort:
将列表中的元素进行排序,默认升序排列 --》 参数:reverse=False
若是将参数:reverse=True 就能够进行降序排列了
字典函数:
items:
返回key-value对集
keys:
返回键集
values:
返回值集
get:
经过键找值
dict1.update(dict2):
将dict2中的键值对复制给到dict1,若是有重复的键,那就将dict2中的键对应的值
覆盖原来的值
copy:
深拷贝
popitem:
弹出最后的一组键值对
pop:
传入键,获得值,将键值对弹出
clear:
清空字典
高阶函数:
1).map(fn, lsd1, [lsd2])
参数一:fn --> 函数对象
参数二和三: lsd1&lsd2 ---> 序列对象(列表、元祖、集合、字符串)
功能:将fn函数做用与lsd1中的每个元素,获得一个可迭代对象(mapobject)返回
2).reduce(fn, lsd):
参数1:fn --> 函数对象
参数2:lsd --> 序列对象
功能:将第一次的执行结果和lsd序列中的后续元素继续运算,....
3).filter(fn, lsd):
解释:
参数1:fn是一个函数对象
参数2:lsd是一个序列对象
功能:将fn函数做用于lsd序列对象的每个元素上,若是fn函数的返回结果为True,那么就保留这个元素
若是返回是Flase,那么就舍弃这个元素;最终返回的仍是一个惰性序列(filterobject类型)
4).sorted函数:
可是在它以前咱们已经学过了list中的sort函数,它们要作的事情是如出一辙的,
可是list中的sort执行之后会直接影响list自己,
而sorted函数执行完毕以后,会返回一个新的容器对象,不会影响自己
2.一、数据类型
整数型(int)、浮点数(小数、float)、布尔型(真假、bool)、字符串(str)、列表(list)、元祖(tuple)、字典(dict)、集合(set)、
3.一、numpy
NumPy系统是Python的一种开源的数值计算扩展,一个强大的N维数组对象Array,比较成熟的(广播)函数库,用于整合C/C++和Fortran代码的工具包,实用的线性代数、傅里叶变换和随机数生成函数,numpy和稀疏矩阵运算包scipy配合使用更增强大。
属性:
ndim:维度
shape:形状(各维度的长度)
size:总长度
dtype:元素类型
基本操做:
索引、切片、级联、变形、切分、拷贝
聚合:
4.1pandas
Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而建立的,pandas 归入了大量库和一些标准的数据模型,提供了高效地操做大型数据集所需的工具,pandas提供了大量能使咱们快速便捷地处理数据的函数和方法,它使Python成为强大而高效的数据分析环境的重要因素之一。
Series:能够把Series当作一个定长的有序字典,能够经过shape,size,index,values等获得series的属性
能够经过head(),tail()快速查看Series对象的样式,可使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据,Series对象自己及其索引都有一个name属性。
操做:建立、索引、切片
dataframe:
最经常使用的方法是传递一个字典来建立。DataFrame以字典的键做为每一【列】的名称,以字典的值(一个数组)做为每一列。
此外,DataFrame会自动加上每一行的索引(和Series同样)。
同Series同样,若传入的列与字典的键不匹配,则相应的值为NaN。
操做:建立、索引、级联、合并