我在一个数据框中有一些数据,我正试图创建另一个严格意义上是计算值的数据框。你知道吗
数据来自一个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()
如果我理解正确的话,我想这就是你想要的:
这将对
oat
列中的每个值执行计算,并将计算出的值存储在DataFrame上名为setpoint
的新列中。你知道吗相关问题 更多 >
编程相关推荐