Update app.py
Browse files
app.py
CHANGED
|
@@ -25,13 +25,16 @@ todaydate = pn.widgets.DatePicker(
|
|
| 25 |
todaydate2 = datetime.today().strftime("%Y-%m-%d")
|
| 26 |
df = get_df(todaydate2)
|
| 27 |
selectedcol = pn.widgets.Select(name='Select Ratio', value = 'PEG Ratio', options=list(df.columns))
|
| 28 |
-
selecteditem = pn.widgets.Select(name='Select Item', options=['Industry' , 'Sector'])
|
| 29 |
selectedmethod = pn.widgets.Select(name='Select Method', value= 'Mean' , options=['Mean', 'Min' , 'Max'])
|
| 30 |
|
|
|
|
|
|
|
|
|
|
| 31 |
selectedhover = 'Ticker'
|
| 32 |
hv.extension('bokeh')
|
| 33 |
|
| 34 |
-
def create_plot(selectedcol,selecteditem,todaydate,selectedmethod):
|
| 35 |
df = get_df(todaydate)
|
| 36 |
if selectedmethod=='Mean':
|
| 37 |
group_them = df.groupby(selecteditem)[selectedcol].mean()
|
|
@@ -40,16 +43,16 @@ def create_plot(selectedcol,selecteditem,todaydate,selectedmethod):
|
|
| 40 |
if selectedmethod=='Max':
|
| 41 |
group_them = df.groupby(selecteditem)[selectedcol].max()
|
| 42 |
df2 = df.merge(group_them, left_on=selecteditem, right_index=True, suffixes=('', f'_{selecteditem}_{selectedmethod}'))
|
| 43 |
-
|
| 44 |
-
return df2.hvplot.bar(x=selecteditem, y=f'{selectedcol}_{selecteditem}_{selectedmethod}', hover_cols=selectedhover, height=800, width=1800).opts(xrotation=90, fontsize={'xticks': 10}).opts(show_grid=True)
|
| 45 |
|
| 46 |
def create_alert(selectedcol):
|
| 47 |
text = f"### {selectedcol} \n {DescriptionDict[selectedcol]}"
|
| 48 |
return pn.pane.Alert(text, alert_type="warning")
|
| 49 |
|
| 50 |
|
| 51 |
-
bound_plot = pn.bind(create_plot, selectedcol=selectedcol , selecteditem=selecteditem, todaydate=todaydate, selectedmethod=selectedmethod)
|
| 52 |
bound_alert = pn.bind(create_alert,selectedcol=selectedcol)
|
| 53 |
-
pn.Column(pn.Row(selectedcol, selecteditem, todaydate,selectedmethod), bound_plot, bound_alert).servable(title="Financial Sector Ratios Navigator")
|
| 54 |
|
| 55 |
|
|
|
|
| 25 |
todaydate2 = datetime.today().strftime("%Y-%m-%d")
|
| 26 |
df = get_df(todaydate2)
|
| 27 |
selectedcol = pn.widgets.Select(name='Select Ratio', value = 'PEG Ratio', options=list(df.columns))
|
| 28 |
+
selecteditem = pn.widgets.Select(name='Select Item', value='Sector' , options=['Industry' , 'Sector'])
|
| 29 |
selectedmethod = pn.widgets.Select(name='Select Method', value= 'Mean' , options=['Mean', 'Min' , 'Max'])
|
| 30 |
|
| 31 |
+
ticker = pn.widgets.AutocompleteInput(name='Ticker', options=list(df.Ticker) , placeholder='Write Ticker here همین جا')
|
| 32 |
+
ticker.value = "AAPL"
|
| 33 |
+
|
| 34 |
selectedhover = 'Ticker'
|
| 35 |
hv.extension('bokeh')
|
| 36 |
|
| 37 |
+
def create_plot(selectedcol,selecteditem,todaydate,selectedmethod,ticker):
|
| 38 |
df = get_df(todaydate)
|
| 39 |
if selectedmethod=='Mean':
|
| 40 |
group_them = df.groupby(selecteditem)[selectedcol].mean()
|
|
|
|
| 43 |
if selectedmethod=='Max':
|
| 44 |
group_them = df.groupby(selecteditem)[selectedcol].max()
|
| 45 |
df2 = df.merge(group_them, left_on=selecteditem, right_index=True, suffixes=('', f'_{selecteditem}_{selectedmethod}'))
|
| 46 |
+
df3 = df.query('Ticker == @ticker')
|
| 47 |
+
return df2.hvplot.bar(x=selecteditem, y=f'{selectedcol}_{selecteditem}_{selectedmethod}', hover_cols=selectedhover, height=800, width=1800).opts(xrotation=90, fontsize={'xticks': 10}).opts(show_grid=True) * df3.hvplot.bar(x=selecteditem, y=f'{selectedcol}',hover_cols=selectedhover,)
|
| 48 |
|
| 49 |
def create_alert(selectedcol):
|
| 50 |
text = f"### {selectedcol} \n {DescriptionDict[selectedcol]}"
|
| 51 |
return pn.pane.Alert(text, alert_type="warning")
|
| 52 |
|
| 53 |
|
| 54 |
+
bound_plot = pn.bind(create_plot, selectedcol=selectedcol , selecteditem=selecteditem, todaydate=todaydate, selectedmethod=selectedmethod,ticker=ticker)
|
| 55 |
bound_alert = pn.bind(create_alert,selectedcol=selectedcol)
|
| 56 |
+
pn.Column(pn.Row(selectedcol, selecteditem, todaydate,selectedmethod,ticker), bound_plot, bound_alert).servable(title="Financial Sector Ratios Navigator")
|
| 57 |
|
| 58 |
|