# -*- coding: utf-8 -*-
"""
Created on Tue May 14 18:58:50 2019
把图片保存成了文件,供gui窗口读取,取消了Label_img的显示,调整按钮位置
添加大小比例,新的分析数据
大小比例数据写好了,下一步画图
改变工具栏背景色为白色,大小比例取百分之一的数据
奇偶比例也写好了,并且先切百分之一的数据,然后再分类统计,这样提升程序速度
增加了数据预处理,pl3qh,提前切好排列3百分之一的数据,省得临时切费时间
把横向轴X上写上中奖号,省得不知道中奖号多少,程序写错了也不知道
把pl3重新排序,前后顺序互换一下
@author: Administrator
"""
import pandas as pd
from tqdm import tqdm
from pandas.core.frame import DataFrame
import numpy as np #科学计算数据分析库,另起名为np
import matplotlib.pyplot as plt #擅长画二维图曲线,股票均线,另起名为plt
from sklearn.preprocessing import MinMaxScaler #机器学习库,数据预处理,把数据定为0,1之间
from keras.models import Sequential #深度学习库,建立模型,多网络层线性堆叠顺序模型
from keras.layers import LSTM, Dense, Activation #准备用三种神经网络层,长短期记忆网络,全连接网络层,激活层
#from keras.utils import plot_model#模型可视化做图
#from IPython.display import SVG
#from keras.utils.vis_utils import model_to_dot
import xlrd#读excel文件from tkinter import *
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2Tk #NavigationToolbar2TkAgg
import matplotlib
matplotlib.use('Agg')
from matplotlib.pyplot import plot,savefig
from PIL import Image, ImageTk
from tkinter import ttkplt.rcParams['font.family'] = 'SimHei' ## 设置字体def read_to_excel():#自定义函数,读取excel表里排列三中奖号# 设置路径path = 'pl3.xls'# 打开execlworkbook = xlrd.open_workbook(path)# 根据sheet索引或者名称获取sheet内容Data_sheet = workbook.sheets()[0]  # 通过索引获取#rowNum = Data_sheet.nrows  # sheet行数#colNum = Data_sheet.ncols  # sheet列数# 获取整行和整列的值(列表)#rows = Data_sheet.row_values(0)  # 获取第一行内容pl3 = Data_sheet.col_values(1)  # 获取第二列内容pl3=pl3[1:]pl3.reverse()# print (rows)#print (cols)#打印开奖号baiwei=[x[0] for x in pl3]shiwei=[x[1] for x in pl3]gewei=[x[2] for x in pl3]return pl3,baiwei,shiwei,gewei#创建窗口
root =  tk.Tk()
root.wm_title("体育彩票排列3统计预测系统")
root.geometry("800x600+300+100")
#img_open = Image.open('zft.jpg')
#img_png = ImageTk.PhotoImage(img_open)
#label_img = tk.Label(root, image = img_png)
#label_img.pack()f=plt.figure(figsize=(19.20,10.80))# 将绘制的图形显示到tkinter:创建属于root的canvas画布,并将图f置于画布上pl3,baiwei,shiwei,gewei=read_to_excel()#读excel表里的开奖号并做成开奖号,百位,十位,个位,四个数组
#数据切片显示百分之1的数据,因为五千多期号做到一个屏幕上根本看不清
print(pl3[0:10])
qiep=int(np.array(pl3).shape[0] *0.99)#数据切片,设定要切多少
zb=['0','1','2','3','4','5','6','7','8','9','10']#校正Y轴,就是竖轴
pl3qh=pl3[qiep:]
pl3q=DataFrame(np.array(pl3)[qiep:])
def zft(event):plt.clf()create_matplotlibzft()def k(event):plt.clf()create_matplotlibk()def dx(event):plt.clf()create_matplotlibdx()def jo(event):plt.clf()create_matplotlibjo()
def dxbl(event):plt.clf()create_matplotlibdxbl()
def jobl(event):plt.clf()create_matplotlibjobl()def create_matplotlibzft():#统计每个数字在个十百位出现次数baiweidata={}for i in range(10):i=str(i)print('排列3百位数字 %d 出现次数 %s ' % (int(i),baiwei.count(i)))baiweidata [i]= baiwei.count(i)i=int(i)print(baiweidata)shiweidata={}for i in range(10):i=str(i)print('排列3十位数字 %d 出现次数 %s ' % (int(i),shiwei.count(i)))shiweidata[i]=shiwei.count(i)i=int(i)print(shiweidata)geweidata={}for i in range(10):i=str(i)print('排列3个位数字 %d 出现次数 %s ' % (int(i),gewei.count(i)))geweidata[i]=gewei.count(i)i=int(i)print(geweidata)#转换数据类型,转换成做图函数能认识的参数bwcs=baiweidata.values()swcs=shiweidata.values()gwcs=geweidata.values()#画直方图plt.bar(np.arange(10),bwcs,width=0.3)plt.bar(np.arange(10)+0.3,swcs,width=0.3)plt.bar(np.arange(10)+0.6,gwcs,width=0.3)#每个数字出现次数写直方柱上边for x,y in zip(np.arange(10),bwcs):plt.text(x,y+0.5,'%d'%y, ha='center', va= 'bottom')for x,y in zip(np.arange(10),swcs):plt.text(x+0.3,y+0.05,'%d'%y, ha='center', va= 'bottom')for x,y in zip(np.arange(10),gwcs):plt.text(x+0.6,y+0.05,'%d'%y, ha='center', va= 'bottom')#显示X横轴0到9数字new_ticks = np.linspace(0, 9, 10)plt.xticks(new_ticks)#直方图标题等文字信息plt.xlabel("0到9,从左到右按百十个位排")plt.ylabel("出现次数")plt.title("排列三0到9在百十个位出现次数统计表")plt.legend(['百位','十位','个位'])savefig('0到9出现次数.jpg')#canvas.draw()def create_matplotlibk():plt.clf()#百十个位K线图baiweik=np.array(baiwei)[qiep:]shiweik=np.array(shiwei)[qiep:]geweik=np.array(gewei)[qiep:]#要百分之一的数据print(baiweik,shiweik,geweik)#开始做图plt.xticks(np.linspace(0, len(baiweik)-1, len(baiweik)))plt.grid()  # 生成网格plt.plot(zb,'w')plt.plot(baiweik,'r')plt.plot(shiweik,'g')plt.plot(geweik,'b')plt.xlabel("最近 %d 期"%len(baiweik))plt.ylabel("0到9数字")plt.title("排列三K线图")plt.legend([' ','百位','十位','个位'])savefig('K线图.jpg')#canvas.draw()
def create_matplotlibdx():plt.clf()#画大小走势图baiweidx=[]baiwei1=list(map(int, baiwei))for i in range(len(baiwei)):if baiwei1[i]<5:baiweidx.append(6)else:baiweidx.append(8)shiweidx=[]shiwei1=list(map(int, shiwei))for i in range(len(shiwei)):if shiwei1[i]<5:shiweidx.append(3)else:shiweidx.append(5)geweidx=[]gewei1=list(map(int, gewei))for i in range(len(gewei)):if gewei1[i]<5:geweidx.append(0)else:geweidx.append(2)baiweidx=np.array(baiweidx)[qiep:]shiweidx=np.array(shiweidx)[qiep:]geweidx=np.array(geweidx)[qiep:]print(len(baiweidx),baiweidx)plt.xticks(np.linspace(0, len(baiweidx)-1, len(baiweidx)),pl3qh)plt.yticks(np.linspace(0, 9, 10) , ['小','个位','大','小','十位','大','小','百位','大'])plt.grid()  # 生成网格plt.plot(zb,'w')plt.plot(baiweidx,'r')plt.plot(shiweidx,'g')plt.plot(geweidx,'b')plt.xlabel("最近 %d 期"%len(baiweidx))plt.ylabel("从上到下百十个位")plt.title("排列三大小走势图")plt.legend([' ','百位','十位','个位'])savefig('大小走势图.jpg')#canvas.draw()
def create_matplotlibjo():plt.clf()#画奇偶走势图baiweijo=[]baiwei1=list(map(int, baiwei))for i in range(len(baiwei)):if baiwei1[i]==1 or baiwei1[i]==3 or baiwei1[i]==5 or baiwei1[i]==7 or baiwei1[i]==9:baiweijo.append(6)else:baiweijo.append(8)shiweijo=[]shiwei1=list(map(int, shiwei))for i in range(len(shiwei)):if shiwei1[i]==1 or shiwei1[i]==3 or shiwei1[i]==5 or shiwei1[i]==7 or shiwei1[i]==9:shiweijo.append(3)else:shiweijo.append(5)geweijo=[]gewei1=list(map(int, gewei))for i in range(len(gewei)):if gewei1[i]==1 or gewei1[i]==3 or gewei1[i]==5 or gewei1[i]==7 or gewei1[i]==9:geweijo.append(0)else:geweijo.append(2)baiweijo=np.array(baiweijo)[qiep:]shiweijo=np.array(shiweijo)[qiep:]geweijo=np.array(geweijo)[qiep:]print(len(geweijo),geweijo)plt.xticks(np.linspace(0, len(geweijo)-1, len(geweijo)),pl3qh)plt.yticks(np.linspace(0, 9, 10) , ['奇','个位','偶','奇','十位','偶','奇','百位','偶'])plt.grid()  # 生成网格plt.plot(zb,'w')plt.plot(baiweijo,'r')plt.plot(shiweijo,'g')plt.plot(geweijo,'b')plt.xlabel("最近 %d 期"%len(baiweijo))plt.ylabel("从上到下百十个位")plt.title("排列三奇偶走势图")plt.legend([' ','百位','十位','个位'])print(np.array(pl3)[qiep:],np.array(baiwei)[qiep:])savefig('奇偶走势图.jpg')#canvas.draw()
def create_matplotlibdxbl():#大小比例plt.clf()dxbl=DataFrame(columns=['0'])dxbly=DataFrame(columns=['大小比例'])for x in range(len(pl3q)):yyy=0xxx=""for j in range(3):ppp=pl3q.loc[x].str.get(j)if int(ppp)<5:xxx=xxx+'1'else:xxx=xxx+'2'            #print((pl31[0:x+1])[j:j+1])if xxx.count('2')==0:yyy=1elif xxx.count('2')==1:yyy=2elif xxx.count('2')==2:yyy=3elif xxx.count('2')==3:yyy=4else:print('统计大小比例出错')dxbl.loc[x]=xxxdxbly.loc[x]=yyydxbl['大小比例']=dxblyplt.xticks(np.linspace(0, len(dxbly),len(dxbly)+1),pl3qh)plt.yticks(np.linspace(0, 4, 5) , [' ','小小小','2小1大','2大一小','大大大'])zb1=['0','1','2','3','4']plt.grid()  # 生成网格plt.plot(zb1,'w')plt.plot(dxbly,'r')plt.xlabel("最近 %d 期"%len(dxbly))plt.ylabel("从上到下,从大到小")plt.title("大小比例走势图")#plt.legend([' ','百位','十位','个位'])savefig('大小比例走势图.jpg')#print((dxbl[x])[j])
def create_matplotlibjobl():#奇偶比例plt.clf()jobl=DataFrame(columns=['0'])jobly=DataFrame(columns=['奇偶比例'])for x in range(len(pl3q)):yyy=0xxx=""for j in range(3):ppp=pl3q.loc[x].str.get(j)if int(ppp)==1 or int(ppp)==3 or int(ppp)==5 or int(ppp)==7 or int(ppp)==9:xxx=xxx+'1'else:xxx=xxx+'2'if xxx.count('2')==0:yyy=1elif xxx.count('2')==1:yyy=2elif xxx.count('2')==2:yyy=3elif xxx.count('2')==3:yyy=4else:print('统计奇偶比例出错')jobl.loc[x]=xxxjobly.loc[x]=yyyjobl['奇偶比例']=joblyplt.xticks(np.linspace(0, len(jobly),len(jobly)+1),pl3qh)plt.yticks(np.linspace(0, 4, 5) , [' ','奇奇奇','2奇1偶','2偶一奇','偶偶偶'])zb1=['0','1','2','3','4']plt.grid()  # 生成网格plt.plot(zb1,'w')plt.plot(jobly,'r')plt.xlabel("最近 %d 期"%len(jobly))plt.ylabel("从上到下,从偶到奇")plt.title("奇偶比例走势图")#plt.legend([' ','百位','十位','个位'])savefig('奇偶比例走势图.jpg')print(pl3q)#制作工具栏
toolframe = tk.Frame(root, height=20, bg='white')
frame = tk.Frame(toolframe, bg='white')btzft=ttk.Button(frame, text='0到9出现次数')
btzft.bind("<Button-1>",zft)
btzft.grid(row=0, column=0, padx=1, pady=1, sticky=tk.E)
btk=ttk.Button(frame, text='K线图')
btk.bind("<Button-1>",k)
btk.grid(row=0, column=1, padx=1, pady=1, sticky=tk.E)
btdx=ttk.Button(frame, text='大小走势')
btdx.bind("<Button-1>",dx)
btdx.grid(row=0, column=2, padx=1, pady=1, sticky=tk.E)
btjo=ttk.Button(frame, text='奇偶走势')
btjo.bind("<Button-1>",jo)
btjo.grid(row=0, column=3, padx=1, pady=1, sticky=tk.E)
btdxbl=ttk.Button(frame, text='大小比例')
btdxbl.bind("<Button-1>",dxbl)
btdxbl.grid(row=0, column=4, padx=1, pady=1, sticky=tk.E)
btdxbl=ttk.Button(frame, text='奇偶比例')
btdxbl.bind("<Button-1>",jobl)
btdxbl.grid(row=0, column=5, padx=1, pady=1, sticky=tk.E)
frame.pack(side=tk.LEFT)
toolframe.pack(fill=tk.X)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH,expand=tk.YES) # 上对齐,填充方式,随窗口大小调整而调整#创建顶级菜单
menubar = Menu(root)# for item in ['文件','编辑','视图','关于']:
#     # add_command 添加菜单项
#     menubar.add_command(label = item)
#下拉菜单
fmenu = Menu(menubar)
#for item in ['新建','打开','保存','另存为','退出']:
fmenu.add_command(label = '新建')
fmenu.add_command(label ='打开' )
fmenu.add_command(label = '保存')
fmenu.add_command(label = '另存为')
fmenu.add_command(label = '退出',command=root.destroy)emenu = Menu(menubar)
for item in ['复制','粘贴','剪切']:emenu.add_command(label = item)vmenu = Menu(menubar)
#for item in ['默认视图','新式视图']:
vmenu.add_command(label = '0到9出现次数直方图',command=zft)#将figure显示在tkinter窗体上面
vmenu.add_command(label = 'K线图',command=k)
vmenu.add_command(label = '大小走势',command=dx)
vmenu.add_command(label = '奇偶走势',command=jo)amenu = Menu(menubar)
for item in ['版权信息','其他说明']:amenu.add_command(label = item)menubar.add_cascade(label = "文件",menu = fmenu)
menubar.add_cascade(label = "编辑",menu = emenu)
menubar.add_cascade(label = "排列3",menu = vmenu)
menubar.add_cascade(label = "关于",menu = amenu)
#显示菜单
root['menu']= menubar# root.config(menu=menubar)#将root根窗口的顶级菜单设置为menuroot.mainloop()
'''
#这是程序真正开始执行处,如果程序被直接执行了而不是被当作库调用,则运行main()函数
if __name__ == '__main__':main()
'''

python排列3彩票统计相关推荐

  1. 用python写一个彩票过滤器_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...

    python入门教程 python入门教程NO.6 用python做个简单的彩票号码统计分析工具 本文涉及的python基础语法是:字典.集合及for循环 字典的定义 字典也是一种可变的容器,它可以存 ...

  2. 【python】一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。

    一个目录里面多个python程序文件,统计一下里面有多少行代码.即分别列出:代码.空行.注释的行数. 题目 代码 结果 题目 一个目录里面多个python程序文件,统计一下里面有多少行代码.即分别列出 ...

  3. python制作统计图_刻意练习11:Python描述统计、简单统计图形

    学习计划 MyPlan11 主题:Python描述统计.简单统计图形 时间:8.5-8.11周内完成 参考资料:新书<谁说菜鸟不会数据分析python篇> 各位星友们,在这个星球里每个人都 ...

  4. python计算特征的统计值并文本输出

    python计算特征的统计值并文本输出 # 输出统计分位数 df.describe(percentiles=[0.05, 0.25, 0.5, 0.75, 0.95]) featname:A => ...

  5. python 排列组合之itertools

    python 排列组合之itertools python 2.6 引入了itertools模块,使得排列组合的实现非常简单:

  6. python 代码行数统计工具_使用Python设计一个代码统计工具

    问题 设计一个程序,用于统计一个项目中的代码行数,包括文件个数,代码行数,注释行数,空行行数.尽量设计灵活一点可以通过输入不同参数来统计不同语言的项目,例如: # type用于指定文件类型 pytho ...

  7. Python进行Excel数据统计

    Python进行Excel数据统计 前言 示例数据 前期思路 实操 遇到的问题和解决方案 最终结果 实现代码 总结 前言 貌似大家中使用到Excel数据统计和处理比较多.前两天GF发来指示,帮忙统计2 ...

  8. python对excel数据统计_用 python实现简单EXCEL数据统计

    原博文 2016-11-24 23:06 − 任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlr ...

  9. python 频数统计_日常答疑:Python实现分类频数统计

    原标题:日常答疑:Python实现分类频数统计 点击上图,查看教学大纲 问题 群友提问:求每组数据中每个元素重复的个数,用什么函数? 严小样儿:安排! 咋一看,我觉得他问的我很懵B~于是,和他要了份数 ...

最新文章

  1. 扩展SpringMVC WebMvcConfigurerAdapter ||全面接管SpringMVC @EnableWebMvc
  2. ALEIDoc EDI(2)--一般流程
  3. sqlserver:(1):sqlserver安装超详细
  4. java 程序打包成jar_Java程序打包成jar包
  5. 17年第八届蓝桥杯省赛(C语言B组) 题解
  6. Ant编译SWF、SWC例子脚本
  7. StuQ Android 会员学习计划|帮你成为更优秀的 Android 工程师
  8. 在Visio里加上、下标方法
  9. Web Client Software Factory系列(1):初识与预备知识
  10. axure6.5汉化
  11. Tracup丨什么是甘特图?关于甘特图的百科全书
  12. layui框架静态表格怎么写
  13. win10,对于VNR无法使用OCR光学识别的方法,仿照大佬们所讲,图解
  14. 计算机专业监理员工作,监理员是干什么的
  15. 什么软件测试显示器响应时间准,一般人我不告诉他!显示器响应速度揭秘
  16. 计算机配置里面没有网络选项,win7网络共享中心里面的更改适配器设置里面没有无线网络连接...-win7适配器没有无线网络连接,win7网络适配器未...
  17. Wordpress红色财经股票外汇网站主题 pron-red
  18. 80c51单片机c语言程序,80C51单片机电子钟程序
  19. 特征值和奇异值的关系
  20. 官方正版授权Apowersoft 傲软抠图AI智能换背景工具软件

热门文章

  1. Kotlin快速运用第四阶段(集合相关框架)
  2. vue 项目中 自动生成 二维码
  3. PayPal信用卡付款401,商家不接受使用此付款类型
  4. 学习云计算前景如何?云计算成为获取人工智能主要途径
  5. Web实现:完整版垃圾分类网站 html+css 内含效果图
  6. java设计模式总结之六大设计原则(有图有例子)
  7. 自兴人工智能——Python第三课(字符串和字典)
  8. 【新手教程】如何在Win11上制作一个模仿MacOS的桌面?
  9. 渗透测试-Python安全工具编程基础
  10. 2007word如何转PDF