Matplotlib可视化预测双色球

步骤

1.获得数据
2.清洗保存数据
3.读取数据并可视化
4.得出结论

在这里插入图片描述

首先,简单说下国民彩票双色球的规则:选6位数字作为红球和1位数字作为篮球组成一注彩票,红球的区间是1~33,蓝球的区间是1 ~ 16。篮球+红球与开奖号码相同的个数决定中奖的金额。
其中的单式,复式等玩法就不展开了,这里主要复习爬虫和可视化

1.获取数据

毋庸置疑,有数据才能分析。这里的数据来源有两个:一是自己写爬虫获取,二是到 Kaggle 下载,作者已经把数据上传到Kaggle了,下载即用。
这里简单说下Kaggle, 这个网站有各种各样的数据,而且都是处理好的(波斯顿房价、绝地求生等相关数据),上面的数据都是提供给机器学习的。

回到正题,获取数据的网址:http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html

首先打开网址看看相关的访问规则
在这里插入图片描述
这里可以看到开奖号码的HTML源码。这样的标签获取起来有点麻烦,不过问题不大

下面我们再开看看页面切换,URL会有什么变化
在这里插入图片描述
作者切换了几页发现,在URL中控制页码的就是其中的 ‘list_’,这里就好办了。
下面我们可以来写敲代码写爬虫了

	res = requests.get(url1,headers = headers)soup = BeautifulSoup(res.text,'lxml')item = soup.find_all('td',{'style':'padding-left:10px;'})

这里爬虫的基础request,BeautifuleSoup就不过多展开了。
上文说到的HTML源码获取起来很麻烦,因为它都在不同的标签并且红球和篮球的标签是一样的,不同的就是属性。作者尝试过按属性来获取篮球,但是不知道为什么没有返回数据。所以先把整个大的标签拿下来。

for num in item:a = num.find_all('em')[0].get_text()red_one.append(a)a = num.find_all('em')[1].get_text()red_two.append(a)a = num.find_all('em')[2].get_text()red_three.append(a)a = num.find_all('em')[3].get_text()red_four.append(a)a = num.find_all('em')[4].get_text()red_five.append(a)a = num.find_all('em')[5].get_text()red_six.append(a)a = num.find_all('em')[6].get_text()blue.append(a)

可以看到这里是按List的位置来获取红球的每一位和篮球。获取有更好的方法,可以下方留言一起探讨!

2.清洗保存数据

这里用到比较实用和强大的一个库 Pandas,因为把数据存为CSV格式,方便后面的可视化
下面来看代码实现:

dataframe=pd.DataFrame({'red_one':red_one,'red_two':red_two,'red_three':red_three,'red_four':red_four,'red_five':red_five,'red_six':red_six,'blue':blue})
dataframe.to_csv('data.csv',sep=',')

比较简单,下面来看看成功保存的数据长什么样:
在这里插入图片描述
一共获取了2400+条数据左右,大概是2003年到2019年8月的数据

3,数据可视化分析

这里用到一个库 matplotlib
下面我们把每一位的数据以条形图来展示。因为代码有重复性,所以这里就贴蓝球的

import pandas as pd
import matplotlib.pyplot as plt# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] 
# 读取数据并去掉第一列
datasets = pd.read_csv(r'data.csv')
x_data = datasets['date']
data = datasets.iloc[:,1:]# 查看篮球各数字的个数
num_data = data['blue'].value_counts()
print(num_data)
# 横坐标,这里以打印出来的为准
x = ['12','11','9','16','14','7','1','15','13','5','6','10','3','4','2','8']
bar = plt.bar(x,num_data,color = 'blue')
plt.xlabel('号码',fontsize = 15)
plt.ylabel('频率/次',fontsize = 15)
plt.title('篮球',fontsize = 20)
# 在条形图上标注次数
for num in bar :height = num.get_height()plt.text(num.get_x() + num.get_width() / 2, height + 1, str(height), ha="center", va="bottom")
plt.show()

下面来看画出来的各位数字的详情:

红球第一位:

在这里插入图片描述

红球第二位:

在这里插入图片描述

红球第三位:

在这里插入图片描述

红球第四位:

在这里插入图片描述

红球第五位:

在这里插入图片描述

红球第六位:

在这里插入图片描述

蓝球:

在这里插入图片描述

4.得出结论

从红球的图中可以看到中奖号码的出现频率分布情况,相信读者都能一眼看出来。这里就不费篇幅了。
蓝色球的中奖号码分布比较均匀,所以没啥结论。

5.完整代码

获取数据:

from bs4 import BeautifulSoup
import requests
import pandas as pd
import time
# 控制页码
url = ['http://kaijiang.zhcw.com/zhcw/html/ssq/list_{}.html'.format(str(i)) for i in range (1,123,1)]
#url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_4.html'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','Host':'kaijiang.zhcw.com','Upgrade-Insecure-Requests':'1'
}
# 一列表的方式分开存取每一位数据
red_one = []
red_two = []
red_three = []
red_four = []
red_five = []
red_six = []
blue = []
def get_text(url1):res = requests.get(url1,headers = headers)soup = BeautifulSoup(res.text,'lxml')item = soup.find_all('td',{'style':'padding-left:10px;'})for num in item:a = num.find_all('em')[0].get_text()red_one.append(a)a = num.find_all('em')[1].get_text()red_two.append(a)a = num.find_all('em')[2].get_text()red_three.append(a)a = num.find_all('em')[3].get_text()red_four.append(a)a = num.find_all('em')[4].get_text()red_five.append(a)a = num.find_all('em')[5].get_text()red_six.append(a)a = num.find_all('em')[6].get_text()blue.append(a)# 存为CSVdataframe = pd.DataFrame({'red_one':red_one,'red_two':red_two,'red_three':red_three,'red_four':red_four,'red_five':red_five,'red_six':red_six,'blue':blue})dataframe.to_csv('data.csv',sep=',')time.sleep(2)print('成功一次')
# 按页数循环控制
for url1 in url:get_text(url1)print("结束")

可视化代码:

import pandas as pd
import matplotlib.pyplot as plt# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['KaiTi']
# 读取数据并去掉第一列
datasets = pd.read_csv(r'data.csv')
x_data = datasets['date']
data = datasets.iloc[:,1:]# 查看篮球各数字的个数
num_data = data['blue'].value_counts()
print(num_data)
# 横坐标,这里以打印出来的为准
x = ['12','11','9','16','14','7','1','15','13','5','6','10','3','4','2','8']
bar = plt.bar(x,num_data,color = 'blue')
plt.xlabel('号码',fontsize = 15)
plt.ylabel('频率/次',fontsize = 15)
plt.title('篮球',fontsize = 20)
# 在条形图上标注次数
for num in bar :height = num.get_height()plt.text(num.get_x() + num.get_width() / 2, height + 1, str(height), ha="center", va="bottom")
plt.show()

6.总结

双色球的随机性很强,几乎无法预测。当然,作者认为这里的图中中奖号码的分布情况,对于真实购买双色球有一定的参考性,总比自己瞎蒙好吧!
本文仅是对爬虫、pandas、matplotlib基础知识的复习和运用。
对于预测双色球,下一篇会以机器学习的方法来尝试。
感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/46727.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的双色球预测

背景:双色球是中国福利彩票的一种玩法(注意不是体彩哦,哈哈)。由中国福利彩票管理中心统一组织发行。双色球的中奖规则是红色球33选六,蓝色球16选一(奖金具体有多少钱就不多述了)。 1、分析这个…

双色球彩票预测可视化(python)

前言 嗯,先说说这个项目我用到的框架吧。。。 首先用到了自动化爬虫框架selenium,用来爬取数据,网址   由于主要想看看每期开奖号码,所以可视化就简单一点matplotlib折线图就可以了。   好的一切准备就绪,开搞。 源代码如下&…

双色球机器人博客博客,双色球预测程序算法

如何利用人工智能AI计算彩票?人工智能真的可以计算彩票吗? 如何利用人工智能AI计算彩票?人工智能真的可以计算彩票吗? 实际这个问题没有想像中的那么复杂,把问题梳理一下就明白了,实际别管什么人工智能&a…

双色球机器学习线性回归蓝球预测案例

听闻有个同事每天买彩票,想到机器学习用来预测彩票也是不错的。 于是今天尝试了下(事先声明,最后测试发现一点也不准,所以。。。别想太多了。。哈哈) 具体代码如下: 首先我在某彩票网站上找到了大量双色…

人工智能之双色球预测系统

人工智能之双色球预测系统---------------经过多次调试,bug已完全解决 以下为写代码的过程: ------------------初次尝试---------------------- //bug未解决!!! 这bug也太难受了,等我解决bug之后,再来回帖!!! //bug未解决!!! //LNK1120不需要修复此错误。 如果在生成输出中…

专家预测双色球到底准不准确

借鉴了某博主Yunheeee,发现写的很不错,帮助我完成了此次作业,感谢! 紧接着,我跟着它的代码尝试了一下,大体如下: 首先引入库 import requests import numpy as np import pandas as pd 接着设…

人工智能之双色球预测系统(指针)

项目需求 中国福利彩票“双色球”是一种联合发行的“乐透型”福利彩票。采用计算机网络系统发行 销售,定期电视开奖。 游戏规则 1.“双色球”彩票投注区分为红色球号码区和蓝色球号码区。 2.“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色…

C++ 双色球预测系统

游戏规则 1.“双色球”彩票投注区分为红色球号码区和蓝色球号码区。 2.“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1--33 中选择;蓝色球号码从 1--16 中选择。 ball.txt 是我们每期存放的数据号,一共10期,每期7个号码,我们将数据…

双色球神经网络算法分析,双色球预测程序算法

1、神经网络预测双色球有多靠谱 你好,这东西没人会预测。 如果真会预测,早就成为百万富翁了。 预测这东西我早就不信了,上一回在网站上,看别人预测,结果买了,连一个号码都没对上。 楼主真要买,…

震惊,双色球秘诀竟然是这样。。。。。。。java预测双色球

今天在学习数组和随机数的时候,突然灵光一现,就写了一小段代码来预测下一期双色球,一起来看一看是如何写的吧! 基础知识: 双色球的规则: “双色球”彩票投注区分为红色球号码区和蓝色球号码区。 “双色球…

利用深度学习模型预测双色球

1、前言 深度学习模型可以简单理解为一个高度非线性的复合函数,网路输入可以看作自变量x,输出可以看作因变量y。看过网上其他人做的一些双色球预测,基本上是基于BP神经网络(也就是全连接神经网络)和LSTM的预测方法。其…

【纯属娱乐】随机森林预测双色球

目录 一、数据标准化二、预测代码三、后续 一、数据标准化 首先,我们需要对原始数据进行处理,将其转换为可用于机器学习的格式。我们可以将开奖号码中的红球和蓝球分开,将其转换为独热编码,然后将其与期数一起作为特征输入到机器…

Matlab 马尔可夫链预测双色球

Matlab 马尔可夫链预测双色球 前言:彩票是一个坑,千万不要往里面跳。 总是想总是想一夜暴富,所以利用业余时间有在研究彩票,偶尔遇见了这个经典的数学预测算法的思路以及代码,研究了两个月,想和大家分享一…

【马克思主义】马克思200周年诞辰

马克思主义——掌握唯物辩证法这一看家本领,要学会运用科学的方法论。一是坚持矛盾分析方法。通过分析和研究社会内部矛盾运动过程,理性客观认识社会变化。二是坚持过程分析方法。新陈代谢是社会发展的普遍规律,每一历史过程均包含诸多阶段。…

马克思基本原理概论 单元综合测试(二)

资本主义商品生产过程的特征是价值增值过程两种商品可以按一定比例相互交换的原因,在于它们在生产中都耗费了一般的人类劳动支付工资的货币执行的是货币的支付手段职能在私有制经济中价值规律的作用会导致小商品生产者两极分化决定资本主义社会中劳动力的价值因素一…

马克思主义的简答题

马克思主义的含义: 马克思主义是由马克思,恩格斯创立的,为它们的后继者所发展,以批判资本主义,建设社会主义和实现共产主义为目标的科学理论体系,是关于无产阶级和人类解放的科学 三大理论体系:…

怎么取名都不队-Alpha阶段项目展示

一、项目亮点 项目的典型应用场景 典型应用场景1-个人开发尝试 应用场景案例实现链接:QuickStart:跟我一起来部署第一个函数吧 守好嘉今年18岁了,高考结束后如愿进入北航信息类,以计算机学院为目标的TA最近在自学Python后端,希…

foxmail错误信息:501 请登录exmail.qq.com修改密码

登录网页版腾讯企业邮箱,修改邮箱密码即可。 转载于:https://www.cnblogs.com/bignine/p/10095187.html

不需要邮箱 修改Gitlab账号密码(亲测可用)

突然忘记了gitlab的登陆用户密码,还在内网! 不要着急, 通过后台修改密码! 1. 进入gitlab 后台控制台,等到打开ruby控制界面,有点慢不要着急,也可去掉 sudo登入,但可能会失败(笔者就失败了)! sudo gitlab-rails console production 2 .登入…

Outlook添加新浪邮箱时的配置细节——登录密码

Outlook添加新浪邮箱时的配置细节——登录密码 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、完整配置流程1.确认邮箱账号是否开通POP/IMAP/SMTP服务2.输入某一电子邮箱地址3.选择账户类型4.根据账户类型…