前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分箱技术Binning

数据分箱技术Binning

作者头像
慕白
发布2020-01-02 13:39:18
1.3K0
发布2020-01-02 13:39:18
举报

数据分箱技术Binning

数据分箱就是按照某种规则将数据进行分类。就像可以将水果按照大小进行分类,售卖不同的价格一样。

对Series进行分箱

创建一个整形随机的series,表示学生的成绩:

import numpy as np import pandas as pd from pandas import Series, DataFrame score_list = np.random.randint(25, 100, size=20)

12345

import numpy as npimport pandas as pdfrom pandas import Series, DataFramescore_list = np.random.randint(25, 100, size=20)

然后指定一个分箱原则

bins = [0,59,70,80,100]

12

bins = [0,59,70,80,100]

然后利用pandas中的cut方法,指定分箱规则和对象,结果将获得一个Categories对象:

score_cat = pd.cut(score_list, bins)

12

score_cat = pd.cut(score_list, bins)

使用pandas中的value_counts方法来统计各个段内数据的个数:

pd.value_counts(score_cat)

12

pd.value_counts(score_cat)

对Dataframe分箱

创建一个包含学生分数和姓名的dataframe:

df = DataFrame() df['score'] = score_list df['student'] = [pd.util.testing.rands(3) for i in range(20)] # 三个随机字符串

1234

df = DataFrame()  df['score'] = score_listdf['student'] = [pd.util.testing.rands(3) for i in range(20)]  # 三个随机字符串

这里的pd.util.testing.rands(3) for i in range(20)可以生成20个随机3位字符串。

然后使用前面的bins标准对df1进行分箱,得到一个Categories对象:

df['Categories'] = pd.cut(df['score'],bins)

12

df['Categories'] = pd.cut(df['score'],bins)

这样子可读性不好,可以指定label参数为每个区间赋一个标签:

df['Categories'] = pd.cut(df['score'],bins, labels=['Low','OK','Good','Great'])

12

df['Categories'] = pd.cut(df['score'],bins, labels=['Low','OK','Good','Great'])

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据分箱技术Binning
    • 对Series进行分箱
      • 对Dataframe分箱
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档