• 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。

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

  • 相关阅读:
    读书笔记 ASP.NET 2.0编程珠玑
    为什么公司招聘一个好员工很难,程序员找份好工作也不容易
    读书笔记 ASP.NET 2.0高级编程 第31章 配置
    Win7 x64 旗舰版下重新注册IIS7.5
    T_SQL 开发的13个Tips
    报表服务扩展:基于WCF技术的报表服务扩展
    实现多国语言的Reporting Services项目
    技术人生:如何成为一位优秀的程序员
    幸福框架:待实现的基础应用列表
    技术人生:做人十心机
  • 原文地址:https://www.cnblogs.com/zym-yc/p/11249801.html
Copyright © 2020-2023  润新知