龙空技术网

Python数据分析笔记#7.2.7 排列和随机采样

Yuan的学习笔记 182

前言:

现在咱们对“python随机排序”大约比较看重,看官们都需要了解一些“python随机排序”的相关知识。那么小编同时在网上网罗了一些对于“python随机排序””的相关文章,希望我们能喜欢,我们一起来学习一下吧!

「目录」

数据清洗和准备

Data Cleaning and Prepration

7.1 => 处理缺失数据7.2 => 数据转换

--------> 移除重复数据

--------> 利⽤函数或映射进行数据转换

--------> 替换值

--------> 重命名轴索引

--------> 离散化和面元划分

--------> 检测和过滤异常值

--------> 排列和随机采样

7.3 => 字符串操作

排列和随机采样

今天这篇笔记呢更新原书排列和随机采样的部分,涉及到了以下几个函数:

numpy.random.permutation()DataFrame.take()DataFrame.sample()

利用numpy.random.permutation函数可以轻松实现对Series或DataFrame的行rows进行排列。

通过调用permutation并传入axis轴的长度,会产生一组表示新顺序的整数数组:

In [1]: import pandas as pdIn [2]: import numpy as npIn [3]: df = pd.DataFrame(np.arange(5*4).reshape((5,4)))In [4]: sampler = np.random.permutation(5)In [5]: samplerOut[5]: array([3, 4, 2, 1, 0])

然后可以在take函数中使用该数组。

In [6]: dfOut[6]:    0   1   2   30   0   1   2   31   4   5   6   72   8   9  10  113  12  13  14  154  16  17  18  19In [7]: df.take(sampler)Out[7]:    0   1   2   33  12  13  14  154  16  17  18  192   8   9  10  111   4   5   6   70   0   1   2   3

原书没有多讲几句关于take函数的作用,稍微补充一下哈。

take函数会沿轴返回给定位置的元素,注意是给定位置哦。

In [17]: data = pd.DataFrame(np.arange(6*4).reshape((6, 4)), index=['One', 'Two', 'Three', 'Four', 'Five', 'Six'], columns=['A', 'B', 'C', 'D'])In [18]: dataOut[18]:        A   B   C   DOne     0   1   2   3Two     4   5   6   7Three   8   9  10  11Four   12  13  14  15Five   16  17  18  19Six    20  21  22  23#选取第0,2,4行In [19]: data.take([0, 2, 4])Out[19]:        A   B   C   DOne     0   1   2   3Three   8   9  10  11Five   16  17  18  19#选取第0,3列In [21]: data.take([0,3], axis=1)Out[21]:        A   DOne     0   3Two     4   7Three   8  11Four   12  15Five   16  19Six    20  23

在DataFrame上使用sample方法可以选取随机子集:

In [8]: df.sample(n=3)Out[8]:    0   1   2   33  12  13  14  150   0   1   2   31   4   5   6   7

记得概率课上的摸球实验吗,现在假如有5个球,编号分别为5,7,-1,6,4,现在传入n=10表示摸10次,replace=True代表可以重复选择(摸完后放回):

In [9]: choices = pd.Series([5, 7, -1, 6, 4])In [10]: draws = choices.sample(n=10, replace=True)In [11]: drawsOut[11]:0    52   -13    64    42   -10    53    61    70    51    7dtype: int64

这么解释很形象吧。

这篇结束了,BYE-BYE,下篇见吧。

标签: #python随机排序