This is my program. I have added a dropdown to show the symbols in the csv. and from the symbols dropdown.i want to get the required column of the selected drop value(example: I have selected AAPL in symbol and now i want to get the AAPL High value from the another dropdown by giving the column name high ,low ).I have to select X and Y value from different drop value. Someone please help. This is the code am using.
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Output, Input
import plotly.graph_objs as go
import pandas as pd
import numpy as np
app = dash.Dash()
df = pd.read_csv(’/home/client/Videos/Project/All.csv’)
available_indicators = df[‘Sector’].unique()
colval = df.columns.values
def generate_table(dataframe, max_rows=10):
return html.Table(
# Header
[html.Tr([html.Th(col) for col in dataframe.columns])] +
# Body
[html.Tr([
html.Td(dataframe.iloc[i][col]) for col in dataframe.columns
]) for i in range(min(len(dataframe), max_rows))]
)
app = dash.Dash(name)
app.layout = html.Div([
dcc.Tabs(id=“tabs”, children=[
dcc.Tab(label=‘Data Preview’, children=[
html.H4(children=‘S & P 500’),
dcc.Dropdown(id='dropdown', options=[
{'label': i, 'value': i} for i in df.Sector.unique()
], placeholder='Filter by Sectors'),
html.Div(id='table-container')
]),
dcc.Tab(label='Regressor', children=[
html.Div([
html.Div([
html.Div([
html.H5('Random Forest'),
dcc.Dropdown(
id='graphdrop',
options=[{'label': i, 'value': i} for i in available_indicators],
value='Energy'
),
dcc.Dropdown(
id='xdrop',
options=[{'label': a, 'value': a} for a in colval],
value='Energy'
),
dcc.Dropdown(
id='ydrop',
options=[{'label': a, 'value': a} for a in colval],
value='Energy'
),
dcc.Graph(
id="g1",
)
],
className="one-third column"),
]),
])
])
])
])
@app.callback(dash.dependencies.Output(‘xdrop’, ‘options’),
[dash.dependencies.Input(‘graphdrop’, ‘value’)])
def get_f2_options(selected_f1_value):
return [{‘label’: k, ‘value’: k} for k in available_indicators[selected_f1_value]],
@app.callback(dash.dependencies.Output(‘xdrop’, ‘value’),
[dash.dependencies.Input(‘xdrop’, ‘options’)])
def get_f2_options(selected_f1_value):
return selected_f1_value[0][‘value’],
@app.callback(dash.dependencies.Output(‘ydrop’, ‘value’),
[dash.dependencies.Input(‘ydrop’, ‘options’)])
def get_f2_options(selected_f1_value):
return selected_f1_value[0][‘value’],
@app.callback(dash.dependencies.Output(‘g1’, ‘figure’),
[dash.dependencies.Input(‘graphdrop’, ‘value’),
dash.dependencies.Input(‘xdrop’, ‘value’),
dash.dependencies.Input(‘ydrop’, ‘value’)])
def update_fig(selected_x1_value, selected_y1_value):
dff = df[df.Sector == selected_x1_value]
ddf = df[df.Sector == selected_y1_value]
X = dff.values
y = ddf.values
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X.reshape(-1, 1))
y = sc_y.fit_transform(y.reshape(-1, 1))
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators=300, random_state=0)
regressor.fit(X, y)
X_grid = np.arange(min(X), max(X), 0.02)
X_grid = X_grid.reshape((len(X_grid), 1))
trace_line = go.Scatter(
y=regressor.predict(X_grid),
visible=True,
name="Close",
showlegend=False)
data = [trace_line]
return {
"data": data
}
@app.callback(
dash.dependencies.Output(‘table-container’, ‘children’),
[dash.dependencies.Input(‘dropdown’, ‘value’)])
def display_table(dropdown_value):
if dropdown_value is None:
return generate_table(df)
dff = df[df.Sector.str.contains(dropdown_value)]
return generate_table(dff),
if name == ‘main’:
app.run_server(debug=True, port=9898)