目 录
目 录................................................................................................................................................................. 1
第 1 章 课程设计要求 .....................................................................................................................................2
1.1 任务一:案例应用--学籍管理系统(不要求界面)......................................................................2
1.2 任务二:案例应用---中国大学排行榜分析.................................................................................... 2
1.3 任务三:案例应用—波士顿房价预测............................................................................................ 3
第 2 章 学生管理系统 .....................................................................................................................................3
2.1 任务要求 .............................................................................................................................................3
2.2 系统设计 ............................................................................................................................................3
2.2.1 类的相关基本介绍 ..................................................................................................................4
2.2.2 学籍管理系统类的设计 ..........................................................................................................6
2.3 系统实现 ............................................................................................................................................6
2.3.1 流程图 ......................................................................................................................................6
2.3.2 程序 ..........................................................................................................................................7
第 3 章 中国大学排行榜分析.......................................................................................................................27
3.1 任务要求 ...........................................................................................................................................27
3.2 网络爬虫实现原理 ...........................................................................................................................27
3.2.1 Requests 爬取数据原理和实例 ............................................................................................28
3.2.2 BeautifulSoap 的使用............................................................................................................31
3.3 中国大学排行榜的数据爬取实现 ..................................................................................................33
3.3.1 流程图 ....................................................................................................................................33
3.3.2 程序 ........................................................................................................................................34
3.4 中国大学排行分析 ...........................................................................................................................40
第 4 章 波士顿房价预测...............................................................................................................................46
4.1 任务要求 ...........................................................................................................................................46
4.2 数据分析过程 ..................................................................................................................................46
4.3 线性回归 ..........................................................................................................................................50
4.4 岭回归...............................................................................................................................................53
4.4 决策树(拓展)..............................................................................................................................55
4.4.1 构建回归树...........................................................................................................................55
4.4.2 画出决策树...........................................................................................................................56
4.4.3 特征重要性 ............................................................................................................................56
第 1 页 共 59 页
第 1 章 设计要求
1.1 任务一:案例应用--学籍管理系统(不要求界面)
要求:
1.学生的信息用结构体来表示。学生的信息(学号 id、学生姓名 sname、性别 xb、年龄 age、学
生籍贯 jg、班级 bj,成绩 score)采用类设计。
2.能够录入学生信息,能够显示所有学生信息。
3.能够按学号、姓名查询并显示单个学生的信息,能够按性别、籍贯、班级进行类别查询并显示,
查询方式可以自己补充。
4.能够按类统计每个班级或性别等的平均成绩。
5.能够按成绩进行排序,并输出排序结果,能够查询某班成绩前 10 名的学生。
6.能够添加、删除、修改学生的信息。
7.系统的各个功能模块要求用函数实现。
8.用数组或链表来表示(建议用结构体数组)。
9.学生的信息保存在数据库中里。
提示:
编写主菜单函数,返回相应的功能选项数字,主函数根据此数字调用相应的功能函数。编写各
功能模块函数。最后进行综合调试。
1.2 任务二:案例应用---中国大学排行榜分析
要求:
1. 分析并实现类似于课件中的淘宝和京东商品信息的数据爬取。
2. 访问网址 https://www.shanghairanking.cn/rankings,爬取排行榜数据,分析按区域的大学数量排行,
得出有效结论。
3. 爬取主榜数据并保存在文件中。
4. 分析每个地区上榜大学的数量,保存在文件中。
5. 分析前十名的地区的大学数量,绘制柱状图。
6. 自主分析医药类大学情况,得出任意有效结论(数据相关性)若干。
提示:
(1)Requests 爬取数据原理和实例
https://blog.csdn.net/ysblogs/article/details/88530124
(2)BeautifulSoap 的使用
Beautiful Soup 中文文档:
https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html
Beautiful Soup 中文文档:
https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
第 2 页 共 59 页
1.3 任务三:案例应用—波士顿房价预测
要求:
1.载入此项目所需要的库,载入波士顿房屋的数据集
2.数据集 1:3 比例分割为 测试集:训练集
3.定义线性回归模型,进行训练、预测
4.图形化预测结果显示(部分数据显示)
5.输出模型参数、评价模型(MSE RMSE)
6(选做不计分)使用最优决策树预测。
提示:
使用 sklearn 中 datasets 和 linear_model 和 metrics。
使用 sklearn.model_selection 中 train_test_split。
导入的数据集: datasets.load_boston()。
linear_model.LinearRegression
学有余力的同学可以建立最优决策树,并比较 MSE RMSE,选做时建议使用 KFold
fit 和 predict 方法等。
DecisionTreeRegressor make_scorer GridSearchCV grid.fit grid.best_estimator_等
第 2 章 学生管理系统
2.1 任务要求
要求:
1.学生的信息用结构体来表示。学生的信息(学号 id、学生姓名 sname、性别 xb、年龄 age、学
生籍贯 jg、班级 bj,成绩 score)采用类设计。
2.能够录入学生信息,能够显示所有学生信息。
3.能够按学号、姓名查询并显示单个学生的信息,能够按性别、籍贯、班级进行类别查询并显示,
查询方式可以自己补充。
4.能够按类统计每个班级或性别等的平均成绩。
5.能够按成绩进行排序,并输出排序结果,能够查询某班成绩前 10 名的学生。
6.能够添加、删除、修改学生的信息。
7.系统的各个功能模块要求用函数实现。
8.用数组或链表来表示(建议用结构体数组)。
9.学生的信息保存在数据库中里。
提示:
编写主菜单函数,返回相应的功能选项数字,主函数根据此数字调用相应的功能函数。编写各
功能模块函数。最后进行综合调试。
第 3 页 共 59 页
2.2 系统设计
2.2.1 类的相关基本介绍
1、面向过程
基本设计思路就是程序一开始是要着手解决一个大的问题,
然后把一个大问题分解成很多个小问题或子过程,这些子过程
再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
2、面向对象
OOP 编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,
使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单
3、函数式编程
Class 类
一个类即对具有相同属性的对象的抽象描述,如生物类(有生命体征的东西)
1、经典类和新式类(深度优先和广度优先)
2、构造函数(实例化时进行初始化),def __init__(self,...):
3、类变量和实例变量(存放位置、节省空间等)
4、析构函数(实例结束或程序结束是执行,用于做一些收尾工作)def __del__(self):
5、静态属性和动态属性
Object 对象
一个具体的对象,类实例化后就是一个对象
Encapsulation 封装
在类中数据变更、内部方法调用等对外部用户都是透明的,
这使类编程一个容器或胶囊,里面包含着类的数据和方法,用户不可感知
封装方法:
在类中变量名或方法名前加两个下划线即可
如:__n、def __tell():
Inheritance 继承
一个类可以派生出多个子类,继承父类的部分内容
1、继承格式,class zi(fu):
2、继承中构造函数的执行规则及顺序(只执行一个,先内后外)
3、获取父类构造函数的初始化实例变量并在子类中新增变量的两种方法
① fu.__init__(self,a,b)
② super(zi,self).__init__(a,b)
Polymorphism 多态
一个接口,多种调用
'''
class People:
'''
类的基本介绍
类的定义,类名格式一般首字母大写,此为经典类,
第 4 页 共 59 页
py3,多继承为广度优先
'''
__Author__ = "CaiYun"
__Name = "Person"
def __init__(self,name,age,addr,__priaddr='隐私'):
# 类私有变量
# 类变量
# 构造函数,用于初始化实例变量
# 实例变量
self.name = name
self.age = age
self.addr = addr
self.priaddr = __priaddr
# 实例私有变量
# 通过打印类实例化后的实例名来调用,如 p=People();print(p)
return '''
-----People info-----
# def __str__(self):
#
#
#
#
#
Name: %s
Age: %s
Addr: %s''' %(self.name,self.age,self.addr)
# 析构函数,用于做一下收尾工作
print("""
-----实例化了一个对象-----
# def __del__(self):
#
#
#
#
#
#
#
Object: %s
Name: %s
Age: %s
Addr: %s""" %(self,self.name,self.age,self.addr))
print("程序结束时执行...")
def __privileges(self):
# 在方法名前加"两个下划线",则将方法私有化
print("这是一个私有方法,做一些私密的事情,外界不可感知。")
pass
def public(self):
print("这是一个公有方法。外界可直接调用")
pass
class Man(People):
# 新式类
def __init__(self,name,age,addr,sex):
# People.__init__(self,name,age,addr)
super(Man,self).__init__(name,age,addr)
self.sex = sex
pass
def shopping(self):
print("%s 要去购物了..." %self.name)
# 使用父类定义相关变量,不建议使用这种方法
# 使用父类定义相关变量,建议使用这种方法
第 5 页 共 59 页
p = People("Wong",23,"深圳")
# print(p.__Author__)
# print(p)
# p.__privileges()
p.public()
# print(p.__priaddr)
m = Man("Wong",23,"深圳",'boy')
print(m.name,m.age,m.sex)
m.shopping()
2.2.2 学籍管理系统类的设计
1.Student 类
定义 Student 类以实现对单个学生信息的存储,包括[bj(班级)、id(学号)、sname(姓名)、xb(性别)、
age(年龄)、jg(籍贯)、score(成绩)]
2.home 类
定义 home 类,其中 lt 为存储所有学生信息的结构体数组,并定义函数完成系统各个模块,函
数包括:
#显示所有学生信息
1.display()
2. inquire_information
3. inquire_ave_score
4. sort_by_score
5. operation_to_information
6. save_it
#按学号、姓名查询单个学生的信息或按性别、籍贯、班级查询类别
#按班级或性别统计平均成绩
#采用冒泡排序根据成绩对学生排名,并可输出某一班级前 10 名学生
#添加、删除、修改学生信息
#保存学生信息到数据库
2.3 系统实现
2.3.1 流程图
第 6 页 共 59 页
2.3.2 程序
import numpy as np
import pandas as pd
#定义 Student 类
class Student():
def __init__(self,bj=0,id=0,sname="name",xb=" ",age=0,jg=" ",score=0):
self.bj=bj
self.id=id
self.sname=sname
self.xb=xb
self.age=age
self.jg=jg
self.score=score
#定义 home 类,并设计函数实现各个功能模块
class home:
#构造函数
def __init__(self,lt):
self.lt=lt#lt 为存储的学生信息
#显示所有学生信息的函数
def display(self):
for i in range(len(self.lt)):
print("班级 : {}, 学号 : {}, 姓名 : {}, 性别 : {}, 年龄 : {}, 学生籍贯 : {}, 成
绩 : {}".format(self.lt[i].bj,self.lt[i].id,self.lt[i].sname,self.lt[i].xb,self.lt[i].age,self.lt[i].jg,self.lt[i].score))
print("显示",len(self.lt),"个学生信息成功")
结果:
-------- ************ --------
-------- 学籍管理系统 --------
---------- 序号操作 ----------
--------- 1.显示信息 ---------
--------- 2.查询信息 ---------
第 7 页 共 59 页
--------- 3.统计成绩 ---------
--------- 4.成绩排序 ---------
--------- 5.修改信息 ---------
--------- 6.保存数据 ---------
--------- 7.退出系统 ---------
请选择操作: 1
班级 : 101010101, 学号 : 10101010101, 姓名 : 赵, 性别 : 男, 年龄 : 19, 学生籍贯 : 重庆,
成绩 : 2.73
班级 : 101010101, 学号 : 10101010102, 姓名 : 钱, 性别 : 女, 年龄 : 19, 学生籍贯 : 广州,
成绩 : 2.72
班级 : 101010101, 学号 : 10101010103, 姓名 : 孙, 性别 : 男, 年龄 : 19, 学生籍贯 : 北京,
成绩 : 2.94
班级 : 101010101, 学号 : 10101010104, 姓名 : 李, 性别 : 女, 年龄 : 19, 学生籍贯 : 湖北,
成绩 : 3.01
班级 : 101010101, 学号 : 10101010105, 姓名 : 周, 性别 : 男, 年龄 : 19, 学生籍贯 : 湖南,
成绩 : 3.93
…
数
#按学号、姓名查询并显示单个学生的信息,能够按性别、籍贯、班级进行类别查询并显示的函
def inquire_information(self):
print("请输入序号选择查询单个学生信息或是某一类别学生信息:")
print("1.查询单个学生信息 2.查询某一类别学生信息")
choice2=input("请选择操作: ")
if choice2=="1":
#查询单个学生信息
print("请输入序号选择按学号或是姓名查询学生信息:")
print("1.学号 2.姓名")
choice3=input("请选择: ")
if choice3=="1":
#按学号查询
第 8 页 共 59 页