Python数据分析的过程记录(二)

Python数据分析的过程记录(二)Python数据分析的过程记录(二)文章目录Python数据分析的过程记录(二)一、需求介绍二、需求分析三、代码实现一、需求介绍二、需求分析三、代码实现

大家好,又见面了,我是你们的朋友全栈君。

Python数据分析的过程记录(二)

一、需求介绍

在本篇博文中,我们在使用另外一种方法来进行彩票的数据分析,这种方法我们称之为滚雪球,即就是说需要不断地迭代来进行彩票的购买与预计估算等操作。

我们要买的彩票名称叫“极速赛车”

链接例如:

https://www.1681160.com/api/pks/getPksHistoryList.do’?date=2021-07-05&lotCode=10037

这个是数据存储的网页的链接,如果想更严谨一点的话,他是Ajax的模式。

二、需求分析

1、简介

根据上面的需求介绍,我们大致明白了要干什么。

2、获取数据

不管进行怎样的分析,我们都需要进行数据的获取或者说是提取,在这里呢,我们就采用爬虫的方式来进行数据的获取。

我们使用了Python中的requests模块来进行爬虫的操作,从而获取到了,不同天的彩票的基本数据:

2.1、时间信息

2.2、开奖的数字信息

2.3、其他需要的信息等

3、数据分析的方案

我们首先定义一个列表,这个列表之中会记录一些数据,我们根据这个列表中的数据来进行下一次的彩票的购买,具体的方案如下:
1、我们购买的数据应该要满足,他们全都在这个列表之中,即就是说,列表之中的数据我们都要购买,不管中不中我们都买:
2、如果中了,那么我们就把这个数据从当前的列表里面剔除出去,如果没有中,那么我们就把这个数据加入到列表里面去,;
3、如上所述,我们依次的向下进行推进着进行购买彩票。

这就是我们的一个新的方案。

下面就是具体的代码实现了。

三、代码实现

在代码里面有一些注释,根据这些注释以及相关代码是可以理解具体的意图的啦。

import re
import requests
import xlwt
import json
""" 数字 位置 天数 数据 """
# 时间列表
date_list = ["7-01", "7-02", "7-03"]
for i in range(30):
date_list.append(f"6-{ 
i + 1}")
for number in ["01", "02", "03", "04", "05", 
"06", "07", "08", "09", "10"]:
wb = xlwt.Workbook()  # 创建 excel 表格
# 每一个数字对应于一个 excel 表格
for position_of_the_lottery in range(10):
sh = wb.add_sheet(f'彩票分析数据处理{ 
position_of_the_lottery}')
# 创建一个 表单
""" 表头 """
sh.write(0, 0, "日期")
sh.write(0, 1, "48次中的数目")
sh.write(0, 2, "48次中的时间")
sh.write(0, 3, "49次中的数目")
sh.write(0, 4, "49次中的时间")
sh.write(0, 5, "50次中的数目")
sh.write(0, 6, "50次中的时间")
sh.write(0, 7, "51次中的数目")
sh.write(0, 8, "51次中的时间")
sh.write(0, 9, "52次中的数目")
sh.write(0, 10, "52次中的时间")
sh.write(0, 11, "53次中的数目")
sh.write(0, 12, "53次中的时间")
sh.write(0, 13, "54次中的数目")
sh.write(0, 14, "54次中的时间")
sh.write(0, 15, "55次中的数目")
sh.write(0, 16, "55次中的时间")
sh.write(0, 17, "56次中的数目")
sh.write(0, 18, "56次中的时间")
sh.write(0, 19, "57次中的数目")
sh.write(0, 20, "57次中的时间")
sh.write(0, 21, "58次中的数目")
sh.write(0, 22, "58次中的时间")
sh.write(0, 23, "59次中的数目")
sh.write(0, 24, "59次中的时间")
sh.write(0, 25, "60次中的数目")
sh.write(0, 26, "60次中的时间")
sh.write(0, 27, "61次中的数目")
sh.write(0, 28, "61次中的时间")
sh.write(0, 29, "62次中的数目")
sh.write(0, 30, "62次中的时间")
sh.write(0, 31, "63次中的数目")
sh.write(0, 32, "63次中的时间")
sh.write(0, 33, "64次中的数目")
sh.write(0, 34, "64次中的时间")
# 绘制表头
excel_position_of_the_mouse = 1
# 这个应该是一个表一个
# 所以说哦 需要放在外面
for date in date_list:
url = 'https://www.1681160.com/api/pks/getPksHistoryList.do' \
f'?date=2021-0{ 
date}&lotCode=10037'
headers = { 

'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64',
'X-Requested-With':
'XMLHttpRequest'
}  # Ajax 请求
response_0 = requests.get(url=url, headers=headers)
new_response_0 = json.loads(response_0.content.decode())["result"]["data"]
# 获取数据
# 初始化
# global
times_of_the_number_of_coming = 1  # 初始化数目
# 每一天都需要进行初始化 date
dict_of_times = { 
}  # 次数统计 dict
dict_of_t = { 
}  # 时间统计 dict
# excel_position_of_the_mouse = 1
for the_data_of_the_daily_lottery in range(1152):
# 1152 条数据
a_result = new_response_0[1151 - the_data_of_the_daily_lottery][
"preDrawCode"][0 + 3 * position_of_the_lottery:
2 + 3 * position_of_the_lottery]
if a_result == number:  # 如果得到的结果 == 开始的数字
# 如果相等,那就是命中了
if f'{ 
times_of_the_number_of_coming}' in dict_of_times.keys():
dict_of_times[f'{ 
times_of_the_number_of_coming}'] += 1
else:
dict_of_times[f'{ 
times_of_the_number_of_coming}'] = 1
if f'{ 
times_of_the_number_of_coming}' in dict_of_t.keys():
dict_of_t[f'{ 
times_of_the_number_of_coming}'].append(
new_response_0[1151 - the_data_of_the_daily_lottery][
"preDrawTime"][10:]
)
else:
dict_of_t[f'{ 
times_of_the_number_of_coming}'] = [
new_response_0[1151 - the_data_of_the_daily_lottery][
"preDrawTime"][10:]
]
print(times_of_the_number_of_coming)
times_of_the_number_of_coming = 1
# 重置
else:
# 如果不相等那就是没有命中
# 那么,我们需要自加一
times_of_the_number_of_coming += 1  # 自加一
# 书写时间
sh.write(excel_position_of_the_mouse, 0,
new_response_0[0]["preDrawTime"][:10])
# 时间写在第一列上面,时间随便取一个就可以了
for e in dict_of_times.keys():
if int(e) >= 48:
sh.write(excel_position_of_the_mouse,
1 + (int(e) - 48) * 2,
dict_of_times[e])
sh.write(excel_position_of_the_mouse,
2 + (int(e) - 48) * 2,
dict_of_t[e])
# 写入次数以及时间
else:
continue
# 小于 48 的不记入数据里面
excel_position_of_the_mouse += 1
# 当搞完一个以后,需要改变一下位置
# 保存
wb.save(f'极速赛车滚雪球数据统计-{ 
number}.xls')

四、成品结果展示

最后我们的成果是一个文件夹,
里面有十个excel表格,因为有十个数字需要进行滚雪球方式的寻找与查看。

同时,每一个excel表格中有十个表单,因为每一个数字都需要有十个位置需要统计。

成果的截图如下所示;

图1
在这里插入图片描述

图2
在这里插入图片描述

图3

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160366.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • VC++界面库[通俗易懂]

    VC++界面库[通俗易懂]好东西,果断收藏  刚开始用C++做界面的时候,根本不知道怎么用简陋的MFC控件做出比较美观的界面,后来就开始逐渐接触到BCG XtremeToolkitProv15.0.1,Skin++,等界面库,以及一些网友自己写的界面库,开始对于C++软件界面美化有了一点点的心得。不敢藏私,希望和一些新手朋友们分享交流。  一. 开源C++界面库

  • Ubuntu16.04安装ros_nodejs安装教程

    Ubuntu16.04安装ros_nodejs安装教程Ubuntu16.04安装ROS详解1、设置sources.list2、设置key3、更新package4、安装ROSkinetic完整版5、初始化rosdep6、配置ROS环境7、安装依赖项8、测试ROS是否安装成功1、设置sources.listsudosh-c’echo"debhttp://packages.ros.org/ros/ubuntu$(lsb_release-…

  • k8s安装、访问kubernetes-dashboard监控

    k8s安装、访问kubernetes-dashboard监控

  • 【spring】Spring事件监听器ApplicationListener的使用与源码分析

    【spring】Spring事件监听器ApplicationListener的使用与源码分析ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。Spring提供的内置事件:ContextRefreshedEvent:容器刷新事件ContextStartedEvent:容器启动事件ContextStoppedEvent:容器停止事件ContextClo

    2022年10月29日
  • LSM树详解_黑龙江野生鱼品种

    LSM树详解_黑龙江野生鱼品种LSM树(Log-Structured-Merge-Tree)的名字往往会给初识者一个错误的印象,事实上,LSM树并不像B+树、红黑树一样是一颗严格的树状数据结构,它其实是一种存储结构,目前HBase,LevelDB,RocksDB这些NoSQL存储都是采用的LSM树。LSM树的核心特点是利用顺序写来提高写性能,但因为分层(此处分层是指的分为内存和文件两部分)的设计会稍微降低读性能,但是通过牺牲小部分读性能换来高性能写,使得LSM树成为非常流行的存储结构。1、LSM树的核心思想如上图所示,LSM树有

    2022年10月29日
  • 示波器的trigger_示波器trigger原理

    示波器的trigger_示波器trigger原理很多时候只进行上述两项调整的话,是能看到一个波形,但这个波形却很不稳定,左右乱颤,相互重叠,导致看不清楚,如图5所示。图5 示波器触发电平调整不当的示意图  这就是因为示波器的触发没有调整好的缘故,那么什么是触发呢?简单点理解,所谓触发就是设定一个基准,让波形的采集和显示都围绕这个基准来。最常用的触发设置是基于电平的(也可基于时间等其它量,道理相同),大家看下上面的几张波形图,在左侧总

    2022年10月12日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号