隨機排列
利用 numpy.random.permutation() 函數,可以返回一個序列的隨機排列。將此隨機排列作為 take() 函數的參數,通過應用 take() 函數就可實現按此隨機排列來調整 Series 對象或 DataFrame 對象各行的順序。
其示例代碼 example1.py 如下:
注意:take()里面的索引只能用隱式索引,axis =0 表示行隨機,axis =1 表示列隨機
例如:df.take([1,0,2],axis=1) 打亂列,列的排序變為:1,0,2
import numpy as np import pandas as pd #創建DataFrame df = pd.DataFrame(np.arange(12).reshape(4,3)) print(df) 0 1 2 0 0 1 2 1 3 4 5 2 6 7 8 3 9 10 11 #打亂df的行順序和列順序 df.take(np.random.permutation(3),axis=1).take(np.random.permutation(1000),axis=0) #創建隨機排列:生成0-3的隨機整數一維數組 order = np.random.permutation(4) #通過隨機排列調整DataFrame各行順序 newDf = df.take(order) print(newDf) 0 1 2 2 6 7 8 3 9 10 11 0 0 1 2 1 3 4 5
隨機抽樣
隨機抽樣是指隨機從數據中按照一定的行數或者比例抽取數據。隨機抽樣的函數如下:
numpy.random.randint(start,end,size)
函數中的參數說明如下:
- start:隨機數的開始值;
- end:隨機數的終止值;
- size:抽樣個數。
通過 numpy.random.randint() 函數產生隨機抽樣的數據,通過應用 take() 函數就可實現隨機抽取 Series 對象或 DataFrame 對象中的數據。其示例代碼 example2.py 如下
import numpy as np import pandas as pd #創建DataFrame df = pd.DataFrame(np.arange(12).reshape(4,3)) print(df) 0 1 2 0 0 1 2 1 3 4 5 2 6 7 8 3 9 10 11 #隨機抽樣 order = np.random.randint(0,len(df),size=3) #通過隨機抽樣抽取DataFrame中的行 newDf = df.take(order) print(newDf) 0 1 2 0 0 1 2 1 3 4 5 1 3 4 5