Spaces:
Sleeping
Sleeping
File size: 3,148 Bytes
76ba4f4 2086e56 a8a3333 76ba4f4 a8a3333 76ba4f4 a8a3333 ac0650f 8e4352d 76ba4f4 8e4352d 76ba4f4 8e4352d 76ba4f4 090fb84 8e4352d ac0650f 8e4352d ac0650f 8e4352d 0919ad9 090fb84 76ba4f4 090fb84 76ba4f4 9302e83 76ba4f4 9302e83 090fb84 9302e83 73fc605 090fb84 452da62 090fb84 452da62 e03238f 9302e83 090fb84 9302e83 090fb84 9302e83 090fb84 9302e83 090fb84 9302e83 090fb84 76ba4f4 090fb84 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
import gradio as gr
import yfinance as yf
import pandas as pd
# Mapping company names to their ticker symbols
company_dict = {
"Apple": "AAPL",
"Google": "GOOGL",
"Microsoft": "MSFT",
"Amazon": "AMZN",
"Tesla": "TSLA"
}
# Function to fetch ESG data for the selected company
def fetch_esg_data(company_name):
# Get the ticker symbol from the company name
ticker = company_dict[company_name]
# Fetch ESG data from Yahoo Finance
stock = yf.Ticker(ticker)
esg_data = stock.sustainability
# If ESG data is available, process it into a DataFrame
if esg_data is not None:
esg_df = pd.DataFrame(esg_data)
# Extract only the relevant ESG scores and convert to a DataFrame
esg_scores = esg_df.loc[["environmentScore", "socialScore", "governanceScore"], :].dropna().astype(float)
# Prepare a DataFrame for plotting
plot_df = pd.DataFrame({
"ESG Category": ["Environment", "Social", "Governance"],
"Score": esg_scores.squeeze().values
})
# Save the ESG data to a CSV file
csv_filename = f"{ticker}_esg_data.csv"
esg_df.to_csv(csv_filename)
return plot_df, csv_filename, plot_df, plot_df
else:
# Return empty DataFrames and None if no data is available
return pd.DataFrame(), None, pd.DataFrame(), pd.DataFrame()
# Gradio interface with multiple tabs
def app_interface():
with gr.Blocks() as app:
with gr.Tab("ESG Data Analysis"):
# Dropdown to select company name
company = gr.Dropdown(
label="Select Company",
choices=list(company_dict.keys()),
value="Apple"
)
# Button to fetch and plot ESG data
plot_button = gr.Button("Generate ESG Plot")
# LinePlot component for displaying the ESG data
line_plot = gr.LinePlot(label="ESG Scores Line Plot", x="ESG Category", y="Score", overlay_point=True)
# ScatterPlot component for displaying the ESG data
scatter_plot = gr.ScatterPlot(plot_df, x="ESG Category", y="Score", overlay_point=True)
# BarPlot component for displaying the ESG data
bar_plot = gr.BarPlot(plot_df x="ESG Category", y="Score")
# File output for CSV download
csv_output = gr.File(label="Download CSV")
# Define the action when the "Generate ESG Plot" button is clicked
plot_button.click(fn=fetch_esg_data, inputs=company, outputs=[line_plot, csv_output, scatter_plot, bar_plot])
with gr.Tab("Tab 2"):
gr.Markdown("This is Tab 2. You can add more content here.")
with gr.Tab("Tab 3"):
gr.Markdown("This is Tab 3. Add your custom functionality here.")
with gr.Tab("Tab 4"):
gr.Markdown("This is Tab 4. Add more features or visualization here.")
return app
# Launch the Gradio app
app = app_interface()
if __name__ == "__main__":
app.launch()
|