pandas的分箱操作实现

 更新时间:2024年12月31日 09:44:04   作者:m0_62172798  
本文主要介绍了在pandas中使用pd.cut()和pd.qcut()方法进行数据分箱的操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在pandas中,分箱操作是指将连续的数值型数据按照一定的规则划分为离散的箱子或区间,这有助于对数据进行分析、可视化以及建立统计模型。

1、pd.cut()方法

这个函数可以根据指定的分箱边界将数据划分到不同的区间,可以指定分箱的边界、标签、以及是否包括边界。

pd.cut(bins,
    right: bool = True,
    labels=None,
    retbins: bool = False,
    precision: int = 3,
    include_lowest: bool = False,
    duplicates: str = "raise",
    ordered: bool = True,)

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • bins,判断的边界
  • right: bool = True,是否包含最右边的边界
  • labels=None,判断结果的标签
  • retbins: bool = False,是否归还bins,
  • precision: int = 3,存储和显示箱子标签的精度。
  • include_lowest: bool = False,第一个区间是否包含左区间
  • duplicates: str = "raise",如果箱子的边不是唯一的,抛出ValueError或删除非唯一的边。
  • ordered: bool = True,
    • 标签是否有序。应用于返回类型
    • 如果为true,得到的分类变量是有序的。
    • 如果为False,则返回结果类别将是无序的(必须提供标签)。
import pandas as pd
import numpy as np

data=[0,60,70,90,100,110,20,30,40,50]
bins=[0,30,60,100]
lables=['Low','Medium','High']


print(pd.cut(data,bins=bins,labels=lables))
print(pd.cut(data,bins=bins,labels=lables,include_lowest=True))

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

2、 pd.qcut()方法

该函数根据数据的分位数来进行分箱操作,可以保证每个箱子内的数据数量大致相等。有助于创建等频分箱。

pd.qcut(
    x,
    q,
    labels=None,
    retbins: bool = False,
    precision: int = 3,
    duplicates: str = "raise",)

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

参数

  • x:需要处理的数据,需要时一维数组或Series
  • q:分位数,需要与labels数组长度一致
  • labels=None,数组或者为空(默认为空),用作结果箱的标签,必须和一样长的结果箱,如果为False,则只返回的整数指示箱里。如果为True,则引发错误。
  • retbins: bool = False,是否返回bins
  • precision: int = 3,存储和显示箱子标签的精度
  • duplicates: str = "raise",如果箱子的边不是唯一的,抛出ValueError或删除非唯一的边。
import pandas as pd
import numpy as np

df=pd.DataFrame(np.random.randint(0,101,size=100),columns=['value'])
print(df)
df['level'],bins=pd.qcut(df['value'],q=4,labels=['low','medium','high','higher'],retbins=True)
print(df)
print(bins)
print(df['level'].value_counts())

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

df

修改后的df

bins以及value_counts

可以看到数据进行划分时的区间为:1-28.5、28.5- 50,50-73,73-99。根据value_counts可以看出每个分区数量是等频的。

3、自定义分箱

我们可以自定义函数通过使用apple进行自定义分箱。一下为例子

import pandas as pd
import numpy as np

s=pd.Series(np.random.randint(0,90,size=100),name='age')

def custom_age_binning(age):
    if age<=30:
        return 'young'
    elif age<=60:
        return 'middle-aged'
    else:
        return 'senior'
    
custom_bins=s.apply(custom_age_binning)

print(custom_bins)

分箱操作的作用

数据理解与可视化; 将连续数据分成几个离散的箱子可以帮助我们更好地理解数据的分布情况。通过绘制分箱后的数据直方图、柱状图等图表,可以更清楚地看到数据的分布模式,有助于发现数据的特征和异常情况。

特征工程;在机器学习和统计建模中,将连续数据分箱可以将数值型特征转换为类别型特征,从而适应某些模型的需求,或者提高模型的性能。例如,某些算法对类别型数据更为敏感,分箱后的特征可以提供更多信息。

处理异常值: 将连续数据进行分箱可以帮助处理异常值的影响。异常值可能会对分析和建模产生干扰,通过将数据分箱,可以将异常值分到合适的区间中,减少其影响。

降低模型复杂性; 在一些情况下,使用连续数据可能会导致模型过于复杂,容易过拟合。分箱可以降低模型的复杂性,使模型更具有泛化能力。

缺失值处理: 在分箱过程中,你可以将缺失值划分到一个单独的箱子中,从而对缺失值进行特殊处理,而不是直接删除或填充缺失值。

解决线性关系的问题:有时候数据之间的关系可能不是线性的,通过分箱可以在一定程度上捕捉非线性的关系,使建模更加准确。

满足业务需求;在实际业务中,可能需要将连续数据划分成具有业务意义的区间,以满足特定的业务需求。例如,将年龄数据划分成不同的年龄段,以便更好地理解不同年龄段的特点。

总之,分箱操作可以帮助我们更好地理解数据、提取特征、处理异常值和满足业务需求,从而为数据分析和建模提供更多的灵活性和可解释性。

到此这篇关于pandas的分箱操作实现的文章就介绍到这了,更多相关pandas 分箱操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中字符串与编码示例代码

    Python中字符串与编码示例代码

    这篇文章主要介绍了Python中字符串与编码示例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 关于Python排序sort()函数和sorted()函数

    关于Python排序sort()函数和sorted()函数

    这篇文章主要介绍了关于Python排序sort()函数和sorted()函数,利用Python中的内置函数去实现直接排序,需要的朋友可以参考下
    2023-04-04
  • Python代理IP爬虫的新手使用教程

    Python代理IP爬虫的新手使用教程

    这篇文章主要给大家介绍了关于Python代理IP爬虫的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Python列表推导式与生成器用法分析

    Python列表推导式与生成器用法分析

    这篇文章主要介绍了Python列表推导式与生成器用法,结合实例形式分析了列表推导式、生成器的原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08
  • Python返回真假值(True or False)小技巧

    Python返回真假值(True or False)小技巧

    这篇文章主要介绍了Python返回真假值(True or False)小技巧,本文探讨的是最简洁的条件判断语句写法,本文给出了两种简洁写法,需要的朋友可以参考下
    2015-04-04
  • Python django使用多进程连接mysql错误的解决方法

    Python django使用多进程连接mysql错误的解决方法

    这篇文章主要介绍了Python django使用多进程连接mysql错误的解决方法,详细的介绍了解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Python实现自动化网页操作步骤

    Python实现自动化网页操作步骤

    这篇文章主要介绍Python如何实现自动化网页操作,文中有详细的流程步骤和代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-06-06
  • 如何利用python实现kmeans聚类

    如何利用python实现kmeans聚类

    K-Means是聚类算法的一种,以距离来判断数据点间的相似度并对数据进行聚类,下面这篇文章主要给大家介绍了关于如何利用python实现kmeans聚类的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 在python3.5中使用OpenCV的实例讲解

    在python3.5中使用OpenCV的实例讲解

    下面小编就为大家分享一篇在python3.5中使用OpenCV的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python+opencv实现移动侦测(帧差法)

    python+opencv实现移动侦测(帧差法)

    这篇文章主要为大家详细介绍了python+opencv实现移动侦测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论