Я пытаюсь написать простое веб-приложение с Da sh, где пользователь загружает CSV-файл, некоторая обработка выполняется в кадре данных с помощью pandas, а затем можно загрузить новый CSV-файл. пользователем по ссылке. Хотя я неплохо разбираюсь в анализе данных, я очень плохо знаком с Da sh. Это, вероятно, супер базовый c, но я не знаю, где должна обрабатываться pandas часть обработки go, и как в конце концов создать ссылку для скачивания.
Вот упрощенная версия кода:
import base64
import datetime
import io
import dash
from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(children = [
html.H2('Please upload your csv file:'),
dcc.Upload(
id= 'upload-data',
children = html.Div([
html.A('Select File')]),
style = {
'width': '100%',
'height': '60px',
'lineHeight': '60px',
'borderWidth': '1px',
'borderStyle': 'dashed',
'borderRadius': '4px',
'textAlign': 'center',
'margin': '5px'
},
),
html.Div(id='download-link')
])
def parse_contents(contents, filename):
content_type, content_string = contents.split(',')
decoded = base64.b64decode(content_string)
try:
if 'csv' in filename:
# Assume the uploaded file is csv
df = pd.read_csv(io.StringIO(decoded.decode('utf-8')))
except Exception as e:
print(e)
return html.Div([
'There was an error. Please uplaod the file in csv format.'
])
return df
@app.callback(Output('download-link', 'href'),
[Input('upload-data', 'contents')])
# Data processing using pandas:
def example_func(df):
df['col2'] = df['col1']+'some string'
return df
df_new = df.apply(example_func, axis=1)
df_new.to_csv('processed_data.csv')
# Return a link to let the user download the csv file with the processed data
def download_csv (contents):
#######
if __name__ == '__main__':
app.run_server(debug=True)
Любой вклад будет оценен!