Преглед на файлове

静态偏航误差增加损失电量

wenjia Li преди 6 месеца
родител
ревизия
052d0d7002
променени са 1 файла, в които са добавени 13 реда и са изтрити 3 реда
  1. 13 3
      dataAnalysisBusiness/algorithm/yawErrorAnalyst.py

+ 13 - 3
dataAnalysisBusiness/algorithm/yawErrorAnalyst.py

@@ -7,6 +7,7 @@ from algorithmContract.contract import Contract
 from behavior.analystWithGoodPoint import AnalystWithGoodPoint
 from plotly.subplots import make_subplots
 from scipy.optimize import curve_fit
+import math
 
 
 class YawErrorAnalyst(AnalystWithGoodPoint):
@@ -101,7 +102,7 @@ class YawErrorAnalyst(AnalystWithGoodPoint):
                 power_dict[k][m] = mean_power
             # 检查 yaw_data_value_co 是否为空
             if yaw_data_value_co.size == 0:
-                print(f"yaw_data_value_co k={k}是空的,无法计算argmax")
+                # print(f"yaw_data_value_co k={k}是空的,无法计算argmax")
                 continue
             else:
                 max_row = np.argmax(yaw_data_value_co[:, 0])
@@ -211,6 +212,7 @@ class YawErrorAnalyst(AnalystWithGoodPoint):
             results.append({
                 Field_NameOfTurbine: name[0],
                 Field_YawError: max_yaw_error_floor
+
             })
 
             #对 final_df 中的数据进行可视化
@@ -230,6 +232,9 @@ class YawErrorAnalyst(AnalystWithGoodPoint):
                 legend_title='风速区间',
                 showlegend=True
             )
+            # 将NAN转化为空字符串
+            yData = final_df[col].astype(str).replace(["None", "nan", "null", ""], "")
+            print("yData:", yData)
             # 确保从 Series 中提取的是具体的值
             engineTypeCode = turbineModelInfo.get(Field_MillTypeCode, "")
             if isinstance(engineTypeCode, pd.Series):
@@ -251,7 +256,7 @@ class YawErrorAnalyst(AnalystWithGoodPoint):
                             "engineCode": name[1],
                             "title": f'静态偏航误差分析 {name[0]}',
                             "xData": final_df[self.fieldWindDirFloor].tolist(),
-                            "yData": final_df[col].tolist(),
+                            "yData": yData.tolist(),
                             "legend": col,
                             "type": "lines+markers",
                             
@@ -320,7 +325,12 @@ class YawErrorAnalyst(AnalystWithGoodPoint):
         # 初始化一个空的DataFrame,指定列名
         columns = [Field_NameOfTurbine, Field_YawError]
         dataFrameResult = pd.DataFrame(results, columns=columns)
-
+        # 新增三列,分别表示 [0,3], (3,5], (5, 正无穷)
+        dataFrameResult['[0,3]'] = np.where((abs(dataFrameResult[Field_YawError]) >= 0) & (abs(dataFrameResult[Field_YawError]) <= 3), dataFrameResult[Field_YawError], 0)
+        dataFrameResult['(3,5]'] = np.where((abs(dataFrameResult[Field_YawError]) > 3) & (abs(dataFrameResult[Field_YawError]) <= 5), dataFrameResult[Field_YawError], 0)
+        dataFrameResult['(5, )'] = np.where(abs(dataFrameResult[Field_YawError]) > 5, dataFrameResult[Field_YawError], 0)
+        dataFrameResult["powerloss"]=((1 - np.cos(np.radians(dataFrameResult[Field_YawError])) ** 2) * 100).round(2)
+        print("损失电量:",dataFrameResult["powerloss"])
         filePathOfYawError = os.path.join(
             outputAnalysisDir, f"yaw_error_result{CSVSuffix}")
         dataFrameResult.to_csv(filePathOfYawError, index=False)