import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#matplotlib是最著名的Python圖表繪制擴(kuò)展庫(kù),它支持輸出多種格式的圖形圖像,并且可以使用多種GUI界面庫(kù)交互式地顯示圖表。使用%matplotlib命令可以將matplotlib的圖表直接嵌入到Notebook之中,或者使用指定的界面庫(kù)顯示圖表,它有一個(gè)參數(shù)指定matplotlib圖表的顯示方式。inline表示將圖表嵌入到Notebook中。
%config InlineBackend.figure_format= 'retina'
#內(nèi)嵌圖表的輸出格式缺省為PNG,可以通過(guò)%config命令修改這個(gè)配置。%config命令可以配置IPython中的各個(gè)可配置對(duì)象,其中InlineBackend對(duì)象為matplotlib輸出內(nèi)嵌圖表時(shí)所使用的對(duì)象,我們配置它的figure_format="svg",這樣將內(nèi)嵌圖表的輸出格式修改為SVG。
%magic
#查詢magic command魔法命令的方法
#IPython提供了許多魔法命令,使得在IPython環(huán)境中的操作更加得心應(yīng)手。魔法命令都以%或者%%開(kāi)頭,以%開(kāi)頭的成為行命令,%%開(kāi)頭的稱為單元命令。行命令只對(duì)命令所在的行有效,而單元命令則必須出現(xiàn)在單元的第一行,對(duì)整個(gè)單元的代碼進(jìn)行處理。
#參考 http://hyry.dip.jp/tech/book/page/scipynew/ipython-200-notebook-magic.html
stakes_data = pd.read_csv('stakes.csv')
#此處導(dǎo)入正確,沒(méi)有遇到小籠包(李佳)提到的csv文件格式無(wú)法識(shí)別的問(wèn)題,若遇到,可參考http://www.itdecent.cn/p/296ae7538d1f
stakes_data.head(5) #看看前五個(gè)數(shù)據(jù)
len(stakes_data) #看看數(shù)據(jù)集的大小
stakes_data.shape #或者利用T1里提到的辦法查詢數(shù)據(jù)的維度
time = stakes_data['time'] #如果是多維度,可以提取某列數(shù)據(jù),(行怎么辦?)
slice1 = stakes_data[0:3] #可以對(duì)行進(jìn)行切片
#參考此pandas教程 http://www.cnblogs.com/chaosimple/p/4153083.html
#pandas里面的數(shù)據(jù)框DataFrame數(shù)據(jù)類型,其實(shí)和R語(yǔ)言里面的差不多。訪問(wèn)某一列可以通過(guò)b['state']和b.state這兩種方法進(jìn)行,但是輸出的pandas里面的Series這種數(shù)據(jù)類型,因此b['state'].index()返回Index([0,1], dtype=object)。
slice1

slice1
row = stakes_data.loc[1:3,:] #實(shí)現(xiàn)查詢某行,或按行查詢
# 關(guān)于pandas庫(kù)里面的行列操作 參考 http://blog.csdn.net/xiaodongxiexie/article/details/53108959
row

row
mean = time.mean() #求樣本均值
mean
sd = time.std() #求樣本標(biāo)準(zhǔn)差
sd
max = time.max() #求樣本極大值以便確定范圍上限
max
min = time.min() #求樣本極小值以便確定范圍下限
min
def normfun(x,mu,sigma):
pdf = np.exp(-((x-mu)**2)/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
return pdf
#定義normfun的概率分布密度函數(shù)如上,即定義器為以x為,mu為期望,sigma為標(biāo)準(zhǔn)差的正態(tài)分布。
#利用numpy中的arange函數(shù)構(gòu)造最小145,最大155,步長(zhǎng)為0.1的等差數(shù)組
x = np.arange(145,155,0.1)
y = normfun(x,mean,sd)
plt.plot(x,y) #看一眼正態(tài)圖

正態(tài)圖
plt.hist(time, bins = 6,rwidth=0.9,normed=True) #畫(huà)time數(shù)據(jù)的直方圖,nomred=True則顯示其占比(概率密度)。 參考http://www.cnblogs.com/python-life/articles/6084059.html
plt.rcParams["font.family"] = "SimHei" #修改字體
plt.title(u'賽馬時(shí)間正態(tài)分布圖') #直方圖命名后拿出來(lái)看看
plt.xlabel(u'時(shí)間')
plt.ylabel(u'占比率')

直方圖
plt.hist(time, bins = 6,rwidth=0.9,normed=True) #畫(huà)time數(shù)據(jù)的直方圖
plt.rcParams["font.family"] = "SimHei" #修改字體
plt.plot(x,y) #把x,y構(gòu)造的正態(tài)曲線放進(jìn)來(lái)
plt.title(u'賽馬時(shí)間正態(tài)分布圖') #直方圖命名后拿出來(lái)看看
plt.xlabel(u'時(shí)間')
plt.ylabel(u'占比率')

合并
這次作業(yè)里各個(gè)包的很多基礎(chǔ)知識(shí)存在問(wèn)題,查了很多鏈接也放在文內(nèi)了。構(gòu)造pdf的時(shí)候用到arange構(gòu)造了一個(gè)等差數(shù)列這一點(diǎn)不太理解,回頭再思考一下。
數(shù)據(jù)上,樣本數(shù)據(jù)還是蠻符合正態(tài)分布的,正態(tài)分布是經(jīng)典統(tǒng)計(jì)里面的基石,回歸分析都是圍繞著它來(lái)的,基于pdf的很多證明,比如F分布,Chi分布和正態(tài)分布的關(guān)系都是原來(lái)推倒過(guò)的,現(xiàn)在忘了不少,有空再撿起來(lái)吧,目前還是黑箱狀態(tài)比較好,囫圇吞棗,用得上再說(shuō),不必糾結(jié)那么細(xì)。