摘要:Python画直方图,气泡图。


这是涛哥给你推荐的第4篇文章

去年,我曾写过一篇文章我用Python爬取了14年所有的福彩3D信息,彩民们,只能帮你们到这了,得到很多人的反响,很多粉丝留言,快点出一版分析教程,找找其中的规律。说不定哪天头等奖就是你,从此迎娶白富美,走上人生巅峰!

今天,恋习Python就满足大家的要求,对其2005-2018年期间,14年的双色球数据进行分析可视化,看看能否找到一些规律可循(在我看来,彩票规律就是没有规律)。不过,通过此案例,你可以学习到关于matplotlib如何画直方图、气泡图以及更好看的气泡图,同时也能明白一些道理,如为什么穷人更爱买彩票。

2005-2018年,双色球的数据统计

在学习matplotlib画图前,恋习Python为大家普及下,关于中国福利彩票的一些中奖规则以及福利彩票用途去向。

视频来源:飞碟说

看完视频,说说很多网友自作聪明,彩票开奖是抽出现次数最少的组合。这样的想法是完全错误的。

其实,每期的奖金总数是固定的,让两个人分,还是十个人分,都是一样的!如果说每一期一等奖奖金都是一千万,有作弊的意义,抽个被买的最少的组合!

但为什么每期双色球一等奖奖金不是固定的呢!就是因为其奖金机制,双色球当期销售额的51%作为当期奖金!它分为当期奖金(49%)和调节基金(2%)两部分。比如说,某期双色球销量为3亿元,那么,就有1.47亿元成为当期奖金,600万元成为调节基金。

接下来,我们通过Python对2005-2018年期间的数据进行分析下,主要是通过此案例学习如何用matplotlib画直方图、气泡图以及更好看的气泡图。

一、直方图解读历年中奖注数

利用matplotlib画直方图,主要涉及到两个函数:

1.matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)

参数含义:

left:x轴的位置序列,一般采用arange函数产生一个序列; 
height:y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据; 
alpha:透明度 
width:为柱形图的宽度,一般这是为0.8即可; 
color或facecolor:柱形图填充的颜色; 
edgecolor:图形边缘颜色 
label:解释每个图像代表的含义 
linewidth or linewidths or lw:边缘or线的宽度

2.matplotlib.pyplot.legend()

plt.legend()函数主要的作用就是给图加上图例,plt.legend([x,y,z])里面的参数使用的是list的的形式,默认情况下是将label值赋给它。

详细代码:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pddef DrawHistogram(read_name):#读取数据read_name = r"C:\Users\Administrator\Desktop\ssq.csv"fp = pd.read_csv(read_name)first_prize = fp.first_prizesecond_prize = fp.second_prize#配置图形参数ind = np.arange(len(first_prize))width = 0.5fig, ax = plt.subplots()rects1 = ax.bar(ind - width/2, first_prize, width, color='SkyBlue', label='First')rects2 = ax.bar(ind + width/2, second_prize, width,color='IndianRed', label='Second')ax.set_ylabel('Stakes')ax.set_title('Stakes by year and rank')plt.xticks(ind,(18,17,16,15,14,13,12,11,10,9,8,7,6,5))ax.legend() plt.show()if __name__=='__main__':DrawHistogram(r"C:\Users\Administrator\Desktop\ssq.csv")

效果图如下:

历年一等奖、二等奖中奖数

由上图可看出,13、14年是获奖注数Top的一年,同时13、14年的销售额也是最多的,分别高达549亿、573亿元。这其实与当年中国经济稳中向好也有关系,2013年时中国经济关键的一年。这一年,全球经济风云变幻,美国经济增速回落,欧元区继续萎缩,巴西、俄罗斯、印度物价连续上涨,比特币升值近百倍……在这个全球经济一片哀鸣的2013 里,我国采取了多项措施来促进经济的稳定增长,在“黑天鹅”满天飞的2013年里,我国又发生了很多割接、牵动人心的改革事件。如上海自贸区挂牌、中国大妈炒金成为热门词汇,地王的记录频频被刷新等。

二、气泡图解读销售额的大小,与一等奖的占比率并没有关系

气泡图主要用到scatter()函数,具体用法如下:

  • scatter(x,y) 在向量 x 和 y 指定的位置创建一个包含圆形的散点图。该类型的图形也称为气泡图。

  • scatter(x,y,sz) 指定圆大小。要绘制大小相等的圆圈,请将 sz 指定为标量。要绘制大小不等的圆,请将 sz 指定为长度等于 x 和 y 的长度的向量。

  • scatter(x,y,sz,c) 指定圆颜色。要以相同的颜色绘制所有圆圈,请将 c 指定为颜色名称或 RGB 三元数。要使用不同的颜色,请将 c 指定为向量或由 RGB 三元数组成的三列矩阵。

特别注意的是,s离散化的方法,因为需要通过点的大小来直观感受其所表示的数值大小,利用当前点的数值减去集合中的最小值后+0.1再*1000。

详细代码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as pltdef DrawBubble(read_name):#读取数据fp = pd.read_csv(read_name)x = fp.salesy = fp.ratez = fp.rate#配置参数sns.set(style = "whitegrid")cm = plt.cm.get_cmap('RdYlBu')fig,ax = plt.subplots(figsize = (12,10))bubble = ax.scatter(x, y , s = (z - np.min(z) + 0.1) * 3000, c = z, cmap = cm, linewidth = 0.5, alpha = 0.5)ax.grid()fig.colorbar(bubble) ax.set_xlabel('sales of year', fontsize = 15)ax.set_ylabel('rate of something', fontsize = 15)plt.show()if __name__=='__main__':DrawBubble(r"C:\Users\Administrator\Desktop\ssq.csv")

效果图如下:

历年销售额与一等奖的中奖占比率之间关系

由上图可看出,随着双色球销售额的变化,而一等奖占比率基本没变化,总是在0.06-0.75之间徘徊。

、用Python画一张好看的气泡图


前面我们已经讲了如何画直方图、气泡图,接下来我们将直方图与气泡图,通过极坐标系将两者结合在一起展示出来,效果图如下:

详细代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager#读取数据
read_name = r"C:\Users\Administrator\Desktop\ssq.csv"
fp = pd.read_csv(read_name)
first_prize = fp.first_prize
second_prize = fp.second_prize
rate = fp.rate#一等奖中奖注数
S1=first_prize
x1=[(3/2)*np.pi+np.pi/(len(S1)+1)*(i+1) for i in range(2*(len(S1)+1)) if i<len(S1)]
y1=[180 for i in range(2*(len(S1)+1)) if i<len(S1) ]#为了画出效果比例好看,将二等奖注数缩小5倍来表示
S2=second_prize/5
x2=[(3/2)*np.pi+np.pi/(len(S1)+1)*(i+1) for i in range(2*(len(S1)+1)) if i<len(S1)]
y2=[130 for i in range(2*(len(S1)+1)) if i<len(S1) ]H1=[60/2,69/2,70/2,62/2,67/2,70/2,75/2,67/2,70/2,70/2,64/2,74/2,70/2,72/2]
W1=[0.05 for i in range(2*(len(S1)+1)) if i<len(S1)]
B=[30 for i in range(2*(len(S1)+1)) if i<len(S1)]fig=plt.figure(figsize=(13.44*2,7.5*2),facecolor='w')#建立一个坐标系,projection='polar'表示极坐标
ax = fig.add_subplot(111,projection='polar',facecolor='w')
ax.scatter(x=x1,y=y1,s=S1,color='Gold',alpha=0.5,linewidths=0)
ax.scatter(x=x2,y=y2,s=S2,color='Orange',alpha=0.5,linewidths=0)
ax.bar(x=x1, height=H1, width=W1,bottom=B,color='Salmon')plt.ylim(0,220)
#去掉坐标轴的为外面一层粗的线
ax.spines['polar'].set_visible(False)
plt.grid(color='gray', linestyle=':', linewidth=1,which='major',axis='x',alpha=0.1)
ax.set_yticks([])
ax.tick_params(axis='x',labelsize=0)font=matplotlib.font_manager.FontProperties(fname=r'E:\project\wordcloud\simfang.ttf')for i in range(len(x1)):ax.text(x=x1[i],y=y1[i],s=S1[i],color='gray',ha='center', va= 'center',fontsize=12,fontproperties=font)
for i in range(len(x1)):ax.text(x=x1[i],y=y2[i],s=S2[i],color='gray',ha='center', va= 'center',fontsize=12,fontproperties=font)
for i in range(len(x1)):ax.text(x=x1[i],y=H1[i]+40,s="{}‰".format(H1[i]*2) ,color='gray',ha='center', va= 'center',fontsize=12,fontproperties=font)plt.show()
fig.savefig('D:\\test.png',dpi=400,bbox_inches='tight',transparent=False)

最后,通过软件处理,添加一些文字性的描述,即可获得一张好看的可视化气泡图。觉得好看,大家也可以动手操作一遍!

关于用Python画一张好看的气泡图,就到此结束!

四、题外话:为什么穷人更爱买彩票?

来源:飞碟说

在我看来,主要是对概率的认知偏差,他们只有一种理念,就是多买少买,多少要买;早中晚中,早晚要中。但富人由于接受了更好的教育和训练,更容易通过逻辑思考来避开这些概率认知错误。对概率的估算越客观,对这种负回报率的彩票投资就越少。同时,因为穷人拥有的一夜暴富的机会实在是不多,碰上了就会更珍惜。

福利彩票其本质是一种转移支付,目的是促进社会平等。理想状况下,应该让富人买彩票来补贴穷人。但由于穷人对一夜暴富的渴望以及对概率认知的偏差,反倒成了穷人买彩票来补贴富人。这真是本末倒置。

最终形成,让一部分先富起来,另一部分人让这部分人变得越来越富!


我们上周2抽奖活动,第5次赠书,无套路包邮送14本书,赶紧来!中奖如下:SunJ3t,山几, 狼人

我们周日Python专栏活动,12人抽8个奖品(2个星球码,4本书,2个68元阅读码)中奖如下:二哥,Jason,老忽,一二三四五, 丹枫无迹,Vi,风信子,youn。

恭喜上面11 位,谢谢各位支持,后期给大家带来更多福利。

加入我们和160+小伙伴一起学Python

往期阅读

珍藏已久的学习脑图

涛哥读者交流群

5700亿,16227注!15年来,双色球一等奖中奖占比率几乎不变(附Python代码,中奖人)...相关推荐

  1. 便携式三星mysql_三星集团某站点MySQL盲注一枚(附python验证脚本)

    漏洞概要 缺陷编号:WooYun-2014-082219 漏洞标题:三星集团某站点MySQL盲注一枚(附python验证脚本) 相关厂商:三星集团 漏洞作者:lijiejie 提交时间:2014-11 ...

  2. Python项目分析:预测双色球福利彩票中奖号码

    前言 大家早好.午好.晚好吖 ❤ ~ 双色球是中国福利彩票的一种玩法. 红球一共6组,每组从1-33中抽取一个,六个互相不重复. 然后蓝球是从1-16中抽取一个数字,这整个组成的双色球 python从 ...

  3. 随机生成双色球号码判断中奖模拟开奖python代码

    # @Author: Gerry Zhao # @Date: 2019-01-23 18:56:47 # Last Modified by: Gerry Zhao # Last Modified ti ...

  4. Python预测双色球福利彩票中奖号码(随便玩玩,不要当真)

    前言 铁子们应该都是听说过双色球的吧 双色球是中国福利彩票的一种玩法 红球一共6组,每组从1-33中抽取一个,六个互相不重复.然后蓝球是从1-16中抽取一个数字,这整个组成的双色球 今天,我们就用Py ...

  5. 2021年1-11月中国工业各行业利润总额排行榜:4大行业利润总额破5千亿元,开采辅助活动亏损企业占比最大(附热榜TOP41详单)

    榜单解读: 2021年1-11月,中国工业企业408731个创造了79750.1亿元的利润总额,其中亏损企业占比18.5%(有75728个),亏损企业亏损额为9602.1亿元. 依据榜单可知,2021 ...

  6. 用Python预测双色球福利彩票中奖号码(请不要当真)

    前言 双色球是中国福利彩票的一种玩法. 红球一共6组,每组从1-33中抽取一个,六个互相不重复.然后蓝球是从1-16中抽取一个数字,这整个组成的双色球 python从零基础入门到实战 今天,我们就用P ...

  7. 双色球彩票中奖小程序

    双色球彩票中奖小程序 玩法规则:"双色球"每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成.红色球号码从 1-33 中选择,蓝色球号码从 1-16 中选择.球的数字匹配数量 ...

  8. 15行Python代码,帮你理解令牌桶算法

    在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送. 什么是令牌 从名字上看令牌 ...

  9. y空间兑换代码_进行图像增广的15+种功能总结和Python代码实现

    python代码可以自己扩充图像数据集. ​ 无论我们喜欢Keras还是Pytorch,我们都可以使用丰富的资料库来有效地增广我们的图像. 但是如果遇到特殊情况: 我们的数据集结构复杂(例如3个输入图 ...

最新文章

  1. linux运维、架构之路-MySQL多实例
  2. php 最大数字,PHP 计算至少是其他数字两倍的最大数的实现代码
  3. 零基础Java学习之包(Package)
  4. java md5 32位加密算法_java 32位md5加密类
  5. 期末考试前的预习,科目:化工设备与反应器(2)
  6. BZOJ1015 JSOI2008 星球大战starwars 并查集
  7. Entity Framework Core 软删除与查询过滤器
  8. 不变性真的意味着线程安全吗?
  9. 硕士可以跟别的导师做实验吗_如何成为一名导师可以成为双刃剑
  10. 图灵2008年12月出版的计算机图书
  11. python景点情感分析代码_python snownlp情感分析简易demo(分享)
  12. 机器学习recall含义_机器学习的业务含义
  13. 算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV
  14. wps打开pdf乱码_wps pdf转换成word乱码
  15. CST软件基本操作 —2
  16. 我想用人工智能留住父亲
  17. 计算机rankeq函数,Excel中的rank函数与rank.eq函数有什么区别
  18. idea删除文件时出现选项 “Safe delete ( with usage search)“ 和 “Search in comments and strings“
  19. EXCEL取小数点数值
  20. ZETA等物联网技术在新冠疫情防控中有哪些方面的应用?

热门文章

  1. MySQLIntegrityConstraintViolationException: Duplicate entry ‘10xxxx-50xxxx‘ for key ‘xxx‘
  2. 搭建私有MAVEN仓库
  3. jzoj5984. 【北大2019冬令营模拟2019.1.1】仙人掌 (分块)
  4. MySQL调优系列:explain分析SQL的执行计划
  5. 8月5日邮件服务器故障报告(2008年)
  6. #python+open3d 3D模型的读取与应用
  7. ec2 linux root,亚马逊EC2服务器centos7 如何开启root账号登陆
  8. python数字1 3怎么表示_Python3生成手写体数字方法
  9. EAUML日拱一卒-微信小程序实战:位置闹铃 (9)-利用条件渲染实现列表控件
  10. IMAS辅导书籍推荐