config.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import os
  2. # 项目ID
  3. PROJECT_ID = 92 # TODO 需要修改项目ID
  4. # 智慧水萝卜URL登陆用户名和密码
  5. USERNAME = 'admin'
  6. PASSWORD = 'JK20200508'
  7. # 智慧水萝卜URL登陆部门ID参数
  8. DEP_ID = '135'
  9. # 智慧水萝卜URL网站地址
  10. BASE_URL = 'http://120.55.44.4:8900'
  11. # ALL ITEMS文件保存路径
  12. ALL_ITEMS_FILE_DIR = r'D:\code\data_analysis\GetItem'
  13. ALL_ITEMS_FILE_NAME = f'{PROJECT_ID}_all_items.csv' # 输出的文件名称,不要轻易修改
  14. ALL_ITEMS_FILE_PATH = os.path.join(ALL_ITEMS_FILE_DIR, ALL_ITEMS_FILE_NAME)
  15. INCLUDE_HEAD = True # ALL_ITEMS文件是否包含头信息
  16. TRANSFER_JSON_NAME = f'{PROJECT_ID}_all_items_name_code_transfer.json'
  17. # 智慧水萝卜某项目最大页数
  18. MAX_PAGES = 290 # TODO 需要修改为网页的实际数量
  19. PAGE_SIZE = 20
  20. # 数据库参数,从数据库拿数据时使用
  21. DB_HOST = '192.168.50.4'
  22. DB_USER = 'root'
  23. DB_PASSWORD = '*B-@p2b+97D5xAF1e6'
  24. DB_NAME = 'ws_data' # 数据库名称
  25. DB_PORT = 4000
  26. POSTFIX = 'minute' # 应该与DB_SHEET_NAME的后缀保持一致 TODO 可根据需求修改为天、小时或分钟
  27. DB_SHEET_NAME = f'dc_item_history_data_{POSTFIX}' # 表名称
  28. # 开始年月日
  29. CHECK_YEAR_START = 2025
  30. CHECK_MONTH_START = 1
  31. CHECK_DAY_START = 1
  32. # 结束年月日
  33. CHECK_YEAR_END = 2025
  34. CHECK_MONTH_END = 12
  35. CHECK_DAY_END = 31
  36. # 时分秒
  37. CHECK_HOUR_START = 0
  38. CHECK_MINUTE_START = 0
  39. CHECK_SECONDS_START = 0
  40. CHECK_HOUR_END = 23
  41. CHECK_MINUTE_END = 59
  42. CHECK_SECONDS_END = 59
  43. # 统计数据量
  44. STATISTICS_FILE_DIR = r'D:\code\data_analysis\GetItem'
  45. STATISTICS_FILE_NAME = f'{PROJECT_ID}_statistics_{POSTFIX}.csv'
  46. # 是否从文件加载
  47. IS_FROM_LOCAL = False
  48. # 皮尔逊相关系数计算
  49. EXCLUDE_WORDS = ['电流', '控制字', '步序', '时间设定', '开关', '报警', '噪音'] # 排除列表,若字段包含列表内的词,就自动跳过不参与统计
  50. DIFF_WORDS = ['累计', '计数', '运行时间', '电能'] # 差分列表,若字段包含列表内的词,就对数据执行差分
  51. MIN_RECORDS = 2000 # 低于该值的字段不会参与计算 TODO 需要修改记录的最小记录数
  52. IS_LAG = True
  53. IS_NORMALIZE = False
  54. MAX_LAG = 0 # 最大滞后, 0表示没有滞后
  55. STEP = 1 # 最大滞后步长
  56. P_VALUE_THRESHOLD = 0.05 # 显著性p值阈值
  57. PEARSONR_VALUE_THRESHOLD = 0.10 # 皮尔逊相关系数r阈值,低于此阈值视同为0
  58. # 皮尔逊输出文件保存地址
  59. R_MAT_JSON_FILE_DIR = r'D:\code\data_analysis\Analysis'
  60. R_MAT_JSON_FILE_NAME = f'{PROJECT_ID}_pearsonr_mat_{POSTFIX}.pkl'
  61. R_MAT_JSON_PATH = os.path.join(R_MAT_JSON_FILE_DIR, R_MAT_JSON_FILE_NAME)
  62. # Lasso
  63. LASSO_FEATURE_FILE_DIR = r'D:\code\data_analysis\Analysis'
  64. LASSO_FEATURE_FILE_NAME = 'lasso_features_choose.json'
  65. LASSO_FEATURE_FILE_PATH = os.path.join(R_MAT_JSON_FILE_DIR, LASSO_FEATURE_FILE_NAME)
  66. # other 拓展参数
  67. def fmt_date(start_year,end_year,
  68. start_month,end_month,
  69. start_day,end_day,
  70. start_hour=0,end_hour=23,
  71. start_minute=0,end_minute=59,
  72. start_second=0,end_second=59):
  73. fmt = lambda x: '0' + str(x) if abs(x) < 10 else str(x)
  74. start_month = fmt(start_month)
  75. end_month = fmt(end_month)
  76. start_day = fmt(start_day)
  77. end_day = fmt(end_day)
  78. start_hour = fmt(start_hour)
  79. end_hour = fmt(end_hour)
  80. start_minute = fmt(start_minute)
  81. end_minute = fmt(end_minute)
  82. start_second = fmt(start_second)
  83. end_second = fmt(end_second)
  84. start_datetime = f'{start_year}-{start_month}-{start_day} {start_hour}:{start_minute}:{start_second}'
  85. end_datetime = f'{end_year}-{end_month}-{end_day} {end_hour}:{end_minute}:{end_second}'
  86. return start_datetime, end_datetime
  87. DATE_START, DATE_END = fmt_date(start_year=CHECK_YEAR_START, start_month=CHECK_MONTH_START, start_day=CHECK_DAY_START,
  88. start_hour=CHECK_HOUR_START, start_minute=CHECK_MINUTE_START, start_second=CHECK_SECONDS_START,
  89. end_year=CHECK_YEAR_END, end_month=CHECK_MONTH_END, end_day=CHECK_DAY_END,
  90. end_hour=CHECK_HOUR_END, end_minute=CHECK_MINUTE_END, end_second=CHECK_SECONDS_END)
  91. DF_MERGE_FILE_DIR = r'D:\code\data_analysis\Analysis'
  92. DF_MERGE_FILE_PATH = os.path.join(DF_MERGE_FILE_DIR, f'{PROJECT_ID}_' + DB_NAME + '_' + DB_SHEET_NAME + '_' + POSTFIX + '_' + DATE_START.replace(':','-') + '_' + DATE_END.replace(':','-') + '.pkl').replace(' ', '_')