zoukankan      html  css  js  c++  java
  • pandas随机排列与随机抽样

    随机排列

    利用 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
  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/aitree/p/14309480.html
Copyright © 2011-2022 走看看