pd.qcut() pd.cut() pandas根据数据值的范围段分箱

pd.qcut()  pd.cut()  pandas

功能,假设有数据,数据带有温度值,温度范围为 -4~31或任意,可人为根据需要,将时间范围分为10段或者20段,该方法会根据数据中温度的range均匀分段,然后可以将分段的标签加入数据中

nT = 12
df['Tbin'] = pd.qcut(dfd['T'].reindex_like(df).ffill().bfill(), nT, labels=range(nT))
dfq['Tbin'] = pd.qcut(dfq['T'], nT, labels=range(nT))
dfh['Tbin'] = pd.qcut(dfh['T'], nT, labels=range(nT))
dfd['Tbin'] = pd.qcut(dfd['T'], nT, labels=range(nT))

nT=12 分为12段

### 概念重述 您提到的 `pd.cut` 和 `pd.qcut` 是 Pandas 中用于**离散化连续数据**的两个函数。它们可以将连续型变量划分到不同的“面元”或“区间”中,适用于分类统计、数据预处理等场景。 --- ### 详解 #### 1. `pd.cut(x, bins, ...)` - **作用**:将连续变量 `x` 按照指定的 `bins`(边界)进行**等宽划分**。 - **适用于**:你已经知道划分的边界,或希望按照固定宽度进行离散化。 - **参数说明**: - `x`:要离散化的数组或 Series。 - `bins`:可以是整数(表示划分成多少个等宽区间),也可以是一个列表或数组,指定每个区间的上下界。 - **示例**: ```python import pandas as pd ages = [18, 25, 35, 45, 55, 65] bins = [18, 30, 40, 50, 60, 70] pd.cut(ages, bins) ``` 输出: ``` [(18, 30], (18, 30], (30, 40], (40, 50], (50, 60], (60, 70]] ``` #### 2. `pd.qcut(x, q, ...)` - **作用**:将连续变量 `x` 按照**分位数**进行**等频划分**。 - **适用于**:希望每个区间中包含的样本数量大致相等。 - **参数说明**: - `x`:要离散化的数组或 Series。 - `q`:可以是整数(表示分成 `q` 个等频区间),也可以是一个表示分位点的列表(如 `[0, 0.25, 0.5, 0.75, 1]`)。 - **示例**: ```python data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] pd.qcut(data, q=4) ``` 输出: ``` [(-0.001, 3.25], (-0.001, 3.25], (-0.001, 3.25], (3.25, 5.5], (3.25, 5.5], (5.5, 7.75], (5.5, 7.75], (7.75, 10.0], (7.75, 10.0], (7.75, 10.0]] ``` --- ### 知识点 1. **pd.cut 等宽离散化** 按指定区间划分数据,适用于分布已知或需固定区间的情况。 2. **pd.qcut 等频离散化** 按分位数划分数据,确保每个区间样本数大致相等,适用于数据分布不均的情况。 3. **数据分箱与离散化** 将连续特征转换为分类特征,有助于提升模型的解释性和鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值