Streamlit是第一个专门针对机器学习和数据科学团队的应用 开发框架,它是开发自定义机器学习工具的最快的方法,你可以认为 它的目标是取代Flask在机器学习项目中的地位,可以帮助机器学习 工程师快速开发用户交互工具。但是streamlit有一定的局限性,没办法实现页面跳转的功能,如果想要实现,可以尝试与flask结合进行开发,但我目前还不太会用flask。
1.首先安装streamlit
pip install streamlit
2.定义title
import streamlit as st
import pandas as pd
import numpy as np
st.title("数据转换")
3.上传文件并展示在页面
st.write('上传csv文件,进行数据转换 :wave:')
file = st.file_uploader('上传文件', type=['csv'], encoding='auto', key=None)
@st.cache
def get_data(file):
df = pd.DataFrame()
if file is not None:
data = []
for i, line in enumerate(file.getvalue().split('\n')):
if i == 0:
header = line.split(',')
else:
data.append(line.split(','))
df=pd.DataFrame(data,columns=header)
return df
df = get_data(file)
st.write(df)
4.针对特定的数据进行长表转宽表操作
##########y值的行转列
@st.cache
def transform_y(df):
for param_name in df[["PARAM_NAME"]].drop_duplicates().values:
data_para = df[df["PARAM_NAME"] == param_name[0]]
final_data = data_para.pivot_table(index=["GLASS_ID", "GLASS_START_TIME", "EQUIP_ID"], columns=["SITE_NAME"],
values=["PARAM_VALUE"], aggfunc=np.sum)
ncl = [param_name[0] + '_' + str(x + 1) for x in range(final_data.shape[1])]
final_data = pd.DataFrame(final_data.values, columns=ncl, index=final_data.index)
final_data = final_data.reset_index()
final_data["GLASS_ID"] = final_data["GLASS_ID"].fillna(method='ffill')
final_data.drop_duplicates(subset=["GLASS_ID"], keep='last', inplace=True)
return final_data
#####x值的行转列
@st.cache
def transform_x(df_x):
data_x = df_x.pivot_table(index="GLASS_ID", columns="PARAM_NAME", values="PARAM_STR_VALUE",
aggfunc='last')
return data_x
5.设置button进行调用转换函数
if st.button("X数据转换"):
data_x = transform_x(df)
st.write(data_x)
data_x.to_csv("data/data_x.csv")
#f len(df)!=0:
#data_x=transform_x(df)
if st.button("X点击下载"):
data_x = transform_x(df)
st.write(data_x)
st.write('http://localhost:8081/data_x.csv')
if st.button("Y数据转换"):
data_y = transform_y(df)
st.write(data_y)
data_y.to_csv("data/data_y.csv")
# if len(df)!=0:
# data_y=transform_y(df)
if st.button("Y点击下载"):
data_y = transform_y(df)
st.write(data_y)
st.write('http://localhost:8081/data_y.csv')
5.最后运行此段代码,并在pycharm的Terminal命令终端输入
streamlit run data.py 运行得到网页地址:
Local URL: http://localhost:8501
Network URL: http://192.168.66.82:8501
Ctrl+C退出
6.进行文件下载还要开启文件服务器
在pycharm的Terminal命令终端新建local(2)输入:
python -m http.server 8081
Ctrl+C退出
6.最后呈现效果如下图