Pandas教程-Pandas DataFrame.sample()
Pandas的sample()方法用于从DataFrame中随机选择行和列。如果我们想要从大量数据集构建模型,我们必须随机选择数据的较小样本,可以通过sample函数完成。
语法
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
参数
- n: 这是一个可选参数,包含整数值,定义生成的随机行数。
- frac: 这也是一个可选参数,包含浮点值,返回浮点值 * 数据框值的长度。不能与参数n一起使用。
- replace: 它包含布尔值。如果为true,则返回一个带有替换的样本。replace的默认值为false。
- weights: 这也是一个可选参数,包含str或ndarray-like。默认值为“None”,导致等概率权重。 如果传递了Series;它将与目标对象在索引上对齐。在权重中找不到的索引值将被忽略,并且在权重中找不到的样本对象中的索引值将被赋予零权重。 如果通过axis = 0传递了DataFrame;它将接受列的名称。 如果权重是Series;则权重必须与被采样的轴的长度相同。 如果权重不等于1;它将被归一化为1的总和。 权重列中的缺失值被视为零。 权重列中不允许有无限大的值。
- random_state: 这也是一个可选参数,包含整数或numpy.random.RandomState。如果值为int,则为随机数生成器提供种子,或numpy RandomState对象。
- axis: 这也是一个可选参数,包含整数或字符串值。0或'row'和1或'column'。
返回
它返回与调用者相同类型的新对象,其中包含从调用者对象中随机抽取的n个项。
示例1
import pandas as pd
info = pd.DataFrame({'data1': [2, 4, 8, 0],
'data2': [2, 0, 0, 0],
'data3': [10, 2, 1, 8]},
index=['John', 'Parker', 'Smith', 'William'])
info
info['data1'].sample(n=3, random_state=1)
info.sample(frac=0.5, replace=True, random_state=1)
info.sample(n=2, weights='data3', random_state=1)
输出
data1 data2 data3
John 2 2 10
William 0 0 8
示例2
在这个例子中,我们从csv文件中提取DataFrame,并使用sample从DataFrame中提取随机行。
名为aa的csv文件包含以下数据集:
让我们编写一个代码,从上述数据集中提取随机行:
# importing pandas package
import pandas as pd
# define data frame from csv file
data = pd.read_csv("aa.csv")
# randomly select one row
row1 = data.sample(n = 1)
# display row
row1
# randomly select another row
row2 = data.sample(n = 2)
# display row
row2
输出
Name Hire Date Salary Leaves Remaining
2 Parker Chapman 02/21/14 45000.0 10
5 Michael Palin 06/28/13 66000.0 8