比较两份数据的前后差异(用于数据调整前后对比)

本文介绍了一种通过创建两个数据页面来实现预算变更前后对比的方法。通过定义特定规则,当数据变化超过阈值时,系统能自动标记并显示差异,便于业务人员快速了解变更情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在预算服务系统中,各单位的预算费用在实际使用过程中,总会出现一些变更申请,需要调整预算费用。在预算费用调整后,预算管理人员都会希望看到各单位预算费用的初始情况和调整情况,简单直观地观察到哪些数据有变更,甚至观察到变更值是多少,检查各单位的预算变更情况,严格控制和调控费用的输出情况,甚至用于考核各单位的实施能力,给各单位做出评价。如下图:

对于这个需求,我们先从两个数据页面开始动手,创建两个sheet,其中,数据结构和顺序保持一致,这样子保证让业务人员看到的数据组成结构是一致的,在切换不同sheet的时候,就可以快速知道哪些项目的数据有变更;创建的两个sheet页面,分别用来展现调整前和调整后的数据,再通过其中一个sheet如调整后数据,设置条件属性,定义当当前数据和调整前的对应数据存在一定差值时,就显示红色,完成这一步骤之后,随着需求的扩展,还可以显示数据的差额是多少等等。

如下:

1、报表页面设计

sheet1表示数据调整前的页面:

sheet2表示数据调整后的页面:

2、设置调整数据,定义规则

在数据调整后的页面,对需要进行做比较的页面的数据,定义公式规则,当当前调整后数据与调整前数据的差值大于0.01时,改变当前单元格的字体,显示为红色:

=ABS($$$- INDEXOFARRAY('sheet1'!C2, ( A2- 1)*COUNT('sheet1'!C1) + INARRAY(C1, 'sheet1'!C1)))>0.01

此处设计的是包含数据横向扩展和纵向扩展都存在的报表,包含做数据对比时的多种场景,对应公式规则开发人员可以根据实际情况截取。此处$$$表示当前值,每个单元格中用来扩展的数据字段内容,都是数组型数据,则需要获取该数组中的数据数量,确定当前费用项目所在的位置,从而获取调整前的对应数据,再进行计算。

3、效果图

 

如上所示,就可以快速开发,实现数据调整前后的对比,快速直观地将有变更的数据,反映给业务人员。

4、扩展

在此基础上,我们还可以进一步,让系统自动计算数据调整前后的差额大小,并在每个有变更值的位置,显示变更的数值为多少,将变更至显示在数据后,更加方便业务人员的使用,为业务人员提供更加方便快捷的数据系统操作,快速了解数据差异值。

### 车辆数据归一化处理前后的效果图对比数据分析领域,尤其是涉及机器学习模型训练时,数据归一化是一项重要的预处理技术。通过将不同量纲或范围的数据映射到同一区间(通常为[0,1]),可以显著提升算法性能和结果质量。 #### 归一化的定义与作用 归一化是一种常见的数据变换方法,它通过对原始数据进行缩放和平移操作,使数据集中每列特征的取值范围一致[^3]。对于车辆数据而言,可能包含诸如速度、加速度、油耗等多种物理意义不同的指标。这些指标由于单位差异可能导致某些特征主导距离度量的结果,从而影响后续分析的有效性。 #### 实现方式 Python中的`scikit-learn`库提供了便捷的方法来进行归一化处理——即利用`preprocessing.MinMaxScaler`类完成这一任务。下面是一个简单的代码示例展示如何应用该工具: ```python from sklearn.preprocessing import MinMaxScaler import numpy as np import matplotlib.pyplot as plt # 假设这是我们的原始车辆数据(n_samples, n_features) data = np.array([[70, 8], [80, 9], [90, 10], [100, 12]]) # 创建并初始化MinMaxScaler对象 scaler = MinMaxScaler(feature_range=(0, 1)) # 对数据执行fit_transform操作得到归一化后的版本 scaled_data = scaler.fit_transform(data) # 绘制原数据与归一化后数据对比图 plt.figure(figsize=(12, 6)) plt.subplot(1, 2, 1) plt.scatter(data[:, 0], data[:, 1]) plt.title('Original Data') plt.xlabel('Speed') plt.ylabel('Acceleration') plt.subplot(1, 2, 2) plt.scatter(scaled_data[:, 0], scaled_data[:, 1]) plt.title('Normalized Data') plt.xlabel('Scaled Speed') plt.ylabel('Scaled Acceleration') plt.tight_layout() plt.show() ``` 上述脚本首先创建了一个模拟的小型车辆数据矩阵,接着运用了`MinMaxScaler`对其进行转换,并最终借助matplotlib绘制出了两幅散点图用于直观比较两者之间的区别。 #### 效果评估 从理论上讲,在未经过任何调整的情况下,如果某项属性具有较大的绝对数值或者较高的方差,则其在整个空间内的权重会显得更为突出;反之亦然。然而一旦完成了归一化步骤之后,所有维度都将处于相同的尺度之下,因此它们各自贡献的比例关系得以重新平衡,有助于提高诸如K-means聚类这样的基于欧氏距离衡量相似性的算法表现水平[^1]。 另外值得注意的是,虽然这里讨论的重点放在了Min-Max Scaling上,但实际上还有其他形式的标准转化策略可供选择,比如采用Z-score标准化法来替代传统的线性比例变化方案[Z-Score][^2]。这种方法尤其适合那些期望保留原有分布特性的场景下使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值