20230419
最好用dataframe抽样?更全面?
也可以先random.shuffle之后再直接取数据
20220422
seed = 1
random.seed(seed)
numpy
np.random.seed(seed)
随机抽样设置随机种子 第二种显示不成功
20220324
https://blog.csdn.net/DSTJWJW/article/details/90667570
前面说random.sample方法比choice方法快的多
不重复随机抽样
20211223
# 读取数据集
test_data_all = pd.read_csv(PATH+'data_format1/test_format1.csv',chunksize=200000)
for i,j in enumerate(test_data_all):
if i == 0:
test_data = j
train_data_all = pd.read_csv(PATH+'data_format1/train_format1.csv',chunksize=1000000)
for i,j in enumerate(train_data_all):
if i == 0:
train_data = j
抽样读取数据
def read_csv(file_name, num_rows):
return pd.read_csv(file_name, nrows=num_rows)
居然可以直接抽样读取
20211010
无论是什么平台,用户的活跃度分布都是一个长尾分布,越活跃的用户对应的人数越少,但是其所占的行为越多。这种情况下,如果不考虑用户活跃度去筛选正负样本,难免活跃用户所占的权重就会增大,此时有效的解决办法是针对每个用户提取相同的正负样本。
采样要注意保持和原来的分布一样?
pandas.DataFrame.sample 随机选取若干行
1 数据切片选取
1.1 pandas.DataFrame.sample 随机选取若干行
1.1.1 功能说明
有时候我们只需要数据集中的一部分,并不需要全部的数据。这个时候我们就要对数据集进行随机的抽样。pandas中自带有抽样的方法。
功能相似:numpy.random.choice
Generates a random sample from a given 1-D numpy array.
1.1.2 使用说明
1. 函数名及功能
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)[source]
2. 输入参数说明
参数名称 | 参数说明 | 举例说明 |
n | 要抽取的行数 | df.sample(n=3,random_state=1) |
frac | 抽取行的比例 | df.sample(frac=0.8, replace=True, random_state=1) |
replace | 是否为有放回抽样, | True:取行数据后,可以重复放回后再取
|
weights | 字符索引或概率数组 axis=0:为行字符索引或概率数组 | |
random_state | int: 随机数发生器种子 | random_state=None,取得数据不重复
|
axis | 选择抽取数据的行还是列 | 也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行。 |
3. 返回值说明
返回选择的N行元素的DataFrame对象。