samarthv commited on
Commit
a57a319
1 Parent(s): e5f4d0a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -59
app.py CHANGED
@@ -3,8 +3,6 @@ import pandas as pd
3
  import numpy as np
4
  from sklearn.linear_model import LinearRegression
5
  import matplotlib.pyplot as plt
6
- import random
7
- import string
8
 
9
  # Remove the Streamlit default layout
10
  st.set_page_config(layout="wide")
@@ -16,14 +14,8 @@ data2 = pd.read_csv('tesla.csv')
16
  # Combine the datasets into a dictionary
17
  datasets = {'Google': data1, 'Tesla': data2}
18
 
19
- # Generate a random string for unique key generation
20
- def random_string(length):
21
- letters = string.ascii_lowercase
22
- return ''.join(random.choice(letters) for i in range(length))
23
-
24
  # Get the user's dataset selection
25
- key = f'dataset_selection_{random_string(5)}'
26
- selected_dataset = st.selectbox('Select Stock', list(datasets.keys()), key=key)
27
 
28
  # Retrieve the selected dataset
29
  selected_data = datasets[selected_dataset]
@@ -36,74 +28,38 @@ y = selected_data['Close']
36
  model = LinearRegression()
37
  model.fit(X, y)
38
 
39
- # Predict the stock prices
40
- predictions = model.predict(X)
41
-
42
- # Create subplots
43
- fig, axes = plt.subplots(3, 1, figsize=(10, 15))
44
-
45
- # Plot 1: Actual and Predicted Stock Prices
46
- axes[0].plot(selected_data['Date'], y, label='Actual')
47
- axes[0].plot(selected_data['Date'], predictions, label='Predicted')
48
- axes[0].set_xlabel('Date')
49
- axes[0].set_ylabel('Stock Price')
50
- axes[0].set_title(f'{selected_dataset} Stock Price Prediction')
51
- axes[0].legend()
52
-
53
- # Plot 2: Volume of Trades
54
- axes[1].plot(selected_data['Date'], selected_data['Volume'])
55
- axes[1].set_xlabel('Date')
56
- axes[1].set_ylabel('Volume')
57
- axes[1].set_title(f'{selected_dataset} Volume of Trades')
58
-
59
- # Plot 3: Daily Percentage Change in Stock Prices
60
- daily_returns = selected_data['Close'].pct_change() * 100
61
- axes[2].plot(selected_data['Date'], daily_returns)
62
- axes[2].set_xlabel('Date')
63
- axes[2].set_ylabel('Percentage Change')
64
- axes[2].set_title(f'{selected_dataset} Daily Percentage Change in Stock Prices')
65
 
66
- # Add a submit button
67
  if st.button('Submit'):
68
- # Get the updated dataset selection
69
- key = f'dataset_selection_{random_string(5)}'
70
- selected_dataset = st.selectbox('Select Stock', list(datasets.keys()), key=key)
71
-
72
- # Retrieve the updated dataset
73
- selected_data = datasets[selected_dataset]
74
-
75
- # Prepare the data for prediction
76
- X = np.arange(len(selected_data)).reshape(-1, 1)
77
- y = selected_data['Close']
78
-
79
- # Train the linear regression model
80
- model.fit(X, y)
81
-
82
- # Predict the stock prices
83
- predictions = model.predict(X)
84
 
85
- # Clear the existing plots
86
- for ax in axes:
87
- ax.clear()
 
88
 
89
- # Update the plots with the new dataset
90
  axes[0].plot(selected_data['Date'], y, label='Actual')
91
- axes[0].plot(selected_data['Date'], predictions, label='Predicted')
92
  axes[0].set_xlabel('Date')
93
  axes[0].set_ylabel('Stock Price')
94
  axes[0].set_title(f'{selected_dataset} Stock Price Prediction')
95
  axes[0].legend()
96
 
 
97
  axes[1].plot(selected_data['Date'], selected_data['Volume'])
98
  axes[1].set_xlabel('Date')
99
  axes[1].set_ylabel('Volume')
100
  axes[1].set_title(f'{selected_dataset} Volume of Trades')
101
 
 
102
  daily_returns = selected_data['Close'].pct_change() * 100
103
  axes[2].plot(selected_data['Date'], daily_returns)
104
  axes[2].set_xlabel('Date')
105
  axes[2].set_ylabel('Percentage Change')
106
  axes[2].set_title(f'{selected_dataset} Daily Percentage Change in Stock Prices')
107
 
108
- # Display the graphs in Streamlit
109
- st.pyplot(fig)
 
3
  import numpy as np
4
  from sklearn.linear_model import LinearRegression
5
  import matplotlib.pyplot as plt
 
 
6
 
7
  # Remove the Streamlit default layout
8
  st.set_page_config(layout="wide")
 
14
  # Combine the datasets into a dictionary
15
  datasets = {'Google': data1, 'Tesla': data2}
16
 
 
 
 
 
 
17
  # Get the user's dataset selection
18
+ selected_dataset = st.selectbox('Select Stock', list(datasets.keys()))
 
19
 
20
  # Retrieve the selected dataset
21
  selected_data = datasets[selected_dataset]
 
28
  model = LinearRegression()
29
  model.fit(X, y)
30
 
31
+ # Define a flag for displaying the graphs
32
+ display_graphs = False
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
+ # Create a submit button
35
  if st.button('Submit'):
36
+ display_graphs = True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ # Display the graphs if the submit button is clicked
39
+ if display_graphs:
40
+ # Create subplots
41
+ fig, axes = plt.subplots(3, 1, figsize=(10, 15))
42
 
43
+ # Plot 1: Actual and Predicted Stock Prices
44
  axes[0].plot(selected_data['Date'], y, label='Actual')
45
+ axes[0].plot(selected_data['Date'], model.predict(X), label='Predicted')
46
  axes[0].set_xlabel('Date')
47
  axes[0].set_ylabel('Stock Price')
48
  axes[0].set_title(f'{selected_dataset} Stock Price Prediction')
49
  axes[0].legend()
50
 
51
+ # Plot 2: Volume of Trades
52
  axes[1].plot(selected_data['Date'], selected_data['Volume'])
53
  axes[1].set_xlabel('Date')
54
  axes[1].set_ylabel('Volume')
55
  axes[1].set_title(f'{selected_dataset} Volume of Trades')
56
 
57
+ # Plot 3: Daily Percentage Change in Stock Prices
58
  daily_returns = selected_data['Close'].pct_change() * 100
59
  axes[2].plot(selected_data['Date'], daily_returns)
60
  axes[2].set_xlabel('Date')
61
  axes[2].set_ylabel('Percentage Change')
62
  axes[2].set_title(f'{selected_dataset} Daily Percentage Change in Stock Prices')
63
 
64
+ # Display the graphs in Streamlit
65
+ st.pyplot(fig)