pandas随机抽取数据和打乱数据

一,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 函数名及功能
2.

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)[source]
  
n是要抽取的行数。(例如n=20000时,抽取其中的2W行)

frac是抽取的比列。(有一些时候,我们并对具体抽取的行数不关系,我们想抽取其中的百分比,这个时候就可以选择使用frac,例如frac=0.8,就是抽取其中80%)

replace:是否为有放回抽样,取replace=True时为有放回抽样。

weights这个是每个样本的权重,具体可以看官方文档说明。

random_state这个在之前的文章已经介绍过了。

axis是选择抽取数据的行还是列。axis=0的时是抽取行,axis=1时是抽取列(也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行)

参数说明见链接:https://blog.csdn.net/zhengxu25689/article/details/87347700

  1. 返回值说明
    返回选择的N行元素的DataFrame对象。

二,在机器学习中,拿到一堆训练数据,一般会我们需要先将数据打乱,使数据随机排序,然后在进行切分,需要将数据切分成训练集、交叉验证集和测试集,在监督学习中还要切分出属性集和标签集。
(注:df代表一个DataFrame)

1.打乱数据

df=df.sample(frac=1.0)#打乱所有数据
其中参数frac是要返回的比例,比如df中有10行数据,我只想返回其中的30%,那么frac=0.3。

df=df.reset_index(drop=True)#打乱后的数据index也是乱的,用reset_index重新加一列index,drop=True表示丢弃原有index一列

2.切割数据

train=df.iloc[:a]#取数据的前a行为训练集

x_train=train.iloc[:,:b]#取训练集的前b列为属性集

y_train=train.iloc[:,b:]#取训练集的最后一列标签集

原文链接:https://blog.csdn.net/qq_24367797/article/details/86676160

三,其实,sklearn(机器学习的库)中也有shuffle的方法。

from sklearn.utils import shuffle
df = shuffle(df)

另外,numpy库中也有进行shuffle的方法(不建议)

df.iloc[np.random.permutation(len(df))]

原文链接:https://blog.csdn.net/qq_22238533/article/details/70917102


版权声明:本文为weixin_43668299原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。