當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Pandas DataFrame sample方法用法及代碼示例

Pandas DataFrame.sample(~) 方法隨機返回指定的行數或列數。請注意,返回的是一個新副本,即修改返回的DataFrame不會改變源DataFrame。

參數

1.n | int | optional

隨機樣本的大小。默認情況下,n=1

2. frac | float | optional

隨機樣本的相對大小。例如,frac=0.6 表示隨機樣本的大小為值總數的 60%。

警告

僅指定 nfrac - 不能同時指定兩者。

3. replace | boolean | optional

是否允許從同一行采樣。默認情況下,replace=False

4. weights | stringarray-like | optional

分配給項目的權重。權重高的項目更有可能被選擇。如果權重之和不等於 1,則對它們進行歸一化,使總和變為 1。默認情況下為 weights=None ,這意味著分配相等的權重。

5. random_state | intnumpy.random.RandomState | optional

用於生成隨機樣本的種子。這用於再現性 - 如果您想獲得一致的結果,請指定此參數。

6. axis | intstring | optional

是否返回行或列:

說明

0"index"

將返回行。

1"columns"

將返回列。

默認情況下,axis=0

返回值

一個新的DataFrame,包含隨機選擇的行或列。

例子

考慮以下 DataFrame :

df = pd.DataFrame({"A":["a","b","c","d"],"B":["e","f","g","h"],"C":["i","j","k","l"]})
df



   A  B  C
0  a  e  i
1  b  f  j
2  c  g  k
3  d  h  l

基本用法

隨機獲取 2 行:

df.sample(n=2)



   A  B  C
3  d  h  l
0  a  e  i

指定壓裂參數

要使樣本大小為總行數的一半,請設置 frac=0.5

df.sample(frac=0.5)



   A  B  C
2  c  g  k
0  a  e  i

這裏,總行數的 50% 是 2,所以這就是我們最終得到 2 行的原因。

指定替換參數

要允許選擇相同的行,請設置 replace=True 。這意味著現在可能出現以下結果:

df.sample(n=2, replace=True)



   A  B  C
0  a  e  i
0  a  e  i

指定權重參數

默認情況下,所有行被選擇的概率相同。我們可以通過設置 weights 參數來使某些行更有可能被選擇,如下所示:

df.sample(n=1, weights=[0.7 ,0.1, 0.1, 0.1])



   A  B  C
0  a  e  i

在這裏,0 行將在 70% 的時間內被選中,而其他行將分別在 10% 的時間內被選中。請注意,權重之和不必為 1;該方法會自動對權重進行歸一化,使總和變為 1。

指定random_state參數

當您需要重現結果時,請設置 random_state 參數,如下所示:

df.sample(n=2, random_state=42)



   A  B  C
1  b  f  j
3  d  h  l

現在,無論您運行此方法多少次,結果都將始終相同。你可以把數字 42 給你的朋友,他們也會在他們的機器上得到相同的結果!

指定軸參數

默認情況下,行將隨機返回:

df.sample(n=1)   # axis=0



   A  B  C
3  d  h  l

要獲取列,請像這樣設置axis=1

df.sample(n=1, axis=1)



   B
0  e
1  f
2  g
3  h

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | sample method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。