sigma 处理

发布时间 2023-12-15 19:40:27作者: 楚格

1.开发思路:

第一部分:数据规整,目的整理出数据统一的raw data 

第二部分:数据处理,读取规整后的数据,进行处理,最终生成sigma

2.开发技术点:

2.1 读取excel的相关知识点(csv 数据提取与xlsx格式)

2.2遍历行列的逻辑处理

2.3筛选出数据存储到列表,基于列表计算sigma值

2.4生成值如何保存到新的excel中

2.5 支持CP 、FT数据处理(43xx)

 

 

 

# ---- code start ----#

   1 # -*- coding:utf-8 -*-
   2 # @Author: Alex
   3 import os
   4 # import time
   5 # import math
   6 # import string
   7 import datetime
   8 import xlrd
   9 # import xlwt
  10 import openpyxl
  11 from openpyxl import load_workbook
  12 # from openpyxl.styles import PatternFill
  13 import numpy as np
  14 
  15 import pandas as pd
  16 import zipfile
  17 from openpyxl import Workbook
  18 
  19 '''
  20 //==========================================================================================================//
  21 //  sigma_handle_scan
  22 //==========================================================================================================//
  23 '''
  24 
  25 
  26 def sigma_handle_scan(s_file_path, s_temp_path, t_file_path):
  27     datetime_object_s = datetime.datetime.now()
  28     print("\n datetime_object_s :", datetime_object_s)
  29     source_map = s_file_path
  30     source_temp = s_temp_path
  31     source_target = t_file_path
  32     print('\n\t 打印源目标路径1:', source_map)
  33     print('\n\t 打印源目标路径2:', source_temp)
  34     print('\n\t 打印源目标路径3:', source_target)
  35 
  36     # 源文件
  37     source_map1_object = xlrd.open_workbook(source_map)
  38     print('\n\t 读取源目标map对象:', source_map1_object)
  39     print('\n\t 源目标map对象sheet:', len(source_map1_object.sheets()), source_map1_object.sheets())
  40 
  41     for sheet in range(len(source_map1_object.sheets())):
  42         source_table1 = source_map1_object.sheet_by_index(sheet)
  43         source_rows = source_table1.nrows
  44         source_cols = source_table1.ncols
  45         print('\n\t 源文件:行数%d 列数%d' % (source_rows, source_cols))
  46         empty = ""
  47         # 预处理
  48         for map_x0 in range(8, source_rows):  # source_rows
  49             map_x0_rt = map_x0 + 1
  50             for map_y0 in range(20, source_cols):
  51                 map_y0_rt = map_y0 + 1
  52                 print(map_x0, map_y0, source_table1.cell_value(rowx=(map_x0 - 1), colx=(map_y0 - 1)),
  53                       type(source_table1.cell_value(rowx=(map_x0 - 1), colx=(map_y0 - 1))))
  54                 if source_table1.cell_value(rowx=map_x0, colx=map_y0) == empty:
  55                     print("需要处理:empty")
  56                     print(map_x0_rt, map_y0_rt, source_table1.cell_value(rowx=map_x0, colx=map_y0))
  57                 else:
  58                     if type(source_table1.cell_value(rowx=map_x0, colx=map_y0)) == type(1.1):
  59                         pass
  60                     else:
  61                         print("需要处理:非数字")
  62                         print(map_x0, map_y0, source_table1.cell_value(rowx=map_x0, colx=map_y0))
  63         datetime_object_e = datetime.datetime.now()
  64         print("\n datetime_object_e :", datetime_object_e)
  65 
  66         print("总时间:", datetime_object_e - datetime_object_s)
  67 
  68 
  69 '''
  70 //==========================================================================================================//
  71 //  sigma_handle2
  72 //==========================================================================================================//
  73 '''
  74 
  75 
  76 def sigma_handle2(s_file_path, s_temp_path, t_file_path):
  77     datetime_object1 = datetime.datetime.now()
  78     print("datetime_object1 :", datetime_object1)
  79 
  80     source_map = s_file_path
  81     source_temp = s_temp_path
  82     source_target = t_file_path
  83     print('打印源目标路径1:', source_map)
  84     print('打印源目标路径2:', source_temp)
  85     print('打印源目标路径3:', source_target)
  86 
  87     # 源文件
  88     source_map1_object = xlrd.open_workbook(source_map)
  89     target_workbook = openpyxl.Workbook()
  90 
  91     for sheet in range(len(source_map1_object.sheets())):
  92         source_table1 = source_map1_object.sheet_by_index(sheet)
  93         source_rows = source_table1.nrows
  94         source_cols = source_table1.ncols
  95         print('\n\t 源文件:行数%d 列数%d' % (source_rows, source_cols))
  96         datetime_object2 = datetime.datetime.now()
  97         print("\n datetime_object2 :", datetime_object2)
  98         new_worksheet = target_workbook.active
  99         # fill0   = PatternFill('solid', fgColor='AAFF32')
 100         # fill1   = PatternFill('solid', fgColor='FFFF00')
 101         # fill2   = PatternFill('solid', fgColor='ceb301')
 102         # fill3   = PatternFill('solid', fgColor='ff796c')
 103         # fill4   = PatternFill('solid', fgColor='f97306')
 104         # fill_w1 = PatternFill('solid', fgColor='9a0eea')
 105         rty = 'P'  # empty die
 106         empty = ""
 107         reduce_count = 0
 108 
 109         # 第一部分 筛选BIN1
 110         for map_x1 in range(0, source_rows):  # source_rows
 111             map_x1_rt = map_x1 + 1
 112             datetime_object2_1 = datetime.datetime.now()
 113             print("datetime_object2_1 :", datetime_object2_1)
 114             # 从左到右扫描
 115             # print(map_x1_rt, 13, source_table1.cell_value(rowx=(map_x1 - 1), colx=(13)))
 116             if map_x1 > 6:
 117                 if rty == source_table1.cell_value(rowx=map_x1, colx=13):
 118                     for map_y1 in range(0, source_cols):
 119                         map_y1_rt = map_y1 + 1
 120                         # print(map_x1,map_y1,source_table1.cell_value(rowx=(map_x1-1),colx=(map_y1-1)))
 121                         new_worksheet.cell((map_x1_rt - reduce_count), map_y1_rt).value = source_table1.cell_value(rowx=map_x1, colx=map_y1)
 122                 else:
 123                     reduce_count = reduce_count + 1
 124             else:
 125                 for map_y0 in range(0, source_cols):
 126                     map_y0_rt = map_y0 + 1
 127                     new_worksheet.cell(map_x1_rt, map_y0_rt).value = source_table1.cell_value(rowx=map_x1, colx=map_y0)
 128                 # print('\n\t坐标信息:',map_x1_rt,map_y1_rt,map_x1,map_y1)
 129         target_workbook.save(source_temp)
 130         datetime_object3 = datetime.datetime.now()
 131         print("\n datetime_object3 :", datetime_object3)
 132         # 第二部分 筛选计算sigma source_temp
 133         target2_workbook = load_workbook(filename=source_temp)
 134         new2_worksheet = target2_workbook.active
 135 
 136         # 创建一个新的 Excel 文件
 137         workbook = openpyxl.Workbook()
 138         one_sheet = workbook.active
 139         # 固定格式抬头
 140         test_result_v0 = ["project_name", "down_limit", "up_limit", "unit", "mean", "std",
 141                           "3sigma_down", "3sigma_up", "3sigma_percentage",
 142                           "4sigma_down", "4sigma_up", "4sigma_percentage",
 143                           "5sigma_down", "5sigma_up", "5sigma_percentage",
 144                           "6sigma_down", "6sigma_up", "6sigma_percentage", ]
 145         one_sheet.append(test_result_v0)  # 追加一行数据
 146 
 147         target_rows = new2_worksheet.max_row
 148         target_cols = new2_worksheet.max_column
 149         print('\n target坐标:', target_rows, target_cols)
 150 
 151         def_rows_test = 8
 152         # def_columns_test = 19
 153         def_columns_test = 20  # 20
 154 
 155         for sigma_y in range(0, target_cols):  # 368
 156             sigma_yy = sigma_y + 1
 157             each_column = []
 158             each_column2 = []
 159             test_result_v1 = []
 160             datetime_object4 = datetime.datetime.now()
 161             print("datetime_object4 :", datetime_object4)
 162             for sigma_x in range(0, target_rows):  # 37
 163                 sigma_xx = sigma_x + 1
 164                 # new2_worksheet.cell(sigma_xx, sigma_yy).value
 165                 # print('\n 每列值:',new_worksheet.cell(sigma_xx, sigma_yy).value)
 166                 each_column.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 167                 # # 单独增加抬头
 168                 if sigma_yy >= def_columns_test:
 169                     if (sigma_xx > 1) and (sigma_xx < 3) == 1:
 170                         test_result_v1.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 171                     if (sigma_xx > 3) and (sigma_xx < 7) == 1:
 172                         test_result_v1.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 173                 # 单独增加有效数据
 174                 if (sigma_xx >= def_rows_test) and (sigma_yy >= def_columns_test) == 1:
 175                     each_column2.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 176             # print('\n   每列数据1:',   each_column)
 177             # print('\n\t 有效数据2:',   each_column2  )
 178             print('列数 >>>: ', sigma_yy)
 179             each_column3 = each_column[7:len(each_column)]
 180 
 181             # 去除前8个值
 182             if (sigma_xx >= def_rows_test) and (sigma_yy >= def_columns_test) == 1:
 183                 # print('\n\t 有效数据3:', each_column3)
 184                 sigma_yy_effective = sigma_yy - def_columns_test + 1
 185                 test_MEAN = np.mean(each_column3)
 186                 test_STD = np.std(each_column3)
 187                 # print('test_MEAN:', test_MEAN)
 188                 # print('test_STD:', test_STD)
 189 
 190                 sigma3_up = test_MEAN + 3 * test_STD
 191                 sigma3_down = test_MEAN - 3 * test_STD
 192                 sigma4_up = test_MEAN + 4 * test_STD
 193                 sigma4_down = test_MEAN - 4 * test_STD
 194                 sigma5_up = test_MEAN + 5 * test_STD
 195                 sigma5_down = test_MEAN - 5 * test_STD
 196                 sigma6_up = test_MEAN + 6 * test_STD
 197                 sigma6_down = test_MEAN - 6 * test_STD
 198                 print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), )
 199                 print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), )
 200                 print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), )
 201                 print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), )
 202                 sigma3_count = 0
 203                 sigma4_count = 0
 204                 sigma5_count = 0
 205                 sigma6_count = 0
 206                 # sigma3_proportion = 0
 207                 # sigma4_proportion = 0
 208                 # sigma5_proportion = 0
 209                 # sigma6_proportion = 0
 210                 for index_v2 in range(len(each_column3)):
 211                     # print(each_column3[index_v2])
 212                     if (sigma3_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma3_down):
 213                         sigma3_count = sigma3_count + 1
 214                         # print(sigma3_count,test_get_data_v1[index_v2])
 215                     if (sigma4_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma4_down):
 216                         sigma4_count = sigma4_count + 1
 217                     if (sigma5_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma5_down):
 218                         sigma5_count = sigma5_count + 1
 219                     if (sigma6_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma6_down):
 220                         sigma6_count = sigma6_count + 1
 221                 sigma3_proportion = (sigma3_count / len(each_column3)) * 100
 222                 sigma4_proportion = (sigma4_count / len(each_column3)) * 100
 223                 sigma5_proportion = (sigma5_count / len(each_column3)) * 100
 224                 sigma6_proportion = (sigma6_count / len(each_column3)) * 100
 225                 print("平均值: %.12f" % test_MEAN)
 226                 print("标准差: %.12f" % test_STD)
 227                 print("每列总数量为: ", len(each_column3))
 228                 print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), ' percent: {:.2f}%'.format(sigma3_proportion), sigma3_count)
 229                 print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), ' percent: {:.2f}%'.format(sigma4_proportion), sigma4_count)
 230                 print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), ' percent: {:.2f}%'.format(sigma5_proportion), sigma5_count)
 231                 print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), ' percent: {:.2f}%'.format(sigma6_proportion), sigma6_count)
 232                 print('*****第%d笔数据***********\n' % sigma_yy_effective)
 233 
 234                 test_result_v1.append(test_MEAN)
 235                 test_result_v1.append(test_STD)
 236                 test_result_v1.append(round(sigma3_down, 2))
 237                 test_result_v1.append(round(sigma3_up, 2))
 238                 test_result_v1.append(round(sigma3_proportion, 2))
 239                 test_result_v1.append(round(sigma4_down, 2))
 240                 test_result_v1.append(round(sigma4_up, 2))
 241                 test_result_v1.append(round(sigma4_proportion, 2))
 242                 test_result_v1.append(round(sigma5_down, 2))
 243                 test_result_v1.append(round(sigma5_up, 2))
 244                 test_result_v1.append(round(sigma5_proportion, 2))
 245                 test_result_v1.append(round(sigma6_down, 2))
 246                 test_result_v1.append(round(sigma6_up, 2))
 247                 test_result_v1.append(round(sigma6_proportion, 2))
 248                 # pass 一行处理结束
 249 
 250             # 新增数据到excel中
 251             datetime_object5 = datetime.datetime.now()
 252             print("datetime_object5 :", datetime_object5)
 253             if sigma_yy >= def_columns_test:
 254                 # print(test_result_v1)
 255                 one_sheet.append(test_result_v1)  # 追加一行数据
 256         # for row in new2_worksheet.values:  # 输出所有数据
 257         #     print(row)
 258         datetime_object6 = datetime.datetime.now()
 259         print("datetime_object6 :", datetime_object6)
 260         workbook.save(source_target)
 261 
 262         print('总时间:', datetime_object6 - datetime_object1)
 263 
 264 
 265 '''
 266 //==========================================================================================================//
 267 //  sigma_handle3(仅处理生成的BIN1文件)
 268 //==========================================================================================================//
 269 '''
 270 
 271 
 272 def sigma_handle3(s_file_path, s_temp_path, t_file_path):
 273     datetime_object1 = datetime.datetime.now()
 274     print("\n datetime_object1 :", datetime_object1)
 275 
 276     print('\n\t 打印源目标路径1:', s_file_path)
 277     print('\n\t 打印源目标路径2:', s_temp_path)
 278     print('\n\t 打印源目标路径3:', t_file_path)
 279 
 280     source_map = s_file_path
 281     source_temp = s_temp_path
 282     source_target = t_file_path
 283 
 284     # 第二部分 筛选计算sigma source_temp
 285     target2_workbook = load_workbook(filename=source_temp)
 286     new2_worksheet = target2_workbook.active
 287 
 288     # 创建一个新的 Excel 文件
 289     workbook = openpyxl.Workbook()
 290     one_sheet = workbook.active
 291     # 固定格式抬头
 292     test_result_v0 = ["project_name", "down_limit", "up_limit", "unit", "mean", "std",
 293                       "3sigma_down", "3sigma_up", "3sigma_percentage",
 294                       "4sigma_down", "4sigma_up", "4sigma_percentage",
 295                       "5sigma_down", "5sigma_up", "5sigma_percentage",
 296                       "6sigma_down", "6sigma_up", "6sigma_percentage", ]
 297     one_sheet.append(test_result_v0)  # 追加一行数据
 298 
 299     target_rows = new2_worksheet.max_row
 300     target_cols = new2_worksheet.max_column
 301     print('\n target坐标:', target_rows, target_cols)
 302 
 303     def_rows_test = 8
 304     # def_columns_test = 19
 305     def_columns_test = 20  # 20
 306 
 307     for sigma_y in range(0, target_cols):  # 368
 308         sigma_yy = sigma_y + 1
 309         each_column = []
 310         each_column2 = []
 311         test_result_v1 = []
 312         datetime_object4 = datetime.datetime.now()
 313         print("\n datetime_object4 :", datetime_object4)
 314         for sigma_x in range(0, target_rows):  # 37
 315             sigma_xx = sigma_x + 1
 316             # new2_worksheet.cell(sigma_xx, sigma_yy).value
 317             # print('\n 每列值:',new_worksheet.cell(sigma_xx, sigma_yy).value)
 318             each_column.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 319             # # 单独增加抬头
 320             if sigma_yy >= def_columns_test:
 321                 if (sigma_xx > 1) and (sigma_xx < 3) == 1:
 322                     test_result_v1.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 323                 if (sigma_xx > 3) and (sigma_xx < 7) == 1:
 324                     test_result_v1.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 325             # 单独增加有效数据
 326             if (sigma_xx >= def_rows_test) and (sigma_yy >= def_columns_test) == 1:
 327                 each_column2.append(new2_worksheet.cell(sigma_xx, sigma_yy).value)
 328         # print('\n   每列数据1:',   each_column)
 329         # print('\n\t 有效数据2:',   each_column2  )
 330         print('\n\t 列数--->:', sigma_yy)
 331         each_column3 = each_column[7:len(each_column)]
 332 
 333         # 去除前8个值
 334         if (sigma_xx >= def_rows_test) and (sigma_yy >= def_columns_test) == 1:
 335             # print('\n\t 有效数据3:', each_column3)
 336             sigma_yy_effective = sigma_yy - def_columns_test + 1
 337             # test_SUM = np.sum(each_column3)
 338             test_MEAN = np.mean(each_column3)
 339             test_STD = np.std(each_column3)
 340             # print('\n test_SUM:', test_SUM)
 341             print('\n test_MEAN:', test_MEAN)
 342             print('\n test_STD:', test_STD)
 343 
 344             sigma3_up = test_MEAN + 3 * test_STD
 345             sigma3_down = test_MEAN - 3 * test_STD
 346             sigma4_up = test_MEAN + 4 * test_STD
 347             sigma4_down = test_MEAN - 4 * test_STD
 348             sigma5_up = test_MEAN + 5 * test_STD
 349             sigma5_down = test_MEAN - 5 * test_STD
 350             sigma6_up = test_MEAN + 6 * test_STD
 351             sigma6_down = test_MEAN - 6 * test_STD
 352             print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), )
 353             print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), )
 354             print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), )
 355             print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), )
 356             sigma3_count = 0
 357             sigma4_count = 0
 358             sigma5_count = 0
 359             sigma6_count = 0
 360             # sigma3_proportion = 0
 361             # sigma4_proportion = 0
 362             # sigma5_proportion = 0
 363             # sigma6_proportion = 0
 364             for index_v2 in range(len(each_column3)):
 365                 # print(each_column3[index_v2])
 366                 if (sigma3_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma3_down):
 367                     sigma3_count = sigma3_count + 1
 368                     # print(sigma3_count,test_get_data_v1[index_v2])
 369                 if (sigma4_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma4_down):
 370                     sigma4_count = sigma4_count + 1
 371                 if (sigma5_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma5_down):
 372                     sigma5_count = sigma5_count + 1
 373                 if (sigma6_up >= each_column3[index_v2]) and (each_column3[index_v2] >= sigma6_down):
 374                     sigma6_count = sigma6_count + 1
 375             sigma3_proportion = (sigma3_count / len(each_column3)) * 100
 376             sigma4_proportion = (sigma4_count / len(each_column3)) * 100
 377             sigma5_proportion = (sigma5_count / len(each_column3)) * 100
 378             sigma6_proportion = (sigma6_count / len(each_column3)) * 100
 379             # print("求和值: %.12f" % test_SUM)
 380             print("平均值: %.12f" % test_MEAN)
 381             print("标准差: %.12f" % test_STD)
 382             print("每列总数量为: ", len(each_column3))
 383             print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), ' percent: {:.2f}%'.format(sigma3_proportion), sigma3_count)
 384             print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), ' percent: {:.2f}%'.format(sigma4_proportion), sigma4_count)
 385             print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), ' percent: {:.2f}%'.format(sigma5_proportion), sigma5_count)
 386             print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), ' percent: {:.2f}%'.format(sigma6_proportion), sigma6_count)
 387             print('*****第%d笔数据***********\n' % sigma_yy_effective)
 388 
 389             test_result_v1.append(test_MEAN)
 390             test_result_v1.append(test_STD)
 391             test_result_v1.append(round(sigma3_down, 2))
 392             test_result_v1.append(round(sigma3_up, 2))
 393             test_result_v1.append(round(sigma3_proportion, 2))
 394             test_result_v1.append(round(sigma4_down, 2))
 395             test_result_v1.append(round(sigma4_up, 2))
 396             test_result_v1.append(round(sigma4_proportion, 2))
 397             test_result_v1.append(round(sigma5_down, 2))
 398             test_result_v1.append(round(sigma5_up, 2))
 399             test_result_v1.append(round(sigma5_proportion, 2))
 400             test_result_v1.append(round(sigma6_down, 2))
 401             test_result_v1.append(round(sigma6_up, 2))
 402             test_result_v1.append(round(sigma6_proportion, 2))
 403             # pass 一行处理结束
 404 
 405         # 新增数据到excel中
 406         datetime_object5 = datetime.datetime.now()
 407         print("\n datetime_object5 :", datetime_object5)
 408         if sigma_yy >= def_columns_test:
 409             print(test_result_v1)
 410             one_sheet.append(test_result_v1)  # 追加一行数据
 411         # for row in new2_worksheet.values:  # 输出所有数据
 412         #     print(row)
 413         datetime_object6 = datetime.datetime.now()
 414         print("\n datetime_object6 :", datetime_object6)
 415         workbook.save(source_target)
 416 
 417         print('总时间:', datetime_object6 - datetime_object1)
 418 
 419 
 420 '''
 421 //==========================================================================================================//
 422 //  get_file_relative( 获取文件相对路径 )
 423 //==========================================================================================================//
 424 '''
 425 
 426 
 427 def get_file_relative(file_path):
 428     # print("#------------ 获取文件相对路径 ------------------#")
 429     # """1、读取文件"""
 430     get_work_list_a1 = os.getcwd()
 431     print("当前工作路径: ", get_work_list_a1)
 432     print("当前工作脚本: ", os.path.abspath(__file__))
 433     # 路径合成
 434     # \3_vi4302_cp\3_vi4302_cp_data
 435     get_work_list_b1 = get_work_list_a1 + file_path
 436     print("当前数据路径: ", get_work_list_b1)
 437     # 路径下文件 存储到列表中
 438     get_work_list_c1 = [os.path.join(get_work_list_b1, file) for file in os.listdir(get_work_list_b1)]
 439     # 遍历文件列表,输出文件名
 440     print('#------- 当前文件夹下文件 --------#   [提示:起始地址=0]')
 441     # print(get_work_list_c1)  # enumerate
 442     for index_a1, index_a1_value in enumerate(get_work_list_c1):
 443         print('文件夹第--> %d <--个文件: ' % index_a1, index_a1_value)
 444     print("请输入处理的文件为:   [提示:输入序号即可]")
 445     input_a1 = input()
 446     input_a2 = int(input_a1)
 447     get_work_name_c1 = get_work_list_c1[input_a2]
 448     print("输入序号为 < %s > ,处理的文件为: " % input_a1, get_work_name_c1)
 449 
 450     result = get_work_name_c1
 451     return result
 452 
 453 
 454 
 455 '''
 456 //==========================================================================================================//
 457 //  sigma_4302_ft_handle1( 4302 FT )
 458 //==========================================================================================================//
 459 '''
 460 def sigma_4302_ft_handle1():
 461     datetime_object1 = datetime.datetime.now()
 462     print("dsigma_4302_ft_handle1_object :", datetime_object1)
 463 
 464     # source_temp1    = "./4_vi4302_ft/3_vi4302_ft_data/"
 465     outputdir_path4 = "./4_vi4302_ft/4_vi4302_ft_data_temp/"
 466     result_path4 = "./4_vi4302_ft/5_vi4302_ft_data_result/vi4302_ft_sigma_result.xlsx"
 467 
 468 
 469     #---处理有效数据
 470     file_list1 = os.listdir(outputdir_path4)
 471     print('excel文件根目录: ', file_list1)
 472     for name in file_list1:
 473         input_file_txt = os.path.join(outputdir_path4, name)
 474         # output_file_excel = os.path.join(outputdir_path3, name).replace('.txt', '.xlsx')
 475         # sheet_name = name.replace(".txt", '')
 476         print("input_file_txt 路径: ",input_file_txt)
 477         # print("文件名称: ",sheet_name)
 478         datetime_object2 = datetime.datetime.now()
 479         print("\n datetime_object2 :", datetime_object2)
 480 
 481         # 创建一个新的 Excel 文件
 482         n3_workbook = openpyxl.Workbook()
 483         n3_sheet = n3_workbook.active
 484         test_result_v2 = ["project_name", "up_limit", "down_limit",  "unit", "mean", "std",
 485                           "3sigma_down", "3sigma_up", "3sigma_percentage",
 486                           "4sigma_down", "4sigma_up", "4sigma_percentage",
 487                           "5sigma_down", "5sigma_up", "5sigma_percentage",
 488                           "6sigma_down", "6sigma_up", "6sigma_percentage", ]
 489         n3_sheet.append(test_result_v2)  # 追加一行数据
 490 
 491 
 492         # 导入源文件
 493         s1_workbook = load_workbook(filename=input_file_txt, read_only=True)
 494         sigma_f1 = s1_workbook.active
 495         f1_x_rows = sigma_f1.max_row
 496         f1_y_cols = sigma_f1.max_column
 497         print('\n 源文件坐标范围: 行%d  列%d' % (f1_x_rows, f1_y_cols))
 498 
 499         datetime_object3 = datetime.datetime.now()
 500         print("datetime_object3 :", datetime_object3)
 501 
 502         # 预处理坐标点
 503         def_start_line = 0
 504         def_start_vertical = 3
 505         list_data_all = []
 506         # 大循环
 507         for ft_y1 in range(def_start_vertical, f1_y_cols):  #  f1_y_cols columns
 508             w1_yy = ft_y1 + 1
 509             sigma_yy_effective = ft_y1
 510             each_data_line_all = []
 511             each_data_line = []
 512             test_result_v2 = []
 513             datetime_object4 = datetime.datetime.now()
 514             print("datetime_object4 :", datetime_object4)
 515             for ft_x1 in range(def_start_line, 20):  # f1_y_cols columns
 516                 w1_xx = ft_x1 + 1
 517                 result_f1 = sigma_f1.cell(w1_xx, w1_yy).value
 518                 each_data_line_all.append(result_f1)
 519                 # print("result_f1 :", result_f1)
 520                 datetime_object5 = datetime.datetime.now()
 521                 # print("datetime_object5 :", datetime_object5)
 522             print("\n每列的值:",each_data_line_all)
 523             # "project_name", "down_limit", "up_limit", "unit",
 524             test_result_v2.append(each_data_line_all[1])
 525             test_result_v2.append(each_data_line_all[3])
 526             test_result_v2.append(each_data_line_all[4])
 527             test_result_v2.append(each_data_line_all[5])
 528             each_data_line = each_data_line_all[6:len(each_data_line_all)]
 529             print("\n每列计算值:", each_data_line)
 530 
 531             test_MEAN = np.mean(each_data_line)
 532             test_STD = np.std(each_data_line)
 533             # print('\n test_SUM:', test_SUM)
 534             print('test_MEAN:', test_MEAN)
 535             print('test_STD:', test_STD)
 536 
 537             sigma3_up = test_MEAN + 3 * test_STD
 538             sigma3_down = test_MEAN - 3 * test_STD
 539             sigma4_up = test_MEAN + 4 * test_STD
 540             sigma4_down = test_MEAN - 4 * test_STD
 541             sigma5_up = test_MEAN + 5 * test_STD
 542             sigma5_down = test_MEAN - 5 * test_STD
 543             sigma6_up = test_MEAN + 6 * test_STD
 544             sigma6_down = test_MEAN - 6 * test_STD
 545             print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), )
 546             print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), )
 547             print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), )
 548             print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), )
 549 
 550             sigma3_count = 0
 551             sigma4_count = 0
 552             sigma5_count = 0
 553             sigma6_count = 0
 554             # sigma3_proportion = 0
 555             # sigma4_proportion = 0
 556             # sigma5_proportion = 0
 557             # sigma6_proportion = 0
 558             for index_v2 in range(len(each_data_line)):
 559                 # print(each_column3[index_v2])
 560                 if (sigma3_up >= each_data_line[index_v2]) and (each_data_line[index_v2] >= sigma3_down):
 561                     sigma3_count = sigma3_count + 1
 562                     # print(sigma3_count,test_get_data_v1[index_v2])
 563                 if (sigma4_up >= each_data_line[index_v2]) and (each_data_line[index_v2] >= sigma4_down):
 564                     sigma4_count = sigma4_count + 1
 565                 if (sigma5_up >= each_data_line[index_v2]) and (each_data_line[index_v2] >= sigma5_down):
 566                     sigma5_count = sigma5_count + 1
 567                 if (sigma6_up >= each_data_line[index_v2]) and (each_data_line[index_v2] >= sigma6_down):
 568                     sigma6_count = sigma6_count + 1
 569             sigma3_proportion = (sigma3_count / len(each_data_line)) * 100
 570             sigma4_proportion = (sigma4_count / len(each_data_line)) * 100
 571             sigma5_proportion = (sigma5_count / len(each_data_line)) * 100
 572             sigma6_proportion = (sigma6_count / len(each_data_line)) * 100
 573             # print("求和值: %.12f" % test_SUM)
 574             print("平均值: %.12f" % test_MEAN)
 575             print("标准差: %.12f" % test_STD)
 576             print("每列总数量为: ", len(each_data_line))
 577             print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), ' percent: {:.2f}%'.format(sigma3_proportion), sigma3_count)
 578             print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), ' percent: {:.2f}%'.format(sigma4_proportion), sigma4_count)
 579             print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), ' percent: {:.2f}%'.format(sigma5_proportion), sigma5_count)
 580             print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), ' percent: {:.2f}%'.format(sigma6_proportion), sigma6_count)
 581 
 582             test_result_v2.append(test_MEAN)
 583             test_result_v2.append(test_STD)
 584             test_result_v2.append(round(sigma3_down, 2))
 585             test_result_v2.append(round(sigma3_up, 2))
 586             test_result_v2.append(round(sigma3_proportion, 2))
 587             test_result_v2.append(round(sigma4_down, 2))
 588             test_result_v2.append(round(sigma4_up, 2))
 589             test_result_v2.append(round(sigma4_proportion, 2))
 590             test_result_v2.append(round(sigma5_down, 2))
 591             test_result_v2.append(round(sigma5_up, 2))
 592             test_result_v2.append(round(sigma5_proportion, 2))
 593             test_result_v2.append(round(sigma6_down, 2))
 594             test_result_v2.append(round(sigma6_up, 2))
 595             test_result_v2.append(round(sigma6_proportion, 2))
 596             print(test_result_v2)
 597             n3_sheet.append(test_result_v2)  # 追加一行数据
 598             # pass 一行处理结束
 599             print('#*****第%s笔数据-结束***********#\n' % sigma_yy_effective)
 600 
 601     n3_workbook.save(result_path4)
 602     datetime_object_e = datetime.datetime.now()
 603     print("datetime_object_e :", datetime_object_e)
 604     print("总时间: ",datetime_object_e - datetime_object1)
 605 
 606 
 607 # def lie_time():
 608 #
 609 #     data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
 610 #     for column in range(data.shape[1]):
 611 #         col_data = data[:, column]
 612 #         print(f"Column {column}: {col_data}")
 613 
 614 # def excel_mas():
 615 #     # 用于excel合并
 616 #     pass
 617 #     # wb = load_workbook(filename=input_file_txt, read_only=True)
 618 #     # ws = wb.active
 619 #     # data = []
 620 #     # # for row in ws.rows:
 621 #     # for row in ws.rows:
 622 #     #     neRow = []
 623 #     #     for cell in 100:
 624 #     #         neRow.append(cell.value)
 625 #     #     print(neRow)
 626 #     #     # if len(neRow):
 627 #     #     #     data.append(neRow)
 628 #
 629 
 630 
 631 
 632 '''
 633 //==========================================================================================================//
 634 //  csv_save_as_xlsx( 4302 FT )
 635 //==========================================================================================================//
 636 '''
 637 def csv_save_as_xlsx():
 638     data_path = r'./4_vi4302_ft/1_vi4302_ft_data_csv/20231201_csv/'
 639     print("源文件路径:", data_path)
 640     # for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
 641     #     for fname in filenames:
 642     #         file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
 643     #         print(file_name)
 644     #         # C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_csv
 645     #         sd = r"C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_csv\1.csv"
 646     #         df = pd.DataFrame(pd.read_csv(file_name, header=1))
 647     #         print(df)
 648     #         # if file_name.endswith('.csv'):
 649     #         #     df=pd.read_csv(file_name, encoding='utf-8',header=None,sep = None)
 650     #         #     print(df)
 651     #         #     floder,name=os.path.splitext(file_name) #分割后缀
 652     #         #     df.to_excel(f"{floder}.xlsx",index=False)
 653     #         #     print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
 654     #         #     print('-----------------------------------------------------------------------------------------------------------')
 655     #         #     os.remove(file_name)
 656     # print('finished...')
 657 
 658     # dir_path = r'./4_vi4302_ft/1_vi4302_ft_data_csv/20231201_zip/'
 659     # print('\n总目录-路径:', dir_path)
 660     #
 661     # file_ls = os.listdir(dir_path)  # 获取所有文件名称
 662     # for index_a1 in range(len(file_ls)):
 663     #     print('第一级子目录-内容:', file_ls[index_a1])
 664     #     dir_path_s4 = dir_path
 665     #     print("传入路径:",dir_path_s4)
 666     #     csv_zip_decompress(dir_path_s4, file_ls[index_a1])
 667 
 668     # # TODO 1.解析源压缩文件zip, 获取文件夹中的FT文件夹中.csv格式文件   2.对.csv 格式文件转换成xlsx格式,各自保存文件
 669     # # TODO 目前进展,可以加解压文件,周一需要开发后续衔接文件
 670 
 671     # s_csv_data = r'C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\handle_data\VI4302LCT-AAAZ-(5.26)20230513004\NABX48.00_FT1\VI4302LCT-AAAZ_NABX48.00_FT1_ND05CJ488_FT20230513004_2023MAY26004744_dlogTDO.csv'
 672     # r_csv_data = r'C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_csv\1.xlsx'
 673     # # csv_to_xlsx_pd2(s_csv_data, r_csv_data)
 674     #
 675     # print('开始处理%s' % s_csv_data)
 676     # curr_time = datetime.datetime.now()
 677     # print(curr_time)
 678     #
 679     # f = open(s_csv_data, 'r', encoding='utf-8')
 680     # # 创建一个workbook 设置编码
 681     # workbook = Workbook()
 682     # # 创建一个worksheet
 683     # worksheet = workbook.active
 684     # workbook.title = 'sheet'
 685     #
 686     # for line in f:
 687     #     row = line.split(',')
 688     #     worksheet.append(row)
 689     #     if row[0].endswith('000'):  # 每一百行打印一次
 690     #         print(line, end="")
 691     #
 692     # workbook.save(r_csv_data)
 693     # print('处理完毕')
 694     # curr_time2 = datetime.datetime.now()
 695     # print(curr_time2 - curr_time)
 696 
 697 
 698 
 699 
 700 
 701 
 702 
 703 '''
 704 #---------------------------------------------#
 705 #  csv_zip_decompress 解压函数
 706 #  输入:相对路径 和 文件名称 
 707 #---------------------------------------------#
 708 '''
 709 
 710 def csv_zip_decompress(dir_path_s4,file_name_value_s4):
 711     #TODO 以下可提炼成函数处理
 712     path_s4_a1      = dir_path_s4
 713     name_value_a1   = file_name_value_s4
 714     file_name = path_s4_a1 + name_value_a1
 715     # print('\n file_name-相对路径+文件名拼接:', file_name)
 716     file_name2 = file_name.replace('./', '/')
 717     # print('\n file_name2-相对路径替换:', file_name2)
 718     file_name3 = file_name2.replace('/', '\\')
 719     # print('\n file_name3-相对路径替换:', file_name3)
 720     path = os.path.dirname(__file__) if len(os.path.dirname(__file__)) != 0 else '.'
 721     file_name4 = path + file_name3
 722     # print('\n file_name4-拼接绝对路径: ', file_name4)
 723     file_name5 = file_name4.replace('\\', '\\\\')
 724     # print('\n file_name5-拼接绝对路径:', file_name5)
 725     if os.path.exists(file_name5):
 726         print('\n\t\t 文件路径存在!')
 727         pass
 728     else:
 729         print('文件路径不存在')
 730     # 传入压缩文件zfile.zip获取相关信息
 731     zip_file = zipfile.ZipFile(file_name4, 'r')  # file_path path_jd2
 732     print('\n 传入压缩文件:',zip_file)
 733     # 获取压缩文件中的内容
 734     f_content = zip_file.namelist()
 735     print('\n 获取压缩文件中的内容:', f_content)
 736 
 737     # 获取当前文件上级路径,再拼接路径
 738     CSV_handle1 = os.path.dirname(os.path.abspath(__file__))
 739     print('\n\t\t CSV_handle1', CSV_handle1)
 740     # TODO 指定解压到特定路径
 741     # C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\handle_data
 742     # CSV_handle2 = CSV_handle1 + '\handle_data'
 743     # C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_zip\handle_data
 744     # C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_zip
 745     # \4_vi4302_ft\1_vi4302_ft_data_csv\20231201_csv\handle_data
 746     CSV_handle2 = CSV_handle1 + r'\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_csv\handle_data'
 747     # C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\1_vi4302_ft_data_csv\20231201_csv\handle_data
 748     CSV_handle2 = r'C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\handle_data'
 749     print('\n\t\t CSV_handle2', CSV_handle2)
 750 
 751     print("解压开始")
 752     zip_extract = zip_file.extractall(CSV_handle2)
 753     print(zip_extract)
 754     # # zip_extract.close()
 755     print("结束解压")
 756 
 757 
 758 '''
 759 #---------------------------------------------#
 760 #  csv_to_xlsx_pd 函数 CSV转EXCEL
 761 #  输入:相对路径 和 文件名称
 762 #---------------------------------------------#
 763 '''
 764 def csv_to_xlsx_pd(sourcePath: str, savePath: str, encode='utf-8'):
 765     """将csv 转为 excel(.xlsx格式)
 766     如果不需要可以把计时相关代码删除
 767     Args:
 768         sourcePath:str 来源文件路径
 769         savePath:str 保存文件路径,需要包含保存的文件名,文件名需要是 xlsx 格式的
 770         encode='utf-8' 默认编码,可以改为需要的编码如gbk
 771     """
 772     print('开始处理%s' % sourcePath)
 773     curr_time = datetime.datetime.now()
 774     print(curr_time)
 775 
 776     f = open(sourcePath, 'r', encoding=encode)
 777     # 创建一个workbook 设置编码
 778     workbook = Workbook()
 779     # 创建一个worksheet
 780     worksheet = workbook.active
 781     workbook.title = 'sheet'
 782 
 783     for line in f:
 784         row = line.split(',')
 785         worksheet.append(row)
 786         if row[0].endswith('000'):    # 每一百行打印一次
 787             print(line, end="")
 788 
 789     workbook.save(savePath)
 790     print('处理完毕')
 791     curr_time2 = datetime.datetime.now()
 792     print(curr_time2 - curr_time)
 793 
 794 '''
 795 #---------------------------------------------#
 796 #  csv_to_xlsx_pd2 函数 CSV转EXCEL
 797 #  输入:相对路径 和 文件名称 
 798 #---------------------------------------------#
 799 '''
 800 
 801 def csv_to_xlsx_pd2(s_csv_data1, r_csv_data2):
 802     input_data_csv    = s_csv_data1
 803     output_data_excel = r_csv_data2
 804     csv = pd.read_csv(input_data_csv, encoding='utf-8')
 805     csv.to_excel(output_data_excel, sheet_name='sheet')
 806 
 807 
 808 
 809 
 810 '''
 811 //==========================================================================================================//
 812 //  sigma_4302_ft_handle2( 4302 FT )
 813 //==========================================================================================================//
 814 '''
 815 def sigma_4302_ft_handle2():
 816     datetime_object1 = datetime.datetime.now()
 817     print("\n 开始:dsigma_4302_ft_handle1_object :", datetime_object1)
 818 
 819     # source_temp1    = "./4_vi4302_ft/3_vi4302_ft_data/"
 820     outputdir_path4 = "./4_vi4302_ft/4_vi4302_ft_data_temp/Summary/"
 821     result_path4 = "./4_vi4302_ft/5_vi4302_ft_data_result/vi4302_ft_sigma_result.xlsx"
 822 
 823     #---处理有效数据
 824     file_list1 = os.listdir(outputdir_path4)
 825     print('excel文件根目录: ', file_list1)
 826     for name in file_list1:
 827         datetime_object2 = datetime.datetime.now()
 828         print("\n处理汇总文件开始 : datetime_object2:", datetime_object2)
 829 
 830         input_file_txt = os.path.join(outputdir_path4, name)
 831         # output_file_excel = os.path.join(outputdir_path3, name).replace('.txt', '.xlsx')
 832         # sheet_name = name.replace(".txt", '')
 833         print("input_file_txt 路径: ",input_file_txt)
 834         # print("文件名称: ",sheet_name)
 835         datetime_object2 = datetime.datetime.now()
 836         print("datetime_object2 :", datetime_object2)
 837 
 838         # 创建一个新的 Excel 文件
 839         n3_workbook = openpyxl.Workbook()
 840         n3_sheet = n3_workbook.active
 841         test_result_v2 = ["project_name", "up_limit", "down_limit",  "unit", "mean", "std",
 842                           "3sigma_down", "3sigma_up", "3sigma_percentage",
 843                           "4sigma_down", "4sigma_up", "4sigma_percentage",
 844                           "5sigma_down", "5sigma_up", "5sigma_percentage",
 845                           "6sigma_down", "6sigma_up", "6sigma_percentage", ]
 846         n3_sheet.append(test_result_v2)  # 追加一行数据
 847         # 时间戳
 848         datetime_object3 = datetime.datetime.now()
 849         print("\n模版导入完成 : datetime_object3:", datetime_object3, '\t耗时:',(datetime_object3 - datetime_object2))
 850 
 851         # # 导入源文件
 852         s2_workbook = load_workbook(filename=input_file_txt, read_only=False)  #   read_only=True  read_only=False
 853         sigma_f2 = s2_workbook.active
 854         f2_x_rows = sigma_f2.max_row
 855         f2_y_cols = sigma_f2.max_column
 856         print('源文件坐标范围: 行: %d  列: %d' % (f2_x_rows, f2_y_cols))
 857         # 按列获取值
 858         def_min_row = 0  # 7
 859         def_min_col = 4
 860         sigma_yy_effective = 0
 861         # 按照从上到下扫描
 862         for erect_y2 in sigma_f2.iter_cols(min_row=def_min_row, max_row=f2_x_rows, min_col=def_min_col, max_col=f2_y_cols):  # f2_x_rows--- f2_y_cols
 863             erect_list_s2_all = []
 864             erect_list_s2 =[]
 865             sigma_yy_effective = sigma_yy_effective + 1
 866             # 时间戳
 867             datetime_object4_1 = datetime.datetime.now()
 868             # print("\n目标解析-每列开始 : datetime_object2:", datetime_object4_1, )
 869             test_result_v2 = []
 870 
 871             for erect_line_y in erect_y2:
 872                 # print("单元格的值:",erect_line_y.value)  # 每个单元格的值
 873                 table2_s2 = erect_line_y.value
 874                 erect_list_s2_all.append(table2_s2)
 875             # print("\n每列数值: ", erect_list_s2_all)
 876             test_result_v2.append(erect_list_s2_all[1])
 877             test_result_v2.append(erect_list_s2_all[3])
 878             test_result_v2.append(erect_list_s2_all[4])
 879             test_result_v2.append(erect_list_s2_all[5])
 880             # 时间戳
 881             datetime_object4 = datetime.datetime.now()
 882             # print("目标解析-每列完成 : datetime_object4:", datetime_object4, '\t耗时:', (datetime_object4 - datetime_object4_1))
 883             # 计算值
 884             erect_list_s2 = erect_list_s2_all[7:len(erect_list_s2_all)]
 885             test_SUM = np.sum(erect_list_s2)
 886             test_MEAN = np.mean(erect_list_s2)
 887             test_STD = np.std(erect_list_s2)
 888             # print('test_SUM:', test_SUM)
 889             # print('test_MEAN:', test_MEAN)
 890             # print('test_STD:', test_STD)
 891 
 892             # -sigma
 893             sigma3_up = test_MEAN + 3 * test_STD
 894             sigma3_down = test_MEAN - 3 * test_STD
 895             sigma4_up = test_MEAN + 4 * test_STD
 896             sigma4_down = test_MEAN - 4 * test_STD
 897             sigma5_up = test_MEAN + 5 * test_STD
 898             sigma5_down = test_MEAN - 5 * test_STD
 899             sigma6_up = test_MEAN + 6 * test_STD
 900             sigma6_down = test_MEAN - 6 * test_STD
 901             # print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), )
 902             # print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), )
 903             # print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), )
 904             # print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), )
 905 
 906             sigma3_count = 0
 907             sigma4_count = 0
 908             sigma5_count = 0
 909             sigma6_count = 0
 910             sigma3_proportion = 0
 911             sigma4_proportion = 0
 912             sigma5_proportion = 0
 913             sigma6_proportion = 0
 914             for index_v2 in range(len(erect_list_s2)):
 915                 # print(each_column3[index_v2])
 916                 if (sigma3_up >= erect_list_s2[index_v2]) and (erect_list_s2[index_v2] >= sigma3_down):
 917                     sigma3_count = sigma3_count + 1
 918                     # print(sigma3_count,test_get_data_v1[index_v2])
 919                 if (sigma4_up >= erect_list_s2[index_v2]) and (erect_list_s2[index_v2] >= sigma4_down):
 920                     sigma4_count = sigma4_count + 1
 921                 if (sigma5_up >= erect_list_s2[index_v2]) and (erect_list_s2[index_v2] >= sigma5_down):
 922                     sigma5_count = sigma5_count + 1
 923                 if (sigma6_up >= erect_list_s2[index_v2]) and (erect_list_s2[index_v2] >= sigma6_down):
 924                     sigma6_count = sigma6_count + 1
 925             sigma3_proportion = (sigma3_count / len(erect_list_s2)) * 100
 926             sigma4_proportion = (sigma4_count / len(erect_list_s2)) * 100
 927             sigma5_proportion = (sigma5_count / len(erect_list_s2)) * 100
 928             sigma6_proportion = (sigma6_count / len(erect_list_s2)) * 100
 929             # print("求和值: %.12f" % test_SUM)
 930             # print("平均值: %.12f" % test_MEAN)
 931             # print("标准差: %.12f" % test_STD)
 932             # print("每列总数量为: ", len(erect_list_s2))
 933             # print('sigma3: %.2f %.2f' % (sigma3_down, sigma3_up), ' percent: {:.2f}%'.format(sigma3_proportion), sigma3_count)
 934             # print('sigma4: %.2f %.2f' % (sigma4_down, sigma4_up), ' percent: {:.2f}%'.format(sigma4_proportion), sigma4_count)
 935             # print('sigma5: %.2f %.2f' % (sigma5_down, sigma5_up), ' percent: {:.2f}%'.format(sigma5_proportion), sigma5_count)
 936             # print('sigma6: %.2f %.2f' % (sigma6_down, sigma6_up), ' percent: {:.2f}%'.format(sigma6_proportion), sigma6_count)
 937 
 938             test_result_v2.append(test_MEAN)
 939             test_result_v2.append(test_STD)
 940             test_result_v2.append(round(sigma3_down, 2))
 941             test_result_v2.append(round(sigma3_up, 2))
 942             test_result_v2.append(round(sigma3_proportion, 2))
 943             test_result_v2.append(round(sigma4_down, 2))
 944             test_result_v2.append(round(sigma4_up, 2))
 945             test_result_v2.append(round(sigma4_proportion, 2))
 946             test_result_v2.append(round(sigma5_down, 2))
 947             test_result_v2.append(round(sigma5_up, 2))
 948             test_result_v2.append(round(sigma5_proportion, 2))
 949             test_result_v2.append(round(sigma6_down, 2))
 950             test_result_v2.append(round(sigma6_up, 2))
 951             test_result_v2.append(round(sigma6_proportion, 2))
 952             # print("每行结果数据:",test_result_v2)
 953             n3_sheet.append(test_result_v2)  # 追加一行数据
 954 
 955             # pass 一行处理结束
 956             # 时间戳
 957             datetime_object5 = datetime.datetime.now()
 958             # print("目标计算-每列完成 : datetime_object5:", datetime_object5, '\t耗时:', (datetime_object5 - datetime_object4))
 959             print("目标文件-每列完成耗时 ", (datetime_object5 - datetime_object4_1))
 960             print('#*****第%s笔数据-结束***********#\n' % sigma_yy_effective)
 961 
 962         # 每行耗时
 963         datetime_object6 = datetime.datetime.now()
 964         test_result_v2=[]
 965         print("目标文件-每列完成 : datetime_object6:", datetime_object6, '\t耗时:', (datetime_object6 - datetime_object3))
 966         print("整个文件完成生成")
 967 
 968     n3_workbook.save(result_path4)
 969     datetime_object_e = datetime.datetime.now()
 970     print("datetime_object_e :", datetime_object_e)
 971     print("总时间: ",datetime_object_e - datetime_object1)
 972 
 973 
 974 
 975 '''
 976 //==========================================================================================================//
 977 //  sigma_4302_ft_get_bin1( 4302 FT )
 978 //==========================================================================================================//
 979 '''
 980 def sigma_4302_ft_get_bin1():
 981     # 3_vi4302_ft_data
 982     datetime_object_s = datetime.datetime.now()
 983     print("datetime_object_s :", datetime_object_s)
 984     source_path4 = "./4_vi4302_ft/3_vi4302_ft_data/"
 985     outputdir_path5 = "./4_vi4302_ft/4_vi4302_ft_data_temp/Summary_Template1.xlsx"
 986     outputdir_path9 = "./4_vi4302_ft/4_vi4302_ft_data_temp/Summary.xlsx"
 987     # C:\Users\chucheng.cao\Desktop\work\python\test_data_sigma\handle_sigma_vi4302\4_vi4302_ft\4_vi4302_ft_data_temp
 988     # outputdir_path4 = "./4_vi4302_ft/4_vi4302_ft_data_temp/"
 989     # result_path4 = "./4_vi4302_ft/5_vi4302_ft_data_result/vi4302_ft_sigma_result.xlsx"
 990 
 991 
 992     # # 创建一个新的 Excel 文件
 993     h1_workbook = openpyxl.Workbook()
 994     h1_sheet = h1_workbook.active
 995 
 996     # 导入已经存在的模版文件
 997     h2_workbook = load_workbook(filename= outputdir_path5, read_only=True)
 998     h2_work = h2_workbook.active
 999     w2_x_rows = h2_work.max_row
1000     w2_y_cols = h2_work.max_column
1001     print('\n 源文件坐标范围: ', w2_x_rows, w2_y_cols)
1002 
1003     # 目的是导入头文件 --典型模版
1004     for h2_x2 in h2_work.iter_rows(min_row=0, max_row=w2_x_rows, min_col=0, max_col=w2_y_cols):  # w1_x_rows   ----- w1_y_cols
1005         each_h2_x2_s1 = []
1006         for each_call_y1 in h2_x2:
1007             cell_u2 = each_call_y1.value  # 单元格值
1008             # print(type(cell_url),cell_url)
1009             each_h2_x2_s1.append(cell_u2)
1010         # print('遍历行值:',each_h2_x2_s1)
1011         h1_sheet.append(each_h2_x2_s1)  # 追加一行数据
1012 
1013     datetime_object_1 = datetime.datetime.now()
1014     print("完成模版导入 -- datetime1 :", datetime_object_1 , "\t 耗时:",(datetime_object_1 - datetime_object_s))
1015 
1016     # ---处理有效数据
1017     file_list2 = os.listdir(source_path4)
1018     print('excel文件根目录: ', file_list2)
1019     file_list2_path = []
1020     for name in file_list2:
1021         input_file_txt = os.path.join(source_path4, name)
1022         file_list2_path.append(input_file_txt)
1023         print(input_file_txt)
1024         # print(name)
1025     print("获取合并文件列表:", file_list2_path)
1026 
1027     datetime_object_2 = datetime.datetime.now()
1028     print("获取文件完成 -- datetime2 :", datetime_object_2, "\t 耗时:", (datetime_object_2 - datetime_object_1))
1029 
1030     for file_s1 in range(len(file_list2_path)):
1031         # 导入文件夹已经存在的文件
1032         datetime_object_3_1 = datetime.datetime.now()
1033         print("获取目标文件开始 -- datetime3_1 :", datetime_object_3_1, )
1034         f2_workbook = load_workbook(filename=file_list2_path[file_s1], read_only=True)
1035         f2_work = f2_workbook.active
1036         # work_sheet = work_book[work_book.sheetnames[0]]    # 选中第一个sheet
1037         w1_x_rows = f2_work.max_row
1038         w1_y_cols = f2_work.max_column
1039         print('源文件坐标范围: ', w1_x_rows, w1_y_cols)
1040         # 遍历行
1041         def_min_row = 97
1042         def_min_col = 0  # 4
1043         BIN1 = 1
1044         each_line_all = []
1045         # min_row=1, max_row=3, min_col=1,max_col=3   iter_cols
1046         # for line_x1 in f2_work.iter_rows(min_row=def_min_row, max_row=109, min_col=def_min_col, max_col=10):
1047         for line_x1 in f2_work.iter_rows(min_row=def_min_row, max_row=w1_x_rows, min_col=def_min_col, max_col=w1_y_cols):  #    w1_x_rows ---- w1_y_cols
1048             # print("遍历行(元祖): ",type(row_x1))
1049             each_line_s2 = []
1050             for each_call_y1 in line_x1:
1051                 cell_url = each_call_y1.value  # 单元格值
1052                 # print("--",cell_url)
1053                 each_line_s2.append(cell_url)
1054             # print('遍历行值:',each_line_s2)
1055             if each_line_s2[1] == BIN1:
1056                 h1_sheet.append(each_line_s2)  # 追加一行数据
1057 
1058         datetime_object_3_2 = datetime.datetime.now()
1059         print("获取目标文件完成 -- datetime3_2 :", datetime_object_3_2, "\t 耗时:", (datetime_object_3_2 - datetime_object_3_1))
1060     datetime_object_4 = datetime.datetime.now()
1061     print("\n数据合并完成 -- datetime4 :", datetime_object_4, "\t 耗时:", (datetime_object_4 - datetime_object_2))
1062 
1063     # print("整个列表:",each_line_all)
1064     #结果保存新文件
1065     h1_workbook.save(outputdir_path9)
1066 
1067     # sigma_4302_ft_handle2()
1068 
1069 
1070 
1071 '''
1072 //==========================================================================================================//
1073 //  sop_s1_d1(vi4302 cp 原始数据扫描,识别异常数据 )
1074 //==========================================================================================================//
1075 '''
1076 
1077 
1078 def sop_s1_d1():
1079     sub_file_path = r'\3_vi4302_cp\3_vi4302_cp_data'
1080     source_file_path = get_file_relative(sub_file_path)
1081     source_temp_path = './3_vi4302_cp/3_vi4302_cp_data/module_3.xlsx'
1082     target_file_path = './3_vi4302_cp/4_vi4302_cp_data_result/module_3_result.xlsx'
1083     sigma_handle_scan(source_file_path, source_temp_path, target_file_path)
1084 
1085 
1086 '''
1087 //==========================================================================================================//
1088 //  sop_s1_d2(vi4302 cp 原始数据扫描,识别异常数据 )
1089 //==========================================================================================================//
1090 '''
1091 
1092 
1093 def sop_s1_d2():
1094     sub_file_path = r'\3_vi4302_cp\3_vi4302_cp_data'
1095     source_file_path = get_file_relative(sub_file_path)
1096     source_temp_path = './3_vi4302_cp/3_vi4302_cp_data/module_3.xlsx'
1097     target_file_path = './3_vi4302_cp/4_vi4302_cp_data_result/module_3_result.xlsx'
1098     sigma_handle2(source_file_path, source_temp_path, target_file_path)
1099 
1100 
1101 
1102 '''
1103 //==========================================================================================================//
1104 //  sop_s2_d1(vi4302 FT 原始数据 )
1105 //==========================================================================================================//
1106 '''
1107 
1108 
1109 def sop_s2_d1():
1110     # csv_save_as_xlsx()        #  CSV -> xlsx
1111     # sigma_4302_ft_get_bin1()    # 合并数据,只保留BIN1
1112     sigma_4302_ft_handle2()   # 汇总数据,生成sigma
1113 
1114 
1115 
1116 
1117 # ======================================================================================================================
1118 '''
1119 # ======================================================================================================================
1120 #   测试专用
1121 # ======================================================================================================================
1122 '''
1123 if __name__ == "__main__":
1124     print('测试开始')
1125     # sop_s1_d1()
1126     # sop_s1_d2()
1127     # sop_s2_d1()
1128     # ---------------------------------------------#
1129     run_big_cycle1 = 1
1130     while run_big_cycle1:
1131         print("请选择以下场景: [提示 0:表示退出]")
1132         print("scenario 1: VI4302 CP sigma 场景")
1133         print("scenario 2: VI4302 FT sigma 场景")
1134         print(">>> 请输入功能:")
1135         function_order = input()
1136         if function_order == "0":
1137             print("退出运行")
1138             run_big_cycle1 = 0
1139         elif function_order == "1":
1140             print("scenario 1")
1141             run_s1 = 1
1142             while run_s1:
1143                 print("scenario_1场景: [提示 0:表示退出]")
1144                 print("scenario_1  1: VI4302 CP sigma raw data scan (识别出异常数据)")
1145                 print("scenario_1  2: VI4302 CP sigma raw data to  result (excel格式结果)")
1146                 print(">>> 请输入功能:")
1147                 function_order_s1 = input()
1148                 if function_order_s1 == "0":
1149                     print("退出运行")
1150                     run_s1 = 0
1151                 elif function_order_s1 == "1":
1152                     sop_s1_d1()
1153                     print("完成s1 1功能")
1154                 elif function_order_s1 == "2":
1155                     sop_s1_d2()
1156                     print("完成s1 2功能")
1157                 else:
1158                     print("输入无效数值!")
1159 
1160                 print("继续执行: y  返回上一级:b")
1161                 mean_m = input()
1162                 if mean_m == "b":
1163                     function_order_s1 = "0"
1164                     run_s1 = 0
1165 
1166         elif function_order == "2":
1167             print("scenario 2")
1168 
1169 
1170         else:
1171             print("没有此功能请重新选择")
1172 
1173         # source_file_path = get_file_relative()
1174         # source_temp_path = './3_vi4302_cp_data/module_3.xlsx'
1175         # target_file_path = './4_vi4302_cp_data_result/module_3_result.xlsx'
1176         #
1177         # print("#----- 是否规整原始数据 -------#  [提示输入: y or n ]")
1178         # scan_data = input()
1179         # if scan_data == 'y':
1180         #     sigma_handle_scan(source_file_path, source_temp_path, target_file_path)
1181         # else:
1182         #     print("处理数据中")
1183         #     sigma_handle2(source_file_path, source_temp_path, target_file_path)

 

# ---- code start ----#

界面交互功能套用模型