pandas数据离散化pandas.cut()和pandas.qcut()

小灰灰 2023-07-06 08:59 16阅读 0赞

pandas数据离散化

什么叫数据离散化?也可以理解为数据分组。举个简单的例子,我们有一组学生成绩的数据,我们可以将数据按照成绩的最大值和最小值划分为几个相同的区间。假设最高分100分,最低分50分,我们可以划分为两个相同宽度的范围。分别是[50,74]、[75,100]。 统计这两个区间都有多少数据。第二种是根据人数对成绩区间进行划分,所划分的区间人数基本持平。接下来具体通过代码来实现看看。

等宽划分成绩区间

  1. import pandas as pd
  2. import numpy as np
  3. cutnum = pd.cut(tips['tip'],4)
  4. print("tips['tip']的最大值和最小值分别为:",tips['tip'].max(),tips['tip'].min())
  5. print(cutnum.value_counts())

在这里插入图片描述

  1. pd.cut(data,num) data是需要划分的数据,num是划分多少段。此方法是将使用数据的最大值和最小值进行区间划分。
  2. 从结果中,我们可以看到,数据中的最大值是10,最小值是1,整个区间被平分为了四段,每一段的区间一样。

等平分段,按照人数进行区间的划分

  1. import pandas as pd
  2. import numpy as np
  3. qcutnum = pd.qcut(tips['tip'],4)
  4. print(qcutnum.value_counts())

咱们首先看结果:
在这里插入图片描述

??? 不是说好了等平分吗,我只看到了中间两个数据是相同的,第一个和第四个都和其他不一样!哪里出现了问题呢。
我猜测是在端点,来,咱们试试端点值。

  1. tipcount = tips['tip'][tips['tip']==2.0].count()
  2. print(tipcount)

这一段代码是统计tips 数据中tip==2.0数据得个数,来看看结果:
在这里插入图片描述

结果是33,果真,是由于端点值相同值过多,造成得数据个数不平均,那咱们使用其他数据试试看。

接下来使用tips中得‘total_bill’数据

  1. qcutnum1 = pd.qcut(tips['total_bill'],4)
  2. print(qcutnum.value_counts())

看看结果:
在这里插入图片描述

哦yeah,没问题,证实了咱们之前得猜想。
qcut()这个方法第一个参数数据,第二个参数是划分段数。

其实这两个方法还有其他参数。基本得两个参数大家知道后,在后续实战中如果还有其他需求,可以深度得学习一下这两个方法的其他参数。

发表评论

表情:
评论列表 (有 0 条评论,16人围观)

还没有评论,来说两句吧...

相关阅读

    相关 离散】【转载】

    如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”

    相关 离散

    \ 离散化 |||离散化就是三句话,sort,unique,lower\_bound||| 1.专业术语:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的

    相关 离散总结

    离散化是一种很常见的数据处理方式。   最近也是学了一下(才学的我还有救么QAQ),一学就懂,但发现在题目中好像也并没有怎么想到这东西,,所以在这里简单总结一下我对离散化的

    相关 # 离散

    离散化 值得注意的是:unique()函数去重之后并不是把重复元素放在最末尾,而是类似于删除了这个数,然后末尾元素保持不变,比如`1 2 2 3`去重之后是`1 2