线性数学矩阵计算

2024-09-27 07:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个数据框中有一些数据,我正试图创建另一个严格意义上是计算值的数据框。你知道吗

数据来自一个CSV格式的供热厂,我上传到我创建的Github帐户。https://github.com/bbartling/Data

data = pd.read_csv('C:\\Users\\Python Scripts\\SetPoint_data.csv', index_col='Date', parse_dates=True)

data.info()

输出为:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 69839 entries, 2017-10-01 05:00:11.205000 to 2018-01-02 05:45:14.419000
Data columns (total 3 columns):
hwr    69839 non-null float64
hws    69839 non-null float64
oat    69839 non-null float64
dtypes: float64(3)
memory usage: 2.1 M

B类

我要做的是计算一个锅炉系统的设定值,这个设定值是基于室外空气温度的。data[('oat')]其他数据点是热水回水和供水温度。最终,我想看看锅炉系统的性能有多接近设定值。你知道吗

我要计算的设定值是在室外空气温度为10华氏度时,热水的设定值为170华氏度;在室外空气温度为40华氏度时,热水的设定值为130华氏度。这真的是一个简单的线性重置计算,但我不知道如何建立另一个熊猫数据帧。你知道吗

X = data[('oat')]

def setpoint_calc(X):
    A = np.matrix([[10,1],[40,1]])
    B = np.matrix([[170],[130]])
    A_inverse = np.linalg.inv(A)
    X = A_inverse * B

    return X

setpoint_calc(X)

输出为:

matrix([[  -1.33333333],
        [ 183.33333333]])

那么,如何扫描x值的范围,得出计算出的设定点呢?设定值=-1.33333333*数据[('oat')]+183.33333333

我知道我需要对2d numpy数组进行切片/索引,但我不确定如何。。循环中最好的方法是什么?你知道吗

setpoint = pd.DataFrame()
for X in X:
    setpoint_calc.append(X)

我可以直观地把它放到一个散点图中,用一些线来表示我试图在一个单独的数据帧中计算的内容。。。希望这是有意义的:

plt.scatter(data['oat'], data['hws'], color='grey', marker='+')

plt.plot([10,40],[170,130], color='blue', label='Reset Range')

plt.plot([40,80],[130,130], color='green', label='130F during mild weather')
plt.plot([-25,10],[170,170], color='red', label='170F during cold weather')

plt.xlabel('Outdoor Temp')
plt.ylabel('Hot Water Temp')
plt.title('Calculated Setpoint')

plt.legend()

plt.show()

scatter


Tags: 数据datanpcalcplt温度nullcolor
1条回答
网友
1楼 · 发布于 2024-09-27 07:31:57

如果我理解正确的话,我想这就是你想要的:

data['setpoint'] = data['oat'].apply(lambda x: -1.33333333 * x + 183.33333333)

这将对oat列中的每个值执行计算,并将计算出的值存储在DataFrame上名为setpoint的新列中。你知道吗

相关问题 更多 >

    热门问题