如何将`to csv`保存在`os.path.join`中,并将其发送到另一个路径以下载回python中
该系统将上传一个csv文件用于预测,并将预测结果转换为新的csv文件。之后,用户可以从HTML页面中的如何将`to csv`保存在`os.path.join`中,并将其发送到另一个路径以下载回python中,python,csv,flask,path,Python,Csv,Flask,Path,该系统将上传一个csv文件用于预测,并将预测结果转换为新的csv文件。之后,用户可以从HTML页面中的下载按钮下载csv文件,但我无法将我的加入到os.path.join并返回HTML页面中的csv文件fromsend\u from directory,有人擅长python吗,请纠正我~谢谢你的帮助 @app.route('/transform', methods=["POST"]) def transform_view(): if request.method == 'P
下载按钮下载csv文件,但我无法将我的加入到os.path.join
并返回HTML页面中的csv文件fromsend\u from directory
,有人擅长python吗,请纠正我~谢谢你的帮助
@app.route('/transform', methods=["POST"])
def transform_view():
if request.method == 'POST':
f = request.files['data_file']
if not f:
return "No file"
stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
csv_input = csv.reader(stream)
stream.seek(0)
result = stream.read()
df = pd.read_csv(StringIO(result), usecols=[1])
#extract month value
df2 = pd.read_csv(StringIO(result))
matrix2 = df2[df2.columns[0]].to_numpy()
list1 = matrix2.tolist()
# load the model from disk
model = load_model('model.h5')
dataset = df.values
dataset = dataset.astype('float32')
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
look_back = 1
dataset_look = create_dataset(dataset, look_back)
dataset_look = np.reshape(dataset_look, (dataset_look.shape[0], 1, dataset_look.shape[1]))
predict = model.predict(dataset_look)
transform = scaler.inverse_transform(predict)
X_FUTURE = 12
transform = np.array([])
last = dataset[-1]
for i in range(X_FUTURE):
curr_prediction = model.predict(np.array([last]).reshape(1, look_back, 1))
last = np.concatenate([last[1:], curr_prediction.reshape(-1)])
transform = np.concatenate([transform, curr_prediction[0]])
transform = scaler.inverse_transform([transform])[0]
dicts = []
curr_date = pd.to_datetime(list1[-1])
for i in range(X_FUTURE):
curr_date = curr_date + relativedelta(months=+1)
dicts.append({'Predictions': transform[i], "Month": curr_date})
new_data = pd.DataFrame(dicts).set_index("Month")
##df_predict = pd.DataFrame(transform, columns=["predicted value"])
new_data.to_csv(os.path.join("downloads", index = True, encoding='utf8'))
labels = [d['Month'] for d in dicts]
values = [d['Predictions'] for d in dicts]
colors = [ "#F7464A", "#46BFBD", "#FDB45C", "#FEDCBA",
"#ABCDEF", "#DDDDDD", "#ABCABC", "#4169E1",
"#C71585", "#FF4500", "#FEDCBA", "#46BFBD"]
line_labels=labels
line_values=values
return render_template('graph.html', title='Time Series Sales forecasting', max=17000, labels=line_labels, values=line_values, filename = filename)
@app.route('/download/<filename>')
def download(filename):
return send_from_directory("downloads", filename, as_attachment = True)
@app.route('/transform',methods=[“POST”])
def transform_view():
如果request.method==“POST”:
f=请求.files['data_file']
如果不是f:
返回“无文件”
stream=io.StringIO(f.stream.read().decode(“UTF8”),换行符=None)
csv\u输入=csv.reader(流)
stream.seek(0)
结果=stream.read()
df=pd.read\u csv(StringIO(结果),usecols=[1])
#提取月值
df2=pd.read\U csv(字符串(结果))
matrix2=df2[df2.columns[0]]to_numpy()
list1=matrix2.tolist()
#从磁盘加载模型
模型=负荷\模型('model.h5'))
数据集=df.values
dataset=dataset.astype('float32')
scaler=MinMaxScaler(功能范围=(0,1))
dataset=scaler.fit_变换(dataset)
回头看=1
dataset\u look=创建\u数据集(dataset,look\u back)
dataset_look=np.Reformate(dataset_look,(dataset_look.shape[0],1,dataset_look.shape[1]))
predict=model.predict(数据集\u外观)
变换=定标器。逆变换(预测)
X_未来=12
transform=np.array([])
last=数据集[-1]
对于范围内的i(X_未来):
curr_prediction=model.predict(np.array([last])。重塑(1,look_back,1))
last=np.concatenate([last[1:],curr\u prediction.reformate(-1)])
transform=np.连接([transform,curr\u prediction[0]]))
变换=定标器。逆变换([transform])[0]
dicts=[]
curr\u date=pd.to\u datetime(列表1[-1])
对于范围内的i(X_未来):
当前日期=当前日期+相对延迟(月=+1)
追加({'Predictions':transform[i],“Month”:curr_date})
新数据=pd.数据帧(dicts).设置索引(“月”)
##df_predict=pd.DataFrame(转换,列=[“预测值”])
新的到csv的数据(os.path.join(“下载”,index=True,encoding='utf8'))
标签=[d['Month']表示dicts中的d]
数值=[d['predicts']表示dicts中的d]
颜色=[“F7464A”、“46BFBD”、“FDB45C”、“FEDCBA”,
“ABCDEF”、“DDDD”、“ABCABC”、“4169E1”,
“C71585”、“FF4500”、“FEDCBA”、“46BFBD”]
line_标签=标签
行_值=值
返回渲染模板('graph.html',title='Time Series Sales forecasting',max=17000,labels=line\u labels,values=line\u values,filename=filename)
@app.route(“/download/”)
def下载(文件名):
从_目录返回发送_(“下载”,文件名,如_attachment=True)
#HTML页面
<a href="{{ url_for('download', filename=filename) }}">Download</a>