stocks / app.py
varun500's picture
Update app.py
898e645
import streamlit as st
import yfinance as yf
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
def get_stock_data(symbol, start_date, end_date):
start = dt.datetime.strptime(start_date, "%Y-%m-%d")
end = dt.datetime.strptime(end_date, "%Y-%m-%d")
data = yf.download(symbol, start=start, end=end)
return data
def plot_stock_prices(data):
fig, ax = plt.subplots()
ax.plot(data['Close'])
ax.set(xlabel='Date', ylabel='Stock Price ($)',
title='Stock Prices')
ax.grid()
st.pyplot(fig)
# Dow Jones 30 companies and additional options
companies = {
'AAPL': 'Apple Inc.',
'MSFT': 'Microsoft Corporation',
'AMZN': 'Amazon.com Inc.',
'GOOGL': 'Alphabet Inc. (Google)',
'BA': 'The Boeing Company',
'AIR.PA': 'Airbus SE',
'NVDA': 'NVIDIA Corporation',
'AXP': 'American Express Company',
'BA': 'The Boeing Company',
'CAT': 'Caterpillar Inc.',
'CSCO': 'Cisco Systems, Inc.',
'CVX': 'Chevron Corporation',
'DIS': 'The Walt Disney Company',
'DOW': 'Dow Inc.',
'GS': 'The Goldman Sachs Group, Inc.',
'HD': 'The Home Depot, Inc.',
'IBM': 'International Business Machines Corporation',
'INTC': 'Intel Corporation',
'JNJ': 'Johnson & Johnson',
'JPM': 'JPMorgan Chase & Co.',
'KO': 'The Coca-Cola Company',
'MCD': "McDonald's Corporation",
'MMM': '3M Company',
'MRK': 'Merck & Co., Inc.',
'NKE': 'NIKE, Inc.',
'PFE': 'Pfizer Inc.',
'PG': 'Procter & Gamble Company',
'TRV': 'The Travelers Companies, Inc.',
'UNH': 'UnitedHealth Group Incorporated',
'V': 'Visa Inc.',
'VZ': 'Verizon Communications Inc.',
'WBA': 'Walgreens Boots Alliance, Inc.',
'WMT': 'Walmart Inc.'
}
# Streamlit app
st.title('Stock Price Analysis')
selected_symbol = st.sidebar.selectbox('Select a company', list(companies.keys()))
# Sidebar inputs
start_date = st.sidebar.date_input("Start Date", value=dt.date.today() - dt.timedelta(days=30))
end_date = st.sidebar.date_input("End Date", value=dt.date.today())
# Fetch and display stock prices
data = get_stock_data(selected_symbol, start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d"))
if data.empty:
st.warning('No data found for the selected dates.')
else:
st.success('Successfully fetched stock data.')
selected_company_name = companies[selected_symbol]
st.subheader(f"{selected_company_name} Stock Prices")
plot_stock_prices(data)