三谈大数据之足球盘口赔率水位分析思路及其实现利器

 前两期导航:

再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧_sundayhost的博客-CSDN博客_欧赔水位如何看

再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧_sundayhost的博客-CSDN博客_欧赔水位如何看

 接前两期内容,前两期分别介绍了数据分析讲究的科学性、真实性,以及如何利用足球盘口赔率凯利必发查询验证报表进行数据分析与赛果验证,本期介绍利用mysql 和 python 进行大数据分析的方法:

1、人工筛选的局限性

对于一张超过130万行,160多个字段(意味着130万场比赛,每场比赛多大160多个指标)的表格,要想人工进行分类查询验证是极不合理的。如图:

三谈大数据之足球盘口赔率水位分析思路及其实现利器_第1张图片

 2、利用pymysql连接数据库

这里的数据库是mysql,当然也可以是其他数据库,读取所有比赛数据。需要用到的库和连接方式如下:

import pandas as pd
import os, pymysql

dbconn = pymysql.connect(host='111.111。111.111',user="zcradar", passwo ="********",db='zuqiu') 
cur = dbconn.cursor()

远程连接云服务器现在ip,本地连接就用localhost;默认端口是3306,如果改动过,将port参数设置好填入即可;db表示要连接的库名。

3、更快的计算查询

可选择利用pandas来读取数据库中的表,这样做的好处是一次性读取到内存,方便后来的按不同条件查找,速度明显非常快,缺点是可能电脑内存跟不上而异常卡顿。如果内存不足导致的卡顿,那么还是按照一次一次的分类好的条件进行数据库查询。用pandas读取数据库也非常方便:

sql="select * from predict.oddfea order by time desc ;"
final_data = pd.read_sql(sql, db)

注意,这里利用pymysql连接的是zuqiu这个库,而要想调用另外库中的表时,只需在此表前加上所在库的名称就可以了。

4、设计查询和验证的程序

一位用户在使用足球数据库报表时,想看看筛选效果是否与他认知的相同,给出的条件是:在历届英超中,365的终赔主胜为1.8,终盘为半球,终盘大小为2.25。一共4个条件:人工手动查询如下:

 一共筛选出符合条件的有12场,主胜7场,平局4场,主负1场,明显当到达此组合条件时就是主不败格局,看来这位用户利用这类条件人工做过不少的历史复盘,应该是个老手,是个狠角色。

如前文说讲,用pandas读取查询和验证系统报表,速度会更快,其方式为:

import pandas as pd
import os, pymysql

dbconn = pymysql.connect(host='111.111。111.111',user="zcradar", passwo="********",db='zuqiu') 
cur = dbconn.cursor()

sql="select * from data.查询和验证系统;"
final_data = pd.read_sql(sql, db)

leagues = list(final_data.last_league .unique())       # 提取所有的赛事,并转化为列表
for league in leagues:
    final_data1 = final_data[final_data.league==league]
    odds = list(final_data1.last_odd_win.unique())              # 提取该赛事下的主胜终赔有哪些,转为列表
    asianodds = list(final_data1.last_asianodd.unique())        # 提取该赛事下的终盘有哪些,转为列表
    overdowns = list(final_data1.overdown.unique())             # 提取该赛事下的大小终盘有哪些,转为列表

ok,到这里就提取所有想要的内容,在各种条件组合下,记录比如满足大于主胜占比大于70%,或主不败大于90%的 条件有多少,以及对应的概率是多少就ok了。

5、保存结果

一次查询可能非常耗时,各种组合条件及其结果有必要保存下来。

insert_sql = "insert ignore into zuqiu.result (gameid, condition1, condition2,condition3,condition4,result1,result2,result3) VALUES(%s,%s,%s,%s,%s,%s,%s,%s);"
cur.excute(insert_sql)
db.commit()

你可能感兴趣的:(足球预测,数据采集,大数据,pandas,数据库,算法)