summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2023-06-05 07:37:18 -0700
committerGitHub <noreply@github.com>2023-06-05 14:37:18 +0000
commitb81aa22385261a4a9054208b9bcb01174afadc76 (patch)
treee7b283b1e7aa3641dfe87014be9b2b1e532cd54f
parentf4a5064f3251335f675490f3e1f24efa3f4220c1 (diff)
hotfix/fa-yfinance-plot - makes `stocks/fa/income --plot` output match everything else. (#5101)
* makes fa/plot output match everything else * fix y-axis to be billions * fix denominations * black * ruff
-rw-r--r--openbb_terminal/stocks/fundamental_analysis/yahoo_finance_model.py15
-rw-r--r--openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py33
2 files changed, 15 insertions, 33 deletions
diff --git a/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_model.py b/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_model.py
index 01fd5c5d502..f7305f6260b 100644
--- a/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_model.py
+++ b/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_model.py
@@ -2,7 +2,6 @@
__docformat__ = "numpy"
import logging
-import re
import ssl
from datetime import datetime
from typing import Optional, Tuple
@@ -15,7 +14,6 @@ from bs4 import BeautifulSoup
from openbb_terminal.decorators import log_start_end
from openbb_terminal.helper_funcs import lambda_long_number_format
-from openbb_terminal.helpers_denomination import transform as transform_by_denomination
from openbb_terminal.rich_config import console
from openbb_terminal.stocks.fundamental_analysis.fa_helper import clean_df_index
@@ -358,14 +356,11 @@ def get_financials(symbol: str, statement: str, ratios: bool = False) -> pd.Data
df = df.replace("k", "", regex=True)
df = df.astype("float")
- # Data except EPS is returned in thousands, convert it
- (df, _) = transform_by_denomination(
- df,
- "Thousands",
- "Units",
- axis=1,
- skipPredicate=lambda row: re.search("eps", row.name, re.IGNORECASE) is not None,
- )
+ not_skipped = ~df.reset_index()["Breakdown"].str.contains("EPS", case=False)
+ skipped = df.reset_index()["Breakdown"].str.contains("EPS", case=False)
+ skipped_df = df.reset_index()[skipped].set_index("Breakdown")
+ transformed = df.reset_index()[not_skipped].set_index("Breakdown") * 1000
+ df = pd.concat([transformed, skipped_df])
if ratios:
types = df.copy().applymap(lambda x: isinstance(x, (float, int)))
diff --git a/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py b/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py
index 7eed7853020..6cc66879f60 100644
--- a/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py
+++ b/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py
@@ -16,7 +16,6 @@ from openbb_terminal.helper_funcs import (
lambda_long_number_format,
print_rich_table,
)
-from openbb_terminal.helpers_denomination import transform as transform_by_denomination
from openbb_terminal.rich_config import console
from openbb_terminal.stocks import stocks_helper
from openbb_terminal.stocks.fundamental_analysis import yahoo_finance_model
@@ -392,8 +391,6 @@ def display_fundamentals(
for i in [i.replace(" ", "_") for i in fundamentals.index.str.lower()]
]
- symbol_currency = yahoo_finance_model.get_currency(symbol)
-
if plot:
plot = [x.lower() for x in plot]
rows_plot = len(plot)
@@ -403,40 +400,29 @@ def display_fundamentals(
fundamentals_plot_data = fundamentals_plot_data.drop(["ttm"])
fundamentals_plot_data = fundamentals_plot_data.sort_index()
- if not ratios:
- maximum_value = fundamentals_plot_data[plot[0]].max()
- (df_rounded, denomination) = transform_by_denomination(
- fundamentals_plot_data, maxValue=maximum_value
- )
- if denomination == "Units":
- denomination = ""
- else:
- df_rounded = fundamentals_plot_data
- denomination = ""
-
if rows_plot == 1:
- fig.add_bar(
- x=df_rounded.index,
- y=df_rounded[plot[0]],
+ fig.add_scatter(
+ x=fundamentals_plot_data.index,
+ y=fundamentals_plot_data[plot[0]],
name=plot[0].replace("_", " "),
)
title = (
f"{plot[0].replace('_', ' ').capitalize()} QoQ Growth of {symbol.upper()}"
if ratios
- else f"{plot[0].replace('_', ' ').capitalize()} of {symbol.upper()} {denomination}"
+ else f"{plot[0].replace('_', ' ').capitalize()} of {symbol.upper()}"
)
fig.set_title(title)
else:
fig = OpenBBFigure.create_subplots(rows=rows_plot, cols=1)
for i in range(rows_plot):
- fig.add_bar(
- x=df_rounded.index,
- y=df_rounded[plot[i]],
+ fig.add_scatter(
+ x=fundamentals_plot_data.index,
+ y=fundamentals_plot_data[plot[i]],
name=plot[i].replace("_", " "),
row=i + 1,
col=1,
)
- title = f"{plot[i].replace('_', ' ')} {denomination}"
+ title = f"{plot[i].replace('_', ' ')}"
fig.add_annotation(x=0.5, y=1, row=i + 1, col=1, text=title)
fig.show(external=fig.is_image_export(export))
@@ -451,7 +437,8 @@ def display_fundamentals(
print_rich_table(
formatted_df.applymap(lambda x: "-" if x == "nan" else x),
show_index=True,
- title=f"{symbol} {title_str} Currency: {symbol_currency}",
+ index_name="Item",
+ title=f"{symbol} {title_str}",
export=bool(export),
limit=limit,
)