Pandas处理除数为零:inf替换与函数应用详解
本文探讨在Pandas DataFrame中进行除法运算时,当除数为零导致结果为无穷大(inf)的处理方法。通过示例展示如何利用numpy库将inf替换为零,以及使用apply函数结合自定义逻辑安全计算比率,解决数据清洗中的常见异常值问题。
Pandas处理除数为零:inf替换与函数应用详解
首先看如下示例情况:
data2[‘营业成本率'] = data2[‘营业成本本年累计']/data2[‘营业收入本年累计']*100
当存在营业收入本年累计值为0的情形时,
计算出的营业成本率会变为inf(无穷大)。但在报表展示中,我们需要将其体现为零,可采用如下方法进行填充处理:
data2['营业成本率'] = data2['营业成本本年累计']/data2['营业收入本年累计']*100
data2['营业成本率'].replace([np.inf, -np.inf, "", np.nan], 0, inplace=True)
注意,该方法需要引用numpy库的支持。
具体操作是需要先导入相关库。
import pandas as pd # 导入panads
from openpyxl import load_workbook # 读取时导入这个
from openpyxl.styles import Font, Alignment # 设置单元格格式
from openpyxl.utils import get_column_letter, column_index_from_string
# 柱形BarChart 3D柱BarChart3D
from openpyxl.chart import label, BarChart3D, BarChart, Reference
import numpy as np
此外,也可以采用定义函数并结合apply方法的方式来实现。
def get_benrate(series):
shouru = series['营业收入本年累计']
chengben = series['营业成本本年累计']
if shouru == 0:
return 0
else:
return chengben/shouru*100
data2['营业成本率'] = 0
data2['营业成本率'] = data2.apply(get_benrate, axis=1)
此前虽然曾尝试使用其他方法
data2['三项费用完成比例本月数'] = 0
data2.loc[data2['任务指标三项费用'] != 0,'三项费用完成比例本月数'] = data2['三项费用合计本月数']/data2['任务指标三项费用']*100
解决过除数为0的情况,但在上述最开始的例子中,却始终无法生效,一直提示错误,具体原因尚不明确,也欢迎各位读者指正。
至此,关于Pandas DataFrame处理除数为零的探讨暂告一段落。如需了解更多相关Pandas DataFrame处理除数为零的内容,请搜索本站过往文章或继续浏览后续相关文章,希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









