pandas隨機抽取資料和打亂資料

2021-09-25 23:44:15 字數 1589 閱讀 8023

一,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行)

返回值說明

返回選擇的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:]#取訓練集的最後一列標籤集

三,其實,sklearn(機器學習的庫)中也有shuffle的方法。

from sklearn.utils import shuffle

df = shuffle(df)

另外,numpy庫中也有進行shuffle的方法(不建議)

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

Pandas入門 2 資料抽取

dataframe的資料抽取 iloc與loc的區別 iloc主要是基於整數字置 從軸的0到長度 1 如果是0 10,則抽取0,9 loc主要是基於標籤的,如果是0 10,則抽取0,10,但兩個都可以與布林陣列一起使用。indices 1 2,3 5,8 sample reviews reviews...

python中隨機打亂資料集

假設我們現在有資料 data,label 方法一 打亂資料順序 import random index i for i in range len data random.shuffle index data data index label label index 打亂後的結果 方法二 data s...

sql server 隨機抽取N條資料

select top 5 from 表名 order by newid newid 產生的新的值是不固定的 在select表裡的資料的newid 函式時候 隨即選出n條記錄 回答人的補充 2011 04 21 22 50 newid 函式會隨即產生乙個不重複的數值 你可以把它理解成乙個簡單的數字 例...