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

企业银行未对账项数据可视化问题及优化方案求助

解决方案:按金额总和&账龄筛选的未对账项热力图实现

一、数据预处理:处理日期与账龄筛选

首先需确保日期字段为可计算的格式,再筛选出账龄超3个月的记录:

# 读取CSV并转换日期字段(根据你的实际日期格式调整format参数,比如%m/%d/%Y)
df = pd.read_csv('你的数据集路径.csv')
df['DATE'] = pd.to_datetime(df['DATE'], format='%Y-%m-%d')

# 设定基准日期(与原图表一致的2024-06-01)
cutoff_date = pd.to_datetime('2024-06-01')
# 筛选账龄超过90天的未对账项
df_over_90 = df[(cutoff_date - df['DATE']).dt.days > 90]

二、按部门和来源汇总金额总和

替换原代码中统计数量的逻辑,改为按DIV和SOURCE分组计算金额总和:

# 分组聚合:计算每个部门-来源组合的金额总和
df_amount_sum = df_over_90.groupby(['DIV', 'SOURCE'])['AMOUNT'].sum().unstack()

# 填充缺失值(若某部门无对应来源的记录,用0填充避免热力图显示异常)
df_amount_sum = df_amount_sum.fillna(0)

三、绘制金额总和热力图

适配汇总后的金额数据,优化标注格式以便清晰展示大额数值:

from matplotlib import pyplot as plt
import seaborn as sns

plt.subplots(figsize=(8, 3.5))
plt.suptitle('Total Amount of Unreconciled Items (Over 90 Days) as of 06/01/2024', fontweight='bold')

# 绘制热力图,标注使用千分位格式提升可读性
sns.heatmap(df_amount_sum, cmap='viridis', annot=True, 
            fmt=',.0f',  # 千分位显示,保留0位小数
            linewidth=.5, square=True)

plt.xlabel('Division')
plt.ylabel('Source Type')
plt.show()

四、Colab推荐图表异常排查

  • 日期格式错误:若DATE为字符串类型,无法计算账龄,必须用pd.to_datetime转换
  • 金额格式问题:若AMOUNT包含符号(如$、,),需先清洗:df['AMOUNT'] = df['AMOUNT'].replace('[\$,]', '', regex=True).astype(float)
  • 缺失值未处理:分组后出现的NaN会导致热力图显示异常,用fillna(0)填充即可

五、Excel用户友好优化

若习惯Excel透视表逻辑,可改用pivot_table实现相同聚合:

df_amount_sum = pd.pivot_table(df_over_90, values='AMOUNT', index='SOURCE', columns='DIV', aggfunc='sum', fill_value=0)

也可更换颜色映射让大额更醒目:将cmap='viridis'改为cmap='YlOrRd'(黄橙红渐变)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:43:10