Spaces:
Sleeping
Sleeping
| import yfinance as yf | |
| import pandas as pd | |
| def fetch_financials(ticker_symbol: str, freq: str = "annual"): | |
| """Fetch income statement and cashflow for a given ticker.""" | |
| ticker = yf.Ticker(ticker_symbol) | |
| # Use get_* methods if available | |
| try: | |
| income = ticker.get_income_stmt(freq=freq) | |
| except AttributeError: | |
| # fallback to older API | |
| income = ticker.financials | |
| try: | |
| cash = ticker.get_cashflow(freq=freq) | |
| except AttributeError: | |
| cash = ticker.cashflow | |
| # If they return dict (as_dict=True), convert to DataFrame | |
| if isinstance(income, dict): | |
| income = pd.DataFrame(income) | |
| if isinstance(cash, dict): | |
| cash = pd.DataFrame(cash) | |
| return income, cash | |
| def clean_financials(df: pd.DataFrame) -> pd.DataFrame: | |
| """Clean / transform the financials DataFrame for better plotting.""" | |
| # Transpose so dates become rows | |
| df2 = df.T.copy() | |
| # Optionally sort by date | |
| try: | |
| # If columns are strings of dates or period | |
| df2.index = pd.to_datetime(df2.index) | |
| df2 = df2.sort_index() | |
| except Exception: | |
| pass | |
| return df2 | |