伯乐论坛网

搜索
查看: 119|回复: 1

双色球数据分析(一)

[复制链接]

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-12-5 10:46:37 | 显示全部楼层 |阅读模式

本文对双色球数据进行分析,分别计算红球、蓝球历年中出现的频次。
双色球数据抓取到已经有一段时间了,今天开始对双色球数据进行分析。本文通过几行代码实现对双色球出现的频率进行计算,并通过柱状图进行展示。
本文用到的工具:

  • pandas库
  • numpy库
  • jupyter notebook

数据:

  • 上一篇文章《第一个爬虫程序-爬双色球数据》中爬到的数据。
由于上一篇文章爬到的数据是整个完整的数据,存储格式为json文件,如下图


本文并不需要所有数据,只需要期数、红球、蓝球。需对爬到的数据进行简单的清洗,清洗程序:
def _read_txt_tolist(filename=None):
    """
    从filename文件中读取数据
    :return: 返回json格式的list
    """
    if filename is None:
        logger.info("文件名为空,请传入文件名!!!")
        return None

    try:
        with open(filename, 'r', encoding="utf-8") as f:
            text = json.load(f)
    except Exception as e:
        logger.info("文本转换json失败,文本:【{}】".format(text))
        logger.info("异常信息:{}".format(str(e)))
        text = None
    return text


def get_crb(s_file=None, t_file=None):
    """
    获取期数、红球、蓝球数据,并保存为crb.csv
    :return:
    """

    if s_file is None or t_file is None:
        logger("源文件和目标文件不能为空!!!")
        return None

    # 将文件数据读取到一个list中
    j_crbb = _read_txt_tolist(s_file)

    if j_crbb is None:
        return None
    # 循环解析每个元素,获取期数、红球、蓝球数据,每个元素一行存入文件
    with open(t_file, 'w', encoding="utf-8") as f:
        for i in j_crbb:
            str = ''
            str = i["code"] + "," + i["red"] + "," + i["blue"] + "\n"
            f.write(str)清洗后的文件长这样:


其中A列为期数,B-G列为红球,H列为蓝球。
需求1:统计B-G列中出现的所有数据的次数
导入两个库
import pandas as pd
import numpy as np
导入数据到pandas,并设置names
col = ["code","red1","red2","red3","red4","red5","red6","blue"]
data = pd.read_csv("crb.csv", names=col)
data.head()


取红球数据
data_r = data.iloc[:,1:7]


由于pandas只能对某一列计算次数,而我们的需求是统计所有列中各个值出现的次数,需将data_r由二维数组转成一维数组:
data_r_a = np.array(data_r)
data_r_l = data_r_a.flatten()
data_r_s = pd.Series(data_r_l)

接下来就可以计算每个球出现的次数了
count = data_r_s.value_counts().sort_index()

通过柱状图展示
count.plot(kind="bar",figsize=(20,8),color='r')



通过上图可以看出,红球分布相对比较均匀,综合分析数据如下:




  • 需求2:统计H列中出现的所有数据的次数
蓝球的分析比红球简单一些,只有一列,不用做降维处理,直接上代码和结果:
data_b = data.loc[:,"blue"]
count1 = data_b.value_counts().sort_index()
count1.plot(kind="bar",figsize=(20,8),color='b')





  • 总结:
本文通过对2013年至今的双色球数据进行分析,得到红球、蓝球出现的频次,并以柱状图的形式进行展现。
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-5 10:47:36 | 显示全部楼层
我一直在研究,计算攻势,拿方法,攻势,渠道+ adt426 相信我会越来越好,虎年大吉96胜录   未来不是梦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2013 Comsenz Inc.Powered by Discuz!X3.4
快速回复 返回顶部 返回列表