博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据nba数据预测17-18总冠军(转)
阅读量:4330 次
发布时间:2019-06-06

本文共 8060 字,大约阅读时间需要 26 分钟。

#coding=utf-8import urllibimport reimport csvimport sys#计数,初始化count = 0#以下定义的与之对应的是球员姓名、赛季、胜负、比赛、首发、时间、投篮命中率、投篮命中数、投篮出手数、三分命中率、三分命中数、三分出手数、罚球命中率、罚球命中数、罚球次数、总篮板数、前场篮板数、后场篮板数、助攻数、抢断数、盖帽数、失误数、犯规数、得分list0 = []list1 = []list2 = []list3 = []list4 = []list5 = []list6 = []list7 = []list8 = []list9 = []list10 = []list11 = []list12 = []list13 = []list14 = []list15 = []list16 = []list17 = []list18 = []list19 = []list20 = []list21 = []list22 = []list23 = []list24 = []list25 = []list26 = []#定义获取页面函数def getHtml(url):    page = urllib.urlopen(url)    html = page.read()    return html#获取数据并存入数据库中for k in range(0,51):    #获取当前页面,该页面只有LBJ的职业生涯常规赛的数据,截止到2016.12.26    html = getHtml(        "http://www.stat-nba.com/query.php?QueryType=game&GameType=season&Player_id=1862&crtcol=season&order=1&page=" + str(            k))    # 获取球员姓名、赛季、胜负、比赛、首发、时间、投篮命中率、投篮命中数、投篮出手数、三分命中率、三分命中数、三分出手数、罚球命中率、罚球命中数、罚球次数、总篮板数、前场篮板数、后场篮板数、助攻数、抢断数、盖帽数、失误数、犯规数、得分    #正则得到相对应的数值    playerdata = re.findall(r'
(.*)' r'\s*
(.*)' r'\s*(.*)' r'\s*
(\D*|76人)(\d+)-(\d+)(\D*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*%|\s*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*%|\s*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*%|\s*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)' r'\s*(.*)', html) #获取每条数据, for data in playerdata: #将元组数据复制给列表,进行修改,数据中有空值,和含有%号的值,进行处理,得到数值 data1 = [data[0], data[1], data[2], data[3], int(data[4]), data[5], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15], data[16], data[17], data[18], data[19], data[20], data[21], data[22], data[23], data[24], data[25], data[26]]#将百分号去掉,只保留数值部分 if (data1[15] == ' '): data1[15] = 0 else: data1[15] = float("".join(re.findall(r'(.*)%', data1[15]))) if (data1[9] == ' '): data1[9] = 0 else: data1[9] = float("".join(re.findall(r'(.*)%', data1[9]))) if (data1[12] == ' '): data1[12] = 0 else: data1[12] = float("".join(re.findall(r'(.*)%', data1[12]))) list0.append(data1[0]) list1.append(data1[1]) list2.append(data1[2]) list3.append(data1[3]) list4.append(data1[4]) list5.append(data1[5]) list6.append(data1[6]) list7.append(data1[7]) list8.append(data1[8]) list9.append(data1[9]) list10.append(data1[10]) list11.append(data1[11]) list12.append(data1[12]) list13.append(data1[13]) list14.append(data1[14]) list15.append(data1[15]) list16.append(data1[16]) list17.append(data1[17]) list18.append(data1[18]) list19.append(data1[19]) list20.append(data1[20]) list21.append(data1[21]) list22.append(data1[22]) list23.append(data1[23]) list24.append(data1[24]) list25.append(data1[25]) list26.append(data1[26]) # 记录数据数量 count += 1#建立csv存储文件,wb写 a+追加模式csvfile = file('nbadata.csv', 'ab+')writer = csv.writer(csvfile)#将提取的数据合并data2 = []for i in range(0,count): data2.append((list0[i],list1[i],list2[i],list3[i],list4[i],list5[i],list6[i],list7[i],list8[i] ,list9[i],list10[i],list11[i],list12[i],list13[i],list14[i],list15[i],list16[i] ,list17[i],list18[i],list19[i],list20[i],list21[i],list22[i],list23[i],list24[i] , list25[i],list26[i]))#将合并的数据存入csvwriter.writerows(data2)csvfile.close()
import csv#文件路径srcFilePath = "c:/myflask/nbadata.csv"#读取cvs格式的数据文件reader = csv.reader(file(srcFilePath,'rb'))#csv中各列属性代表的含义(1)代表第一列# 球员姓名(1)、赛季(2)、胜负(3)、对手球队名称(4)、对手球队总得分(5)、己方球队总得分(6)# 、己方球队名称(7)、首发(8)【1为首发,0为替补】、上场时间(9)、投篮命中率(10)、投篮命中数(11)# 、投篮出手数(12)、三分命中率(13)、三分命中数(14)、三分出手数(15)、罚球命中率(16)# 、罚球命中数(17)、罚球次数(18)、总篮板数(19)、前场篮板数(20)、后场篮板数(21)、助攻数(22)# 、抢断数(23)、盖帽数(24)、失误数(25)、犯规数(26)、得分(27)records = [line for line in reader]frame = DataFrame(records)#获取得分数对应的场次数目pts_count = frame[26].value_counts()a = []b = []for i in pts_count.keys():    a.append(i)for i in pts_count:    b.append(i)c = {}for i in range(0,len(a)):    c[int(a[i])] = int(b[i])d = sorted(c.items(), key=lambda c:c[0])#存储得分分数e = []#存储相应分数的次数f = []for i in d:    e.append(i[0])    f.append(i[1])#15-16赛季球员得分助攻篮板抢断盖帽平均值records_p1 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '03-04']records_p2 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '04-05']records_p3 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '05-06']records_p4 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '06-07']records_p5 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '07-08']records_p6 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '08-09']records_p7 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '09-10']records_p8 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '10-11']records_p9 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '11-12']records_p10 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '12-13']records_p11 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '13-14']records_p12 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '14-15']records_p13 = [(int(line[26]),int(line[21]),int(line[18]),int(line[22]),int(line[23])) for line in records if line[1] == '15-16']g1 = [float('%0.1f' % i) for i in DataFrame(records_p1).mean()]g2 = [float('%0.1f' % i) for i in DataFrame(records_p2).mean()]g3 = [float('%0.1f' % i) for i in DataFrame(records_p3).mean()]g4 = [float('%0.1f' % i) for i in DataFrame(records_p4).mean()]g5 = [float('%0.1f' % i) for i in DataFrame(records_p5).mean()]g6 = [float('%0.1f' % i) for i in DataFrame(records_p6).mean()]g7 = [float('%0.1f' % i) for i in DataFrame(records_p7).mean()]g8 = [float('%0.1f' % i) for i in DataFrame(records_p8).mean()]g9 = [float('%0.1f' % i) for i in DataFrame(records_p9).mean()]g10 = [float('%0.1f' % i) for i in DataFrame(records_p10).mean()]g11 = [float('%0.1f' % i) for i in DataFrame(records_p11).mean()]g12 = [float('%0.1f' % i) for i in DataFrame(records_p12).mean()]g13 = [float('%0.1f' % i) for i in DataFrame(records_p13).mean()]app = Flask(__name__)#引入bootstrap前端框架bootstrap = Bootstrap(app)@app.route('/')def hello_world():    return render_template('index.html', a=e, b=f, c1=g1,c2=g2,c3=g3,c4=g4,c5=g5,c6=g6,c7=g7,c8=g8,c9=g9,c10=g10,c11=g11,c12=g12,c13=g13)if __name__ == '__main__':    app.run(debug=True)
index.html{
% extends "base.html" %}{
% block title %}Flasky{% endblock %}{
% block page_content %}
 

 

{
% endblock %}

 

转载于:https://www.cnblogs.com/runningzz/p/7067814.html

你可能感兴趣的文章
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>
实验三
查看>>
机器码和字节码
查看>>
环形菜单的实现
查看>>
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
Centos 7 Mysql 最大连接数超了问题解决
查看>>
thymeleaf 自定义标签
查看>>
关于WordCount的作业
查看>>
C6748和音频ADC连接时候的TDM以及I2S格式问题
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>