Data
Stay hungry,Stay foolish!

导航

 

随机重排序

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
posted on 2018-12-04 15:55  进击中的青年  阅读(230)  评论(0编辑  收藏  举报