數(shù)據(jù)規(guī)約之分層抽樣
????分層抽樣其實也是隨機抽取,但是分層抽樣會根據(jù)一些特征進行分組,然后從這些分組中單獨再隨機抽樣。在很多場景下,隨機抽樣是有問題的。比如說身高和體重在性別上的差異,在對它們進行抽樣時必須考慮性別因素。我們可以粗略地說:女性的身高符合165為中心的正態(tài)分布,體重符合50公斤為中心的正態(tài)分布,而男性身高則可能是175為中心的正態(tài)分布,體重是60公斤中心的正態(tài)分布。我們考慮到性別這個特征對數(shù)據(jù)分布有顯著影響,所以對數(shù)據(jù)抽樣就需要考慮將性別特征納入到分層抽樣的范圍中了。
知識點:????
?在Pandas的DataFrame中,有一個方法
cut
:https://pandas.pydata.org/docs/reference/api/pandas.cut.html#pandas.cut?就是專門負責這種處理的。Pandas cut()函數(shù)用于將數(shù)組中的元素分離成不同的bins。cut函數(shù)主要用于對標量數(shù)據(jù)進行統(tǒng)計分析。
語法:
cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=”raise”,)
參數(shù):
x:要分選的輸入數(shù)組。必須是一維的。
bins:定義了用于分割的bin邊緣。
right :?(bool, default True ) 指示bins是否包括最右邊的邊。如果right == True(默認),那么bins [1, 2, 3, 4] 表示(1,2], (2,3], (3,4)。
labels :?(array or bool, optional) 為返回的bin指定標簽。必須與返回的分選區(qū)長度相同。如果是假的,只返回分選區(qū)的整數(shù)指標。
retbins :?(bool, default False) 是否返回bins。當bins是以標量形式提供時很有用。
用pandas的cut方法,實例如下:
????bins給出連續(xù)的數(shù)組區(qū)間,落在區(qū)間內(nèi)的值被歸為一類,例如:bins=[1, 50, 100]
意味:1-50是一個區(qū)間,50-100是一個區(qū)間,79會落在(50, 100]的區(qū)間上,9會落到(1, 50]的區(qū)間上。labels會針對每一個區(qū)間起一個別名,例如:labels=['Lows', 'Highs']
意味:(1, 50]的區(qū)間將被稱為Lows,(50, 100]的區(qū)間將被稱為Highs。

運行結(jié)果:
