图片报告样式调优
This commit is contained in:
parent
af31fa2587
commit
ee29518edf
@ -142,7 +142,7 @@ data = {
|
||||
ClassifyId = 1161
|
||||
|
||||
|
||||
# # 变量定义--线上环境
|
||||
# 变量定义--线上环境
|
||||
# server_host = '10.200.32.39'
|
||||
# login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login"
|
||||
# upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave"
|
||||
|
@ -225,6 +225,7 @@ ClassifyId = 1161
|
||||
# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos"
|
||||
# # 上传数据项值
|
||||
# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList"
|
||||
# push_png_report_url = f"http://{server_host}/jingbo-api/api/analysis/reportInfo/priceForecastImg"
|
||||
|
||||
# login_data = {
|
||||
# "data": {
|
||||
@ -298,6 +299,21 @@ ClassifyId = 1161
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
|
||||
# push_png_report_data = {
|
||||
# "funcModule": '聚烯烃图片报告',
|
||||
# "funcOperation": '上传聚烯烃PP价格预测图片报告',
|
||||
# "data": {
|
||||
# "groupNo": "000211",
|
||||
# "updateTime": "2024-09-06 15:01:29",
|
||||
# "fileBase64": '', # 文件内容base64
|
||||
# "title": '2025年8月5日日度周度预测结果',
|
||||
# "billNo": '',
|
||||
# }
|
||||
# }
|
||||
|
||||
|
||||
|
||||
# # 八大维度数据项编码
|
||||
# bdwd_items = {
|
||||
# 'ciri': '原油大数据预测|FORECAST|PRICE|T',
|
||||
@ -422,6 +438,7 @@ push_png_report_data = {
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 八大维度数据项编码
|
||||
bdwd_items = {
|
||||
'ciri': 'jxtppbdwdcr',
|
||||
|
@ -2520,6 +2520,8 @@ def push_market_data(data):
|
||||
}
|
||||
]
|
||||
'''
|
||||
# from lib.tools import NumpyEncoder
|
||||
|
||||
# 获取token
|
||||
token = get_head_auth_report()
|
||||
# 定义请求参数
|
||||
@ -2527,6 +2529,9 @@ def push_market_data(data):
|
||||
# 发送请求
|
||||
headers = {"Authorization": token}
|
||||
config.logger.info('上传数据中...')
|
||||
config.logger.info(f'上传数据URL:{config.push_data_value_list_url}')
|
||||
config.logger.info(f'上传数据数据:{config.push_data_value_list_data}')
|
||||
|
||||
items_res = requests.post(url=config.push_data_value_list_url, headers=headers,
|
||||
json=config.push_data_value_list_data, timeout=(3, 35))
|
||||
json_data = json.loads(items_res.text)
|
||||
|
25
lib/tools.py
25
lib/tools.py
@ -36,6 +36,8 @@ import numpy as np
|
||||
import os
|
||||
import time
|
||||
import logging
|
||||
import json
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
from lib.pydantic_models import PredictionResult, PpPredictionResult
|
||||
@ -93,6 +95,22 @@ class BinanceAPI:
|
||||
# return self.signature
|
||||
|
||||
|
||||
# 自定义JSON编码器,处理NumPy类型
|
||||
class NumpyEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
# 处理int64类型
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
# 处理float64等其他类型
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
# 处理ndarray类型
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
# 其他类型交给默认编码器处理
|
||||
return super(NumpyEncoder, self).default(obj)
|
||||
|
||||
|
||||
class Graphs:
|
||||
'''
|
||||
pdf生成类
|
||||
@ -828,6 +846,8 @@ def convert_df_to_pydantic_pp(df_predict, model_id_name_dict, global_config):
|
||||
results = []
|
||||
data = global_config['DEFAULT_CONFIG'].copy()
|
||||
data['data_date'] = df_predict['created_dt'].values[0]
|
||||
data['update_date'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
if isinstance(data['data_date'], np.datetime64):
|
||||
data['data_date'] = pd.Timestamp(
|
||||
data['data_date']).to_pydatetime()
|
||||
@ -1130,6 +1150,11 @@ def plot_pp_predict_result(y_hat, global_config,wd='yuedu'):
|
||||
|
||||
# 绘制 y 的折线图,颜色为蓝色
|
||||
sns.lineplot(x=y['ds'], y=y['y'], color='blue', label='真实值', ax=ax)
|
||||
# 月度日期每月显示一个
|
||||
import matplotlib.dates as mdates
|
||||
if wd == 'yuedu':
|
||||
ax.xaxis.set_major_locator(mdates.MonthLocator())
|
||||
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
|
||||
|
||||
# date_str = pd.Timestamp(y_hat["ds"].iloc[0]).strftime('%Y-%m-%d')
|
||||
ax.set_title(f'{datetime.datetime.now().strftime("%Y-%m-%d")} PP期货十一大维度 预测价格走势', fontsize=24)
|
||||
|
@ -128,28 +128,28 @@ def push_market_value():
|
||||
"dataItemNo": global_config['bdwd_items']['ciri'],
|
||||
"dataDate": global_config['end_time'].replace('-', ''),
|
||||
"dataStatus": "add",
|
||||
"dataValue": five_days_predict_price.loc['次日','predictresult'].round(2)
|
||||
"dataValue": five_days_predict_price.loc['次日','predictresult'].round(2).item()
|
||||
},{
|
||||
"dataItemNo": global_config['bdwd_items']['cierri'],
|
||||
"dataDate": global_config['end_time'].replace('-', ''),
|
||||
"dataStatus": "add",
|
||||
"dataValue": five_days_predict_price.loc['次二日','predictresult'].round(2)
|
||||
"dataValue": five_days_predict_price.loc['次二日','predictresult'].round(2).item()
|
||||
},{
|
||||
"dataItemNo": global_config['bdwd_items']['cisanri'],
|
||||
"dataDate": global_config['end_time'].replace('-', ''),
|
||||
"dataStatus": "add",
|
||||
"dataValue": five_days_predict_price.loc['次三日','predictresult'].round(2)
|
||||
"dataValue": five_days_predict_price.loc['次三日','predictresult'].round(2).item()
|
||||
},{
|
||||
"dataItemNo": global_config['bdwd_items']['cisiri'],
|
||||
"dataDate": global_config['end_time'].replace('-', ''),
|
||||
"dataStatus": "add",
|
||||
"dataValue": five_days_predict_price.loc['次四日','predictresult'].round(2)
|
||||
"dataValue": five_days_predict_price.loc['次四日','predictresult'].round(2).item()
|
||||
},
|
||||
{
|
||||
"dataItemNo": global_config['bdwd_items']['benzhou'],
|
||||
"dataDate": global_config['end_time'].replace('-', ''),
|
||||
"dataStatus": "add",
|
||||
"dataValue": five_days_predict_price.loc['次五日','predictresult'].round(2)
|
||||
"dataValue": five_days_predict_price.loc['次五日','predictresult'].round(2).item()
|
||||
}
|
||||
]
|
||||
|
||||
@ -558,17 +558,17 @@ def predict_main():
|
||||
if __name__ == '__main__':
|
||||
# global end_time
|
||||
# 遍历2024-11-25 到 2024-12-3 之间的工作日日期
|
||||
for i_time in pd.date_range('2025-8-1', '2025-8-11', freq='B'):
|
||||
try:
|
||||
global_config['end_time'] = i_time.strftime('%Y-%m-%d')
|
||||
global_config['db_mysql'].connect()
|
||||
predict_main()
|
||||
except Exception as e:
|
||||
logger.info(f'预测失败:{e}')
|
||||
continue
|
||||
# for i_time in pd.date_range('2025-8-1', '2025-8-11', freq='B'):
|
||||
# try:
|
||||
# global_config['end_time'] = i_time.strftime('%Y-%m-%d')
|
||||
# global_config['db_mysql'].connect()
|
||||
# predict_main()
|
||||
# except Exception as e:
|
||||
# logger.info(f'预测失败:{e}')
|
||||
# continue
|
||||
# global_config['end_time'] = '2025-08-05'
|
||||
# predict_main()
|
||||
predict_main()
|
||||
|
||||
# global_config['end_time'] = '2025-08-01'
|
||||
# global_config['end_time'] = '2025-08-12'
|
||||
# push_market_value()
|
||||
# sql_inset_predict(global_config)
|
||||
|
@ -113,13 +113,14 @@ def push_market_value():
|
||||
|
||||
# 准备要推送的数据
|
||||
ciyue_mean = four_month_predict_price[best_bdwd_price['next_month_price']
|
||||
['model_name']].iloc[0]
|
||||
['model_name']].iloc[0].item()
|
||||
|
||||
cieryue_mean = four_month_predict_price[best_bdwd_price['next_february_price']
|
||||
['model_name']].iloc[1]
|
||||
['model_name']].iloc[1].item()
|
||||
cisanyue_mean = four_month_predict_price[best_bdwd_price['next_march_price']
|
||||
['model_name']].iloc[2]
|
||||
['model_name']].iloc[2].item()
|
||||
cisieryue_mean = four_month_predict_price[best_bdwd_price['next_april_price']
|
||||
['model_name']].iloc[3]
|
||||
['model_name']].iloc[3].item()
|
||||
# # 保留两位小数
|
||||
ciyue_mean = round(ciyue_mean, 2)
|
||||
cieryue_mean = round(cieryue_mean, 2)
|
||||
@ -551,13 +552,13 @@ if __name__ == '__main__':
|
||||
# logger.info(f'预测失败:{e}')
|
||||
# continue
|
||||
|
||||
# global_config['end_time'] = '2025-07-25'
|
||||
# global_config['end_time'] = '2025-08-13'
|
||||
# predict_main()
|
||||
# push_market_value()
|
||||
# sql_inset_predict(global_config)
|
||||
|
||||
# 图片报告
|
||||
global_config['end_time'] = '2025-08-12'
|
||||
# global_config['end_time'] = '2025-08-12'
|
||||
logger.info('图片报告ing')
|
||||
pp_bdwd_png(global_config=global_config)
|
||||
logger.info('图片报告end')
|
||||
|
@ -122,8 +122,8 @@ def push_market_value():
|
||||
first_mean = weeks_predict_price[best_bdwd_price['second_week_price']['model_name']].iloc[0]
|
||||
last_mean = weeks_predict_price[best_bdwd_price['next_week_price']['model_name']].iloc[-1]
|
||||
# 保留两位小数
|
||||
first_mean = round(first_mean, 2)
|
||||
last_mean = round(last_mean, 2)
|
||||
first_mean = float(round(first_mean, 2))
|
||||
last_mean = float(round(last_mean, 2))
|
||||
|
||||
predictdata = [
|
||||
{
|
||||
@ -140,8 +140,6 @@ def push_market_value():
|
||||
}
|
||||
]
|
||||
|
||||
print(predictdata)
|
||||
|
||||
# 推送数据到市场信息平台
|
||||
try:
|
||||
push_market_data(predictdata)
|
||||
@ -512,18 +510,18 @@ def predict_main():
|
||||
if __name__ == '__main__':
|
||||
# global end_time
|
||||
# 遍历2024-11-25 到 2024-12-3 之间的工作日日期
|
||||
for i_time in pd.date_range('2025-7-24', '2025-8-12', freq='B'):
|
||||
try:
|
||||
global_config['end_time'] = i_time.strftime('%Y-%m-%d')
|
||||
global_config['db_mysql'].connect()
|
||||
predict_main()
|
||||
except Exception as e:
|
||||
logger.info(f'预测失败:{e}')
|
||||
continue
|
||||
# for i_time in pd.date_range('2025-3-3', '2025-5-30', freq='B'):
|
||||
# try:
|
||||
# global_config['end_time'] = i_time.strftime('%Y-%m-%d')
|
||||
# global_config['db_mysql'].connect()
|
||||
# predict_main()
|
||||
# except Exception as e:
|
||||
# logger.info(f'预测失败:{e}')
|
||||
# continue
|
||||
|
||||
|
||||
# global_config['end_time'] = '2025-08-05'
|
||||
# predict_main()
|
||||
# global_config['end_time'] = '2025-08-12'
|
||||
predict_main()
|
||||
|
||||
|
||||
# push_market_value()
|
||||
|
Loading…
Reference in New Issue
Block a user