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

为何计算结果为numpy数组?pandas财务数据处理异常排查

问题:手动数值纳入计算后结果变为数组格式

使用pandas处理银行导出的Excel客户数据时,将两个手动计算的数值(异常产品金额、信用卡支出)加入计算后,结果出现异常:Anomalos、Otros Gastos Tarjetas de Credito显示为元组格式,Margen Bruto和Utilidad Neta Total显示为数组格式,而非预期的单个数值。

相关代码

import pandas as pd
from IPython.display import display
from passremove import remove_pass
from datetime import date

# importar los excels necesarios
passwd = 'PATA'
aper_file = 'GALICIA resumen 2023-01-31 en proceso.xlsx'

aper_excel = remove_pass(aper_file, passwd)
today = date.today()

# se crean los dataframes necesarios
aper = pd.read_excel(aper_excel, sheet_name='aper', header=1)
fc_apernet = pd.read_excel(aper_excel, sheet_name='FC APERNET', header=0)
fc_apernet = fc_apernet.drop(fc_apernet.index[-1])

# configuramos las variables para armar el dict
fact_banco = aper['Equivalencia Puntos en Pesos $'].sum() / 1.21
fact_tipitos = aper['Total pagado en $'].sum() / 1.21
fact_correo  = aper['Cantidad'].sum()*1573 / 1.21 * -1
venta_productos = fact_banco + fact_tipitos + fact_correo
costo_productos = aper['COSTO TOTAL PESOS'].sum() * -1
anomalos = -3,376.19 
gastos_tarjeta = -15,853.09 
otros_apernet = fc_apernet['Gravado 21'].sum()* - 1
margen_bruto = venta_productos + costo_productos  + otros_apernet + anomalos + gastos_tarjeta
iibb = venta_productos * 0.05 * -1
impuesto_cheque = venta_productos * 1.21 * 0.012 * -1
seg_hig = venta_productos * 0.0098 * -1
util_neta = margen_bruto + iibb + impuesto_cheque + seg_hig     
canjes_facturados = aper['Cantidad'].sum()

resumen_dict = {
    'Categoria': [
                    'Facturacion al banco', 
                    'Facturacion tipitos', 
                    'Facturacion al Correo',
                    'Total Venta Solo Productos',
                    'Costo Productos',
                    'Anomalos',
                    'Otros Gastos Tarjetas de Credito',
                    'Otros Gastos Apernet',
                    'Margen Bruto',
                    'IIBB',
                    'Impuesto al Cheque',
                    'Seg e Hig',
                    'Utilidad Neta Total',
                    'Canjes Facturados'
                ],
    'Valor': [
                    fact_banco,
                    fact_tipitos,
                    fact_correo,
                    venta_productos,
                    costo_productos,
                    anomalos,
                    gastos_tarjeta,
                    otros_apernet,
                    venta_productos + costo_productos  + otros_apernet - anomalos - gastos_tarjeta,
                    iibb,
                    impuesto_cheque,
                    seg_hig,
                    util_neta,
                    canjes_facturados                
    ]
}

resumen_df = pd.DataFrame(resumen_dict)
resumen_df = resumen_df.set_index('Categoria')
resumen_df['Valor'] = resumen_df['Valor'].replace( '[\$,)]','', regex=True )

resumen_df.to_excel('Resumen Original {}.xlsx'.format(today))

with pd.option_context('display.max_columns', None):
    display(resumen_df)

计算结果

CategoriaValor
Facturacion al banco631777.892562
Facturacion tipitos370955.165289
Facturacion al Correo-247000.0
Total Venta Solo Productos755733.057851
Costo Productos-624018.7808
Anomalos(-3, 376.19)
Otros Gastos Tarjetas de Credito(-15, 853.09)
Otros Gastos Apernet-69645.32
Margen Bruto[62086.9570512395, 60839.6770512395]
IIBB-37786.652893
Impuesto al Cheque-10973.244
Seg e Hig-7406.183967
Utilidad Neta Total[5884.876191735375, 7132.156191735374]
Canjes Facturados190

问题原因与解决方案

核心原因

Python中,逗号是元组的分隔符,而非千位分隔符。你在定义手动数值时使用了逗号:

anomalos = -3,376.19  # 实际创建了元组 (-3, 376.19),而非单个数值 -3376.19
gastos_tarjeta = -15,853.09  # 实际创建了元组 (-15, 853.09),而非单个数值 -15853.09

当pandas的数值(本质是numpy.float64类型)与元组进行运算时,numpy会执行广播操作,将数值与元组中的每个元素分别计算,最终得到数组格式的结果。

修正方法

将手动数值中的逗号去掉,改为正确的单个数值:

# 修正后的赋值
anomalos = -3376.19 
gastos_tarjeta = -15853.09 

同时注意代码中Margen Bruto的计算逻辑:原代码中字典里的计算式是venta_productos + costo_productos + otros_apernet - anomalos - gastos_tarjeta,而前面定义margen_bruto变量时是+ anomalos + gastos_tarjeta,需根据实际业务逻辑确认符号是否正确。

修正后,所有计算结果将恢复为单个数值,不会再出现元组或数组格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:47:03