| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Pandas 对数值进行分箱操作的4种方法总结对比 -> 正文阅读 |
|
[人工智能]Pandas 对数值进行分箱操作的4种方法总结对比 |
分箱是一种常见的数据预处理技术有时也被称为分桶或离散化,他可用于将连续数据的间隔分组到“箱”或“桶”中。在本文中,我们将讨论使用 python Pandas 库对数值进行分箱的 4 种方法。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yh8qGzOI-1651545800864)(http://images.overfit.cn/upload/20220503/4e8aeb2f82a54719bac9ee6c30407321.jpeg)] 我们创建以下合成数据用于演示
数据包括 1000 名学生的 0 到 100 分的考试分数。而这次的任务是将数字分数分为值“A”、“B”和“C”的等级,其中“A”是最好的,“C”是最差的。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wvCkxexs-1651545800865)(http://images.overfit.cn/upload/20220503/caa3faf567ed4773af3d83ce06da9583.png)] 1、between & locPandas .between 方法返回一个包含 True 的布尔向量,用来对应的 Series 元素位于边界值 left 和 right[1] 之间。 参数有下面三个:
根据以下间隔规则将学生的分数分为等级:
其中方括号 [ 和圆括号 ) 分别表示边界值是包含的和不包含的。我们需要确定哪个分数在感兴趣的区间之间,并为其分配相应的等级值。注意看下面的不同的参数表示是否包含边界
以下是每个分数区间的人数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qtJkYUgs-1651545800865)(http://images.overfit.cn/upload/20220503/ad43ae48f9d64504971978153ec8e8e6.png)] 此方法需要为每个 bin 编写处理的代码,因此它仅适用于 bin 很少的情况。 2、cut可以使用 cut将值分类为离散的间隔。此函数对于从连续变量到分类变量[2] 也很有用。 cut的参数如下:
这样就创建一个包含 bin 边界值的 bins 列表和一个包含相应 bin 标签的标签列表。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9yLOk2A-1651545800865)(http://images.overfit.cn/upload/20220503/22643a3ef4ca4cc3ad7f3073d504f341.png)] 查看每个区段的人数
结果与上面示例相同。 3、qcutqcut可以根据排名或基于样本分位数将变量离散为大小相等的桶[3]。 在前面的示例中,我们为每个级别定义了分数间隔,这回使每个级别的学生数量不均匀。在下面的示例中,我们将尝试将学生分类为 3 个具有相等(大约)数量的分数等级。示例中有 1000 名学生,因此每个分箱应该有大约 333 名学生。 qcut参数: x:要分箱的输入数组。必须是一维的。 q:分位数。10 表示十分位数,4 表示四分位数等。也可以是交替排列的分位数,例如[0, .25, .5, .75, 1.] 四分位数。 labels:指定 bin 的标签。必须与生成的 bin 长度相同。 retbins: (bool) 是否返回 (bins, labels)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3rAmNJDu-1651545800866)(http://images.overfit.cn/upload/20220503/ae91808d9664428ba2b8df86d9a08f0a.png)] 如果 retbins 设置为 True 则会返回 bin 边界。
分数间隔如下:
使用 .value_counts() 检查每个等级有多少学生。理想情况下,每个箱应该有大约 333 名学生。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dpEhEvAT-1651545800867)(http://images.overfit.cn/upload/20220503/3b4d2c2495d04883b6cf27dce091f8f9.png)] 4、value_counts虽然 pandas .value_counts 通常用于计算系列中唯一值的数量,但它也可用于使用 bins 参数 [4] 将值分组到半开箱中。
默认情况下, .value_counts 按值的降序对返回的系列进行排序。将 sort 设置为 False 以按其索引的升序对系列进行排序。 series 索引是指每个 bin 的区间范围,其中方括号 [ 和圆括号 ) 分别表示边界值是包含的和不包含的。返回series 的值表示每个 bin 中有多少条记录。 与 .qcut 不同,每个 bin 中的记录数不一定相同(大约)。.value_counts 不会将相同数量的记录分配到相同的类别中,而是根据最高和最低分数将分数范围分成 3 个相等的部分。分数的最小值为 0,最大值为 100,因此这 3 个部分中的每一个都大约在 33.33 范围内。这也解释了为什么 bin 的边界是 33.33 的倍数。 我们还可以通过传入边界列表来定义 bin 边界。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHKLYWkh-1651545800867)(http://images.overfit.cn/upload/20220503/77ebaf96d4f74166b2762a2a43e591a6.png)] 这给了我们与示例 1 和 2 相同的结果。 总结在本文中,介绍了如何使用 .between、.cut、.qcut 和 .value_counts 对连续值进行分箱。这里是本文的源代码: https://avoid.overfit.cn/post/dc11c84491e841dea928d652f0f93005 作者:Edwin Tan |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:16:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |