前言

双色球是中国福利彩票的一种玩法。

红球一共6组,每组从1-33中抽取一个,六个互相不重复。然后蓝球是从1-16中抽取一个数字,这整个组成的双色球

python从零基础入门到实战

今天,我们就用Python来统计一下各号码的中奖概率,并可视化展示。我本人,也会买概率最大的几个号码试试,中奖的话,我就删号,并开始朴实无华有钱人的生活!!!

先是数据的来源,采集双色球往期中奖数据

发送求情
import requests # 数据请求

# 发送请求的url地址
url = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice' params = {
'name': 'ssq',
'issueCount': '',
'issueStart': '',
'issueEnd': '',
'dayStart': '2017-10-24',
'dayEnd': '2021-08-04',
'pageNo': page,
}
headers = {
'Referer': 'http://www.cwl.gov.cn/kjxx/ssq/kjgg/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
}
response = requests.get(url=url, params=params, headers=headers)
# <> 对象 200 请求成功 状态码
解析数据,for遍历
for index in result:
dit = {
'期号': index['code'],
'开奖日期': index['date'],
'红球': index['red'],
'蓝球': index['blue'],
'一等奖中奖注数': index['prizegrades'][0]['typenum'],
'一等奖中奖金额': index['prizegrades'][0]['typemoney'],
'二等奖中奖注数': index['prizegrades'][1]['typenum'],
'二等奖中奖金额': index['prizegrades'][1]['typemoney'],
'三等奖中奖注数': index['prizegrades'][2]['typenum'],
'三等奖中奖金额': index['prizegrades'][2]['typemoney'],
'四等奖中奖注数': index['prizegrades'][3]['typenum'],
'四等奖中奖金额': index['prizegrades'][3]['typemoney'],
'五等奖中奖注数': index['prizegrades'][4]['typenum'],
'五等奖中奖金额': index['prizegrades'][4]['typemoney'],
'六等奖中奖注数': index['prizegrades'][5]['typenum'],
'六等奖中奖金额': index['prizegrades'][5]['typemoney'],
'一等奖中奖地区': index['content'],
'奖池金额': index['poolmoney']
}
保存数据
import csv # 内置模块

f = open('双色球.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['期号',
'开奖日期',
'红球',
'蓝球',
'一等奖中奖注数',
'一等奖中奖金额',
'二等奖中奖注数',
'二等奖中奖金额',
'三等奖中奖注数',
'三等奖中奖金额',
'四等奖中奖注数',
'四等奖中奖金额',
'五等奖中奖注数',
'五等奖中奖金额',
'六等奖中奖注数',
'六等奖中奖金额',
'一等奖中奖地区',
'奖池金额']) csv_writer.writeheader() # 写入表头
csv_writer.writerow(dit)
print(dit)

运行代码,这样就得到了往期双色球的数据了

现在开始,我们来分析这些数据

先导入需要用到的模块
import pandas as pd
from pyecharts.charts import *
from sklearn.linear_model import LogisticRegression
读取采集到的表格数据
data = pd.read_csv('双色球.csv',encoding='utf-8', engine='python')
data.head()

取数据,指定训练集和测试集
def get_lotto_data(data, lotto, lotto_id):
data['lotto_id'] = lotto_id
X = []
Y = []
# 标签and值
for s, p in zip(data['lotto_id'], data[lotto]):
X.append([float(s)])
Y.append(float(p))
return X, Y
建立线性回归模型
def linear_model_test(X, Y, predict_value):
regr = LogisticRegression()
regr.fit(X, Y)
predict_outcome = regr.predict(predict_value)
predictions = {}
predictions['intercept'] = regr.intercept_
predictions['coefficient'] = regr.coef_
predictions['predicted_value'] = predict_outcome
return predictions
使用线性回归推测中奖号码
def get_predicted_num(file, lotto, lotto_id):
X, Y = get_lotto_data(file, lotto, lotto_id)
predict_value = [[33]]
result = linear_model_test(X, Y, predict_value)
if lotto_id < 7:
print(f'中奖第{lotto_id}个红球为:', result['predicted_value'].astype('int64'), '号球')
else:
print('中奖蓝球为:', result['predicted_value'].astype('int64'), '号球')
预测结果
get_predicted_num(data, 'r1', 1)  # 预测红1
get_predicted_num(data, 'r2', 2) # 预测红2
get_predicted_num(data, 'r3', 3) # 预测红3
get_predicted_num(data, 'r4', 4) # 预测红4
get_predicted_num(data, 'r5', 5) # 预测红5
get_predicted_num(data, 'r6', 6) # 预测红6
get_predicted_num(data, '蓝球', 7) # 预测蓝7

可视化展示

红球中奖概率分布图
x = red_ball_count.index.tolist()
y = red_ball_count.values.tolist()
# 可视化展示
pie = (
Pie()
.add(""
,[list(z) for z in zip(x, y)]
)
)
pie.render_notebook()

蓝球中奖概率分布图
x = blue_ball_count.index.tolist()
y = blue_ball_count.values.tolist()
pie = (
Pie()
.add(""
,[list(z) for z in zip(x, y)]
)
)
pie.render_notebook()

蓝球中奖次数分布
from pyecharts import options as opts
from pyecharts.charts import PictorialBar
from pyecharts.globals import SymbolType c = (
PictorialBar()
.add_xaxis(x)
.add_yaxis(
"",
y,
label_opts=opts.LabelOpts(is_show=False),
symbol_size=18,
symbol_repeat="fixed",
symbol_offset=[0, 0],
is_symbol_clip=True,
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(title='蓝球中奖号码'),
xaxis_opts=opts.AxisOpts(is_show=False),
yaxis_opts=opts.AxisOpts(
axistick_opts=opts.AxisTickOpts(is_show=False),
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(opacity=0)
),
),
)
)
c.render_notebook()

中奖注数漏斗图
x_data = df['中奖注数'].index.tolist()
y_data = df['中奖注数'].values.tolist() c = (
Funnel()
.add(
"中奖注数漏斗图",
[list(z) for z in zip(x_data, y_data)],
label_opts=opts.LabelOpts(position="inside"),
)
.set_global_opts(title_opts=opts.TitleOpts(title="中奖注数漏斗图"))
)
c.render_notebook()
很真实,基数太大,一、二等奖的中奖数都看不见了

用Python预测双色球福利彩票中奖号码(请不要当真)的更多相关文章

  1. python抓取每期双色球中奖号码,用于分析

    获取每期双色球中奖号码,便于观察,话不多说,代码如下 # -*- coding:utf-8 -*- # __author__ :kusy # __content__:获取每期双色球中奖号码 # __d ...

  2. 初识python 之 爬虫:爬取双色球中奖号码信息

    人生还是要有梦想的,毕竟还有python.比如,通过python来搞一搞彩票(双色球).注:此文仅用于python学习,结果仅作参考.用到知识点:1.爬取网页基础数据2.将数据写入excel文件3.将 ...

  3. 第一个Python程序 | 机选彩票号码+爬取最新开奖号码

    (机选彩票号码+爬取最新开奖号码 | 2021-04-21) 学习记录,好记不如烂笔头 这个程序作用是<机选三种彩票类型的号码> 程序内包含功能有如下: 自动获取最新的三种彩票的开奖号码 ...

  4. C语言,一个彩票摇奖程序摇出22选5的中奖号码

    摇奖机摇奖,无非就是利用它的随机性,让球从摇奖机中随机地掉出,就成了中奖号码.而C语言中也同样有个rand()函数可以产生随机数,利用这个rand()函数产生的随机数,同样可以代替从摇奖机中随机摇出的 ...

  5. java编写双色球源代码。-----系统作为彩票双色球生成器,模拟机选一注双色球的彩票号码

    package demo2; import java.util.Arrays; import java.util.Random; /** * 系统作为彩票双色球生成器,模拟机选一注双色球的彩票号码: ...

  6. PHP实现简单的双色球机选号码

    <?php header('Content-Type: text/html; charset=utf-8'); //PHP实现双色球机选号码 $red = range(1, 33);//初次设定 ...

  7. 使用Python生成双色球号码

    说来也是巧,今天和一个朋友聊天,说他运气不错应该买彩票,于是就想到了双色球的规则,就写了几行代码产生双色球号码,代码如下: import random,time def process_int(x): ...

  8. C#双色球——简单抽取中奖号码

    int[] ss = new int[6];            Random s = new Random();            Console.WriteLine("双色球随机: ...

  9. py3+urllib+re,轻轻松松爬取双色球最近100期中奖号码

    通过页面源码,发现使用正则表达式可以很方便的获取到我们需要的数据,最后循环写入txt文件. (\d{2})表示两位数字 [\s\S]表示匹配包括“\r\n”在内的任何字符,匹配红球和蓝球之间的内容 具 ...

随机推荐

  1. Arduino参考手册-函数和变量及电路图

    标题: Arduino参考手册-函数和变量及电路图 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#Arduino,#参考手册,#函数,#变量] 目录: [Arduino] 日期: ...

  2. android动画系列

    Android 属性动画(Property Animation) 完全解析 (上 动画系列 - 传统View动画与Property动画基础及比较 [Android 基础]Animation 动画介绍和 ...

  3. Spring Boot 2.x基础教程:使用Redis的发布订阅功能

    通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K.V存储的高性能缓存. 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发 ...

  4. 【原创】SystemVerilog中的多态和虚方法

    封装可以隐藏实现细节,使代码模块化,继承可以扩展已经存在的代码模块,目的都是为了代码重用.多态是为了实现接口的重用.在SystemVerilog中,子类和父类之间多个子程序使用同一个名字的现象称为Sy ...

  5. Redis并发竞争key的解决方案详解

    1. 需求由来 1.Redis高并发的问题 Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿.缓存雪崩.缓存和数据一致性,以及今天要谈到的缓存并发竞 ...

  6. SpringCloud Alibaba实战(11:引入服务网关Gateway)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 在前面的章节中,我们已经完成了服务间的调用.统一配置等等,在这 ...

  7. Qt 新手实战项目之手把手打造一个串口助手

    一前景 很多时候我们在学习一门新的语言,一直在学习各种语法和记住各种关键字,很容易产生枯燥的情绪,感觉学习这些玩意儿不知道用在什么地方,心里很是苦恼,这不,我在这记录下我学习Qt的第一个的小项目-串口 ...

  8. 如何使用「mkvtoolnix」和「GoldWave」仅保留视频中左、右声道的其中一个声道?

    为什么要这样做? 我手上有一部电视剧的视频文件(.rmvb),每个视频文件都是"国/粤双语"的,与其他双语视频的两种语言的音频保存在两个音轨上不同,我这里的视频文件的双语是分别保存 ...

  9. jenkins pipeline构建后返回构建结果给gitlab

    jenkins pipeline构建后返回构建结果给gitlab 使用场景 gitlab 合并请求时要求管道任务必须成功,否则无法执行合并操作,又不想使用gitlab ci 工具. 实现方法 1.Ge ...

  10. JS秒表倒计时器 (转)

    <html> <body> <span>倒计时30分钟:</span><span id="clock">00:30:00 ...