Python学年设计 基础笔记

2021.6.7

《流程的python》

prompt
jupyter notebook

终端
第一步 pip install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple
第二步 jupyter contrib nbextension install --user
第三步 pip install --user jupyter_nbextensions_configurator
第四步 jupyter nbextensions_configurator enable --user

快捷键
命令模式下:
a前面加一行
b后面加一行
dd删除一行

python基础语法

1.缩进 - python语句的开头不能随意添加缩进
2.变量 - 保存数据

只要不是定义在函数或者类中的变量都是全局的

  • 定义语法: 变量名 = 变量值
  • 变量名要求:
    1.是标识符(由数字、字母、_组成,不能以数字开头)
    2.不能是关键字(本身就具备特殊功能或者特殊意义的标识符: for if while else import等等)
  • 变量名的规范:
    1.字母都小写,如果由多个单词组成,单词之间用“_”隔开
    2.见名知义
    3.不使用系统的函数名、类名、模块名
    3.使用变量
    4.同时定义多个变量
    a,b,c = 10,20,30
    x=y=z=100

运算符

1. 数学运算符:

加(+) 减(-) 乘() 除(/) 整除(//) 求余(%) 幂运算()
求余(%):
整除(//):求商,向下取整
幂运算(
):x*y==x的y次方

2.比较运算符:>、<、>=、<=、!=、==

比较运算符的运算结果都是布尔型:True/False
print(8<=age<=18) //python语言可以直接连写,表示范围

3.逻辑运算符:

and(逻辑与==并且)
or(逻辑或==或者)
not(逻辑非==否定)

1.PNG

4.赋值运算符 :( = ) ( += )( -= ) ( /= ) ( *= ) ( %= ) ( //= ) ( **= )

作用:给变量赋值,赋值运算没有结果

5.运算符优先级(优先级高的先算)

数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)

分支与循环

1.分支结构 -if语句

if单分支结构--如果满足条件就执行某个操作,否则就不行

        语法:
              if 条件语句:
                  执行代码

说明:
if -- 固定写法
条件语句 -- 可以是任何有结果的表达式(赋值语句除外)比如:一个具体的数据、已经赋值过的变量、运算表达 式等
: -- 固定写法,必须是英文输入法下的冒号
代码段 -- 满足条件才会执行的一条或多条语句(和if保持一个缩进的语句) 。注意,至少要有一条语句,可以用pass代替
执行过程:
先判断if条件语句是否为true(如果结果不是布尔型就看转换成布尔型是否为true),是就执行,反之不执行
转换,只要数值不是0或null,其他的数1,2,3...转换成布尔型都是true


2.PNG

2.多分支结构

if - else

        if 条件语句:
          满足条件的执行
    else:
          不满足的执行
    不管满足与否都执行 
if - elif - else:
    if   :
        代码段
    elif   :
        代码段
    else  :
        代码段

3.循环结构

1. for循环
          for  变量 in 序列 :
                循环体

说明:
for和in --关键字,固定写法
变量 - 变量名
序列 - 容器型数类型,比如:列表、元组、集合、迭代器、生成器、range、字符串
不是序列的:数字
循环体:和for保持一个缩进的一条或多条语句;循环体就是需要重复执行的代码
执行过程:
让变量去序列中取值(一个一个的取),每取一个值执行一次循环体,直到取完为止。for循环的循环次数和序列中元素的个数有关
比如:

   for x in 'abc' :
      print('xxx',x)
  结果:
        xxx a
        xxx b
        xxx c 
2. range函数
  • 产生一定范围的数字序列
    range(N) - 产生【0,N),步长为1
    range(M,N) - 产生【M,N),步长为1
    range(M,N,step) - 产生[M,N],步长为step


    3.PNG
3. while循环
        while 条件语句:
              循环体

2021.6.8

1. 循环关键字 - continue、break、else

  • continue - 结束一次循环(结束当次循环直接进入下次循环),使用时一般要加入条件语句


    4.PNG

    5.PNG
  • break - 跳出整个循环()

    while true :
         执行代码
         if 循环结束条件:
               break
    

完整的for循环和while循环:

          for 变量 in 序列:
                    循环体
          else ://循环完之后执行
                    代码段


          while 条件语句:
                 循环体
          else ://循环完之后执行
                  代码段
  • else的存在不会影响循环的执行,else的代码段在循环自然结束的时候会执行,循环因为遇到break而结束的时候不会执行。


    6.PNG

数据类型

1. 数值

  • int - 整型
  • float - 浮点型
    .0不要小数
    .1一位小数
    %.1f,保留一位小数
  • complex - 复数

数学中的复数:a+bi
python中的复数:a+bj,j才是虚数的单位
数学复数中支持的数学运算符,python的复数都支持

7.PNG

2. 布尔型

  • bool - bool只有True 和False两个值,bool的本质是整数,True = 1 ,False = 0

3. 字符串

  • str - 字符串表示的时候用单引号或双引号,例:‘abc’,“hello”
    电话号码、邮编

  • 转义字符
    \n - 换行
    \t - 水平制表符,相当于tab键
    \ ' - 一个单引号
    \ " - 一个双引号
    \ - 一个反斜杠

  • 原始字符串
    在python的字符串前面(引号前面)加 r 或者 R ---可以让字符串中所有的转义字符功能消失

  • f-string - 连接字符串


    8.PNG

4. 列表

[ 元素1,元素2,元素3,... ]

  • 一个列表中的元素可以是不同的类型
    例:


    10.PNG
1. 列表的元素和索引(下标)

列表是有序的(顺序标志就是下标),也是可变的
一个列表一旦确定了,那么列表中的每个元素都有两组下标值:从 0 开始递增和从 -1 开始递减


11.PNG
2. 下标操作
  • 列表[ 下标 ] - 获取指定下标对应的单个元素

  • 切片 - 同时获取列表中的部分元素

列表[ 开始下标:结束下标:步长 ] (完整切片)
注意:开始下标能取到,结束下标不能取,即 [ )

省略步长:列表[ 开始下标:结束下标 ],相当于步长为1
省略开始下标:列表[ :结束下标:步长 ] 或者 列表[ :结束下标 ]
省略开始下标时,从两边的一端开始,看步长。步长省略之后的默认为值为 1

3. 遍历
    for  变量 in 列表:
            循环体
    for  下标,元素  in  enumerate(列表):
            循环体
    for  下标  in  range(len(列表)):
            循环体
4. 列表相关方法
  • 添加元素

列表.append

  • 删除元素

列表.remove - 如果有多个同样的元素只删除最前面的一个;如果没有这个元素则报错
del 列表[ 下标 ] - 删除指定下标对应的元素
列表.pop() - 取出最后一个元素
列表.pop(下表) - 取出指定下标对应的元素
列表[下标] = 值

5. 列表推导式
  • 列表推导式的基本功能是创建列表

结构一:

[ 表达式 for 变量 in 序列 ]
作用:做序列的变换

结构二:

[ 表达式 for 变量 in 序列 if 条件语句 ]
作用:筛选

结构三:

三目运算
C语言的三目运算符:表达式?值1:值2
python的三目运算符:值1 if 表达式 else 值2


12.PNG

6. 元组( tuple )

  • 元组 (元素1,元素2,元素3,...)

tuplel1 = (10,20,30)
tuplele2 = 10,20,30 - 省略括号

  • in操作:

元素 in 元组/列表 -- 判断元组/列表中是否存在指定元素


13.PNG

15.png

7. 字典

  • 字典: { 键1:值1,键2:值2,键3:值3,... }

创建字典


14.PNG

获取值
方法一: 字典 [ 键 ]
方法二: 字典 . get ( 键 )

区别:
方法一:如果输入空键,运行会报错
方法二:如果输入空键,运行会成功,但是返回none

修改值

字典 [ 键 ] = 值

添加键值对:前提是添加的这个没有

字典 [ 键 ] = 值

如果原来就有的键值对,使用后会修改原来的
字典 . setdefault ( 键,值 )
如果原来就有的键值对,使用后不会修改原来的

遍历

  • 遍历字典变量获取的是每个键

           for  键值对  in  字典 :
                print()
    

字典的 in 操作判断的是键是否存在

           ‘键 / 值’  in 字典

字典推导式

{ 键:值 for 变量 in 序列 }
{ 键:值 for 变量 in 序列 if 条件语句 }

2021.6.9

函数(基础、高阶函数(实参高阶、返回值高阶、装饰器))
类(创建对象、发送消息、使用数据)
模块(导入和使用模块中的内容)

1. 函数 - 对实现某一特定功能的代码封装

16.PNG

1. 定义函数

        def  函数名(形参列表):
                  函数说明文档
                  函数体

说明:

def - 关键字,固定写法
函数名 - 程序员自己命名(要求和规范同变量)
(): - 固定写法
形参列表 - 以 , 隔开如:变量名1,变量名2,...(将函数外部的数据传递到函数内部)
函数说明文档 - 一个文档注释(可有可无)
函数体 - 和 def 保持一个缩进的一条或多条语句,以实现函数功能


17.PNG

2. 调用函数

        函数名(实参列表)

说明:

函数名 - 想要调用哪个函数就写哪个函数名
函数在调用前必须先定义

18.PNG

3. 函数的参数

1. 位置参数和关键字参数

位置参数和关键字参数一起用 - 位置参数必须在关键字参数前面


19.PNG
2. 参数默认值

定义函数的时候给参数赋默认值 - 调用函数时如果参数有默认值可以不传参(只给其中一个参数传参必须用 关键字参数,使用位置参数默认给第一个参数传参 )


20.PNG
3. 不定长参数
  • 形参的前面加一个 * 可以不定长


    21.png
  • 也可以加 **

*和 ** 的区别

*在传参(调用)的时候只能使用位置参数
** 在传参(调用)的时候只能用关键字参数

() 和 (*) 同时使用
传参时可以同时使用位置参数(在前)和关键字参数

5. 匿名函数

         js函数
      function 函数名 (形参列表){
       函数体
         }
         js的匿名函数
       function  (形参列表){
       函数体
         }

匿名函数

     匿名函数
  函数名 = lambda 形参列表:返回值

        相当于 
     def  函数名(形参列表):
         return 返回值
22.PNG
  1. max()- 求最大值
  2. min() - 求最小值
  3. sorted() - 从小到大排序
  4. sorted(,reverse = True - 从大到小排序
    5.map函数

map(函数,序列) - 将序列中所有的元素按照制 定规则进行变换
函数 - 一个参数(序列中的元素),一个返回值(描述变换规则)

23.PNG

map ( 函数,序列1,序列2 )
函数 - 两个参数(分别指向两个序列中的元素),一个返回值(新序列中的元素)

24.PNG

类和对象

深入学习:魔法方法、内置属性、私有化、slots\getter和setter、继承(mro模型)

1. 定义类

  class 类名:
         类的内容(包括属性和方法)
    //属性:类属性和对象属性
    //方法:定义在类中的函数,分为对象方法、类方法、静态方法
25.png

1. 使用类创建对象

c1=Circle(10)
10 - 赋值

  • 定义方法的时候,self后面定义参数r,x,y,...
26.PNG

2. 使用对象属性

27.PNG

3. 使用对象方法

28.PNG

4. 使用类属性

5. 使用类方法

31.PNG

6. 使用静态方法

32.PNG

模块的使用

1. 定义

python中一个py文件就是一个模块

怎么在一个模块中使用另外一个模块的内容 - 导入

1. 导入方式
  1. import 模块名 - 导入后可以通过 模块名 . 的方式使用这个模块中所有的全局变量
  2. from 模块名 import 内容1,内容2 - 导入后可以直接使用被导入的所有内容
  3. from 模块名 import * - 直接导入所有
  4. 重命名模块 - import 模块名 as 新名字
    例如:import numpy as np
  5. 重命名内容 - from 模块名 import 内容1 as 新名字

三大神器 - numpy pandas matplotlib

  • numpy - 处理数据 (ndarry - 提供多维数组)
  • matplotlib - 数据可视化
  • pandas - 结合numpy和mayplotlib的功能 - 处理数据、数据可视化

导入

  • import numpy as np
  • import pandas as pd
  • import matplotlib as plt

下载第三方库

pip install

2021.6.10

numpy

  • ndarry(多维数组的数据处理)

1. 一维数组

//方式一:用array函数将列表转换成数组
array1 = np.array ( [ 10,78,34,89,23 ] )
//方式二:用arange函数创建指定范围的数字数组
// arange()
array2 = np.arange(1,100)
//步长为2
array2 = np.arange(1,100,2)
//方式三:用linspace函数创建等差数列
//-5 到 5产生 10 个等差数列
array3 = np.linspace( -5,510 )
//方式四:使用numpy的随即模块中的随机函数产生数字数组
//1 到 101 内产生五个随机整数
array4 = np.random.randint( 1,101,5 )

2. 二维数组

//方式一:
array5 = np.array( [ [ 1,2,3 ],[ 4,5,6 ],[ 7,8,9, ] ] )
//方式二:
//产生 1 到 100 内三行四列的随机二维数组
array6 = np.random.randint(1,100,(3,4))
//方式三:
//产生一个五行三列的零值数组
array7 = np.zeros( (5,3) )
//方式四:
//全是1
array8 = np.ones((3,4))
//方式五:
//产生一个三行四列且全是10的数组
array9 = np.full((3,4),10)
//方式六:
//产生一个单位矩阵
array10 = np.eye(4)

3. 数组的属性

  • 例子


    34.PNG
//数组元素的个数
array6.size
//数组的形状(几行几列)
array6.shape
//数组的维度
array6.ndim
//数组的类型(注意:numpy中数组中的元素的类型必须一致)
array6.dtype
//每个元素所占的内存大小(单位:字节)
array6.itemsize
//整个数组所占的内存大小(单位:字节)
array6.nbytes

4. 数组的方法

1. 获取描述性统计信息相关方法
  • 例子


    34.PNG
//求和
print(array1.sum())

//平均值
print(array1.mean())

//最大值和最小值
print(array1.max() , array1.min())

//标准差
print(array1.std())

//方差
print(array1.var)

//累计和
//当前时期与前面时期的和
print(arry1.cumsum())

//累积乘积
print(array1.cumprod())
2. 变换相关方法
  • 例子


    35.PNG
//
从小到大排序
array1.sort()
//调整数组形状,三行两列,六个元素
//不修改原数组,产生一个新的数组
array1 .reshape(3,2)
//调整数组大小,不够的数据用 0 填上,recheck
//直接修改原数组
array1.resize(3,4,refcheck=False)
//数组扁平化(将多维数组变成一维数组)
//array1是一维数组不做此例子使用
array.flatten
3. 切片
//numpy一维数组切片和列表切片一样
array1[1:-1]
36.PNG

二维数组【行切片:列切片】


37.PNG
4. 索引操作
普通索引 - 和列表一样

一维


35.PNG
print(array1[1])
print(array1[-1])

二维


38.PNG
花式索引

在 [ ] 中用一个一个的列表罗列出所有要获取的元素的下标

一维

array1 [  [0,2] ]

二维
二维数组[ (所有的行索引),所有的列索引]

array6[ (x1,x2),(y1,y2) ...]
布尔索引
39.PNG

5. 数组的运算

1. 数学运算

+-**

40.PNG
2. 数组和数组的运算

一维对一维,个数必须相等

41.PNG

二维相同数组,对应运算

42.PNG

如果形状不同,满足广播机制的时候两个数组可以运算


43.png

44.png

矩阵乘法 - x @ y (x的列数必须等于y的行数)

3. 其他相关函数
1. 将数据保存到本地(硬盘中)- 保存成二进制文件
array.dump('文件名')
2. 加载本地数据
temp = np.load('文件名',allow_pickle=True)
45.PNG
3. 去重
np.unique(数组名)
46.PNG

2021.6.11

pandas

1. Series

1. 创建Series对象

s1 = pd.Series(  
    data = [10,30,78,20,12]
   )
s2 = pd.Series(data = range(1,10))
s3 =pd.Series(
np.randint(20,100,6)
)
s4= pd.Series(
        data=[ 70,12 ]
       index= ['小明','小红']
)
s5 = pd.Series(
      data= {
               '张三':10,
               '李四':20
        }
)

2. 索引操作

s5[ 0 ]  , s5[ '张三' ]
//获取描述性统计信息
s6 = s5.describe(  )
//获取全部索引
s6.index
//获取所有数据
s6.values
//获取元素个数
s5.size
//判断是否单调
//默认是判断单调递增与否
s5.is_monotonic()
//单调递增
s5.is_monotonic_increasing()
//单调递减
s5.is_monotonic_decreasing()

索引操作:支持numpy中的普通索引、花式索引、布尔索引

s7 = pd.Series(
np.random.randint( 20,80,6 ),
index = 
)

相关方法

常规数据

print(s7.max())
print(s7.min())
print(s7.mean())
print(s7.std())
print(s7.median())#中位数
print(s7.quantile())#分位数

删除空值


47.PNG

填充空值


48.PNG

去重


49.PNG

2. DataFrame(二维数组)

df2 = pd.DataFrame(
    data=np.random.randint(70,100,(4,3)),
    index=range(1001,1005),
    columns=['语文','英语','数学']
)
df2
50.PNG
#字典创建
df3 = pd.DataFrame(
    data={
        '语文':[90,94,90,88],
        '数学':[85,82,78,95],
        '英语':[75,78,87,95]
    },
    index=range(1001,1005)
)
df3
#读csv文件,逗号分隔符文件
#pd.read_csv(文件路径)
df4 = pd.read_csv('data/2018年北京积分落户数据.csv')
df4
51.PNG
df5 = pd.read_csv(
    'data/2018年北京积分落户数据.csv',
    #设置作为索引的列
    index_col='id',
#     #设置读取的行数
#     nrows=10,
#     #跳过指定行
#     skiprows=range(0,6)
    #设置需要读取的列
    usecols=['id','name','score']
)
df5
52.PNG
#读excel文件
df6 = pd.read_excel('data/阿里巴巴2020年股票数据.xlsx')
df
53.PNG

2021.6.15

2. DataFrame的属性和方法

1. 基本属性

print(df2.shape)#形状
print(df2.values)#所有的值,data
print(df2.index)#行索引
print(df2.columns)#列索引
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容