Knight-coderr commited on
Commit
23a97dd
·
verified ·
1 Parent(s): 0251baa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -25
app.py CHANGED
@@ -8,33 +8,28 @@ import datetime
8
 
9
  # Function to load stock data using yfinance
10
  @st.cache_data(ttl=86400)
11
- def load_yfinance_data():
12
- # List of stock tickers
13
- tickers = ['TSLA', 'MSFT', 'PG', 'META', 'AMZN', 'GOOG', 'AMD', 'AAPL', 'NFLX', 'TSM',
14
- 'KO', 'F', 'COST', 'DIS', 'VZ', 'CRM', 'INTC', 'BA', 'BX', 'NOC', 'PYPL', 'ENPH', 'NIO', 'ZS', 'XPEV']
15
-
16
- # Set the start and end dates for the past 1 year
17
- start_date = (datetime.datetime.now() - datetime.timedelta(days=365)).strftime('%Y-%m-%d')
18
- end_date = datetime.datetime.today().strftime('%Y-%m-%d')
19
-
20
- # Download the stock data using yfinance
21
- data = yf.download(tickers, start=start_date, end=end_date, group_by='ticker')
22
 
23
- # Process and format the data for each ticker
 
24
  all_data = []
25
  for ticker in tickers:
26
- df = data[ticker].copy()
27
- df.reset_index(inplace=True)
28
  df['Stock Name'] = ticker
29
  all_data.append(df)
30
-
31
- # Concatenate all the data into a single DataFrame
32
- all_stock_data = pd.concat(all_data, ignore_index=True)
33
 
34
- return all_stock_data
 
35
 
36
- # Load the data
37
- data = load_yfinance_data()
 
 
 
 
 
38
 
39
  # Perform sentiment analysis on tweets (assuming you still have your tweets data)
40
  tweets_data = pd.read_csv('data/stock_tweets.csv')
@@ -158,11 +153,17 @@ if st.button("Predict"):
158
  stock_history = data[data['Stock Name'] == selected_stock]
159
 
160
  # Date filter slider
161
- min_date = stock_history['Date'].min()
162
- max_date = stock_history['Date'].max()
163
- date_range = st.slider("Select Date Range for Visualizations",
164
- min_value=min_date, max_value=max_date,
165
- value=(min_date, max_date))
 
 
 
 
 
 
166
  filtered_data = stock_history[(stock_history['Date'] >= date_range[0]) & (stock_history['Date'] <= date_range[1])]
167
 
168
  with st.expander(" Price vs Sentiment Trend"):
 
8
 
9
  # Function to load stock data using yfinance
10
  @st.cache_data(ttl=86400)
11
+ def load_stock_data(tickers, start_date, end_date):
12
+ import yfinance as yf
13
+ import pandas as pd
 
 
 
 
 
 
 
 
14
 
15
+ data = yf.download(tickers, start=start_date, end=end_date, group_by='ticker', auto_adjust=True)
16
+
17
  all_data = []
18
  for ticker in tickers:
19
+ df = data[ticker].copy().reset_index()
 
20
  df['Stock Name'] = ticker
21
  all_data.append(df)
 
 
 
22
 
23
+ merged_data = pd.concat(all_data, ignore_index=True)
24
+ return merged_data
25
 
26
+
27
+ tickers = ['TSLA', 'MSFT', 'PG', 'META', 'AMZN', 'GOOG', 'AMD', 'AAPL', 'NFLX', 'TSM',
28
+ 'KO', 'F', 'COST', 'DIS', 'VZ', 'CRM', 'INTC', 'BA', 'BX', 'NOC', 'PYPL', 'ENPH', 'NIO', 'ZS', 'XPEV']
29
+ start_date = (datetime.today() - pd.DateOffset(years=1)).strftime('%Y-%m-%d')
30
+ end_date = datetime.today().strftime('%Y-%m-%d')
31
+
32
+ stock_data = load_stock_data(tickers, start_date, end_date)
33
 
34
  # Perform sentiment analysis on tweets (assuming you still have your tweets data)
35
  tweets_data = pd.read_csv('data/stock_tweets.csv')
 
153
  stock_history = data[data['Stock Name'] == selected_stock]
154
 
155
  # Date filter slider
156
+ min_date = pd.to_datetime(data['Date'].min()).date()
157
+ max_date = pd.to_datetime(data['Date'].max()).date()
158
+
159
+ date_range = st.slider(
160
+ "Select Date Range for Visualizations",
161
+ min_value=min_date,
162
+ max_value=max_date,
163
+ value=(min_date, max_date),
164
+ format="YYYY-MM-DD"
165
+ )
166
+
167
  filtered_data = stock_history[(stock_history['Date'] >= date_range[0]) & (stock_history['Date'] <= date_range[1])]
168
 
169
  with st.expander(" Price vs Sentiment Trend"):