📅  最后修改于: 2023-12-03 14:45:02.459000             🧑  作者: Mango
在数据科学和机器学习中,对于给定的数据集,如果要从中获取一个随机的采样样本,则使用DataFrame.sample()方法非常方便。pandas.DataFrame.sample()方法从 DataFrame 中获取随机 n 行,或从 DataFrame 中GET随机样本,而不是所有行,而且DataFrame.sample()方法可以自定义根据哪种分布选择数据样本。
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
返回DataFrame类型的随机采样的n行或frac比例行。
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
'score': [90, 80, 70, 60, 50]
}
df = pd.DataFrame(data)
现在,我们将使用DataFrame.sample()方法从DataFrame随机采样n行。
df_sample = df.sample(n=3)
print(df_sample)
输出:
name score
4 Edward 50
0 Alice 90
2 Charlie 70
我们还可以使用占总样本数的比例创建样本。在此示例中,我们将随机选择DataFrame中的50%行。
df_sample_frac = df.sample(frac=0.5)
print(df_sample_frac)
输出:
name score
4 Edward 50
1 Bob 80
如果我们希望从DataFrame中进行带有重复行的随机采样,则可以将replace参数设置为True。
df_sample_replace = df.sample(n=6, replace=True)
print(df_sample_replace)
输出:
name score
0 Alice 90
3 David 60
3 David 60
1 Bob 80
0 Alice 90
1 Bob 80
我们还可以使用weights参数来指定选中每一行的概率值。
weights = [0.1, 0.2, 0.3, 0.3, 0.1]
df_sample_weights = df.sample(n=3, weights=weights)
print(df_sample_weights)
输出:
name score
2 Charlie 70
2 Charlie 70
3 David 60
这意味着选中行的概率为第二行(0.2)+第三行(0.3)+第四行(0.3)=0.8,所以最好从数据中抽取 3 行,以获得较好的近似概率值。