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

客户成本分组汇总可视化需求:小占比客户合并为‘remaining’

客户成本汇总与可视化问题解决方案

问题点梳理

  1. 原代码将成本列重命名为count并强制转成整数,丢失了成本的小数精度
  2. 饼图默认展示百分比,未按需求显示实际总成本
  3. 使用了Pandas已弃用的append方法,存在版本兼容风险
  4. 最终输出的格式未匹配期望的索引结构

修正后的完整代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 使用你提供的原始数据
df = pd.DataFrame({
    "customerId": [1,1,1,2,2,2,3,3,3,4,4,4,4,4,4],
    "costs": [1.054722,3.287335,1.920475,0.502692,4.900304,2.676288,0.455319,3.261040,2.049914,2.293546,1.353868,0.018763,4.371444,3.082480,3.056038]
})

# 设置占比阈值,低于该值的客户合并为remaining
threshold = 0.1

# 1. 按客户分组计算总成本
df_grouped = df.groupby('customerId')['costs'].sum().reset_index()
# 2. 计算每个客户成本的占比
df_grouped['percentage'] = df_grouped['costs'] / df_grouped['costs'].sum()

# 3. 分离达标客户和需要合并的小占比客户
df_top_customers = df_grouped[df_grouped['percentage'] >= threshold]
df_small_customers = df_grouped[df_grouped['percentage'] < threshold]

# 4. 汇总小占比客户为remaining
if not df_small_customers.empty:
    remaining_row = pd.DataFrame({
        'customerId': ['remaining'],
        'costs': [df_small_customers['costs'].sum()],
        'percentage': [df_small_customers['percentage'].sum()]
    })
    df_final = pd.concat([df_top_customers, remaining_row], ignore_index=True)
else:
    df_final = df_top_customers

# 调整为你期望的输出格式
df_final = df_final.set_index('customerId')[['costs']]
print("汇总结果:")
print(df_final)

# 5. 可视化:饼图展示实际总成本
plt.figure(figsize=(8, 8))
colors = sns.color_palette('GnBu_r')

# 自定义饼图标签,显示实际成本数值而非百分比
def show_cost_value(values):
    def format_func(pct):
        total_cost = sum(values)
        actual_cost = pct * total_cost / 100
        return f'{actual_cost:.2f}'
    return format_func

plt.pie(df_final['costs'], 
        labels=df_final.index, 
        colors=colors,
        autopct=show_cost_value(df_final['costs']),
        pctdistance=0.8)
plt.title('客户总成本分布')
plt.show()

修正说明

  • 保留了成本的原始小数精度,未做强制整数转换
  • 替换已弃用的append为pd.concat,适配新版Pandas
  • 饼图通过自定义autopct函数展示实际总成本数值,而非百分比
  • 最终输出格式完全匹配你期望的索引结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:12:24