隨機排列 隨機重排列和隨機抽樣

2021-10-16 04:06:59 字數 1678 閱讀 1057

1、實現dataframe的隨機重排列

使用numpy.random.permutation函式可以實現對dataframe和series的隨機重排列。具體使用方法如下:

# 生成乙個5行4列的dataframe,並且重新命名列名

data = pd.dataframe(np.arange(5*4).reshape(5, 4))

data.columns = ['a', 'b', 'c', 'd']

# axis=0表示對行隨機重排列,axis=1表示對列重排列

# 這裡的5是data的行長度,這樣會對所有行進行隨機重排列

sampler_rows = np.random.permutation(5)

data.take(sampler_rows, axis=0)

#這裡傳遞的3《行長度,所以僅實現了對前三行的隨機重排列

sampler_rows = np.random.permutation(3)

data.take(sampler_rows, axis=0)

#這裡實現了列隨機重排列

sampler_columns = np.random.permutation(4)

data.take(sampler_columns, axis=1)

執行結果分別為:

隨機重排列結果

2、實現dataframe的隨機抽樣

為了實現對資料的隨機抽樣,我們可以呼叫series和dataframe的sample方法,具體使用方式如下:

sample(

n=none,#隨機抽樣的個數

frac=none,#隨機抽樣的樣本量佔總體的比值

replace=false,#是否可重複抽樣,true表示可重複抽樣,預設為false

weights=none,#可以傳遞某個序列,序列和每條資料一一對應,序列的值是資料對應的權重

random_state=none,#指定隨機數種子

axis=none,#axis=0表示按照行進行隨機抽樣,axis=1表示按照列進行隨機抽樣

)

#1、初始化dataframe

df = pd.dataframe(,

index=['falcon', 'dog', 'spider', 'fish'])

df#2、隨機無重複抽樣,樣本量為2

df.sample(n=2)

#3、隨機可重複抽樣,樣本量為5

df.sample(n=5,replace=true)

#4、隨機抽樣的樣本量是總樣本量的1.5倍

df.sample(frac=1.5,replace=true)

#5、'num_specimen_seen'列的值作為每行資料的抽樣權重

df.sample(n=5,weights='num_specimen_seen',replace=true)

各個cell的執行結果如下:

隨機取樣結果

可使用類似的方法對series進行隨機重排列和隨機取樣。

mR 隨機抽樣

1.問題由來 google曾經有一道非常經典的面試題 給你乙個長度為n的鍊錶。n很大,但你不知道n有多大。你的任務是從這n個元素中隨機取出k個元素。你只能遍歷這個鍊錶一次。你的演算法必須保證取出的元素恰好有k個,且它們是完全隨機的 出現概率均等 這道題的解法非常多,網上討論也非常熱烈。本文要討論的是...

MySQL隨機抽樣

最近由於需要大概研究了一下mysql的隨機抽取實現方法。舉個例子,要從tablename表中隨機提取一條記錄,大家一般的寫法就是 select from tablename order by rand limit 1。但是,後來我查了一下mysql的官方手冊,裡面針對rand 的提示大概意思就是,在...

R隨機抽樣

x為總體向量 n為樣本容量 replace f表示無放回抽樣 replace t表示放回抽樣 prob可以設定不等概率抽樣 sample x,n,replace f,prob null 用r模擬擲硬幣 h表示正面 t表示反面 有放回抽樣 sample c h t 10,replace t 1 h t...