Pandas分箱大法:让连续数据秒变‘箱’中豪杰,数据界的‘变形金刚’来袭!

在这里插入图片描述

1. 分箱操作

  • 嘿,小伙伴们,你们知道吗?分箱操作,简直就是数据界的魔术师!想象一下,那些密密麻麻、让人眼花的连续数字,经过这位大师的手,瞬间变成了井然有序的小盒子——每个盒子都装着一段数字,就像是把糖果按颜色分好一样。这样一来,原本复杂的数据变得简单易懂,异常值也乖乖就范,不再捣乱。咱们的数据分析、建模之路,从此变得顺畅无阻,简直就是数据处理的“一键美颜”啊!
  • 接着咱们聊聊数据界的两大“分箱高手”——等距分箱与等频分箱!等距分箱,就像是给数据量身高,不管胖瘦高矮,一刀切下去,大家间隔都相等,整整齐齐排排站。而等频分箱呢,它更像个公平分配的小能手,确保每个箱子里数据的数量都差不多,就像是分蛋糕,力求人人有份,公平公正!这两大高手各有千秋,让数据处理变得既有趣又高效,你们说是不是啊?

2. 导包与数据准备

# 导包
import numpy as np
import pandas as pd
# 创建数据
data = np.random.randint(0,100,size=(5,3))
df = pd.DataFrame(data=data,columns=["Python","NumPy","Pandas"])
df
PythonNumPyPandas
0955916
1816863
2737035
330447
4581880

3. 等距分箱

s = pd.cut(df.Python,bins=4)
s
0      (78.75, 95.0]
1      (78.75, 95.0]
2      (62.5, 78.75]
3    (29.935, 46.25]
4      (46.25, 62.5]
Name: Python, dtype: category
Categories (4, interval[float64, right]): [(29.935, 46.25] < (46.25, 62.5] < (62.5, 78.75] < (78.75, 95.0]]
s.value_counts()
Python
(78.75, 95.0]      2
(29.935, 46.25]    1
(46.25, 62.5]      1
(62.5, 78.75]      1
Name: count, dtype: int64
s.value_counts().plot.bar()
<Axes: xlabel='Python'>

在这里插入图片描述

pd.cut(
    df.Python,   # 分箱数据
    bins=[0,30,60,80,100],   # 分箱断点
    right=False,   # 左闭右开,默认是左开右闭
    labels=["D","C","B","A"]   # 分箱后分类的标签
)
0    A
1    A
2    B
3    C
4    C
Name: Python, dtype: category
Categories (4, object): ['D' < 'C' < 'B' < 'A']

4. 等频分箱

pd.qcut(
    df.Python,   # 分箱数据
    q=4,   # 4等分
)
0      (81.0, 95.0]
1      (73.0, 81.0]
2      (58.0, 73.0]
3    (29.999, 58.0]
4    (29.999, 58.0]
Name: Python, dtype: category
Categories (4, interval[float64, right]): [(29.999, 58.0] < (58.0, 73.0] < (73.0, 81.0] < (81.0, 95.0]]
pd.qcut(
    df.Python,   # 分箱数据
    q=4,   # 4等分
    labels=["D","C","B","A"]   # 分箱后分类的标签
)
0    A
1    B
2    C
3    D
4    D
Name: Python, dtype: category
Categories (4, object): ['D' < 'C' < 'B' < 'A']
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾飞开源

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值