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) #设置了,每次程序运行的结果都一致