Pandas 隨機(jī)抽樣

2022-07-15 10:32 更新

隨機(jī)抽樣,是統(tǒng)計(jì)學(xué)中常用的一種方法,它可以幫助我們從大量的數(shù)據(jù)中快速地構(gòu)建出一組數(shù)據(jù)分析模型。在 Pandas 中,如果想要對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)抽樣,需要使用 sample() 函數(shù)。

sample() 函數(shù)的語(yǔ)法格式如下:

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

參數(shù)說(shuō)明如下表所示:

參數(shù)名稱 參數(shù)說(shuō)明
n 表示要抽取的行數(shù)。
frac 表示抽取的比例,比如 frac=0.5,代表抽取總體數(shù)據(jù)的50%。
replace 布爾值參數(shù),表示是否以有放回抽樣的方式進(jìn)行選擇,默認(rèn)為 False,取出數(shù)據(jù)后不再放回。
weights 可選參數(shù),代表每個(gè)樣本的權(quán)重值,參數(shù)值是字符串或者數(shù)組。
random_state 可選參數(shù),控制隨機(jī)狀態(tài),默認(rèn)為 None,表示隨機(jī)數(shù)據(jù)不會(huì)重復(fù);若為 1 表示會(huì)取得重復(fù)數(shù)據(jù)。
axis 表示在哪個(gè)方向上抽取數(shù)據(jù)(axis=1 表示列/axis=0 表示行)。

該函數(shù)返回與數(shù)據(jù)集類型相同的新對(duì)象,相當(dāng)于 numpy.random.choice()。實(shí)例如下:

import pandas as pd  
dict = {'name':["Jack", "Tom", "Helen", "John"],'age': [28, 39, 34, 36],'score':[98,92,91,89]} 
info = pd.DataFrame(dict)
#默認(rèn)隨機(jī)選擇兩行
print(info.sample(n=2))
#隨機(jī)選擇兩列
print(info.sample(n=2,axis=1))

輸出結(jié)果:

   name  age  score
3  John   36     89
0  Jack   28     98

   score   name
0     98   Jack
1     92    Tom
2     91  Helen
3     89   John

再來(lái)看一組示例:

import pandas as pd
info = pd.DataFrame({'data1': [2, 6, 8, 0], 'data2': [2, 5, 0, 8], 'data3': [12, 2, 1, 8]}, index=['John', 'Parker', 'Smith', 'William'])
print(info)
#隨機(jī)抽取3個(gè)數(shù)據(jù)
print(info['data1'].sample(n=3))
#總體的50%
print(info.sample(frac=0.5, replace=True))
#data3序列為權(quán)重值,并且允許重復(fù)數(shù)據(jù)出現(xiàn)
print(info.sample(n=2, weights='data3', random_state=1))

輸出結(jié)果:

隨機(jī)選擇3行數(shù)據(jù):
William    0
Smith      8
Parker     6
Name: data1, dtype: int64

         data1  data2  data3
John         2      2     12
William      0      8      8

         data1  data2  data3
John         2      2     12
William      0      8      8


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)