前言

数据排序、分类变量转换是数据处理与分析中常常遇到对场景,且需要有准确的判断以及准确的处理方式,否则会影响数据质量,产生脏数据,进而影响数据呈现效果或预测效果等,更别提机器学习与深度学习准确性等系列问题。小编接下来会针对python方法在该场景的应用做具体介绍。

排列和随机采样

利用numpy.random.permutation函数可以轻松实现对Series和DataFrame的列的排列工作(permuting,随机重排序)。通过需要排列的轴的长度调用permutation,可产生一个表示新顺序的整数数组:

1.使用permutation()进行排列

我们先使用DataFrame创建一个5行4列的数据集,然后使用numpy.random.permutation函数进行重新排序,具体如下:

2.使用take函数对数据集进行重排序

通过下面对例子可以清楚理解take函数对作用。sampler是np.random.permutation()生成对随机数组,然后将这个对象传入到take函数中,作用于对象数据集,具体如下所示:

In [8]: df
Out[8]: 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  19In [9]: df.take(sampler)
Out[9]: 0   1   2   3
0   0   1   2   3
1   4   5   6   7
4  16  17  18  19
3  12  13  14  15
2   8   9  10  11

如果不想用替换的方式选取随机子集,则可以使用permutation:从permutation返回的数组中切下前k个元素,其中k为期望的子集大小。

In [10]: df.take(np.random.permutation(len(df))[:3])
Out[10]: 0   1   2   3
3  12  13  14  15
2   8   9  10  11
0   0   1   2   3

3.获取随机整数:np.random.randint

要通过替换的方式产生样本,最快的方式通过np.random.randint得到一组随机整数:

In [11]: ba=np.array([5,7,-1,6,4])
In [12]: ba
Out[12]: array([ 5,  7, -1,  6,  4])
In [13]: sampler=np.random.randint(0,len(ba),size=10)
In [14]: sampler
Out[14]: array([1, 3, 1, 3, 1, 2, 3, 4, 2, 0])
In [15]: draws=ba.take(sampler)
In [16]: draws
Out[16]: array([ 7,  6,  7,  6,  7, -1,  6,  4, -1,  5])

计算指标/哑变量

另一种常用于统计建模或机器学习的转换方式是:将分类变量转换为“哑变量矩阵”或“指标矩阵”。如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值权威1和0).pandas有一个get_dummies函数可以实现该功能。

In [17]: df=DataFrame({'key':['b','b','a','c','a','b'],'data1':range(6)})
In [18]: df
Out[18]: key  data1
0   b      0
1   b      1
2   a      2
3   c      3
4   a      4
5   b      5
In [19]: df['key']
Out[19]:
0    b
1    b
2    a
3    c
4    a
5    b
Name: key, dtype: object

使用get_dummies()将分类变量转换为“哑变量矩阵”

In [20]: pd.get_dummies(df['key'])
Out[20]: a  b  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

总结

数据处理与分析的方法丰富且场景复杂,针对不同的应用情况,选择适合的方法是最恰当且能解决实际问题的。希望大家从中有所收益,实践中多体会和沉淀,感谢大家支持!记得关注哦!

分类变量 哑变量矩阵 指标矩阵_不懂数据集重排序?分类变量转换苦难?4种python方法,不再难!...相关推荐

  1. 二重积分转换成极坐标_极坐标变换计算二重积分中积分限转换的一种简单方法...

    孙茜 [摘要]在用极坐标变换法计算二重积分时,对于如何转换积分限是难点,本文提出了一种容易理解和掌握的方法. [关键词]极坐标:二重积分:转换 二重积分的计算通常是在直角坐标系中进行,对于被积函数含有 ...

  2. 数学猜想验证步骤_高中数学解题思路与技巧汇总,19种解题方法,实用!

    解数学题,除了掌握有关的数学知识之外,最好掌握一定的解题技巧甚至知道点解题思想.要知道高考试题的解答过程中蕴含着重要的数学思想方法,如果能有意识地在解题过程中加以运用,势必会取得很好的效用.下面邦德华 ...

  3. python 字符串拼接_面试官让用 3 种 python 方法实现字符串拼接 ?对不起我有8种……...

    点击上方 蓝字关注我们 点击上方"印象python",选择"星标"公众号重磅干货,第一时间送达!之前发过很多关于 Python 学习的文章,收到大家不少的好评, ...

  4. arcgis导入excel数据_导入Excel数据到ArcGIS属性表的两种实用方法

    导入Excel数据到ArcGIS有两种方法,一种是用ArcMap的加载数据(黄色+号那个):另一种是用ArcCatalog直接转为shp文件,两种方法的原理是一样的. 第一种方法 1.Excel数据: ...

  5. 面具卡米怎么删模块_面具magisk ROOT如何更新到最新版本两种实用方法彻底解决...

    面具magisk作者会不定期的更新维护magisk,对magisk的升级维护,以便支持更多的安卓设备.目前已知最新版magisk已支持安卓11系统,对于已经刷入面具root的小伙伴,怎么最快速的升级最 ...

  6. aspen plus冷凝器_软件 |第五讲:图解Aspen V8.8,让流程模拟不再难

    Aspen Plus V8.8 以方便的EDR经济核算.更稳定的运行特性等优势在化工设计中得到广泛应用.奈何,软件的更新速度超过了教程的更新速度,很多初学者看着aspen v8.8模拟软件的陌生界面, ...

  7. ML:基于葡萄牙银行机构营销活动数据集(年龄/职业等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格/随机搜索+推理)客户是否购买该银行的产品二分类案

    ML之pipeline:基于葡萄牙银行机构营销活动数据集(年龄/职业/婚姻/违约等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格搜索/随机搜索+模型 ...

  8. R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表

    R语言使用两个分类变量创建双向表(Two Way Table.两个分类变量的频率表)实战: 矩阵的双向表.dataframe的双向表.条形图和马赛克图来可视化频率表 目录

  9. matlab 向量变标量,MATLAB变量——标量,向量,矩阵

    MATLAB变量--标量,向量,矩阵 MATLAB以NM×的形式保存了大量的矩阵,其中M是行数,N是列数.一个1×1矩阵是一个标量:1×N矩阵是一个行向量,,M×1矩阵是一个列向量.矩阵的全部元素可以 ...

最新文章

  1. Nutch URL过滤配置规则
  2. oracle mysql sql serve where in 语句的不同
  3. 对科目***货币 ***未定义汇率差额科目
  4. Objective-C开发编码规范
  5. 【Go语言】集合与文件操作
  6. RHEL 8 - 安装 webconsole
  7. access两位小数不进位_人教版小学数学三年级下册笔算乘法(不进位)公开课优质课课件教案视频...
  8. 06 is和==的区别 encode()编码 decode()解码
  9. 身为管理者 会讲的六十八个故事
  10. 高级软件测试人员考核指标,软件测试人员绩效考核详细-20210406011350.docx-原创力文档...
  11. SQL解密ctext字段内容函数
  12. mysql免安装_MySQL免安装版配置教程
  13. 借一篇论文了解重要性采样
  14. BLE_BQB Test_Intermodulation Performance, uncoded data at 1 Ms/s_RF-PHY/RCV/BV-05-C
  15. python|解决Cannot open D:\python\Anaconda\envs\tensorflow\Scripts\pip-script.py(重装pip)
  16. 拼多多一晚被薅千万,倒赚276亿:一次蓄意营销的阴谋?
  17. SQL处理库存与销售,先进先出原则
  18. [讨论]一个真正的IT人来谈中国与印度的软件
  19. Spring学习手札(三)理解IoC 拯救不开心
  20. Linux Shell Shock漏洞利用和实战

热门文章

  1. 超出网络bios会话限制_什么是UEFI,它和BIOS有什么不同?
  2. 潍坊市计算机专业招聘,潍坊市工业学校计算机专业介绍
  3. oracle如果为空替换为0,oracle 如何把0转为null
  4. formdata传参java用对象怎么接受_Java基础4
  5. Python 列表的应用场景有哪些?你使用对了吗?
  6. python中的set函数、列表的操作
  7. python 利用matplotlib中imshow()函数绘图
  8. python中super的用法实例解析
  9. 10 不自动断开 设置wlan_WiFi和WLAN,还傻傻分不清?
  10. 计算机弹奏两只老虎爱跳舞,原神风物之诗琴乐谱大全