Thank you very much for Dash! I am working on my first app, which is supposed to be a dashboard where my users can upload files, the file would be cleaned using python functions and graphs plotted. I dont know how to access the uploaded files in a dataframe. My current solution involve me hard-coding the dataframe in my script, this wouldn’t be suitable for deployment.
I have gone through the Upload component tutorial which cover returning texts and tables, I would like to access the actual dataframe and clean it with functions instead.
How can I go about this? I know its trivial, but I just cant find the solution.
import dash_core_components as dcc
import dash_html_components as html
import dash
from dash.dependencies import Input, Output
#from pandas_datareader import data as web
#from datetime import datetime as dt
from dataclean import *
def sharepoint(filename):
import pandas as pd
data = pd.read_excel(str(filename), sheet_name=2)
rows_to_drop = ['Current SharePoint 2010 sites'
,' Not migrating to 365 (locked)',
' Migration to 365 complete (locked)',
' Stale (may not need to be migrated)',
'Total Active Site collections (2010 & O365 sites)',
'Sites Created by Group creation process',
'O365 sites - shell - informational']
data.drop(labels = rows_to_drop, inplace=True)
data.dropna(inplace = True)
data=data.transpose()
return data
# temporary solution cos I dont know how to access files uploaded
SP = sharepointclean('SPMigrationsandy.xlsx')
#print(SP)
app = dash.Dash()
app.layout = html.Div(children = [html.Div(children = html.H1(children = 'Office 365 Adoption Dashboard', style = {'textAlign': 'center'})) ,
dcc.Markdown('Please upload the files in the respective boxes'),
dcc.Upload( id='upload-od4b',children=html.Div(['Drag and Drop Onedrive file or ', html.A('Select Files')]),
style={'width': '40%','height': '30px','lineHeight': '30px','borderWidth': '1px',
'borderStyle': 'dashed','borderRadius': '5px','textAlign': 'center','margin': '10px'},
multiple=False),
dcc.Upload( id='upload-sccm',children=html.Div(['Drag and Drop SCCM file or ', html.A('Select Files')]),
style={'width': '40%','height': '30px','lineHeight': '30px','borderWidth': '1px',
'borderStyle': 'dashed','borderRadius': '5px','textAlign': 'center','margin': '10px'},
multiple=False),
dcc.Upload( id='upload-sharepoint',children=html.Div(['Drag and Drop Sharepoint file or ', html.A('Select Files')]),
style={'width': '40%','height': '30px','lineHeight': '30px','borderWidth': '1px',
'borderStyle': 'dashed','borderRadius': '5px','textAlign': 'center','margin': '10px'},
multiple=False),
dcc.Upload( id='upload-exchange',children=html.Div(['Drag and Drop Exchange file or ', html.A('Select Files')]),
style={'width': '40%','height': '30px','lineHeight': '30px','borderWidth': '1px',
'borderStyle': 'dashed','borderRadius': '5px','textAlign': 'center','margin': '10px'},
multiple=False),
dcc.Dropdown(id='my-dropdown',options = [{'label': 'Onedrive for Business', 'value': 'OD4B'},
{'label':'SCCM', 'value':'sccm'},
{'label':'Sharepoint', 'value':'SP'},
{'label':'Exchange', 'value':'EXC'}], value = 'OD4B'),
dcc.Graph(id='my-graph')
]
)
@app.callback(Output('my-graph', 'figure'), [Input('my-dropdown', 'value')])
def update_graph(selected_dropdown_value):
if selected_dropdown_value =='SP':
return {'data': [{'y': SP['Active SP2010 site collections'],'x': SP.index, 'name':'Active SP2010 sites'},
{'y': SP['Active O365 site collections'],'x': SP.index, 'name':'Active O365 sites'}],
'layout': {'title': 'Sharepoint Migration'}}
if __name__ == '__main__':
app.run_server(port=5003)