目录:
Python基础:
- Python基本用法:控制语句、函数、文件读写等
- Python基本数据结构:字典、集合等
Numpy:简述
Pandas:简述
一、 Python基础:
1.1 文件读取
1).打开文件
2).操作数据(读、写)
3).关闭文件 **
打开文件:
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.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():将字符,转换为对应的编码值
3、函数
定义:将一段功能逻辑代码,封装到一块区域中,这块区域有自己单独的名字(方法名),
之后如果想要执行次功能,只要通过方法名调用,就可以实现了
函数是一种功能、行为,一个方法只表示一个功能。
函数的定义格式:
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.1、数据类型
整数型(int)、浮点数(小数、float)、布尔型(真假、bool)、字符串(str)、列表(list)、元祖(tuple)、字典(dict)、集合(set)、
3.1、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。
操作:创建、索引、级联、合并