Pandas学习(二)——双色球开奖数据分析
学习笔记汇总
Pandas学习(一)–数据的导入
pandas学习(二)–双色球数据分析
pandas学习(三)–NAB球员薪资分析
pandas学习(四)–数据的归一化
pandas学习(五)–pandas学习视频
本章主要利用双色球开奖数据来学习pandas的DataFrame数据选取,Series的统计功能,以及matplotlib画柱状图。
ball.py
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from utils import *
HISTORY_NUM = "079" # 历史同期
HEAD_NUM = 30 # 近30期
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# read data
data_sheet = 'ssqexcle_result.xls'
all_data = pd.read_excel(data_sheet, parse_cols=(0, 2, 3, 4, 5, 6, 7, 8))
all_data['index'] = all_data['index'].astype(np.str)
#统计历史数据
history_data = all_data[[x.endswith(HISTORY_NUM) for x in all_data['index']]].copy()
history_red_ball = history_data.iloc[:, 1:7]
history_blue_ball = history_data.iloc[:, 7]
count_red_ball = history_red_ball.stack().value_counts()
count_blue_ball = history_blue_ball.value_counts()
# 画图
plt.figure(1)
count_red_ball.plot(kind='bar', align='center')
plt.xlabel("红球数字")
plt.ylabel("次数")
plt.show()
plt.figure(2)
count_blue_ball.plot(kind='bar', align='center')
plt.xlabel("蓝球数字")
plt.ylabel("次数")
plt.show()
#统计近n期数据
head_n_data = all_data.head(HEAD_NUM).copy()
head_n_red_ball = head_n_data.iloc[:, 1:7]
head_n_blue_ball = head_n_data.iloc[:, 7]
odd_even_dict = calculate_odd_vs_even(head_n_red_ball) #计算奇偶比
print(odd_even_dict)
#计算3区比
result = cal_3distance_times(all_data.iloc[:, 1:7])
print(result)
# 统计红球2连号出现次数
result = cal_2sequence_num_times(all_data.iloc[:, 1:7])
print(result)
# 统计红球3连号出现次数
result = cal_3sequence_num_times(all_data.iloc[:, 1:7])
print(result)
#统计2个球组合出现的频次
result = cal_2combination_times(all_data.iloc[:, 1:7])
print(result)
#统计3个红球组合出现的频次
result = cal_3combination_times(all_data.iloc[:, 1:7])
print(result)
utils.py
# -*- coding: utf-8 -*-
def calculate_odd_vs_even(dataframe):
# 计算奇偶比
result_dict = {}
for index, row in dataframe.iterrows():
odd = 0 # 奇数
even = 0 # 偶数
for x in row:
if x & 1:
odd += 1
else:
even += 1
key = "%s:%s" % (str(odd), str(even))
if key in result_dict:
result_dict[key] += 1
else:
result_dict[key] = 1
return result_dict
def cal_2sequence_num_times(dataframe):
"""
计算红球2连号出现的频次
"""
result_dict = {}
for index, row in dataframe.iterrows():
a = 1
while a < 33:
if (a in row.values) and (a + 1 in row.values):
key = "%s:%s" % (str(a), str(a + 1))
if key in result_dict:
result_dict[key] += 1
else:
result_dict[key] = 1
a += 1
return sorted(result_dict.items(), key=lambda item: item[1])
def cal_3sequence_num_times(dataframe):
"""
计算红球3连号出现的频次
"""
result_dict = {}
for index, row in dataframe.iterrows():
a = 1
while a < 32:
if (a in row.values) and (a + 1 in row.values) and (a + 2 in row.values):
key = "%s:%s:%s" % (str(a), str(a + 1), str(a + 2))
if key in result_dict:
result_dict[key] += 1
else:
result_dict[key] = 1
a += 1
return sorted(result_dict.items(), key=lambda item: item[1])
def cal_3distance_times(dataframe):
"""
计算红球的3区比
"""
result_dict = {}
for index, row in dataframe.iterrows():
little = 0 # 小区
middle = 0 # 中区
big = 0 # 大区
for x in row.values:
if x <= 11:
little += 1
elif x <= 22:
middle += 1
else:
big += 1
key = "%s:%s:%s" % (str(little), str(middle), str(big))
if key in result_dict:
result_dict[key] += 1
else:
result_dict[key] = 1
return sorted(result_dict.items(), key=lambda item: item[1])
def cal_2combination_times(dataframe):
"""
计算红球2个球组合出现的频次
"""
result_dict = {}
for index, row in dataframe.iterrows():
for a in range(6):
for b in range(a + 1, 6):
key = "%s:%s" % (str(row.values[a]), str(row.values[b]))
if key in result_dict:
result_dict[key] += 1
else:
result_dict[key] = 1
return sorted(result_dict.items(), key=lambda item: item[1])
def cal_3combination_times(dataframe):
"""
计算红球3个球组合出现的频次
"""
result_dict = {}
for index, row in dataframe.iterrows():
for a in range(6):
for b in range(a + 1, 6):
for c in range(b + 1, 6):
key = "%s:%s:%s" % (str(row.values[a]), str(row.values[b]), str(row.values[c]))
if key in result_dict:
result_dict[key] += 1
else:
result_dict[key] = 1
return sorted(result_dict.items(), key=lambda item: item[1])
获取出来的历史数据如下所示:
index red1 red2 red3 red4 red5 red6 blue
20 2017079 3 7 14 23 25 27 08
173 2016079 1 3 10 12 24 28 02
327 2015079 9 14 15 20 26 32 11
479 2014079 2 7 16 22 27 28 02
633 2013079 7 13 17 19 22 26 13
787 2012079 6 7 12 24 30 33 12
940 2011079 3 14 15 16 24 29 05
1093 2010079 8 11 12 14 18 22 02
1247 2009079 2 9 16 21 30 31 13
1401 2008079 3 4 5 10 20 32 09
1554 2007079 3 4 14 20 21 25 14
1708 2006079 6 11 13 17 20 32 08
1861 2005079 3 9 20 24 25 28 05
1983 2004079 7 13 14 17 19 30 03
2072 2003079 12 15 22 23 26 31 04
画出来的 图如下所示:
1、红球历史数据次数统计图
2、蓝球历史数据次数统计图
数据以及代码下载地址:链接:http://pan.baidu.com/s/1c1OdNs0 密码:87k6
欢迎python爱好者加入:学习交流群 667279387
Pandas学习(二)——双色球开奖数据分析的更多相关文章
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- python 爬虫爬取历年双色球开奖信息
目前写的这些爬虫都是些静态网页,对于一些高级网页(像经过JS渲染过的页面),目前技术并不能解决,自己也是在慢慢学习过程中,如有错误,欢迎指正: 对面前端知识本人并不懂,过程中如果涉及到前端知识,也是百 ...
- numpy、pandas学习二
#numpy中arrary与pandas中series.DataFrame区别#arrary生成数组,无索引.列名:series有索引,且仅能创建一维数组:DataFrame有索引.列名import ...
- 用Python爬取双色球开奖信息,了解一下
1工具 2具体方法 1.使用python2.7编写爬取脚本 这里除了正常的爬取操作,还增加了独立的参数设定.如果没有参数,爬取的数据就在当前目录下:如果有参数,可以设定保存目录.保存文件名后缀 ...
- 第一个Python程序 | 机选彩票号码+爬取最新开奖号码
(机选彩票号码+爬取最新开奖号码 | 2021-04-21) 学习记录,好记不如烂笔头 这个程序作用是<机选三种彩票类型的号码> 程序内包含功能有如下: 自动获取最新的三种彩票的开奖号码 ...
- 中国福利彩票,牛B,开奖和数据传输有什么关系?
昨天,由中国教育电视台直播的福利彩票“双色球”15011期开奖,在没有事先预告的情况下突然取消.晚上11点40分左右,中国福利彩票发行管理中心唯一指定网络信息发布媒体——中彩网官方微博出乎意料地在网上 ...
- python爬虫学习之使用XPath解析开奖网站
实例需求:运用python语言爬取http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html这个开奖网站所有的信息,并且保存为txt文件. 实例环境:pyth ...
- python爬虫学习之使用BeautifulSoup库爬取开奖网站信息-模块化
实例需求:运用python语言爬取http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html这个开奖网站所有的信息,并且保存为txt文件和excel文件. 实 ...
- 【转】Pandas学习笔记(二)选择数据
Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...
随机推荐
- Medium高赞系列,如何正确的在Stack Overflow提问
在我们写程序的时候,经常会遇到各色各样的问题,在国内,小伙伴们经常去知乎.CSDN.博客园.思否.安卓巴士等地方提问并获得答案. 这些地方汇集了很多优秀的.爱分享的国内资源.小编比较自豪的一件事情就是 ...
- linux/ubuntu下最简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)
希望这篇文章能彻底帮你解决python opencv安装和使用中的常见问题. 懒人请直奔这一节, 一条命令安装 opencv 使用python-opencv常用的问题 在linux中使用python版 ...
- Windows下Apache与PHP的安装与配置
下载Apache Apache的官网(http://httpd.apache.org) 1.把解压后的Apache拷贝到要安装的目标位置.建议拷贝到C盘根目录下,因为这是其默认设置. 2.我选择的是拷 ...
- 一个简单的C#爬虫程序
这篇这篇文章主要是展示了一个C#语言如何抓取网站中的图片.实现原理就是基于http请求.C#给我们提供了HttpWebRequest和WebClient两个对象,方便发送请求获取数据,下面看如何实 1 ...
- Dev 日志 | 一次 Segmentation Fault 和 GCC Illegal Instruction 编译问题排查 NebulaGraph
摘要 笔者最近在重新整理和编译 Nebula Graph 的第三方依赖,选出两个比较有意思的问题给大家分享一下. Flex Segmentation Fault--Segmentation fault ...
- Ubuntu 16.04.4 LTS设置root用户登陆图形界面
普通用户登陆真是太憋屈,这也不能那也不能,root用户登录就可以肆无忌惮了 本方法采用nano编辑器,ubantu版本Ubuntu 16.04.4 LTS,其他版本应该也一样,下面进入正题 1.终端登 ...
- jquery 向页面追加HTML
jquery 向页面追加HTML append 函数 例子: <div id="append-test"></div> <script type=&q ...
- iOS核心动画高级技巧-1
1. 图层树 图层的树状结构 巨妖有图层,洋葱也有图层,你有吗?我们都有图层 -- 史莱克 Core Animation其实是一个令人误解的命名.你可能认为它只是用来做动画的,但实际上它是从一个叫做L ...
- python day 1 homework 1
作业一要求: 1 输入用户名密码 2 认证成功后显示欢迎信息 3 输错三次后锁定 import os #生成保存用户信息的字典 d_userinfo = {} #保存用户登录字典 input_logi ...
- 记录工作遇到的死锁问题(Lock wait timeout exceeded; try restarting transaction)
1.问题背景 刚来新公司不久,对业务还不太熟悉,所以领导先安排我维护原有系统.大概介绍下项目背景,项目分为核心业务部分在项目A中,与第三方交互的业务在项目B中,前端发起请求调用A项目接口,并在A项目中 ...