百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

不懂数据集重排序?分类变量转换苦难?4种python方法,不再难

off999 2024-11-06 11:22 14 浏览 0 评论


前言

数据排序、分类变量转换是数据处理与分析中常常遇到对场景,且需要有准确的判断以及准确的处理方式,否则会影响数据质量,产生脏数据,进而影响数据呈现效果或预测效果等,更别提机器学习与深度学习准确性等系列问题。小编接下来会针对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  19

In [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

总结

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

相关推荐

python入门到脱坑经典案例—清空列表

在Python中,清空列表是一个基础但重要的操作。clear()方法是最直接的方式,但还有其他方法也可以实现相同效果。以下是详细说明:1.使用clear()方法(Python3.3+推荐)...

python中元组,列表,字典,集合删除项目方式的归纳

九三,君子终日乾乾,夕惕若,厉无咎。在使用python过程中会经常遇到这四种集合数据类型,今天就对这四种集合数据类型中删除项目的操作做个总结性的归纳。列表(List)是一种有序和可更改的集合。允许重复...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

数据结构与算法——链式存储(链表)的插入及删除,

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链...

Python自动化:openpyxl写入数据,插入删除行列等基础操作

importopenpyxlwb=openpyxl.load_workbook("example1.xlsx")sh=wb['Sheet1']写入数据#...

在Linux下软件的安装与卸载(linux里的程序的安装与卸载命令)

通过apt安装/协助软件apt是AdvancedPackagingTool,是Linux下的一款安装包管理工具可以在终端中方便的安装/卸载/更新软件包命令使用格式:安装软件:sudoapt...

Python 批量卸载关联包 pip-autoremove

pip工具在安装扩展包的时候会自动安装依赖的关联包,但是卸载时只删除单个包,无法卸载关联的包。pip-autoremove就是为了解决卸载关联包的问题。安装方法通过下面的命令安装:pipinsta...

用Python在Word文档中插入和删除文本框

在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独...

Python 从列表中删除值的多种实用方法详解

#Python从列表中删除值的多种实用方法详解在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、...

Python 中的前缀删除操作全指南(python删除前导0)

1.字符串前缀删除1.1使用内置方法Python提供了几种内置方法来处理字符串前缀的删除:#1.使用removeprefix()方法(Python3.9+)text="...

每天学点Python知识:如何删除空白

在Python中,删除空白可以分为几种不同的情况,常见的是针对字符串或列表中空白字符的处理。一、删除字符串中的空白1.删除字符串两端的空白(空格、\t、\n等)使用.strip()方法:s...

Linux系统自带Python2&yum的卸载及重装

写在前面事情的起因是我昨天在测试Linux安装Python3的shell脚本时,需要卸载Python3重新安装一遍。但是通过如下命令卸载python3时,少写了个3,不小心将系统自带的python2也...

如何使用Python将多个excel文件数据快速汇总?

在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...

【第三弹】用Python实现Excel的vlookup功能

今天继续用pandas实现Excel的vlookup功能,假设我们的2个表长成这样:我们希望把Sheet2的部门匹在Sheet1的最后一列。话不多说,先上代码:importpandasaspd...

python中pandas读取excel单列及连续多列数据

案例:想获取test.xls中C列、H列以后(当H列后列数未知时)的所有数据。importpandasaspdfile_name=r'D:\test.xls'#表格绝对...

取消回复欢迎 发表评论: