之前的一篇文章中,作者為大家用 Python 爬取了近 14 年所有的福彩 3D 信息,有了這些信息,我們要是否可以找到中獎(jiǎng)規(guī)律,增加中獎(jiǎng)概率呢?本期內(nèi)容,作者就將帶領(lǐng)大家一起探索這些誘人的獎(jiǎng)金背后的秘密!
今天就滿足大家的要求,對(duì) 2005-2018 年期間,14 年雙色球數(shù)據(jù)進(jìn)行分析可視化,看看能否找到一些規(guī)律可循(在我看來,彩票規(guī)律就是沒有規(guī)律)。
不過,通過此案例,你可以學(xué)習(xí)到如何使用 matplotlib 畫直方圖、氣泡圖以及更好看的氣泡圖;同時(shí)也能明白一些道理,如:為什么窮人更愛買彩票?
2005-2018年,雙色球的數(shù)據(jù)統(tǒng)計(jì)
在正式學(xué)習(xí) matplotlib 畫圖前,先為大家普及下,關(guān)于中國(guó)福利彩票的一些中獎(jiǎng)規(guī)則以及福利彩票用途去向。
視頻來源:飛碟說
看完視頻,說說很多網(wǎng)友自作聰明,彩票開獎(jiǎng)是抽出現(xiàn)次數(shù)最少的組合。這樣的想法是完全錯(cuò)誤的。
其實(shí),每期的獎(jiǎng)金總數(shù)是固定的,讓兩個(gè)人分,還是十個(gè)人分,都是一樣的!如果說每一期一等獎(jiǎng)獎(jiǎng)金都是一千萬,有作弊的意義,抽個(gè)被買的最少的組合!
但為什么每期雙色球一等獎(jiǎng)獎(jiǎng)金不是固定的呢!就是因?yàn)槠洫?jiǎng)金機(jī)制,雙色球當(dāng)期銷售額的51%作為當(dāng)期獎(jiǎng)金!它分為當(dāng)期獎(jiǎng)金(49%)和調(diào)節(jié)基金(2%)兩部分。比如說,某期雙色球銷量為3億元,那么,就有1.47億元成為當(dāng)期獎(jiǎng)金,600萬元成為調(diào)節(jié)基金。
接下來,我們通過 Python 對(duì) 2005-2018 年期間的數(shù)據(jù)進(jìn)行分析,主要是通過此案例學(xué)習(xí)如何用matplotlib 畫直方圖、氣泡圖以及更好看的氣泡圖。
一、直方圖解讀歷年中獎(jiǎng)注數(shù)
利用matplotlib畫直方圖,主要涉及到兩個(gè)函數(shù):
1.matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)
參數(shù)含義:
left:x軸的位置序列,一般采用arange函數(shù)產(chǎn)生一個(gè)序列;height:y軸的數(shù)值序列,也就是柱形圖的高度,一般就是我們需要展示的數(shù)據(jù);alpha:透明度width:為柱形圖的寬度,一般這是為0.8即可;color或facecolor:柱形圖填充的顏色;edgecolor:圖形邊緣顏色label:解釋每個(gè)圖像代表的含義linewidth or linewidths or lw:邊緣or線的寬度
2.matplotlib.pyplot.legend()
plt.legend()函數(shù)主要的作用就是給圖加上圖例,plt.legend([x,y,z])里面的參數(shù)使用的是list的的形式,默認(rèn)情況下是將label值賦給它。
詳細(xì)代碼:
importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspddefDrawHistogram(read_name):#讀取數(shù)據(jù)read_name=r"C:UsersAdministratorDesktopssq.csv"fp=pd.read_csv(read_name)first_prize=fp.first_prizesecond_prize=fp.second_prize#配置圖形參數(shù)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('Stakesbyyearandrank')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:UsersAdministratorDesktopssq.csv")
效果圖如下:
歷年一等獎(jiǎng)、二等獎(jiǎng)中獎(jiǎng)數(shù)
由上圖可看出,13、14 年是獲獎(jiǎng)注數(shù) Top 的一年,同時(shí) 13、14 年的銷售額也是最多的,分別高達(dá) 549 億、573 億元。這其實(shí)與當(dāng)年中國(guó)經(jīng)濟(jì)穩(wěn)中向好也有關(guān)系,2013 年時(shí)中國(guó)經(jīng)濟(jì)關(guān)鍵的一年。這一年,全球經(jīng)濟(jì)風(fēng)云變幻,美國(guó)經(jīng)濟(jì)增速回落,歐元區(qū)繼續(xù)萎縮,巴西、俄羅斯、印度物價(jià)連續(xù)上漲,比特幣升值近百倍……在這個(gè)全球經(jīng)濟(jì)一片哀鳴的2013 里,我國(guó)采取了多項(xiàng)措施來促進(jìn)經(jīng)濟(jì)的穩(wěn)定增長(zhǎng),在“黑天鵝”滿天飛的2013年里,我國(guó)又發(fā)生了很多割接、牽動(dòng)人心的改革事件。如上海自貿(mào)區(qū)掛牌、中國(guó)大媽炒金成為熱門詞匯,地王的記錄頻頻被刷新等。
二、氣泡圖解讀銷售額的大小,與一等獎(jiǎng)的占比率并沒有關(guān)系
氣泡圖主要用到scatter()函數(shù),具體用法如下:
scatter(x,y)在向量x和y指定的位置創(chuàng)建一個(gè)包含圓形的散點(diǎn)圖。該類型的圖形也稱為氣泡圖。
scatter(x,y,sz)指定圓大小。要繪制大小相等的圓圈,請(qǐng)將sz指定為標(biāo)量。要繪制大小不等的圓,請(qǐng)將sz指定為長(zhǎng)度等于x和y的長(zhǎng)度的向量。
scatter(x,y,sz,c)指定圓顏色。要以相同的顏色繪制所有圓圈,請(qǐng)將c指定為顏色名稱或RGB 三元數(shù)。要使用不同的顏色,請(qǐng)將c指定為向量或由 RGB 三元數(shù)組成的三列矩陣。
特別注意的是,s離散化的方法,因?yàn)樾枰ㄟ^點(diǎn)的大小來直觀感受其所表示的數(shù)值大小,利用當(dāng)前點(diǎn)的數(shù)值減去集合中的最小值后+0.1再*1000。
詳細(xì)代碼:
importpandasaspdimportnumpyasnpimportseabornassnsimportmatplotlib.pyplotaspltdefDrawBubble(read_name):#讀取數(shù)據(jù)fp=pd.read_csv(read_name)x=fp.salesy=fp.ratez=fp.rate#配置參數(shù)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('salesofyear',fontsize=15)ax.set_ylabel('rateofsomething',fontsize=15)plt.show()if__name__=='__main__':DrawBubble(r"C:UsersAdministratorDesktopssq.csv")
效果圖如下:
歷年銷售額與一等獎(jiǎng)的中獎(jiǎng)?wù)急嚷手g關(guān)系
由上圖可看出,隨著雙色球銷售額的變化,而一等獎(jiǎng)?wù)急嚷驶緵]變化,總是在0.06-0.75之間徘徊。
三、用Python畫一張好看的氣泡圖
前面我們已經(jīng)講了如何畫直方圖、氣泡圖,接下來我們將直方圖與氣泡圖,通過極坐標(biāo)系將兩者結(jié)合在一起展示出來,效果圖如下:
詳細(xì)代碼:
importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib.font_manager#讀取數(shù)據(jù)read_name=r"C:UsersAdministratorDesktopssq.csv"fp=pd.read_csv(read_name)first_prize=fp.first_prizesecond_prize=fp.second_prizerate=fp.rate#一等獎(jiǎng)中獎(jiǎng)注數(shù)S1=first_prizex1=[(3/2)*np.pi+np.pi/(len(S1)+1)*(i+1)foriinrange(2*(len(S1)+1))ifi
最后,通過軟件處理,添加一些文字性的描述,即可獲得一張好看的可視化氣泡圖。覺得好看,大家也可以動(dòng)手操作一遍!
關(guān)于用Python畫一張好看的氣泡圖,就到此結(jié)束!
四、題外話:為什么窮人更愛買彩票?
在我看來,主要是對(duì)概率的認(rèn)知偏差,他們只有一種理念,就是多買少買,多少要買;早中晚中,早晚要中。但富人由于接受了更好的教育和訓(xùn)練,更容易通過邏輯思考來避開這些概率認(rèn)知錯(cuò)誤。對(duì)概率的估算越客觀,對(duì)這種負(fù)回報(bào)率的彩票投資就越少。同時(shí),因?yàn)楦F人擁有的一夜暴富的機(jī)會(huì)實(shí)在是不多,碰上了就會(huì)更珍惜。
福利彩票其本質(zhì)是一種轉(zhuǎn)移支付,目的是促進(jìn)社會(huì)平等。理想狀況下,應(yīng)該讓富人買彩票來補(bǔ)貼窮人。但由于窮人對(duì)一夜暴富的渴望以及對(duì)概率認(rèn)知的偏差,反倒成了窮人買彩票來補(bǔ)貼富人。這真是本末倒置。
最終形成,讓一部分先富起來,另一部分人讓這部分人變得越來越富!
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6715瀏覽量
88316 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4237瀏覽量
61969 -
python
+關(guān)注
關(guān)注
53文章
4753瀏覽量
84081
原文標(biāo)題:5700億,16227注,一探15年福彩奧秘?。ǜ酵暾鸓ython代碼)
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論