文章目录

  • 七、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表达式抓取网页文件

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

3.使用requests抓取网页

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

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

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

5.使用xPath工具提取数据

def Get3DMNews_WithXPATH():'''得到3DM网站的新闻内容:return: 获取的新闻内容'''import requestsfrom lxml import htmlmyURL = 'https://www.3dmgame.com'myContent = requests.get(myURL).content.decode('UTF-8')etree = html.etreeeTreeHtml = etree.HTML(myContent)myList = eTreeHtml.xpath("//li")for item in myList :myNews = {}myNews['title'] = item.xpath('./a')[0].textmyNews['herf'] = item.xpath('./a/@href')[0]myNews['time'] = item.xpath('./span')[0].textprint(myNews)passpass

6.使用BeautifulSoup工具

def Get3DMNews_WithBeautifulSoup():'''得到3DM网站的新闻内容:return: 获取的新闻内容'''import requestsfrom bs4 import BeautifulSoupmyURL = 'https://www.3dmgame.com'myContent = requests.get(myURL).content.decode('UTF-8')bsHtml = BeautifulSoup(myContent,'html5lib')myList = bsHtml.find_all('div')[10].find_all('div')[8].find_all('div')[91].find_all('li')for item in myList :myNews = {}myNews['title'] = item.find('a').get_text()myNews['herf'] = item.find('a').get('href')myNews['time'] = item.find('span').get_text()print(myNews)passpass

八、Python经典算法

0.Python画图

Python画图

1.回归-线性回归

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

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

2.分类-k最近邻

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

#分类算法
#k最近邻:近朱者赤近墨者黑原理
import os
import pandas as pd
from sklearn import  neighbors
thisFilePath = os.path.abspath('.')
os.chdir(thisFilePath)
# print(os.getcwd())
df = pd.read_csv('ScoreData.csv')
# print(df.head())train_x = df.iloc[0:8,2:4]
# print(train_x.head())
train_y= df.iloc[0:8,4]
# print(train_y.head())model = neighbors.KNeighborsClassifier()
model.fit(train_x,train_y)
test_x = df.iloc[8:11,2:4]
test_y= df.iloc[8:11,4].valuestest_p = model.predict(test_x)
print(test_p)
print(test_y)print(model.score(test_x, test_y))

3.聚类

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

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

(k-means clustering algorithm)

import numpy as np
train_x2 = np.array(train_x[['yuwen','shuxue']])
print(train_x2)
from sklearn.cluster import KMeans
model2 = KMeans(n_clusters=3)
model2 = model2.fit(train_x2)
clusterResult = pd.DataFrame(model2.labels_,index=train_x.index,columns=['clusterResult'])
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.创建表

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

1.2.插入数据

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

1.3.查询数据

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

1.4.更新数据

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

1.5.删除数据

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

1.6.执行事务

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

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

import pymysql,xlwtdef export_excel(table_name):conn = pymysql.connect("数据库IP地址","用户名","密码","数据库" )cur = conn.cursor()sql = 'select * from %s;' %table_name#读取数据cur.execute(sql)fileds = [filed[0] for filed in cur.description]#所有数据all_date = cur.fetchall() for result in all_date:print(result)#写excelbook = xlwt.Workbook() #创建一个booksheet = book.add_sheet('result') #创建一个sheet表for col,filed in enumerate(fileds):sheet.write(0,col,filed)#从第一行开始写row = 1for data in all_date:for col,filed in enumerate(data):sheet.write(row,col,filed)row += 1book.save('%s.xls' %table_name)passexport_excel('stocks')

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

import pymysql
import xlrd
conn = pymysql.connect("数据库IP地址","用户名","密码","数据库" )
cursor = conn .cursor()#读取excel数据写入数据库
book = xlrd.open_workbook("students.xls")
sheet = book.sheet_by_name('Sheet1')
query = 'insert into student_tbl (name, sex, minzu, danwei_zhiwu, phone_number, home_number) values (%s, %s, %s, %s, %s, %s)'
for r in range(1, sheet.nrows):name = sheet.cell(r,0).valuesex = sheet.cell(r,1).valueminzu = sheet.cell(r,2).valuedanwei_zhiwu = sheet.cell(r,3).valuephone_number = sheet.cell(r,4).valuehome_number = sheet.cell(r,5).valuevalues = (name, sex, minzu, danwei_zhiwu, phone_number, home_number)# 执行sql语句# 往SQL添加一条数据cursor.execute(query , values)
print(values)
cursor.close()
db.commit()
db.close()

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

2.1.创建root窗口

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

2.2.控件布局

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

2.3.实现commend

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

2.4.简单测试案例

#导入Tkinter包全部内容
from tkinter import *
#Tkinter根窗口实例化
root = Tk()
#设置窗口标题
root.title("my_Title")
#设置label控件
label1 = Label(root,text = 'Number:')
label1.grid(row = 0, column = 0)
#设置text控件
text1 = Text(root,width = 30 , height = 1)
text1.grid(row = 1, column = 0)
#设置label控件
label2 = Label(root,text = 'Sum:')
label2.grid(row = 2, column = 0)
#设置text控件
text2 = Text(root,width = 30 , height = 1)
text2.grid(row = 3, column = 0)
#设置调用函数
def myCalculate():a = int(text1.get("1.0",END))#从头开始取到结尾sum = a * 3text2.delete('1.0',END)text2.insert(INSERT,sum)pass
#设置Button
button = Button(root,text="click sum",command = myCalculate)
button.grid(row = 4, column = 0)mainloop()

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

  1. Python学习笔记(基础知识第三篇:列表、元组、字典、集合)

    一.列表 1.列表知识 定义一个空的列表,列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套). 打印出第一个元素,列表索引值以0为开始值,-1为从末尾的开始位置. 列表可以使用 ...

  2. 【Python学习笔记】猜颜色小游戏

    [Python学习笔记]猜颜色小游戏 前言 一.算法原理 1. 生成器部分 2. 检测器部分 二.代码 过程BUG汇总笔记 总结 前言 最近馋世界游戏大全51,心血来潮用Python写了个猜颜色,顺便 ...

  3. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  4. python学习笔记之编写readConfig读写配置文件

    python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客

  5. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  6. Python学习笔记一简介及安装配置

    Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...

  7. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  8. Python学习笔记(二):标准流与重定向

    Python学习笔记(二):标准流与重定向 - SamWei - 博客园 Python学习笔记(二):标准流与重定向 Posted on 2012-02-19 22:36 SamWei 阅读(176) ...

  9. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  10. python基本语法语句-python学习笔记:基本语法

    原标题:python学习笔记:基本语法 缩进:必须使用4个空格来表示每级缩进,支持Tab字符 if语句,经常与else, elif(相当于else if) 配合使用. for语句,迭代器,依次处理迭代 ...

最新文章

  1. leetcode--字符串转换为整数--python
  2. 过滤流的主要特点是什么_高效过滤器工艺流程是什么 高效过滤器特点介绍【详解】...
  3. fiddler自动响应AutoResponder之正则匹配Rule Editor
  4. stm32中如何进行printf重定向用于串口调试输出
  5. Google App Engine平台下JDOQL查询报异常的问题解决方案
  6. webpack的build的时候时间长处理方案
  7. 1/1!-1/3!+1/5!-……
  8. 基于java的网上花店销售系统_基于web的花店销售系统的设计与实现
  9. ERP项目需要持续的呵护
  10. ASP.NET删除等操作前的提示解决方案
  11. 【OpenCV教程】第一章 Mac上的安装和初步使用
  12. 2023CAEE安规测试与环境试验技术设备展览会
  13. 【f1c200s/f1c100s】屏幕背光驱动适配
  14. python输入两个数字的成语_Python语言学习之20个值得学习的Python技巧
  15. admi后台 vue_vue-ele-admin后台管理系统框架__布局
  16. mysql锁机制和索引_MySql锁机制及索引 · 十年饮冰,难凉热血
  17. OKK集中生产加工中心(MC)的主要部品
  18. 玩VR眼镜对眼睛有影响和危害吗?2018VR眼镜排行榜,什么VR眼镜好推荐,哪个VR眼镜好?
  19. 第1章 Linux系统的发展 (一)
  20. 仿写哔哩哔哩的头部导航部分(HTML+CSS静态)

热门文章

  1. 最终篇!AAAI 2022值得读的NLP论文盘点
  2. 阿里广告技术最新突破:全链路联动-面向最终目标的全链路一致性建模
  3. 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利
  4. 基线系统需要受到更多关注:基于词向量的简单模型 | ACL 2018论文解读
  5. 关于大家对Swin Transformer的魔改论文模型记录(只关注Swin是如何使用的)
  6. vba fso读utf 文本_利用FSO对象操作文件
  7. v3s 全志_基于全志V3s的开源开发板,提供pcb和系统源码和资料
  8. 很好的阻止了事件的发生_请定好您的闹钟,八月,夜空中将发生这13件超酷的天文事件...
  9. docker部署rocketmq
  10. centos 上传jar 命令_centos上快速将一个jar使用docker部署启动