离散度计算公式 python_被多种离散化场景困扰?8种python技巧!让数据处理更简单...
前言
python数据处理与分析学习过程中,需要有这样的一种意识,即元“为什么选择了python而不是其他?”既然选择了python,那么在实际应用中,它到底哪里不一样?大家说的方便、快捷、高复用性具体体现在哪里?带着问题进行学习,会有事半功倍的效果,记忆力和识别能力也会有所提高。
在本文,小编跟大家分享的是数据处理与分析中的“离散化或面元”。8种python技巧,让连续数据离散化更简洁。
8种python技巧
为了便于分析,连续数据常常被离散化或拆分为“面元“(bin),假设有一组人员数据,而你希望将它们划分为不同的年龄组:
In [154]: ages=[20,22,25,27,21,23,37,31,61,45,41,32]
离散化或面元:cut()
接下来将这些数据划分为“18到25“、”26到35“、”35到60“以及”60以上“几个面元。要实现此功能,需要使用pandas的cut函数:
n [24]: ages=[20,22,25,27,21,23,37,31,61,45,41,32]
In [25]: bins=[18,25,35,60,100]
In [26]: cats=pd.cut(ages,bins)
In [27]: cats
Out[27]:
[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35],
(60, 100], (35, 60], (35, 60], (25, 35]]
Length: 12
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
codes属性:标号
In [29]: cats.codes
Out[29]: array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int8)
value_counts方法
该方法会按照离散化或面元结果,进行符合区间的值统计,具体使用方法如下:
In [30]: pd.value_counts(cats)
Out[30]:
(18, 25] 5
(35, 60] 3
(25, 35] 3
(60, 100] 1
dtype: int64
控制开/关:right=False
跟“区间“的数学符号一样,圆括号表示开端,而方括号则表示闭端(包括)。哪边是闭端可以通过right=False进行修改:
In [31]: pd.cut(ages,[18,26,36,61,100],right=False)
Out[31]:
[[18, 26), [18, 26), [18, 26), [26, 36), [18, 26), ..., [26, 36),
[61, 100), [36, 61), [36, 61), [26, 36)]
Length: 12
Categories (4, interval[int64]): [[18, 26) < [26, 36) < [36, 61) < [61, 100)]
设置面元名称:labels
设置自己的面元名称,将labels选项设置为一个列表或数组即可:
In [33]: group_names=['Youth','YoungAdult','MiddleAged','Senior']
In [34]: pd.cut(ages,bins,labels=group_names)
Out[34]:
[Youth, Youth, Youth, YoungAdult, Youth, ..., YoungAdult,
Senior, MiddleAged, MiddleAged, YoungAdult]
Length: 12
Categories (4, object): [Youth < YoungAdult < MiddleAged < Senior]
计算等长面元
如果向cut传入的是面元的数量而不是确切的面元边界,则它会根据数据的最小值和最大值计算等长面元。下面这个例子中,将一些均匀分布的数组分成四组:
In [35]: data=np.random.rand(20)
In [36]: pd.cut(data,4,precision=2)
Out[36]:
[(0.039, 0.27], (0.27, 0.5], (0.73, 0.95], (0.5, 0.73],
(0.039, 0.27], ..., (0.5, 0.73], (0.27, 0.5], (0.73, 0.95],
(0.039, 0.27], (0.73, 0.95]]
Length: 20
Categories (4, interval[float64]): [(0.039, 0.27] < (0.27, 0.5]
< (0.5, 0.73] < (0.73, 0.95]]
qcut()
qcut是一个非常类似于cut的函数,它可以根据样本分位数对数据进行面元划分。根据数据的分布情况,cut可能无法使各个面元中含有相同数量的数据点。而qcut由于使用的是样本分位数,因此可以得到大小基本相等的面元:
In [37]: data=np.random.randn(1000)
In [38]: cats=pd.qcut(data,4)
In [39]: cats
Out[39]:
[(-0.66, -0.0518], (0.68, 3.328], (-0.66, -0.0518], (0.68, 3.328],
(-3.452, -0.66], ..., (-3.452, -0.66], (0.68, 3.328], (-3.452, -0.66],
(-0.66, -0.0518], (-3.452, -0.66]]
Length: 1000
Categories (4, interval[float64]): [(-3.452, -0.66] < (-0.66, -0.0518]
< (-0.0518, 0.68] < (0.68, 3.328]]
In [40]: pd.value_counts(cats)
Out[40]:
(0.68, 3.328] 250
(-0.0518, 0.68] 250
(-0.66, -0.0518] 250
(-3.452, -0.66] 250
设置自定义分位数
跟cut一样,也可以设置自定义的分位数(0到1之间的数值,包含端点):
总结
离散化或面元是数据处理与分析中的常用方法。python提供了便捷、丰富的方法。该类方法通常是解决数据分析、机器学习或深度学习中,需要将连续性变量离散化的场景。8种不同的技巧均有其适用场景,无好与坏之分。大家可以实践操作进行体验,感谢大家关注!
离散度计算公式 python_被多种离散化场景困扰?8种python技巧!让数据处理更简单...相关推荐
- cut out数据增强_被多种离散化场景困扰?8种python技巧!让数据处理更简单
前言 python数据处理与分析学习过程中,需要有这样的一种意识,即元"为什么选择了python而不是其他?"既然选择了python,那么在实际应用中,它到底哪里不一样?大家说的方 ...
- 离散度计算公式 python_计算离散点的曲率(附Python, MATLAB代码)
在很多学科中的很多计算任务中都需要用到曲线的曲率(或者曲率半径),numpy库里和matlab build-in里都没有现成的能从离散点来算曲率的方法,网上找到的代码又不敢直接用,毕竟是要高频率用到自 ...
- 【Python自动化任务】让运维更简单的7种定时任务实现方式,总有一种适合你的场景
想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送 有粉丝留言问什么时候可以写一个关于自动化任务的文章 准备上!~ 感觉有用关注公众号 &qu ...
- 电脑二维码怎么扫描_扫描模组方案是如何满足多种应用场景需求?
随着自动识别技术的发展,扫描模组逐渐成为各个领域上的配套,然而很多人还停留在"主扫"的观念上,殊不知如今的"被扫"更受人们的欢迎,即采用硬件解码的方式去识读条形 ...
- Android 下拉刷新上拉载入 多种应用场景 超级大放送(上)
转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉载入,网上的Demo太多太多了,这 ...
- 基于java的量化交易软件,用户可自行编写交易策略,用于期货、股票、外汇、炒币等多种交易场景,前端采用node14 + vue2
本项目仅属于技术分享,不构成任何交易建议.使用者自身在交易前,需要清楚其可能面对的交易风险与相关法律规定,并为自身行为负责! 完整代码下载地址:基于java的量化交易软件 这是一个用户可以自行编写交易 ...
- 玩转多种应用场景,快手 MMU 分享秘籍
✏️ 编者按: 短视频的兴起见证了一场信息革命.图文时代逐渐过渡到多媒体时代,对视频的理解和搜索已成为当下的关键技术.作为国民级短视频 App 的 AI 中台,快手 MMU(Multimedia un ...
- Android 下拉刷新上拉加载 多种应用场景 超级大放送(上)
转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉加载,网上的Demo太多太多了,这 ...
- python学会了能做什么-学会Python后都能做什么?介绍五种Python的实用场景
如今,越来越多的人加入到学习Python的队伍当中. 有的学习者是设计师,学习Python可以帮助他们查找更多的海报案例;有的学习者是大学生,学习Python可以帮助他们更好地查阅论文资料;还有的学习 ...
最新文章
- 最大子序和的golang实现
- string转date类型_10:Wrapper;String;Date;Math;File;Enumeration;Syst
- 《JavaScript设计模式与开发实践》阅读摘要
- initial、inherit、unset、revert和all
- BugkuCTF-MISC题where is flag
- C语言入门——内功心法
- 信息学奥赛C++语言:奇数统计与输出
- Leetcode201. Bitwise AND of Numbers Range数字范围按位与
- 配置管理小报091103-2: CVS中的tag规则
- 【持久层】Druid简介
- mvc 根据模板导出excel,直接导出文件流
- Java 实现区块链中的区块,BLOCK的实现
- esp8266 安信可AiThinkerIDE_V1.5.2开发环境搭建
- html在指定位置鼠标悬停显示出图片,简单实现鼠标悬停显示图片
- Python 五角星的画法 five star
- RabbitMQ队列声明channel.queueDeclare()参数解析
- 【华为提前批】笔试 测评 面试 全流程(结构与材料工程师)
- MOCTF-MISC-writeup
- Mysql(验证用户登录)
- Linux的pycharm中出现subprocess.CalledProcessError: Command ‘XXX‘ returned non-zero exit status 1.