data_loader.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import sqlite3, datetime, csv
  2. temp_limit = (760, 870)
  3. conn = sqlite3.connect("steel_production_data3.db")
  4. cursor = conn.cursor()
  5. cursor.execute("select * from production_data")
  6. data_list = cursor.fetchall()
  7. conn.close()
  8. solved_list = []
  9. has_steel_sig = 1
  10. counter = 1
  11. last_length = data_list[0][9]
  12. input_buffer = []
  13. for data in data_list:
  14. if data[3] == 0 and has_steel_sig != 0:
  15. last_length = 0
  16. strand_no = int(data[6])
  17. if strand_no > 8 or strand_no != 2:
  18. continue
  19. timestamp = datetime.datetime.strptime(data[1], "%Y-%m-%d %H:%M:%S.%f").timestamp()
  20. tmp = [counter, timestamp, data[5], data[19+strand_no-1], data[28], data[27], data[8], data[10]]
  21. counter += 1
  22. tmp_2 = [data[29+i] for i in range(36)]
  23. input_buffer = tmp + tmp_2
  24. if data[9]*10 != last_length:
  25. last_length = data[9]*10
  26. if input_buffer:
  27. if (data[7] == temp_limit[0] and data[9]*10 < data[7]) or (data[7] == temp_limit[1] and data[9]*10 > data[7]):
  28. solved_list.append((input_buffer, data[9]*10))
  29. elif abs(data[9]*10-data[7]) < 10:
  30. solved_list.append((input_buffer, data[9]*10))
  31. else:
  32. solved_list.append((input_buffer, data[7]))
  33. input_buffer = []
  34. has_steel_sig = data[3]
  35. output_list = []
  36. for i in range(len(solved_list)-1):
  37. tmp = solved_list[i][0][:]
  38. next = solved_list[i+1]
  39. tmp.append((next[0][4]-next[1])*next[0][5]/10 + next[0][3])
  40. output_list.append(tmp)
  41. # 写入 CSV 文件
  42. with open("output.csv", "w", newline="", encoding="utf-8") as file:
  43. writer = csv.writer(file)
  44. writer.writerows(output_list)