df.sample()就是抽樣函數,參數如下:
df.sample(n=None,frac=None,replace=Flase,weights=None,random_state=None,axis=None)
參數說明:
n:就是樣本量,如果不寫,就是抽一條數據
frac:抽樣比,就是樣本量占全樣本的比例,如frac=0.3 ,注意n和frac不能共存
replace:是否放回,默認是不放回,如果有放回(replace=True)可以選擇比df長度更多的元素回來
weights:樣本權重,自動歸一化,可以以某一列為權重
random_state:隨機狀態。就是為了保證程序每次運行得到的結果都一樣
axis:抽樣維度,0是行,1是列,默認為0
下面用iris數據做例子
from sklearn.datasets import load_iris import pandas as pd import numpy as np iris=load_iris() df=pd.DataFrame(iris.data,columns=iris.feature_names) df.sample #不帶括號,全樣本 df.sample() #抽一條數據 df.sample(5) #隨機抽5條 de.sample(n=5) #可以寫n=或者不寫 df.sample(frac=0.1) #抽取比例為0.1 df.sample(n=5,frac=0.1) #報錯ValueError: Please enter a value for `frac` OR `n`, not both df.sample(n=15,replace=True) #有放回抽取15條數據 df.sample(n=15,replace=True).index.is_unique #查看有放回抽取的15條數據的索引是不是有重復 len(df.sample(n=200,replace=True)),len(df) #(200, 150) # 有放回(replace=True)可以選擇比df長度更多的元素回來 df.sample(n=3,axis=1) #對列抽樣 w=np.random.rand(df.shape[0]) #w是150個從0-1之間的隨機數 df.sample(n=3,weights=w) df.sample(n=3,weights=df['sepal width (cm)']) #以某列為權重 df.sample(n=3,weights=df['sepal width (cm)'].values) #以某一列為權重,這在抽樣理論中很常見--本質上是以這一列的列值為權重 df.sample(n=3,random_state=3) #設置了,每次程序運行的結果都一致