返回顶部
首页 > 资讯 > 后端开发 > Python >Python数据分析过程是怎样的
  • 531
分享到

Python数据分析过程是怎样的

2023-06-26 04:06:18 531人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python数据分析过程是怎样的”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据分析过程是怎样的”文章能帮助大家解决问题。一、需求介绍该需求主要是分析某一种数据的历史

这篇文章主要介绍“python数据分析过程是怎样的”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据分析过程是怎样的”文章能帮助大家解决问题。

    一、需求介绍

    该需求主要是分析某一种数据的历史数据。

    客户的需求是根据该数据的前两期的情况,如果存在某个斜着的两个数字相等,那么就买第三期的同一个位置处的彩票,
    对于1、,如果相等的数字是:1-5,那就买6-10,如果相等的数字是:6-10,那就买1-5;
    对于2、,如果相等的数字是:1-5,那就买1-5,如果相等的数字是:6-10,,那就买6-10。

    然后,根据这个方案,有可能会买中,但是也有可能买不中,于是,客户希望我可以统计出来在100天中,按照这种方法,连续6次以及6次以上的购买彩票才能够命中一次奖的次数以及分别所对应的时间,对于这个案例,我们下面详细分析。

    二、以第1、个为例进行数据分析

    (在这里,我们先利用 Jupyter Notebook 来进行分析,然后,在得到成果以后,利用 PyCharm 来进行完整的程序设计。)

    1、获取一天的数据

    打开如下图所示的界面可以获取到网址以及请求头:
    1、网址(历史数据的网址)

    Python数据分析过程是怎样的

    请求头

    Python数据分析过程是怎样的

    然后我们在程序中进行代码书写获取数据:

    Python数据分析过程是怎样的

    Python数据分析过程是怎样的

    然后进行一定的预处理:

    Python数据分析过程是怎样的

    2、开始一天的数据的分析

    这里我们直接展示代码:

    def reverse_list(lst):    """    准换列表的先后顺序    :param lst: 原始列表    :return: 新的列表    """    return [ele for ele in reversed(lst)]low_list = ["01", "02", "03", "04", "05"]# 设置比较小的数字的列表high_list = ["06", "07", "08", "09", "10"]# 设置比较大的数字的列表N = 0# 设置一个数字N来记录一共有多少期可以购买n = 0# 设置一个数字n来记录命中了多少期彩票record_number = 1  # 设置记录数据的一个判断值list_data_number = []# 设置一个空的列表来存储一天之中的连续挂掉的期数dict_time_record = {}# 设置一个空的字典来存储连挂掉的期数满足所列条件的时间节点for k in range(1152):      # 循环遍历所有的数据点    if k < 1150:        new_result1 = reverse_list(new_response["result"]["data"])[k]          # 第一期数据        new_result2 = reverse_list(new_response["result"]["data"])[k + 1]          # 第二期数据        new_result3 = reverse_list(new_response["result"]["data"])[k + 2]          # 第三期数据        data1 = new_result1['preDrawCode'].split(',')        # 第一期数据        data2 = new_result2['preDrawCode'].split(',')        # 第二期数据        data3 = new_result3['preDrawCode'].split(',')        # 第三期数据        for m in range(10):            # 通过循环来判断是否满足购买的条件,并且实现一定的功能            if m == 0:                if data2[0] == data1[1]:                      # 如果相等就要结束循环                    N += 1                    # 可以购买的期数应该要自加一                    if (data2[0] in low_list and data3[0] in low_list) or (data2[0] in high_list and data3[0] in high_list):                        n += 1                        # 命中的期数应该要自加一                        # 如果命中了的话,本轮结束,开启下一轮                        list_data_number.append(record_number)                        if f"{record_number}" in dict_time_record.keys():                            # 如果已经有了这个键,那么值添加时间点                            dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                        else:                            # 如果没有这个键,那么添加一个键值对,值为一个列表,而且初始化为当前的时间                            dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                        record_number = 1                          # 初始化下一轮的开始                    else:                        record_number += 1                          # 如果没有命中的话,次数就应该要自加一                    break                      # 如果满足相等的条件就要结束循环            elif m == 9:                  # 与上面差不多的算法                if data2[9] == data1[8]:                      # 如果相等                    N += 1                    if (data2[9] in low_list and data3[9] in low_list) or (data2[9] in high_list and data3[9] in high_list):                        n += 1                        list_data_number.append(record_number)                        if f"{record_number}" in dict_time_record.keys():                            dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                        else:                            dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                        record_number = 1                    else:                        record_number += 1                    break            else:                  # 与上面差不多的算法                if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]:                      # 如果相等                    N += 1                    if (data2[m] in low_list and data3[m] in low_list) or (data2[m] in high_list and data3[m] in high_list):                        n += 1                        list_data_number.append(record_number)                        if f"{record_number}" in dict_time_record.keys():                            dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                        else:                            dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                        record_number = 1                    else:                        record_number += 1                    breakprint(f"日期:{new_response['result']['data'][0]['preDrawTime'][:10]},总的梯子数为{N}个,一共有{n}次命中,一共有{N - n}次挂了")# 打印时间,以及,可以购买的期数,命中的期数,没有命中的期数list_data_number.sort()# 按照大小顺序来进行排序dict_record = {}# 设置空字典进行记录for i in list_data_number:    if f"{i}" in dict_record.keys():  # 判断是否已经有了这个数字?        dict_record[f"{i}"] += 1        # 如果有的话,那么就会自加一    else:  # 如果没有的话,那么就会创建并且赋值等于 1        dict_record[f"{i}"] = 1        # 创建一个新的字典元素,然后进行赋值为 1for j in dict_record.keys():    if (int(j) >= 6) and (int(j) < 15):        # 实际的结果表明,我们需要的是大于等于6期的数据,而没有出现大于15的数据,因此有这样的一个关系式        print(f"买{j}次才中奖的次数为{dict_record[j]}")        # 打印相关信息        print(dict_time_record[j])        str0 = ""        for letter in dict_time_record[j]:            str0 += letter            str0 += ", "        print(str0)        # 打印相关信息

    运行结果的展示如下图所示:

    Python数据分析过程是怎样的

    3、循环日期进行多天的数据分析:

    首先设置一个事件列表来记录需要统计哪些天的数据:
    代码:

    data_list = []for h in range(31):    data_list.append(f'1-{h + 1}')for h in range(28):    data_list.append(f'2-{h + 1}')for h in range(31):    data_list.append(f'3-{h + 1}')for h in range(20):    data_list.append(f'4-{h + 1}')

    通过上述的代码,我们即实现了时间列表的设置,然后我们循环遍历这个列表访问不同日期的彩票数据即就是得到了不同时间的数据,然后再利用上述的分析方法来进行数据分析,即就是可以得到了多天的彩票数据分析的结果了。

    4、将数据写入excel表格中

    这里我们可以采用xlwt 模块来进行excel表格的写入操作啦,具体的写入就不必过多赘述了。

    三、完整的代码展示:

    一下是完整的代码:

    import requestsimport chardetimport JSONimport xlwt  # excel 表格数据处理的对应模块def reverse_list(lst):    """    准换列表的先后顺序    :param lst: 原始列表    :return: 新的列表    """    return [ele for ele in reversed(lst)]data_list = []for h in range(31):    data_list.append(f'1-{h + 1}')for h in range(28):    data_list.append(f'2-{h + 1}')for h in range(31):    data_list.append(f'3-{h + 1}')for h in range(20):    data_list.append(f'4-{h + 1}')wb = xlwt.Workbook()  # 创建 excel 表格sh = wb.add_sheet('彩票分析数据处理')  # 创建一个 表单sh.write(0, 0, "日期")sh.write(0, 1, "梯子数目")sh.write(0, 2, "命中数目")sh.write(0, 3, "挂的数目")sh.write(0, 4, "6次中的数目")sh.write(0, 5, "6次中的时间")sh.write(0, 6, "7次中的数目")sh.write(0, 7, "7次中的时间")sh.write(0, 8, "8次中的数目")sh.write(0, 9, "8次中的时间")sh.write(0, 10, "9次中的数目")sh.write(0, 11, "9次中的时间")sh.write(0, 12, "10次中的数目")sh.write(0, 13, "10次中的时间")sh.write(0, 14, "11次中的数目")sh.write(0, 15, "11次中的时间")sh.write(0, 16, "12次中的数目")sh.write(0, 17, "12次中的时间")sh.write(0, 18, "13次中的数目")sh.write(0, 19, "13次中的时间")sh.write(0, 20, "14次中的数目")sh.write(0, 21, "14次中的时间")# wb.save('test4.xls')sheet_seek_position = 1# 设置表格的初始位置为 1for data in data_list:    low_list = ["01", "02", "03", "04", "05"]    high_list = ["06", "07", "08", "09", "10"]    N = 0    n = 0    url = f'https://api.api68.com/pks/getPksHistoryList.do?date=2021-{data}&lotCode=10037'    headers = {        'User-Agent':            'Mozilla/5.0 (windows NT 10.0; Win64; x64) '            'AppleWEBKit/537.36 (Khtml, like Gecko) '            'Chrome/90.0.4430.72 Safari/537.36'    }    response = requests.get(url=url, headers=headers)    response.encoding = chardet.detect(response.content)['encoding']    new_response = json.loads(response.text)    sh.write(sheet_seek_position, 0, new_response['result']['data'][0]['preDrawTime'][:10])    # 在表格的第一个位置处写入时间,意即:data    record_number = 1  # 记录数据的一个判断值,设置为第一次,应该是要放在最外面的啦    list_data_number = []    # 设置一个空列表来存储一天之中的连续挂的期数    dict_time_record = {}    for k in range(1152):        # record_number = 1,应该要放外面        # 记录数据的一个判断值,设置为第一次        if k < 1150:            new_result1 = reverse_list(new_response["result"]["data"])[k]            new_result2 = reverse_list(new_response["result"]["data"])[k + 1]            new_result3 = reverse_list(new_response["result"]["data"])[k + 2]            data1 = new_result1['preDrawCode'].split(',')            data2 = new_result2['preDrawCode'].split(',')            data3 = new_result3['preDrawCode'].split(',')            for m in range(10):                if m == 0:                    if data2[0] == data1[1]:                        N += 1                        if (data2[0] in low_list and data3[0] in high_list) or (data2[0] in high_list and data3[0] in low_list):                            n += 1                            # 如果命中了的话,本轮结束,开启下一轮                            list_data_number.append(record_number)                            if f"{record_number}" in dict_time_record.keys():                                dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                            else:                                dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                            # print(record_number)                            record_number = 1  # 初始化                        else:                            record_number += 1  # 没中,次数加一                            # 自加一                        break                elif m == 9:                    if data2[9] == data1[8]:                        N += 1                        if (data2[9] in low_list and data3[9] in high_list) or (data2[9] in high_list and data3[9] in low_list):                            n += 1                            list_data_number.append(record_number)                            if f"{record_number}" in dict_time_record.keys():                                dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                            else:                                dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                            # print(record_number)                            record_number = 1                        else:                            record_number += 1                        break                else:                    if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]:                        N += 1                        if (data2[m] in low_list and data3[m] in high_list) or (data2[m] in high_list and data3[m] in low_list):                            n += 1                            list_data_number.append(record_number)                            if f"{record_number}" in dict_time_record.keys():                                dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                            else:                                dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                            # print(record_number)                            record_number = 1                        else:                            record_number += 1                        break    print(f"日期:{new_response['result']['data'][0]['preDrawTime'][:10]},总的梯子数为{N}个,一共有{n}次命中,一共有{N - n}次挂了")    sh.write(sheet_seek_position, 1, N)    sh.write(sheet_seek_position, 2, n)    sh.write(sheet_seek_position, 3, N - n)    # new_list_data_number = list_data_number.sort()    list_data_number.sort()    # 进行排序    dict_record = {}    # 设置空字典    for i in list_data_number:        if f"{i}" in dict_record.keys():  # 判断是否已经有了这个数字?            dict_record[f"{i}"] += 1            # 如果有的话,那么就会自加一        else:  # 如果没有的话,那么就会创建并且赋值等于 1            dict_record[f"{i}"] = 1            # 创建一个新的字典元素,然后进行赋值为 1    # print(dict_record)    # print(f"买彩票第几次才中奖?")    # print(f"按照我们的规律买彩票的情况:")    for j in dict_record.keys():        if (int(j) >= 6) and (int(j) < 15):            print(f"买{j}次才中奖的次数为{dict_record[j]}")            print(dict_time_record[j])            str0 = ""            for letter in dict_time_record[j]:                str0 += letter                str0 += ", "            print(str0)            sh.write(sheet_seek_position, 4 + (int(j) - 6) * 2, dict_record[j])            # 写入几次            sh.write(sheet_seek_position, 4 + (int(j) - 6) * 2 + 1, str0[:-2])              # 注意这里应该要改为 -2            # 写入几次对应的时间            # print(j)    sheet_seek_position += 1    # 每次写完了以后,要对位置进行换行,换到下一行,从而方便下一行的写入# 保存wb.save('极速飞艇彩票分析结果.xls')

    运行结果展示:
    展示1、

    Python数据分析过程是怎样的

    展示2、

    Python数据分析过程是怎样的

    从而,我们便解决了极速飞艇的彩票的数据分析

    然后,我们只需要稍稍改变一点点算法,其他的部分是完全一样的啦,从而即就是可以实现极速赛车的数据分析了啦。
    修改的代码在下面列出来了:

     for m in range(10):                if m == 0:                    if data2[0] == data1[1]:                        N += 1                        if (data2[0] in low_list and data3[0] in low_list) or (data2[0] in high_list and data3[0] in high_list):                            n += 1                            # 如果命中了的话,本轮结束,开启下一轮                            list_data_number.append(record_number)                            if f"{record_number}" in dict_time_record.keys():                                dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                            else:                                dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                            # print(record_number)                            record_number = 1  # 初始化                        else:                            record_number += 1  # 没中,次数加一                            # 自加一                        break                elif m == 9:                    if data2[9] == data1[8]:                        N += 1                        if (data2[9] in low_list and data3[9] in low_list) or (data2[9] in high_list and data3[9] in high_list):                            n += 1                            list_data_number.append(record_number)                            if f"{record_number}" in dict_time_record.keys():                                dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                            else:                                dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                            # print(record_number)                            record_number = 1                        else:                            record_number += 1                        break                else:                    if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]:                        N += 1                        if (data2[m] in low_list and data3[m] in low_list) or (data2[m] in high_list and data3[m] in high_list):                            n += 1                            list_data_number.append(record_number)                            if f"{record_number}" in dict_time_record.keys():                                dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])                            else:                                dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]                            # print(record_number)                            record_number = 1                        else:                            record_number += 1                        break

    关于“Python数据分析过程是怎样的”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: Python数据分析过程是怎样的

    本文链接: https://lsjlt.com/news/306785.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Python数据分析过程是怎样的
      这篇文章主要介绍“Python数据分析过程是怎样的”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据分析过程是怎样的”文章能帮助大家解决问题。一、需求介绍该需求主要是分析某一种数据的历史...
      99+
      2023-06-26
    • python数据分析入门是怎样的
      这篇文章将为大家详细讲解有关python数据分析入门是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 随着Python自身功能的完善以及生态系统的扩展,Python在Web开...
      99+
      2023-06-02
    • Python解析器的解析过程是怎样的
      今天就跟大家聊聊有关Python解析器的解析过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先先让大家看一下Python解析器的全流程:我们先用编辑器编写好源代码,保存成...
      99+
      2023-06-17
    • 深入浅析Python数据分析的过程记录
      目录一、需求介绍二、以第1、个为例进行数据分析1、获取一天的数据2、开始一天的数据的分析3、循环日期进行多天的数据分析:4、将数据写入Excel表格中三、完整的代码展示:总结一、需求...
      99+
      2024-04-02
    • python数据分析中的异常值处理是怎样的
      本篇文章为大家展示了python数据分析中的异常值处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。异常值异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析...
      99+
      2023-06-29
    • SQL注入全过程的深入分析是怎样的
      这篇文章将为大家详细讲解有关SQL注入全过程的深入分析是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。分析了SQL注入全过程,具体如下:初步注入--绕...
      99+
      2024-04-02
    • Python爬虫过程是怎样的
      本文小编为大家详细介绍“Python爬虫过程是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python爬虫过程是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。网络爬虫从一个或若干初始网页的URL开...
      99+
      2023-06-17
    • 怎样进行Python数据结构分析
      怎样进行Python数据结构分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python数据结构数据结构引言:    数据结构是组...
      99+
      2023-06-02
    • 怎样浅析Python开发过程
      这篇文章给大家介绍怎样浅析Python开发过程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Pyth...
      99+
      2023-06-17
    • SQLServer的数据库管理的分析是怎样的
      今天就跟大家聊聊有关SQLServer的数据库管理的分析是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数据库管理  可以使用SSMS工具来设...
      99+
      2024-04-02
    • 剖析Python源代码编制过程是怎么样的
      剖析Python源代码编制过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python语言中提供的re模块能支持正则表达式,还提供SGML,XML分析模块,大多数的...
      99+
      2023-06-17
    • 怎样分析图数据库
      怎样分析图数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面主要讨论图数据库背后的设计思路、原理还有一些适用的场景,以及在生产环境中使用...
      99+
      2024-04-02
    • MySQL中使用XML数据过程是怎么样的
      这篇文章给大家介绍MySQL中使用XML数据过程是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  在MySQL中使用XML数据可以更好的管理数据,将所有数据进行了格式化,这个...
      99+
      2024-04-02
    • SpringBoot中Mybatis+Druid数据访问过程是怎样的
      本篇内容主要讲解“SpringBoot中Mybatis+Druid数据访问过程是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中Mybatis+Druid数据访问过程是...
      99+
      2023-06-25
    • Oracle分区数据问题的分析和修复是怎样的
      Oracle分区数据问题的分析和修复是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 今天根据同事的反馈,处理了一个分区表的问题,也让...
      99+
      2024-04-02
    • DNS服务器解析过程是怎样的
      本文小编为大家详细介绍“DNS服务器解析过程是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“DNS服务器解析过程是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。DNS: Domain Name Sy...
      99+
      2023-06-27
    • Python 数据分析教程探索性数据分析
      目录什么是探索性数据分析(EDA)?描述性统计分组数据方差分析相关性和相关性计算什么是探索性数据分析(EDA)? EDA 是数据分析下的一种现象,用于更好地理解数据方面,例如:&nb...
      99+
      2024-04-02
    • Oracle分页+付上Sql Server分页+千万级数据分页的存储过程是怎样的
      这篇文章给大家介绍Oracle分页+付上Sql Server分页+千万级数据分页的存储过程是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。select * from a...
      99+
      2024-04-02
    • 怎样进行mysql数据库的分析
      怎样进行mysql数据库的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、数据库是什么?数据库是管理数据的一类软件。对数据的管理体现在两个方面,第一是描述数据,即一条...
      99+
      2023-06-22
    • SQL Server数据库中的存储过程是怎么样的
      SQL Server数据库中的存储过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是存储过程如果你接触过其他的编程语言,那么就...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作