暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Pandas重排序和随机采样

漫谈大数据与数据分析 2020-04-20
562

numpy.random.permutation函数可以获取一个指定大小的随机排列序列

将这个随机排列序列作为数值索引传入Series或DataFrame,则可以实现随机重排序的操作。

首先,产生一个表示新顺序的整数数组:

In [100]: df = pd.DataFrame(np.arange(5 * 4).reshape((5, 4)))
In [101]: sampler = np.random.permutation(5)


In [102]: sampler
Out[102]: array([3, 1, 4, 2, 0])

然后基于iloc的索引操作或take函数中使用该数组了:

In [103]: df
Out[103]:
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


In [104]: df.take(sampler)
Out[104]:
0 1 2 3
3 12 13 14 15
1 4 5 6 7
4 16 17 18 19
2 8 9 10 11
0 0 1 2 3


df.iloc[sampler]
0 1 2 3
3 12 13 14 15
1 4 5 6 7
4 16 17 18 19
2 8 9 10 11
0 0 1 2 3

sample方法在默认情况下可以不重复的选取指定数值的列:

In [105]: df.sample(n=3)
Out[105]:
0 1 2 3
3 12 13 14 15
4 16 17 18 19
2 8 9 10 11

传递replace=True到sample,则允许重复选择:

In [106]: choices = pd.Series([5, 7, -1, 6, 4])
In [107]: draws = choices.sample(n=10, replace=True)
In [108]: draws
Out[108]:
4 4
1 7
4 4
2 -1
0 5
3 6
1 7
4 4
0 5
4 4
dtype: int64



文章转载自漫谈大数据与数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论