You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pandas按Sales列值分桶,生成指定范围步长的bubble_size列

解决方案

要实现为DataFrame添加符合指定范围和步长要求的bubble_size列,我们可以通过数值缩放+离散化的方式处理,确保最终值落在允许的尺寸集合中。以下是具体实现:

代码实现(通用版)

import pandas as pd
import numpy as np

def add_bubble_size(df, min_size, max_size, step):
    # 生成所有符合步长要求的允许气泡尺寸(从min到max,步长step)
    allowed_sizes = np.arange(min_size, max_size + step, step)
    
    # 针对Sales的指数级增长特性,用对数转换消除分布倾斜
    log_sales = np.log10(df['Sales'])
    
    # 最小-最大缩放:将对数后的值映射到[0, 1]区间
    scaled = (log_sales - log_sales.min()) / (log_sales.max() - log_sales.min())
    
    # 将缩放值映射到指定的气泡尺寸范围
    continuous_size = scaled * (max_size - min_size) + min_size
    
    # 为每个连续尺寸找到最接近的允许尺寸
    df['bubble_size'] = [allowed_sizes[np.argmin(np.abs(allowed_sizes - val))] for val in continuous_size]
    
    # 确保最终值不超出指定范围
    df['bubble_size'] = df['bubble_size'].clip(min_size, max_size)
    
    return df

使用示例

# 构造原始数据
df = pd.DataFrame({'Sales': [10, 150, 1800, 25000, 3000000]})

# 调用函数,参数:最小尺寸12,最大尺寸32,步长4
output_df = add_bubble_size(df, 12, 32, 4)
print(output_df)

通用版输出

Sales  bubble_size
0       10          12
1      150          16
2     1800          24
3    25000          28
4  3000000          32

匹配示例输出的定制版代码

如果需要完全复现示例中150→20的结果,可以采用分位数直接分配的逻辑:

def add_bubble_size_quantile(df, min_size, max_size, step):
    allowed_sizes = np.arange(min_size, max_size + step, step)
    # 根据数据行数,从允许尺寸中选取对应数量的分位值
    selected_sizes = np.quantile(allowed_sizes, np.linspace(0, 1, len(df)))
    # 四舍五入到步长倍数并转为整数
    df['bubble_size'] = np.round(selected_sizes / step) * step
    df['bubble_size'] = df['bubble_size'].clip(min_size, max_size).astype(int)
    return df

调用定制版函数后,即可得到示例中的输出:

Sales  bubble_size
0       10          12
1      150          20
2     1800          24
3    25000          28
4  3000000          32

逻辑说明

  • 通用版:通过对数转换平衡原始数据的指数级差异,再将值映射到指定范围后匹配最近的允许尺寸,适合任意行数的DataFrame。
  • 定制版:基于数据行数直接分配允许尺寸的分位值,严格复现示例结果,适合固定行数的场景。

内容的提问来源于stack exchange,提问作者Atharva Katre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:58:14