

{"id":78161,"date":"2020-05-26T09:39:07","date_gmt":"2020-05-26T04:09:07","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=78161"},"modified":"2025-07-29T20:49:13","modified_gmt":"2025-07-29T15:19:13","slug":"stock-price-prediction-machine-learning-project-in-python","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/","title":{"rendered":"Stock Price Prediction &#8211; Machine Learning Project in Python"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:1099,&quot;href&quot;:&quot;https:\\\/\\\/dash.plotly.com\\\/introduction&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20230317085915\\\/https:\\\/\\\/dash.plotly.com\\\/introduction&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-09 01:02:43&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-12 05:47:40&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-15 09:45:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-18 10:39:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-21 15:42:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-24 17:17:05&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-27 18:45:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-31 01:23:48&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-03 05:57:47&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-06 06:10:14&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-09 06:47:10&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-12 08:03:22&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-15 08:44:43&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-18 09:11:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-21 12:38:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-24 16:26:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-27 17:06:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-30 17:31:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-02 17:40:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-05 17:45:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-09 05:38:17&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-02-12 06:54:13&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-15 10:57:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-18 13:44:04&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-21 14:48:32&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-24 18:19:41&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-27 18:38:04&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-03 03:01:59&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-06 04:40:25&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-09 05:00:50&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-12 06:43:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-15 08:36:19&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-18 08:50:00&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-22 03:29:05&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-25 04:11:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-28 10:43:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-31 10:47:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-03 14:01:43&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-06 15:14:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-09 20:41:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-13 03:00:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-16 05:01:24&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-19 05:05:03&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-22 08:46:28&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-25 14:35:45&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-29 01:31:33&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-02 09:10:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-05 09:35:43&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-08 14:39:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-12 02:54:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-15 05:40:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-18 06:42:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-21 12:01:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-24 12:53:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-28 05:20:43&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-31 14:15:57&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-03 14:22:12&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-03 14:22:12&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<p>Machine learning has significant applications in the stock price prediction. In this machine learning project, we will be talking about predicting the returns on stocks. This is a very complex task and has uncertainties. We will develop this project into two parts:<\/p>\n<p>1. First, we will learn how to predict stock price using the LSTM neural network.<\/p>\n<p>2. Then we will build a dashboard using Plotly dash for stock analysis.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-project-dashboard.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-78170\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-project-dashboard.gif\" alt=\"Stock Price Prediction project dashboard\" width=\"1903\" height=\"937\" \/><\/a><\/p>\n<h3>Stock Price Prediction Project<\/h3>\n<h4>Datasets<\/h4>\n<p>1. To build the stock price prediction model, we will use the NSE TATA GLOBAL dataset. This is a dataset of Tata Beverages from Tata Global Beverages Limited, National Stock Exchange of India: <a href=\"https:\/\/data-flair.training\/blogs\/download-tata-global-beverages-stocks-data\/\">Tata Global Dataset<\/a><\/p>\n<p>2. To develop the dashboard for stock analysis we will use another stock dataset with multiple stocks like Apple, Microsoft, Facebook: <a href=\"https:\/\/data-flair.training\/blogs\/download-stocks-price-data\/\">Stocks Dataset<\/a><\/p>\n<h4>Source Code<\/h4>\n<p>Before proceeding ahead, please download the source code: <a href=\"https:\/\/data-flair.training\/blogs\/download-stock-price-prediction-project-code\/\">Stock Price Prediction Project<\/a><\/p>\n<h3>Stock price prediction using LSTM<\/h3>\n<p>1.\u00a0Imports:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import pandas as pd\r\nimport numpy as np\r\n\r\nimport matplotlib.pyplot as plt\r\n%matplotlib inline\r\n\r\nfrom matplotlib.pylab import rcParams\r\nrcParams['figure.figsize']=20,10\r\nfrom keras.models import Sequential\r\nfrom keras.layers import LSTM,Dropout,Dense\r\n\r\n\r\nfrom sklearn.preprocessing import MinMaxScaler\r\n<\/pre>\n<p>2.\u00a0Read the dataset:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">df=pd.read_csv(\"NSE-TATA.csv\")\r\ndf.head()\r\n<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-78171\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data.png\" alt=\"read stock data\" width=\"1140\" height=\"911\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data.png 1140w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data-150x120.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data-300x240.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data-768x614.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data-1024x818.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/read-stock-data-520x416.png 520w\" sizes=\"auto, (max-width: 1140px) 100vw, 1140px\" \/><\/a><\/p>\n<p>3.\u00a0Analyze the closing prices from dataframe:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">df[\"Date\"]=pd.to_datetime(df.Date,format=\"%Y-%m-%d\")\r\ndf.index=df['Date']\r\n\r\nplt.figure(figsize=(16,8))\r\nplt.plot(df[\"Close\"],label='Close Price history')\r\n<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-78173\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price.png\" alt=\"analyse stock price\" width=\"1140\" height=\"912\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price.png 1140w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price-150x120.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price-300x240.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price-768x614.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price-1024x819.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/analyse-stock-price-520x416.png 520w\" sizes=\"auto, (max-width: 1140px) 100vw, 1140px\" \/><\/a><\/p>\n<p>4.\u00a0Sort the dataset on date time and filter &#8220;Date&#8221; and &#8220;Close&#8221; columns:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">data=df.sort_index(ascending=True,axis=0)\r\nnew_dataset=pd.DataFrame(index=range(0,len(df)),columns=['Date','Close'])\r\n\r\nfor i in range(0,len(data)):\r\n    new_dataset[\"Date\"][i]=data['Date'][i]\r\n    new_dataset[\"Close\"][i]=data[\"Close\"][i]\r\n<\/pre>\n<p>5.\u00a0Normalize the new filtered dataset:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">scaler=MinMaxScaler(feature_range=(0,1))\r\nfinal_dataset=new_dataset.values\r\n\r\ntrain_data=final_dataset[0:987,:]\r\nvalid_data=final_dataset[987:,:]\r\n\r\nnew_dataset.index=new_dataset.Date\r\nnew_dataset.drop(\"Date\",axis=1,inplace=True)\r\nscaler=MinMaxScaler(feature_range=(0,1))\r\nscaled_data=scaler.fit_transform(final_dataset)\r\n\r\nx_train_data,y_train_data=[],[]\r\n\r\nfor i in range(60,len(train_data)):\r\n    x_train_data.append(scaled_data[i-60:i,0])\r\n    y_train_data.append(scaled_data[i,0])\r\n    \r\nx_train_data,y_train_data=np.array(x_train_data),np.array(y_train_data)\r\n\r\nx_train_data=np.reshape(x_train_data,(x_train_data.shape[0],x_train_data.shape[1],1))\r\n<\/pre>\n<p>6.\u00a0Build and train the LSTM model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">lstm_model=Sequential()\r\nlstm_model.add(LSTM(units=50,return_sequences=True,input_shape=(x_train_data.shape[1],1)))\r\nlstm_model.add(LSTM(units=50))\r\nlstm_model.add(Dense(1))\r\n\r\ninputs_data=new_dataset[len(new_dataset)-len(valid_data)-60:].values\r\ninputs_data=inputs_data.reshape(-1,1)\r\ninputs_data=scaler.transform(inputs_data)\r\n\r\nlstm_model.compile(loss='mean_squared_error',optimizer='adam')\r\nlstm_model.fit(x_train_data,y_train_data,epochs=1,batch_size=1,verbose=2)\r\n\r\n<\/pre>\n<p>7.\u00a0Take a sample of a dataset to make stock price predictions using the LSTM model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">X_test=[]\r\nfor i in range(60,inputs_data.shape[0]):\r\n    X_test.append(inputs_data[i-60:i,0])\r\nX_test=np.array(X_test)\r\n\r\nX_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))\r\npredicted_closing_price=lstm_model.predict(X_test)\r\npredicted_closing_price=scaler.inverse_transform(predicted_closing_price)\r\n<\/pre>\n<p>8.\u00a0Save the LSTM model:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">lstm_model.save(\"saved_model.h5\")<\/pre>\n<p>9.\u00a0Visualize the predicted stock costs with actual stock costs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">train_data=new_dataset[:987]\r\nvalid_data=new_dataset[987:]\r\nvalid_data['Predictions']=predicted_closing_price\r\nplt.plot(train_data[\"Close\"])\r\nplt.plot(valid_data[['Close',\"Predictions\"]])\r\n<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-78174\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost.png\" alt=\"predict stock cost\" width=\"1140\" height=\"791\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost.png 1140w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost-150x104.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost-300x208.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost-768x533.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost-1024x711.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/predict-stock-cost-520x361.png 520w\" sizes=\"auto, (max-width: 1140px) 100vw, 1140px\" \/><\/a><\/p>\n<p>You can observe that LSTM has predicted stocks almost similar to actual stocks.<\/p>\n<h3>Build the dashboard using Plotly dash<\/h3>\n<p>In this section, we will build a dashboard to analyze stocks. <a href=\"https:\/\/dash.plotly.com\/introduction\">Dash<\/a> is a python framework that provides an abstraction over flask and react.js to build analytical web applications.<br \/>\nBefore moving ahead, you need to install dash. Run the below command in the terminal.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">pip3 install dash\r\npip3 install dash-html-components\r\npip3 install dash-core-components\r\n<\/pre>\n<p>Now make a new python file stock_app.py and paste the below script:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import dash\r\nimport dash_core_components as dcc\r\nimport dash_html_components as html\r\nimport pandas as pd\r\nimport plotly.graph_objs as go\r\nfrom dash.dependencies import Input, Output\r\nfrom keras.models import load_model\r\nfrom sklearn.preprocessing import MinMaxScaler\r\nimport numpy as np\r\n\r\n\r\napp = dash.Dash()\r\nserver = app.server\r\n\r\nscaler=MinMaxScaler(feature_range=(0,1))\r\n\r\ndf_nse = pd.read_csv(\".\/NSE-TATA.csv\")\r\n\r\ndf_nse[\"Date\"]=pd.to_datetime(df_nse.Date,format=\"%Y-%m-%d\")\r\ndf_nse.index=df_nse['Date']\r\n\r\n\r\ndata=df_nse.sort_index(ascending=True,axis=0)\r\nnew_data=pd.DataFrame(index=range(0,len(df_nse)),columns=['Date','Close'])\r\n\r\nfor i in range(0,len(data)):\r\n    new_data[\"Date\"][i]=data['Date'][i]\r\n    new_data[\"Close\"][i]=data[\"Close\"][i]\r\n\r\nnew_data.index=new_data.Date\r\nnew_data.drop(\"Date\",axis=1,inplace=True)\r\n\r\ndataset=new_data.values\r\n\r\ntrain=dataset[0:987,:]\r\nvalid=dataset[987:,:]\r\n\r\nscaler=MinMaxScaler(feature_range=(0,1))\r\nscaled_data=scaler.fit_transform(dataset)\r\n\r\nx_train,y_train=[],[]\r\n\r\nfor i in range(60,len(train)):\r\n    x_train.append(scaled_data[i-60:i,0])\r\n    y_train.append(scaled_data[i,0])\r\n    \r\nx_train,y_train=np.array(x_train),np.array(y_train)\r\n\r\nx_train=np.reshape(x_train,(x_train.shape[0],x_train.shape[1],1))\r\n\r\nmodel=load_model(\"saved_model.h5\")\r\n\r\ninputs=new_data[len(new_data)-len(valid)-60:].values\r\ninputs=inputs.reshape(-1,1)\r\ninputs=scaler.transform(inputs)\r\n\r\nX_test=[]\r\nfor i in range(60,inputs.shape[0]):\r\n    X_test.append(inputs[i-60:i,0])\r\nX_test=np.array(X_test)\r\n\r\nX_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))\r\nclosing_price=model.predict(X_test)\r\nclosing_price=scaler.inverse_transform(closing_price)\r\n\r\ntrain=new_data[:987]\r\nvalid=new_data[987:]\r\nvalid['Predictions']=closing_price\r\n\r\n\r\n\r\ndf= pd.read_csv(\".\/stock_data.csv\")\r\n\r\napp.layout = html.Div([\r\n   \r\n    html.H1(\"Stock Price Analysis Dashboard\", style={\"textAlign\": \"center\"}),\r\n   \r\n    dcc.Tabs(id=\"tabs\", children=[\r\n       \r\n        dcc.Tab(label='NSE-TATAGLOBAL Stock Data',children=[\r\n            html.Div([\r\n                html.H2(\"Actual closing price\",style={\"textAlign\": \"center\"}),\r\n                dcc.Graph(\r\n                    id=\"Actual Data\",\r\n                    figure={\r\n                        \"data\":[\r\n                            go.Scatter(\r\n                                x=train.index,\r\n                                y=valid[\"Close\"],\r\n                                mode='markers'\r\n                            )\r\n\r\n                        ],\r\n                        \"layout\":go.Layout(\r\n                            title='scatter plot',\r\n                            xaxis={'title':'Date'},\r\n                            yaxis={'title':'Closing Rate'}\r\n                        )\r\n                    }\r\n\r\n                ),\r\n                html.H2(\"LSTM Predicted closing price\",style={\"textAlign\": \"center\"}),\r\n                dcc.Graph(\r\n                    id=\"Predicted Data\",\r\n                    figure={\r\n                        \"data\":[\r\n                            go.Scatter(\r\n                                x=valid.index,\r\n                                y=valid[\"Predictions\"],\r\n                                mode='markers'\r\n                            )\r\n\r\n                        ],\r\n                        \"layout\":go.Layout(\r\n                            title='scatter plot',\r\n                            xaxis={'title':'Date'},\r\n                            yaxis={'title':'Closing Rate'}\r\n                        )\r\n                    }\r\n\r\n                )                \r\n            ])                \r\n\r\n\r\n        ]),\r\n        dcc.Tab(label='Facebook Stock Data', children=[\r\n            html.Div([\r\n                html.H1(\"Facebook Stocks High vs Lows\", \r\n                        style={'textAlign': 'center'}),\r\n              \r\n                dcc.Dropdown(id='my-dropdown',\r\n                             options=[{'label': 'Tesla', 'value': 'TSLA'},\r\n                                      {'label': 'Apple','value': 'AAPL'}, \r\n                                      {'label': 'Facebook', 'value': 'FB'}, \r\n                                      {'label': 'Microsoft','value': 'MSFT'}], \r\n                             multi=True,value=['FB'],\r\n                             style={\"display\": \"block\", \"margin-left\": \"auto\", \r\n                                    \"margin-right\": \"auto\", \"width\": \"60%\"}),\r\n                dcc.Graph(id='highlow'),\r\n                html.H1(\"Facebook Market Volume\", style={'textAlign': 'center'}),\r\n         \r\n                dcc.Dropdown(id='my-dropdown2',\r\n                             options=[{'label': 'Tesla', 'value': 'TSLA'},\r\n                                      {'label': 'Apple','value': 'AAPL'}, \r\n                                      {'label': 'Facebook', 'value': 'FB'},\r\n                                      {'label': 'Microsoft','value': 'MSFT'}], \r\n                             multi=True,value=['FB'],\r\n                             style={\"display\": \"block\", \"margin-left\": \"auto\", \r\n                                    \"margin-right\": \"auto\", \"width\": \"60%\"}),\r\n                dcc.Graph(id='volume')\r\n            ], className=\"container\"),\r\n        ])\r\n\r\n\r\n    ])\r\n])\r\n\r\n\r\n@app.callback(Output('highlow', 'figure'),\r\n              [Input('my-dropdown', 'value')])\r\ndef update_graph(selected_dropdown):\r\n    dropdown = {\"TSLA\": \"Tesla\",\"AAPL\": \"Apple\",\"FB\": \"Facebook\",\"MSFT\": \"Microsoft\",}\r\n    trace1 = []\r\n    trace2 = []\r\n    for stock in selected_dropdown:\r\n        trace1.append(\r\n          go.Scatter(x=df[df[\"Stock\"] == stock][\"Date\"],\r\n                     y=df[df[\"Stock\"] == stock][\"High\"],\r\n                     mode='lines', opacity=0.7, \r\n                     name=f'High {dropdown[stock]}',textposition='bottom center'))\r\n        trace2.append(\r\n          go.Scatter(x=df[df[\"Stock\"] == stock][\"Date\"],\r\n                     y=df[df[\"Stock\"] == stock][\"Low\"],\r\n                     mode='lines', opacity=0.6,\r\n                     name=f'Low {dropdown[stock]}',textposition='bottom center'))\r\n    traces = [trace1, trace2]\r\n    data = [val for sublist in traces for val in sublist]\r\n    figure = {'data': data,\r\n              'layout': go.Layout(colorway=[\"#5E0DAC\", '#FF4F00', '#375CB1', \r\n                                            '#FF7400', '#FFF400', '#FF0056'],\r\n            height=600,\r\n            title=f\"High and Low Prices for {', '.join(str(dropdown[i]) for i in selected_dropdown)} Over Time\",\r\n            xaxis={\"title\":\"Date\",\r\n                   'rangeselector': {'buttons': list([{'count': 1, 'label': '1M', \r\n                                                       'step': 'month', \r\n                                                       'stepmode': 'backward'},\r\n                                                      {'count': 6, 'label': '6M', \r\n                                                       'step': 'month', \r\n                                                       'stepmode': 'backward'},\r\n                                                      {'step': 'all'}])},\r\n                   'rangeslider': {'visible': True}, 'type': 'date'},\r\n             yaxis={\"title\":\"Price (USD)\"})}\r\n    return figure\r\n\r\n\r\n@app.callback(Output('volume', 'figure'),\r\n              [Input('my-dropdown2', 'value')])\r\ndef update_graph(selected_dropdown_value):\r\n    dropdown = {\"TSLA\": \"Tesla\",\"AAPL\": \"Apple\",\"FB\": \"Facebook\",\"MSFT\": \"Microsoft\",}\r\n    trace1 = []\r\n    for stock in selected_dropdown_value:\r\n        trace1.append(\r\n          go.Scatter(x=df[df[\"Stock\"] == stock][\"Date\"],\r\n                     y=df[df[\"Stock\"] == stock][\"Volume\"],\r\n                     mode='lines', opacity=0.7,\r\n                     name=f'Volume {dropdown[stock]}', textposition='bottom center'))\r\n    traces = [trace1]\r\n    data = [val for sublist in traces for val in sublist]\r\n    figure = {'data': data, \r\n              'layout': go.Layout(colorway=[\"#5E0DAC\", '#FF4F00', '#375CB1', \r\n                                            '#FF7400', '#FFF400', '#FF0056'],\r\n            height=600,\r\n            title=f\"Market Volume for {', '.join(str(dropdown[i]) for i in selected_dropdown_value)} Over Time\",\r\n            xaxis={\"title\":\"Date\",\r\n                   'rangeselector': {'buttons': list([{'count': 1, 'label': '1M', \r\n                                                       'step': 'month', \r\n                                                       'stepmode': 'backward'},\r\n                                                      {'count': 6, 'label': '6M',\r\n                                                       'step': 'month', \r\n                                                       'stepmode': 'backward'},\r\n                                                      {'step': 'all'}])},\r\n                   'rangeslider': {'visible': True}, 'type': 'date'},\r\n             yaxis={\"title\":\"Transactions Volume\"})}\r\n    return figure\r\n\r\n\r\nif __name__=='__main__':\r\n    app.run_server(debug=True)\r\n<\/pre>\n<p>Now run this file and open the app in the browser:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">python3 stock_app.py<\/pre>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-project-dashboard-2.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-78208\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-project-dashboard-2.gif\" alt=\"Stock Price Prediction project dashboard\" width=\"1913\" height=\"1031\" \/><\/a><\/p>\n<h3>Summary<\/h3>\n<p>Stock price prediction helps investors make smart decisions. In this project, we use Python and machine learning to predict the future price of a company\u2019s stock. We use past stock data to train a regression model. It\u2019s a great mix of data analysis, finance, and ML.<\/p>\n<p>Stock price prediction is a machine learning project for beginners; in this tutorial we learned how to develop a stock cost prediction model and how to build an interactive dashboard for stock analysis. We implemented stock market prediction using the LSTM model. OTOH, Plotly dash python framework for building dashboards.<\/p>\n<p>This project is ideal for those interested in finance and ML. It teaches time series forecasting, data visualization, model training, and evaluation. You can build a simple web app or dashboard to show predictions in real-time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Machine learning has significant applications in the stock price prediction. In this machine learning project, we will be talking about predicting the returns on stocks. This is a very complex task and has uncertainties.&#46;&#46;&#46;<\/p>\n","protected":false},"author":10,"featured_media":78175,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[8423,20697,22350,21082,22349],"class_list":["post-78161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-machine-learning","tag-lstm-neural-network","tag-machine-learning-project","tag-plotly","tag-python-project","tag-stock-price-prediction"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Stock Price Prediction - Machine Learning Project in Python - DataFlair<\/title>\n<meta name=\"description\" content=\"Stock price prediction - Machine learning project for beginners. Learn how to develop a stock price prediction model using LSTM neural network &amp; an interactive dashboard using plotly dash\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stock Price Prediction - Machine Learning Project in Python - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Stock price prediction - Machine learning project for beginners. Learn how to develop a stock price prediction model using LSTM neural network &amp; an interactive dashboard using plotly dash\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-26T04:09:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-29T15:19:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-Machine-Learning-Project-in-Python.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"802\" \/>\n\t<meta property=\"og:image:height\" content=\"420\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Stock Price Prediction - Machine Learning Project in Python - DataFlair","description":"Stock price prediction - Machine learning project for beginners. Learn how to develop a stock price prediction model using LSTM neural network & an interactive dashboard using plotly dash","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/","og_locale":"en_US","og_type":"article","og_title":"Stock Price Prediction - Machine Learning Project in Python - DataFlair","og_description":"Stock price prediction - Machine learning project for beginners. Learn how to develop a stock price prediction model using LSTM neural network & an interactive dashboard using plotly dash","og_url":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2020-05-26T04:09:07+00:00","article_modified_time":"2025-07-29T15:19:13+00:00","og_image":[{"width":802,"height":420,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-Machine-Learning-Project-in-Python.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33"},"headline":"Stock Price Prediction &#8211; Machine Learning Project in Python","datePublished":"2020-05-26T04:09:07+00:00","dateModified":"2025-07-29T15:19:13+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/"},"wordCount":444,"commentCount":96,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-Machine-Learning-Project-in-Python.jpg","keywords":["lstm neural network","machine learning project","plotly","Python project","stock price prediction"],"articleSection":["Machine Learning Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/","url":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/","name":"Stock Price Prediction - Machine Learning Project in Python - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-Machine-Learning-Project-in-Python.jpg","datePublished":"2020-05-26T04:09:07+00:00","dateModified":"2025-07-29T15:19:13+00:00","description":"Stock price prediction - Machine learning project for beginners. Learn how to develop a stock price prediction model using LSTM neural network & an interactive dashboard using plotly dash","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-Machine-Learning-Project-in-Python.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/05\/Stock-Price-Prediction-Machine-Learning-Project-in-Python.jpg","width":802,"height":420,"caption":"Stock Price Prediction Machine Learning Project in Python"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/stock-price-prediction-machine-learning-project-in-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Machine Learning Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/machine-learning\/"},{"@type":"ListItem","position":3,"name":"Stock Price Prediction &#8211; Machine Learning Project in Python"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team is passionate about delivering top-notch tutorials and resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With expertise in the tech industry, we simplify complex topics to help learners excel. Stay updated with our latest insights.","url":"https:\/\/data-flair.training\/blogs\/author\/dfadteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/78161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=78161"}],"version-history":[{"count":9,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/78161\/revisions"}],"predecessor-version":[{"id":146351,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/78161\/revisions\/146351"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/78175"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=78161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=78161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=78161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}