前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas基础:使用between方法进行数据分箱(Binning Data)

pandas基础:使用between方法进行数据分箱(Binning Data)

作者头像
fanjy
发布2022-06-04 09:41:29
2.7K0
发布2022-06-04 09:41:29
举报
文章被收录于专栏:完美Excel完美Excel

标签:pandas,between方法

有时候,我们需要执行数据分箱操作,pandas的between方法可以帮助我们实现这个目的。数据分箱(Databinning)是指我们将数据放入离散区间或段/箱的过程。

我们将创建一些随机样本,显示100人的年龄及其货币净值。然后,我们将按年龄将数据存储到不同的“存储箱”中。

import pandas as pd

import numpy as np

age= np.random.randint(0,121,size=100)

net_worth= np.random.randint(100,10000,size=100)

df= pd.DataFrame({'Age':age, 'Net_Worth':net_worth})

结果如下图1所示。

图1

pandas的between方法检查数据是否在两个值之间,其语法为:

between(left,right,inclusive=’both’)

其中,

  • 参数left,分段/范围的下端点。
  • 参数right,分段/范围的上端点。
  • 参数inclusive,是否想要包括下端点和上端点,可以取下列值:both,neither,left或right。

该方法返回一个布尔索引,其中包含True和False值的列表。

让我们检查哪个记录的年龄介于0到20岁之间:

df['Age'].between(0,20, inclusive='right')

图2

可能注意到between方法实质上等同于:

(df['Age']> 0) & (df['Age'] <= 20)

图3

现在,可以借助布尔索引检查数据是否在一个分段内,还需要使用loc方法来访问/赋值符合条件的单个记录的值。注意,NaN值是因为尚未为其指定band列。

df.loc[df['Age'].between(left=0,right=20, inclusive='right'),

'band']= '(0, 20]'

图4

基本上,loc属性只返回与条件匹配的记录,即布尔索引中的True值。参见下面的示例,该示例仅返回0到20年前的记录。

df.loc[df['Age'].between(left=0,right=20,inclusive='right')]

图5

假设我们要将所有数据放入以下年龄段中。注:括号“()”表示不包含,方括号“[]”表示包含,因此(0,20]是指从1岁到20岁。

(0,20]

(20,60]

(60,90]

(90,120]

代码:

#年龄间隔

age_band= [0,20,60,90,120]

#创建年龄段

age_bins= []

for i in range(4):

age_bins.append([age_band[i],age_band[i+1]])

[[0,20],[20,60], [60,90], [90,120]]

#分箱数据

for b in age_bins:

df.loc[df['Age'].between(left=b[0],right=b[1],inclusive='right'),'band']= f'({b[0]},{b[1]}]'

结果如下图6所示。

图6

不幸的是,使用between和loc方法无法轻松地将数据装箱。虽然使用循环并不太糟糕,但在处理大量的分箱时,这种方法可能会变得效率低下,因为需要将该过程重复N次(箱子数量)。获取分箱数据的一种更简单的方法是使用pandas的cut方法,具体参见:《Pandas基础:使用Cut方法进行数据分箱(Binning Data)》。

注:本文学习整理自pythoninoffice.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档