【Python】Pandas sample() 随机抽样的简单运用

262 阅读1分钟

数据随机抽样

sample函数的应用场景主要是数据预处理的过程中,有时会根据具体需要对数据进行简单随机抽样,以下是sample函数的简单应用:

导入数据

import numpy as np
import pandas as pd
df = pd.read_csv("文件路径.csv")
df.shape
# (100150806, 5) 观察到有上亿行数据
# 在抽样前,对数据设置列索引
df.columns = ["user_id","item_id","category_id","behavior_type","timestamp"]

随机抽样

rand_data = df.sample(n = 100000,random_state = 1,replace = False,axis = 0)
# sample函数的参数设置:
# n :随机抽取的行数/列数(默认为行)
# random_state :None/1,这个参数是保证下次抽样是否会获得与本次抽样相同的数据
# frac :接受一个浮点型参数,如 0.8 ,希望抽取总数据量的80%(默认为行),此参数不可与 n 同用
# replace :接受布尔型参数,True:有放回抽样 / False: 无放回抽样(默认)
# weight :用来指定抽样权重,默认值为None,代表执行等概率抽样,即每行/列被抽到的概率相同
# axis:0/1 0:抽取行数据,1:抽取列数据(默认为0)

关于sample函数的具体详解请参考:Pandas数据清洗系列:DataFrame.sample方法详解 - 知乎 (zhihu.com)

有放回抽样与无放回抽样的误差对比:有放回抽样和无放回抽样哪个误差更小?为什么? - 知乎 (zhihu.com)

保存数据

rand_data.to_csv("保存路径.csv",sep = ",",header = True,index = False,index_label=False)
# sep : 分隔符
# header:是否保存列索引 默认为True
# index:是否保存行索引 默认为True
# index_label:是否保存行索引的列标签名 默认为True