python - 找到一个公式/常数将表格替换为一个公式

标签 python excel vba data-analysis mathematical-optimization

首先,我需要道歉,因为下面的问题可能只是愚蠢的,所以请原谅我对数学的了解很少到零。
我已经使用 VBA 工作了很长时间并且对 Python 有点熟悉,我希望有人可以帮助我解决以下问题。
在下表中,我得到了一些值,其中列标题表示密度,表的第一列表示温度。


密度/温度
0.5
0.505
0.51
0.515
0.52
0.525
0.53
0.535
0.54
0.545
0.55


-2.5
1.051
1.05
1.048
1.047
1.046
1.045
1.043
1.042
1.041
1.04
1.039

-2
1.05
1.049
1.047
1.046
1.045
1.044
1.042
1.041
1.04
1.039
1.038

-1.5
1.048
1.047
1.046
1.044
1.043
1.042
1.041
1.04
1.038
1.038
1.037

-1
1.047
1.046
1.044
1.043
1.042
1.41
1.039
1.038
1.037
1.037
1.036

-0.5
1.046
1.045
1.043
1.042
1.041
1.04
1.038
1.037
1.036
1.036
1.035

0
1.044
1.43
1.042
1.041
1.04
1.038
1.037
1.036
1.035
1.035
1.034

0.5
1.043
1.042
1.04
1.039
1.038
1.037
1.036
1.035
1.034
1.033
1.032

1
1.41
1.04
1.039
1.038
1.037
1.036
1.035
1.034
1.033
1.032
1.031

1.5
1.04
1.039
1.037
1.037
1.036
1.035
1.034
1.033
1.032
1.031
1.03

2
1.038
1.038
1.036
1.035
1.034
1.033
1.032
1.031
1.03
1.03
1.029

2.5
1.037
1.036
1.035
1.034
1.033
1.032
1.031
1.03
1.029
1.029
1.028

3
1.036
1.035
1.033
1.033
1.032
1.031
1.03
1.029
1.028
1.028
1.027

3.5
1.034
1.033
1.032
1.031
1.03
1.03
1.029
1.028
1.027
1.027
1.026

4
1.033
1.032
1.031
1.03
1.029
1.029
1.028
1.027
1.026
1.026
1.025

4.5
1.031
1.03
1.029
1.029
1.028
1.027
1.026
1.026
1.025
1.025
1.024

5
1.03
1.029
1.028
1.027
1.027
1.026
1.025
1.025
1.024
1.023
1.023

5.5
1.028
1.028
1.027
1.026
1.025
1.025
1.024
1.023
1.022
1.022
1.022


现在我的实际 table 要大得多,这就是问题所在。将这一切添加到 VBA 模块中首先会使其打开或保存速度非常慢。
当然,我可以将整个表格保存到工作表中并作为查找表处理。但是考虑到这一点,将它放在一个可以生成完整表格的公式中会更好/更干净。
如前所述,在数学方面,我不是数据分析师,也不是真正的菜鸟。我只是希望只有一些可用的软件或一些 python 模块,我可以在其中将表格作为 csv 文件打开,该文件将被分析并获得某种公式常量。当然这可以更好地描述,但抱歉我不知道所有的数学术语。
也许整体是不可能的,但我愿意接受任何反馈。

额外补充澄清:
我可以理解的不是很清楚,我真诚的道歉!我的问题是,是否有某种方法可以从表中检索由 X 和 Y 定义的温度和密度的因子。 X 和 Y 会给你一个坐标,它代表这个表中的一个值。现在的问题是温度和密度是否有一个因子/公式来替换表格,这样我就可以计算出 X 和 Y 坐标的值

最佳答案

我假设你想找到一个近似函数,否则没有什么可谈的。据我所知,您的数据可以用线性公式近似。
enter image description here
我们可以使用 linear regression或者,在这种情况下,method of ordinary least squares .我们的最终公式看起来像 f(Density, Temperature) = k1*Density + k2*Temperature + k3 .但首先,让我们修复提供的数据。
enter image description here
接下来,我建议normalize data representation .将温度参数放在单独的列中。使用 Power Query 编辑器加载数据并应用非透视温度列。
enter image description here
然后我们必须为近似公式中的自由系数 k3 的归一化数据添加一个附加列。它的所有值都应该等于 1。
enter image description here
为了方便起见,让我们重命名未透视数据表。我将此表命名为 Data
enter image description here
完成所有准备后,将此公式放入新工作表上的任何单元格中:

=LET(MatrixA; Data[[Density]:[Coeff]]; MatrixB; Data[Value]; MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(MatrixA);MatrixA));TRANSPOSE(MatrixA));MatrixB))
在结果中,您将获得所需公式的系数 k1、k2、k3。
enter image description here
我用提供的数据得到了这个结果:
f(density, temperature) = -0.0025*density - 0.1783*temperature + 1.1329
期望的误差绝对值为0.003在这种情况下。
有关更多详细信息,我建议观看此视频:
  • Linear Regression With Multiple Variables and normal Equation, by Andrew Ng
  • What is Regression? by Zedstatistics
  • The Main Ideas of Fitting a Line to Data, by StatQuest
  • 关于python - 找到一个公式/常数将表格替换为一个公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71988051/

    相关文章:

    python - 如何从 Matplotlib 中的两个轴取消设置 `sharex` 或 `sharey`

    python - 使用 python django-dashing 从 MySQL 提取数据以显示在仪表板上

    vba - 复制粘贴 Excel VBA 代码说明

    python-3.x - 在 xlsxwriter 中以可读的方式缩放图像

    excel - Review 的跟踪更改使我的 VBA 项目无法查看

    vba - 如何将 CLEAN() 公式应用于整个 Excel 工作表?

    python - 如何使多连接数据加载原子化?

    c# - 在 Excel VSTO 中,如何检查工作表是否属于已关闭的工作簿?

    vba - Excel VBA - 如何从变量范围填充列表框的值?

    python : How to load column from multiblock csv tables?