【Python】学习笔记总结(第二阶段(7-9)——汇总篇)

Myth丶恋晨 2023-03-03 13:28 208阅读 0赞

文章目录

  • 七、Python简单爬虫
    • 1.重要知识与技能
    • 2.使用re表达式抓取网页文件
    • 3.使用requests抓取网页
    • 4.使用re正则表达式提取数据
    • 5.使用xPath工具提取数据
    • 6.使用BeautifulSoup工具
  • 八、Python经典算法
    • 0.Python画图
    • 1.回归-线性回归
    • 2.分类-k最近邻
    • 3.聚类
      • 3.1.Kmeans(k均值聚类算法)
      • 3.2.DBSCAN(基于密度的聚类算法)
      • 3.3.层次聚类算法
    • 4.降维
      • 4.1.PCA算法
      • 4.2.FA算法
    • 5.学习(神经网络)
      • 5.1.BP神经网络
    • 6.推荐算法
    • 7.时间序列(视频学习)
  • 九、数据库与Python交互
    • 1.连接MYSQL数据库
      • 1.1.创建表
      • 1.2.插入数据
      • 1.3.查询数据
      • 1.4.更新数据
      • 1.5.删除数据
      • 1.6.执行事务
      • 1.7.读取数据库表数据并写入excel
      • 1.8.读取excel数据并写入数据库表
    • 2.Python人机交互(Tkinter图形界面开发)
      • 2.1.创建root窗口
      • 2.2.控件布局
      • 2.3.实现commend
      • 2.4.简单测试案例

七、Python简单爬虫

1.重要知识与技能

重要知识与技能:

  1. 使用HTML与CSS制作网页文件
  2. 使用re正则表达式抓取网页文件
  3. 使用requests获取网站内容
  4. 使用re正则表达式提取数据
  5. 使用xPath工具提取数据
  6. 使用BeautifulSoup工具

2.使用re表达式抓取网页文件

  1. import re
  2. myFile = open('Index.html','r',encoding='UTF-8')
  3. myContent = myFile.read()
  4. myFile.close()
  5. #myPatten = "<li>(.*)</li>"
  6. myPatten2 = "([a-zA-Z0-9_\.-]+@[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)+)"
  7. mylist = re.findall(myPatten2,myContent)
  8. print(mylist)

3.使用requests抓取网页

  1. import requests
  2. myURL = 'https://www.3dmgame.com'
  3. myContent = requests.get(myURL).content.decode('UTF-8')

4.使用re正则表达式提取数据

  1. def Get3DMNews_WithRE():
  2. ''' 得到3DM网站的新闻内容 :return: 获取的新闻内容 '''
  3. import requests
  4. import re
  5. myURL = 'https://www.3dmgame.com'
  6. myContent = requests.get(myURL).content.decode('UTF-8')
  7. myPartten = '<a href="(.*)" target="_blank" >(.*)</a>\n <span>(.*)</span>'
  8. myList = re.findall(myPartten,myContent)
  9. for item in myList :
  10. myNews = { }
  11. myNews['title'] = item[0]
  12. myNews['herf'] = item[1]
  13. myNews['time'] = item[2]
  14. print(myNews)
  15. pass
  16. pass

5.使用xPath工具提取数据

  1. def Get3DMNews_WithXPATH():
  2. ''' 得到3DM网站的新闻内容 :return: 获取的新闻内容 '''
  3. import requests
  4. from lxml import html
  5. myURL = 'https://www.3dmgame.com'
  6. myContent = requests.get(myURL).content.decode('UTF-8')
  7. etree = html.etree
  8. eTreeHtml = etree.HTML(myContent)
  9. myList = eTreeHtml.xpath("//li")
  10. for item in myList :
  11. myNews = { }
  12. myNews['title'] = item.xpath('./a')[0].text
  13. myNews['herf'] = item.xpath('./a/@href')[0]
  14. myNews['time'] = item.xpath('./span')[0].text
  15. print(myNews)
  16. pass
  17. pass

6.使用BeautifulSoup工具

  1. def Get3DMNews_WithBeautifulSoup():
  2. ''' 得到3DM网站的新闻内容 :return: 获取的新闻内容 '''
  3. import requests
  4. from bs4 import BeautifulSoup
  5. myURL = 'https://www.3dmgame.com'
  6. myContent = requests.get(myURL).content.decode('UTF-8')
  7. bsHtml = BeautifulSoup(myContent,'html5lib')
  8. myList = bsHtml.find_all('div')[10].find_all('div')[8].find_all('div')[91].find_all('li')
  9. for item in myList :
  10. myNews = { }
  11. myNews['title'] = item.find('a').get_text()
  12. myNews['herf'] = item.find('a').get('href')
  13. myNews['time'] = item.find('span').get_text()
  14. print(myNews)
  15. pass
  16. pass

八、Python经典算法

0.Python画图

Python画图

1.回归-线性回归

回归-课程回顾
目的:找一条线,尽可能地拟合数据点,生成线性回归模型,并进行预测
解决什么样的问题:要完成的任务是预测一个连续值的话,那这个任务就是回归。是离散值的话就是分类
拟合(Fitting):就是说这个曲线能不能很好的描述某些样本,并且有比较好的泛化能力。
过拟合(Overfitting):就是太过贴近于训练数据的特征了,在训练集上表现非常优秀,近乎完美的预测/区分了所有的数据,但是在新的测试集上却表现平平,不具泛化性,拿到新样本后没有办法去准确的判断。
欠拟合(UnderFitting):测试样本的特性没有学到,或者是模型过于简单无法拟合或区分样本。
过拟合和欠拟合的形象解释

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. t = np.arange(1,10,1)
  4. y = 0.9 * t + np.sin(t)
  5. # plt.plot(t,y,"o")
  6. # plt.show()
  7. model = np.polyfit(t,y,deg = 3)#生成三阶模型
  8. t2 = np.arange(-2,12,0.5)
  9. y2predict = np.polyval(model,t2)
  10. plt.plot(t,y,"o",t2,y2predict,"x")
  11. plt.show()

在这里插入图片描述

2.分类-k最近邻

分类-课程回顾
目的:根据已知样本进行分类学习,生成模型,并对测试样本进行预测
解决什么样的问题:了解单个样本信息特征以及其标签值,根据其生成模型,并对测试样本进行预测

  1. #分类算法
  2. #k最近邻:近朱者赤近墨者黑原理
  3. import os
  4. import pandas as pd
  5. from sklearn import neighbors
  6. thisFilePath = os.path.abspath('.')
  7. os.chdir(thisFilePath)
  8. # print(os.getcwd())
  9. df = pd.read_csv('ScoreData.csv')
  10. # print(df.head())
  11. train_x = df.iloc[0:8,2:4]
  12. # print(train_x.head())
  13. train_y= df.iloc[0:8,4]
  14. # print(train_y.head())
  15. model = neighbors.KNeighborsClassifier()
  16. model.fit(train_x,train_y)
  17. test_x = df.iloc[8:11,2:4]
  18. test_y= df.iloc[8:11,4].values
  19. test_p = model.predict(test_x)
  20. print(test_p)
  21. print(test_y)
  22. print(model.score(test_x, test_y))

3.聚类

聚类-课程回顾
目的:根据已知样本进行分类学习,生成模型,并对测试样本进行预测
解决什么样的问题:不了解单个样本信息特征以及其标签值,根据其生成模型,并对测试样本进行预测

3.1.Kmeans(k均值聚类算法)

(k-means clustering algorithm)
在这里插入图片描述

  1. import numpy as np
  2. train_x2 = np.array(train_x[['yuwen','shuxue']])
  3. print(train_x2)
  4. from sklearn.cluster import KMeans
  5. model2 = KMeans(n_clusters=3)
  6. model2 = model2.fit(train_x2)
  7. clusterResult = pd.DataFrame(model2.labels_,index=train_x.index,columns=['clusterResult'])
  8. print(clusterResult.head())

3.2.DBSCAN(基于密度的聚类算法)

(Density-Based Spatial Clustering of Applications with Noise)
在这里插入图片描述
在这里插入图片描述

3.3.层次聚类算法

一篇
二篇
三篇
在这里插入图片描述

4.降维

降维-课程回顾
目的:某种映射方法,将原高维空间中的数据点映射到低维度的空间中
解决什么样的问题:通过映射将数据降维后进行分类,案例征友考量,案例文科指数,理科指数(可以使用因子分析得到与原数据相关系数)

4.1.PCA算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.FA算法

在这里插入图片描述

5.学习(神经网络)

学习-课程回顾
目的:某种映射方法,将原高维空间中的数据点映射到低维度的空间中
解决什么样的问题:案例图像识别

5.1.BP神经网络

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.推荐算法

推荐-课程回顾
目的:利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西
解决什么样的问题:案例推荐
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.时间序列(视频学习)

时间序列-课程回顾
目的:根据已有的历史数据对未来进行预测
解决什么样的问题:案例股票
在这里插入图片描述
在这里插入图片描述
ADF检验
在这里插入图片描述
差分
在这里插入图片描述
在这里插入图片描述
ADF检验
在这里插入图片描述
在这里插入图片描述
反差分
在这里插入图片描述
在这里插入图片描述

引用自 https://www.runoob.com/python3/python3-mysql.html

九、数据库与Python交互

1.连接MYSQL数据库

1.1.创建表

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. # 使用 cursor() 方法创建一个游标对象 cursor
  5. cursor = db.cursor()
  6. # 使用 execute() 方法执行 SQL,如果表存在则删除
  7. cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
  8. # 使用预处理语句创建表
  9. sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )"""
  10. cursor.execute(sql)
  11. # 关闭数据库连接
  12. db.close()

1.2.插入数据

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. # 使用cursor()方法获取操作游标
  5. cursor = db.cursor()
  6. # SQL 插入语句
  7. sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
  8. # SQL 插入语句2
  9. sql2 = "INSERT INTO EMPLOYEE(FIRST_NAME, \
  10. LAST_NAME, AGE, SEX, INCOME) \
  11. VALUES ('%s', '%s', %s, '%s', %s)" % \
  12. ('Mac', 'Mohan', 20, 'M', 2000)
  13. try:
  14. # 执行sql语句
  15. cursor.execute(sql)
  16. # 提交到数据库执行
  17. db.commit()
  18. except:
  19. # 如果发生错误则回滚
  20. db.rollback()
  21. # 关闭数据库连接
  22. db.close()

1.3.查询数据

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. # 使用cursor()方法获取操作游标
  5. cursor = db.cursor()
  6. # SQL 查询语句
  7. sql = "SELECT * FROM EMPLOYEE \
  8. WHERE INCOME > %s" % (1000)
  9. try:
  10. # 执行SQL语句
  11. cursor.execute(sql)
  12. # 获取所有记录列表
  13. results = cursor.fetchall()
  14. for row in results:
  15. fname = row[0]
  16. lname = row[1]
  17. age = row[2]
  18. sex = row[3]
  19. income = row[4]
  20. # 打印结果
  21. print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
  22. (fname, lname, age, sex, income ))
  23. except:
  24. print ("Error: unable to fetch data")
  25. # 关闭数据库连接
  26. db.close()

1.4.更新数据

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. # 使用cursor()方法获取操作游标
  5. cursor = db.cursor()
  6. # SQL 更新语句
  7. sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
  8. try:
  9. # 执行SQL语句
  10. cursor.execute(sql)
  11. # 提交到数据库执行
  12. db.commit()
  13. except:
  14. # 发生错误时回滚
  15. db.rollback()
  16. # 关闭数据库连接
  17. db.close()

1.5.删除数据

  1. import pymysql
  2. # 打开数据库连接
  3. db = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. # 使用cursor()方法获取操作游标
  5. cursor = db.cursor()
  6. # SQL 删除语句
  7. sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
  8. try:
  9. # 执行SQL语句
  10. cursor.execute(sql)
  11. # 提交修改
  12. db.commit()
  13. except:
  14. # 发生错误时回滚
  15. db.rollback()
  16. # 关闭连接
  17. db.close()

1.6.执行事务

  1. # SQL删除记录语句
  2. sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
  3. try:
  4. # 执行SQL语句
  5. cursor.execute(sql)
  6. # 向数据库提交
  7. db.commit()
  8. except:
  9. # 发生错误时回滚
  10. db.rollback()

1.7.读取数据库表数据并写入excel

  1. import pymysql,xlwt
  2. def export_excel(table_name):
  3. conn = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. cur = conn.cursor()
  5. sql = 'select * from %s;' %table_name
  6. #读取数据
  7. cur.execute(sql)
  8. fileds = [filed[0] for filed in cur.description]
  9. #所有数据
  10. all_date = cur.fetchall()
  11. for result in all_date:
  12. print(result)
  13. #写excel
  14. book = xlwt.Workbook() #创建一个book
  15. sheet = book.add_sheet('result') #创建一个sheet表
  16. for col,filed in enumerate(fileds):
  17. sheet.write(0,col,filed)
  18. #从第一行开始写
  19. row = 1
  20. for data in all_date:
  21. for col,filed in enumerate(data):
  22. sheet.write(row,col,filed)
  23. row += 1
  24. book.save('%s.xls' %table_name)
  25. pass
  26. export_excel('stocks')

1.8.读取excel数据并写入数据库表

  1. import pymysql
  2. import xlrd
  3. conn = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
  4. cursor = conn .cursor()
  5. #读取excel数据写入数据库
  6. book = xlrd.open_workbook("students.xls")
  7. sheet = book.sheet_by_name('Sheet1')
  8. query = 'insert into student_tbl (name, sex, minzu, danwei_zhiwu, phone_number, home_number) values (%s, %s, %s, %s, %s, %s)'
  9. for r in range(1, sheet.nrows):
  10. name = sheet.cell(r,0).value
  11. sex = sheet.cell(r,1).value
  12. minzu = sheet.cell(r,2).value
  13. danwei_zhiwu = sheet.cell(r,3).value
  14. phone_number = sheet.cell(r,4).value
  15. home_number = sheet.cell(r,5).value
  16. values = (name, sex, minzu, danwei_zhiwu, phone_number, home_number)
  17. # 执行sql语句
  18. # 往SQL添加一条数据
  19. cursor.execute(query , values)
  20. print(values)
  21. cursor.close()
  22. db.commit()
  23. db.close()

2.Python人机交互(Tkinter图形界面开发)

2.1.创建root窗口

  1. #导入Tkinter包全部内容
  2. from tkinter import *
  3. #Tkinter根窗口实例化
  4. root = Tk()
  5. #设置窗口标题
  6. root.title("my_Title")

2.2.控件布局

  1. #设置label控件
  2. label1 = Label(root,text = 'Number:')
  3. label1.grid(row = 0, column = 0)
  4. #设置text控件
  5. text1 = Text(root,width = 30 , height = 1)
  6. text1.grid(row = 1, column = 0)

2.3.实现commend

  1. #设置调用函数
  2. def myCalculate():
  3. a = int(text1.get("1.0",END))#从头开始取到结尾
  4. sum = a * 3
  5. text2.delete('1.0',END)
  6. text2.insert(INSERT,sum)
  7. pass
  8. #设置Button
  9. button = Button(root,text="click sum",command = myCalculate)
  10. button.grid(row = 4, column = 0)

2.4.简单测试案例

  1. #导入Tkinter包全部内容
  2. from tkinter import *
  3. #Tkinter根窗口实例化
  4. root = Tk()
  5. #设置窗口标题
  6. root.title("my_Title")
  7. #设置label控件
  8. label1 = Label(root,text = 'Number:')
  9. label1.grid(row = 0, column = 0)
  10. #设置text控件
  11. text1 = Text(root,width = 30 , height = 1)
  12. text1.grid(row = 1, column = 0)
  13. #设置label控件
  14. label2 = Label(root,text = 'Sum:')
  15. label2.grid(row = 2, column = 0)
  16. #设置text控件
  17. text2 = Text(root,width = 30 , height = 1)
  18. text2.grid(row = 3, column = 0)
  19. #设置调用函数
  20. def myCalculate():
  21. a = int(text1.get("1.0",END))#从头开始取到结尾
  22. sum = a * 3
  23. text2.delete('1.0',END)
  24. text2.insert(INSERT,sum)
  25. pass
  26. #设置Button
  27. button = Button(root,text="click sum",command = myCalculate)
  28. button.grid(row = 4, column = 0)
  29. mainloop()

发表评论

表情:
评论列表 (有 0 条评论,208人围观)

还没有评论,来说两句吧...

相关阅读

    相关 大模型学习笔记-汇总

    本文记录一下最近一个月学习的大模型相关的技术知识点,为拥抱AI浪潮做些技术储备。大模型术语相关参数规模GPT 3.5 千亿级别GPT4 1.8W亿级别国内一般都是十亿或百...

    相关 备考第二阶段总结

    备考第二阶段总结 就在刚刚我可能做出了我人生前21年最重要的决定,这可能比较晚,但我觉得一切都刚刚好。之前一直都有两个选择,要么求稳,退而求其次,要么激进一点,赌一把大

    相关 oracle学习笔记-第二

            系统装完,启动,我的第一步就是配置网络,不管是上传文件,还是以后远程登录,网络都是第一的。这里有一点奇怪,在安装系统的时候我设置了网络,但是就是不生效,还是要进