zoukankan      html  css  js  c++  java
  • Pandas排列和随机采样

    随机重排序

    import pandas as pd
    import numpy as np
    from pandas import Series
    
    df = pd.DataFrame(np.arange(5*4).reshape(5,4))
    df
    
        0	1	2	3
    0	0	1	2	3
    1	4	5	6	7
    2	8	9	10	11
    3	12	13	14	15
    4	16	17	18	19
    

    shuffle 的参数只能是 array_like,而 permutation 除了 array_like 还可以是 int 类型,如果是 int 类型,那就随机打乱 numpy.arange(int)。

    sampler = np.random.permutation(5)
    sampler
    
    array([1, 2, 0, 4, 3])
    

    shuffle 返回 None,这点尤其要注意,也就是说没有返回值,而 permutation 则返回打乱后的 array。

    list1 = [1,2,3,4,5]
    result = np.random.shuffle(list1)
    list1
    
    [2, 5, 4, 1, 3]
    
    df.take(sampler)
    
        0	1	2	3
    1	4	5	6	7
    2	8	9	10	11
    3	12	13	14	15
    0	0	1	2	3
    4	16	17	18	19
    
    # 随机采样,取前三行
    df.take(np.random.permutation(len(df))[:3])
    
        0	1	2	3
    4	16	17	18	19
    2	8	9	10	11
    3	12	13	14	15
    

    计算指标/哑变量

    将分类变量转换为哑变量矩阵或指标矩阵,如果DataFrame的某一列中含有K个不同的值,

    则可以派生出一个K列矩阵或DataFrame(其值全为1和0)

    df = pd.DataFrame({'key':['b','b','a','c','a','b'],
                        'data1':range(6)
                      })
    df
    
    	key	data1
    0	  b	  0
    1	  b	  1
    2	  a	  2
    3	  c	  3
    4	  a	  4
    5	  b	  5
    
    # 给列加上前缀,get_dummies的prefix参数可以实现该功能
    dummies = pd.get_dummies(df['key'],prefix='qianzui')
    dummies
    
     qianzui_a	qianzui_b	qianzui_c
    0	0	       1	     0
    1	0	       1	     0
    2	1	       0	     0
    3	0	       0	     1
    4	1	       0	     0
    5	0	       1	     0
    
    # Series对象是没有join方法的,必须是dataframe
    df[['data1']].join(dummies)
    
       data1	qianzui_a	qianzui_b	qianzui_c
    0	0	      0	           1	       0
    1	1	      0	           1	       0
    2	2	      1	           0	       0
    3	3	      0	           0	       1
    4	4	      1	           0	       0
    5	5	      0	           1	       0
    
  • 相关阅读:
    中国剩余定理
    exgcd(扩展欧几里得)求同余式
    hdu 4557 :非诚勿扰(vector + 二分)
    ZOJ 1094:Matrix Chain Multiplication(栈)
    ZOJ1004: Anagrams by Stack(dfs + 栈模拟)
    洛谷 P1038 :神经网络(BFS && 拓扑排序)
    51Nod 1459:迷宫游戏(Dijkstra)
    51 Nod 1640: 天气晴朗的魔法(Krustra 并查集)
    打印文件中的内容
    print directory(打印目录)
  • 原文地址:https://www.cnblogs.com/lishi-jie/p/10064615.html
Copyright © 2011-2022 走看看