Python数据分析(基础)

目录:

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。

操作:创建、索引、级联、合并

原文地址:https://www.cnblogs.com/zym-yc/p/11249801.html