{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# <center><font color='#041e42'>MLB Player Digital Engagement:</font> <font color='#bf0d3e'>Complete Indepth Analysis</font></center>\n\n<center><img src= \"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F603584%2Ff7c0669c09db26bd45f76ade61b2a91f%2FGoogleCloud_MLB_Lockup.jpg?generation=1623359034713516&alt=media\" alt =\"Kaggle MLB Competetion Image\"></center>\n","metadata":{}},{"cell_type":"markdown","source":"# <font color='#093e88'>1. Introduction</font>","metadata":{"execution":{"iopub.status.busy":"2021-06-26T12:01:24.797976Z","iopub.execute_input":"2021-06-26T12:01:24.798448Z","iopub.status.idle":"2021-06-26T12:01:24.803747Z","shell.execute_reply.started":"2021-06-26T12:01:24.798411Z","shell.execute_reply":"2021-06-26T12:01:24.801962Z"}}},{"cell_type":"markdown","source":"### 👉 A Small Description\n* Identify the many other factors which pique supporter engagement and create deeper relationships betweens players and fans.\n* Baseball fans watch, read, and search for information about players. Which individuals they seek can depend on player performance, team standings, popularity, among other, currently unknown factors.\n* Predict how fans engage with MLB players’ digital content on a daily basis for a future date range. ","metadata":{}},{"cell_type":"markdown","source":"### 👉 Evaluation Matrix\n* Submissions are evaluated on the mean column-wise mean absolute error (MCMAE). A mean absolute error is calculated for each of the four target variables and the score is the average of those four MAE values.\n* For each \"date_playerId\" you need to predict all four target variables.\n\n|date_playerId|target1|target2|target3|target4|\n|--|--|--|--|--|\n|20210501_642727|0|100|70|50|\n\n* When predicting on a given date, you are forecasting the target variables for the next day (i.e. for date d, you're predicting the engagement for day d+1).\n* Your code will need to be robust and make predictions for any date_playerId combination requested by the module.\n* Submit predications using the provided 'mlb' python time series module.","metadata":{}},{"cell_type":"markdown","source":"### 👉 Test Sets for Evaluation:\nThere are 2 test sets for evaluation:\n1. During Training phase:  \nThis unseen test (provided by time series module 'mlb') set is comprised of data for the **month of May 2021** and the set of active players this year.\n\n2. During Evaluation phase:\nThis test set will be a **future** in-season range of approximately **one month**.\n","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nc1 = '#b90d3c'\nc2 = '#041d40'","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:48.64206Z","iopub.execute_input":"2021-06-26T16:48:48.643785Z","iopub.status.idle":"2021-06-26T16:48:49.038539Z","shell.execute_reply.started":"2021-06-26T16:48:48.643661Z","shell.execute_reply":"2021-06-26T16:48:49.037702Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <font color='#093e88'>2. Sneak Peak at Datasets</font>\nThe datasets in this competetion contains vast amount of information. First off, the data contains a set of static files that do not change with time (players.csv, teams.csv, seasons.csv, awards.csv) as well as daily data (train.csv) which is grouped by day. Secondly, each cell in the daily data (train.csv) is a JSON dictionary, the size of each JSON itself can be equivalent to an entire dataset. \n\nThat is why before we move on to analysis and modeling, we will first understand and make sense of data.","metadata":{}},{"cell_type":"markdown","source":"### i. **example_sample_submission.csv**","metadata":{}},{"cell_type":"code","source":"example_sample_submission_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/example_sample_submission.csv', parse_dates=['date'])\nprint(f'\\nShape of Example Sample Submission CSV: {example_sample_submission_df.shape}\\n\\n')\nexample_sample_submission_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:49.040275Z","iopub.execute_input":"2021-06-26T16:48:49.040552Z","iopub.status.idle":"2021-06-26T16:48:49.102062Z","shell.execute_reply.started":"2021-06-26T16:48:49.040525Z","shell.execute_reply":"2021-06-26T16:48:49.101057Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> ###  📌 Observations from Example Sample Submission\n> * It is not explictly given what the target variables (`target1` to `target4`) represents.\n> * **Very Important to note**: Predictions for the subsequent day is made based on current day's data.\n> * For example: Using the data of 2021-04-26, we are making predictions 2021-04-27 for multiple players.","metadata":{}},{"cell_type":"markdown","source":"### ii. **example_test.csv**","metadata":{}},{"cell_type":"code","source":"example_test_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/example_test.csv')\nprint(f'\\nShape of Example Test CSV: {example_test_df.shape}\\n\\n')\nexample_test_df","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:49.349095Z","iopub.execute_input":"2021-06-26T16:48:49.349636Z","iopub.status.idle":"2021-06-26T16:48:49.7731Z","shell.execute_reply.started":"2021-06-26T16:48:49.349605Z","shell.execute_reply":"2021-06-26T16:48:49.772091Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> ### 📌 Observations from Example Test data\n> * All the columns contains either JSON data or np.Nan values.\n> * `date_playerId` , which is required in the submission file, is missing from example_test.\n> * Here, each row represents a single day. But, submissions the are to be made for multiple players on each day.\n> * So we know that, using the first row data of 2021-04-26, we are making predictions 2021-04-27 for multiple players.(like 20210427_player1, 20210427_player2, and so on)","metadata":{}},{"cell_type":"markdown","source":"### iii. **awards.csv**","metadata":{}},{"cell_type":"code","source":"# Read in CSV\nawards_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/awards.csv', parse_dates=['awardDate'])\nprint(f'\\nShape of Awards Dataset: {awards_df.shape}\\n\\n')\nawards_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:49.774273Z","iopub.execute_input":"2021-06-26T16:48:49.774554Z","iopub.status.idle":"2021-06-26T16:48:49.804696Z","shell.execute_reply.started":"2021-06-26T16:48:49.774525Z","shell.execute_reply":"2021-06-26T16:48:49.80387Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 20 Most frequently given awards\nawards_df.awardName.value_counts().head(20)","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:49.996431Z","iopub.execute_input":"2021-06-26T16:48:49.996746Z","iopub.status.idle":"2021-06-26T16:48:50.009042Z","shell.execute_reply.started":"2021-06-26T16:48:49.996719Z","shell.execute_reply":"2021-06-26T16:48:50.008136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> Most awarded (1307 times) Award is \"MiLB.com Organization All-Star\", almost 3x more than \"next most awarded award\"","metadata":{}},{"cell_type":"code","source":"# Number of Awards / year\naward_yr_df = awards_df.awardSeason.value_counts().sort_index().reset_index()\n\n# Bar plot\nplt.figure(figsize=(8,5))\nsns.barplot(x=award_yr_df['index'], y=award_yr_df.awardSeason, color='red', alpha=0.7)\nsns.despine(bottom=True, left=True)\nplt.xticks(rotation=45)\nplt.xlabel('Years', fontsize=13)\nplt.ylabel('Award Count', fontsize=13)\nplt.title('Yearly Count of Awards', fontsize=15)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:50.676696Z","iopub.execute_input":"2021-06-26T16:48:50.677006Z","iopub.status.idle":"2021-06-26T16:48:50.95581Z","shell.execute_reply.started":"2021-06-26T16:48:50.676978Z","shell.execute_reply":"2021-06-26T16:48:50.955207Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Top 10 players with most awards\nawards_df.groupby(['playerName']).count()['awardPlayerTeamId'].sort_values(ascending=False).head(10)","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:50.956769Z","iopub.execute_input":"2021-06-26T16:48:50.957011Z","iopub.status.idle":"2021-06-26T16:48:50.969944Z","shell.execute_reply.started":"2021-06-26T16:48:50.956987Z","shell.execute_reply":"2021-06-26T16:48:50.969011Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 📌 Observations from Awards data\n\n* Award Date range between June 1998 and December 2017 \n* There are 455 unique awards\n* Most awarded (1307 times) Award is \"MiLB.com Organization All-Star\", almost 3x more than next \"most awarded award\"\n* Till now, around 1700 players have been awarded almost 11500 times\n* For past 5 years, 1000+ awards/year are given out each season\n* Only a Small proportion of players have 40+ awards to their name","metadata":{}},{"cell_type":"markdown","source":"### iv. **players.csv**\nThis data contains players' basic personal as well as positional information. ","metadata":{}},{"cell_type":"code","source":"# Read in CSV\nplayers_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/players.csv')\nprint(f'\\nShape of Dataset: {players_df.shape}\\n\\n')\nplayers_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:51.683183Z","iopub.execute_input":"2021-06-26T16:48:51.683545Z","iopub.status.idle":"2021-06-26T16:48:51.708732Z","shell.execute_reply.started":"2021-06-26T16:48:51.683515Z","shell.execute_reply":"2021-06-26T16:48:51.707839Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### v. **seasons.csv**\nThis data contains various season dates for last 5 seasons (inclding current season).","metadata":{}},{"cell_type":"code","source":"seasons_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/seasons.csv')\nprint(f'\\nShape of Dataset: {seasons_df.shape}\\n\\n')\nseasons_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:48:52.673336Z","iopub.execute_input":"2021-06-26T16:48:52.673692Z","iopub.status.idle":"2021-06-26T16:48:52.700307Z","shell.execute_reply.started":"2021-06-26T16:48:52.673659Z","shell.execute_reply":"2021-06-26T16:48:52.699292Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### vi. **teams.csv**\nThis data contains basic team information for all 30 teams. Such as teamId, leagueId, divisionId, venueId, so on.","metadata":{}},{"cell_type":"code","source":"teams_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/teams.csv')\nprint(f'\\nShape of Dataset: {teams_df.shape}\\n\\n')\nteams_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:49:09.553674Z","iopub.execute_input":"2021-06-26T16:49:09.554012Z","iopub.status.idle":"2021-06-26T16:49:09.581101Z","shell.execute_reply.started":"2021-06-26T16:49:09.553979Z","shell.execute_reply":"2021-06-26T16:49:09.580163Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### vii. **train.csv**","metadata":{}},{"cell_type":"code","source":"# Read in CSV\ntrain_df = pd.read_csv('../input/mlb-player-digital-engagement-forecasting/train.csv', parse_dates=['date'])\nprint(f'\\nShape of Dataset: {train_df.shape}\\n\\n')\ntrain_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:49:10.17094Z","iopub.execute_input":"2021-06-26T16:49:10.171399Z","iopub.status.idle":"2021-06-26T16:50:11.795544Z","shell.execute_reply.started":"2021-06-26T16:49:10.171368Z","shell.execute_reply":"2021-06-26T16:50:11.794471Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> ### 📌 Observation from train.csv\n> * All the columns contains either JSON data or np.Nan values.\n> * `date_playerId`, which is required in the submission file, is not an attribute here.\n> * Here, each row represents a single day. But, submissions the are to be made for multiple players on each day.\n> * So we know that, using the first row data of 2018-01-01, we will make predictions 2018-01-02 for multiple players.(like 20180101_player1, 20180101_player2, and so on)","metadata":{}},{"cell_type":"markdown","source":"#### 🔹 **Game Stats**: A single cell from the 'games' column","metadata":{}},{"cell_type":"code","source":"# Function to show a single json query\ndef show_single_json(json):\n    return np.NaN if pd.isna(json) else pd.read_json(json)","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:50:11.797028Z","iopub.execute_input":"2021-06-26T16:50:11.7974Z","iopub.status.idle":"2021-06-26T16:50:11.802086Z","shell.execute_reply.started":"2021-06-26T16:50:11.79736Z","shell.execute_reply":"2021-06-26T16:50:11.800999Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Game Information/Stats on 2021-04-30\nprint('Game Information/Stats Status on 2021-04-30')\nprint('\\n')\n\nshow_single_json(train_df['games'].iloc[1215])","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:50:11.80404Z","iopub.execute_input":"2021-06-26T16:50:11.804441Z","iopub.status.idle":"2021-06-26T16:50:11.873732Z","shell.execute_reply.started":"2021-06-26T16:50:11.804401Z","shell.execute_reply":"2021-06-26T16:50:11.872961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> #### 📌 Observations from **games JSON**\n> * Contains \"game information/stats\" for all the games played on a particular date. Such as Home Team Stats, Away Team Stats, Win/Loss, Score, etc. \n> * Results of a game surely have a big impacts the fan engagement on digital platform of the players. We will analyse it later and see how the data supports our claim.","metadata":{}},{"cell_type":"markdown","source":"#### 🔹 **Roster Status**: A single cell from the 'rosters' column","metadata":{}},{"cell_type":"code","source":"# Squad Status on 2021-04-30\nprint('Squad Status on 2021-04-30')\nprint('\\n')\n\nshow_single_json(train_df['rosters'].iloc[1215])","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:56:50.54527Z","iopub.execute_input":"2021-06-26T16:56:50.545612Z","iopub.status.idle":"2021-06-26T16:56:50.574188Z","shell.execute_reply.started":"2021-06-26T16:56:50.545582Z","shell.execute_reply":"2021-06-26T16:56:50.573029Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Roster Status Frequency for the day 2021-04-30\nprint(show_single_json(train_df['rosters'].iloc[1215]).status.value_counts())","metadata":{"execution":{"iopub.status.busy":"2021-06-26T16:56:50.983533Z","iopub.execute_input":"2021-06-26T16:56:50.983829Z","iopub.status.idle":"2021-06-26T16:56:51.001976Z","shell.execute_reply.started":"2021-06-26T16:56:50.983804Z","shell.execute_reply":"2021-06-26T16:56:50.999385Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Visualizing Roster Status Frequency for the day 2021-04-30\nplt.figure(figsize=(8,5))\nsns.barplot(y=show_single_json(train_df['rosters'].iloc[1215]).status.value_counts().index, \n            x=show_single_json(train_df['rosters'].iloc[1215]).status.value_counts().values,\n            color='red', alpha=0.70)\nsns.despine(bottom=True, left=True)\nplt.xlabel('Player Count', fontsize=13)\nplt.ylabel('Player Status', fontsize=13)\nplt.title('Roster Count on 2021-04-30', fontsize=15)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:04:41.337402Z","iopub.execute_input":"2021-06-26T17:04:41.337726Z","iopub.status.idle":"2021-06-26T17:04:41.546727Z","shell.execute_reply.started":"2021-06-26T17:04:41.337697Z","shell.execute_reply":"2021-06-26T17:04:41.545784Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> #### 📌 Observations from **rosters JSON**\n> * Contains the squad status for all the matches played on a particular date. \n> * Normally, the active player should have more engagement compared to the injured players. In rare cases, the opposite is also very possible where injured players get more engagements. This could may very well be dependent upon player's injury, stardom, or some other intrinsic attribute such as club rivalries, and so on.\n> * Again we will analyse it lateron based on the data.","metadata":{}},{"cell_type":"markdown","source":"#### 🔹 **Player Box Scores**: A single cell from the 'playerBoxScores' column","metadata":{}},{"cell_type":"code","source":"# Player Box Scores on 2021-04-30\nprint('Player Box Scores on 2021-04-30')\nprint('\\n')\n\nshow_single_json(train_df['playerBoxScores'].iloc[1215]).head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:11:25.252179Z","iopub.execute_input":"2021-06-26T17:11:25.252537Z","iopub.status.idle":"2021-06-26T17:11:25.31493Z","shell.execute_reply.started":"2021-06-26T17:11:25.252508Z","shell.execute_reply":"2021-06-26T17:11:25.313966Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### 🔹 **Transactions**: A single cell from the 'transactions' column","metadata":{}},{"cell_type":"code","source":"# Transactions on 2021-04-30\nprint('Tracnsactions on 2021-04-30')\nprint('\\n')\n\nshow_single_json(train_df['transactions'].iloc[1214]).head(10)","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:10:59.128734Z","iopub.execute_input":"2021-06-26T17:10:59.129111Z","iopub.status.idle":"2021-06-26T17:10:59.164164Z","shell.execute_reply.started":"2021-06-26T17:10:59.129079Z","shell.execute_reply":"2021-06-26T17:10:59.163073Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Type of Transaction on 2021-04-29\nshow_single_json(train_df['transactions'].iloc[1214]).typeDesc.value_counts()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:10:59.484337Z","iopub.execute_input":"2021-06-26T17:10:59.484662Z","iopub.status.idle":"2021-06-26T17:10:59.504242Z","shell.execute_reply.started":"2021-06-26T17:10:59.484634Z","shell.execute_reply":"2021-06-26T17:10:59.502956Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> #### 📌 Observations from **transactions.csv**\n> * Transactions here represents changes made to the players. Such as status change(like injured), recalled, selection, etc.\n> * **Important attributes** from the Transactions:\n>     1. typeCode (Transaction status abbreviation)\n>     2. fromTeamId, toTeamId representing teams involved","metadata":{}},{"cell_type":"markdown","source":"#### 🔹 **Standings**: A single cell from the 'standings' column\n\n* Contains daily standing infomation of the 30 teams\n* Contains all kinds of standing table stats such as streaks, league rank, division rank, wins/loses, etc","metadata":{}},{"cell_type":"code","source":"# Standings on 2021-04-29\nprint('Standings on 2021-04-29')\nprint('\\n')\n\nshow_single_json(train_df['standings'].iloc[1214])","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:16:24.070808Z","iopub.execute_input":"2021-06-26T17:16:24.071187Z","iopub.status.idle":"2021-06-26T17:16:24.132255Z","shell.execute_reply.started":"2021-06-26T17:16:24.071153Z","shell.execute_reply":"2021-06-26T17:16:24.131536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### 🔹 **Awards**: A single cell from the 'awards' column","metadata":{}},{"cell_type":"code","source":"# Awards handed out on 2021-04-30\nprint('Awards handed out on 2021-04-29')\nprint('\\n')\n\nshow_single_json(train_df['awards'].iloc[1215])","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:16:24.750557Z","iopub.execute_input":"2021-06-26T17:16:24.75103Z","iopub.status.idle":"2021-06-26T17:16:24.770309Z","shell.execute_reply.started":"2021-06-26T17:16:24.750998Z","shell.execute_reply":"2021-06-26T17:16:24.76902Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> #### 📌  Observations from **awards.csv**\n> * Contains information about the awards given out on a particular date in the training dataset. As we have already seen, the seperate CSV file named awards.csv contains all the information about awards given out prior to 2018 season. \n> \n> * On one hand, the awards given out before 2018 can help us understand how big a player is, their influence, and how people engage with them on long term basis. Whereas, the daily award information will help us understand how the fans engage with the playes digital content on a daily - much shorter - basis. ","metadata":{}},{"cell_type":"markdown","source":"#### 🔹 **Twitter Followers**: A single cell from the 'teamTwitterFollowers' & 'playerTwitterFollowers'\n* Contains twitter followers count for players and teams on a particular date.","metadata":{}},{"cell_type":"code","source":"# A single cell containing Twitter Followers details of multiple \"players\" on a particular date\nshow_single_json(train_df['playerTwitterFollowers'].iloc[0])","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:16:26.18026Z","iopub.execute_input":"2021-06-26T17:16:26.180603Z","iopub.status.idle":"2021-06-26T17:16:26.212283Z","shell.execute_reply.started":"2021-06-26T17:16:26.180574Z","shell.execute_reply":"2021-06-26T17:16:26.211381Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# A single cell containing Twitter Followers details of all \"teams\" on a particular date\nshow_single_json(train_df['teamTwitterFollowers'].iloc[0])","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:16:26.975144Z","iopub.execute_input":"2021-06-26T17:16:26.975467Z","iopub.status.idle":"2021-06-26T17:16:26.999316Z","shell.execute_reply.started":"2021-06-26T17:16:26.975437Z","shell.execute_reply":"2021-06-26T17:16:26.99833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### 🔹 **Target Variables**: A single cell from the 'nextDayPlayerEngagement' column\n* This is what we have to predict. Next Day Target Variables representing players engagements based on Current day data.","metadata":{}},{"cell_type":"code","source":"# Next Day (2021-05-01) Target Variables as of 2021-04-30\nshow_single_json(train_df['nextDayPlayerEngagement'].iloc[1215]).head()","metadata":{"execution":{"iopub.status.busy":"2021-06-26T17:16:38.136514Z","iopub.execute_input":"2021-06-26T17:16:38.136847Z","iopub.status.idle":"2021-06-26T17:16:38.165149Z","shell.execute_reply.started":"2021-06-26T17:16:38.136814Z","shell.execute_reply":"2021-06-26T17:16:38.164175Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Now that we have understood the structure of datasets and what they represent. We can start off with data exploration analysis!","metadata":{}},{"cell_type":"markdown","source":"# <font color='#093e88'>3. Exploratory Data Analysis</font>","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <center><font color='#041e42'>This Notebook is Work in Progress...</font> <font color='#bf0d3e'>It will be updated on daily basis...</font></center>","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}