{"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":"# ** MLB Player Digital Engagement Competition**&#x1f600;\n\n \n## I think this competition is a competition that predicts future fan engagement(such as \"reaction\" and \"behavior\") with the digital content of each MLB player ID . We will predict four different measures of engagement (target1-target4), each quantified on a scale of 0-100 with a different index.\n(It's easy to imagine that you can write on twitter about players or access some site for some players and so on.)","metadata":{}},{"cell_type":"markdown","source":"## If you find it useful, I would be grateful if you could **upvote**! Thank you for those who have upvote on other notebooks.\n\n## Also, basically, I referred the starter of this secretariat and understood EDA (partial excerpt). Thank you very much.\n\n## Please also upvote this.\n\nhttps://www.kaggle.com/ryanholbrook/getting-started-with-mlb-player-digital-engagement","metadata":{}},{"cell_type":"code","source":"import gc\nimport sys\nimport warnings\nfrom pathlib import Path\n\nimport os\n\nimport ipywidgets as widgets\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nwarnings.simplefilter(\"ignore\")","metadata":{"execution":{"iopub.status.busy":"2021-06-11T08:16:39.810356Z","iopub.execute_input":"2021-06-11T08:16:39.810847Z","iopub.status.idle":"2021-06-11T08:16:39.817974Z","shell.execute_reply.started":"2021-06-11T08:16:39.810808Z","shell.execute_reply":"2021-06-11T08:16:39.816638Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 0. What to predict (look from the submission file)","metadata":{}},{"cell_type":"code","source":"example_sample_submission = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/example_sample_submission.csv\")\nexample_sample_submission","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:14.742753Z","iopub.execute_input":"2021-06-11T07:14:14.743172Z","iopub.status.idle":"2021-06-11T07:14:14.788884Z","shell.execute_reply.started":"2021-06-11T07:14:14.743126Z","shell.execute_reply":"2021-06-11T07:14:14.787617Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"I think this competition is a competition that predicts future fan engagement(such as \"reaction\" and \"behavior\") with the digital content of each NLB player ID . \nWe will predict four different measures of engagement (target1-target4), each quantified on a scale of 0-100 with a different index.","metadata":{}},{"cell_type":"markdown","source":"## 0.1 Guess from what information? (I will look at the test data first)","metadata":{}},{"cell_type":"code","source":"example_test = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/example_test.csv\")\nexample_test","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:14.791553Z","iopub.execute_input":"2021-06-11T07:14:14.79217Z","iopub.status.idle":"2021-06-11T07:14:15.612495Z","shell.execute_reply.started":"2021-06-11T07:14:14.792117Z","shell.execute_reply":"2021-06-11T07:14:15.611716Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"At first glance, it doesn't seem like you can immediately see the player ID that appears in the submission. It seems that various information is included in json format.\n\n\nThe test data consists of one line of data per day.\n\n\nFor example, using a function from the starter code, it can be expanded as follows.","metadata":{}},{"cell_type":"code","source":"# Helper function to unpack json found in daily data\ndef unpack_json(json_str):\n    return np.nan if pd.isna(json_str) else pd.read_json(json_str)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:15.613911Z","iopub.execute_input":"2021-06-11T07:14:15.614416Z","iopub.status.idle":"2021-06-11T07:14:15.618269Z","shell.execute_reply.started":"2021-06-11T07:14:15.614385Z","shell.execute_reply":"2021-06-11T07:14:15.617432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"example_test.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:15.61943Z","iopub.execute_input":"2021-06-11T07:14:15.619962Z","iopub.status.idle":"2021-06-11T07:14:15.741775Z","shell.execute_reply.started":"2021-06-11T07:14:15.61993Z","shell.execute_reply":"2021-06-11T07:14:15.740697Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Visualize the example_test[\"games\"].iloc[0] ","metadata":{}},{"cell_type":"code","source":"unpack_json(example_test[\"games\"].iloc[0])","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:15.743268Z","iopub.execute_input":"2021-06-11T07:14:15.743574Z","iopub.status.idle":"2021-06-11T07:14:15.815659Z","shell.execute_reply.started":"2021-06-11T07:14:15.743544Z","shell.execute_reply":"2021-06-11T07:14:15.8144Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Visualize the example_test[\"rosters\"].iloc[0] ","metadata":{}},{"cell_type":"code","source":"unpack_json(example_test[\"rosters\"].iloc[0])","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:15.817341Z","iopub.execute_input":"2021-06-11T07:14:15.817792Z","iopub.status.idle":"2021-06-11T07:14:15.847603Z","shell.execute_reply.started":"2021-06-11T07:14:15.817746Z","shell.execute_reply":"2021-06-11T07:14:15.846338Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"From the information in this area, I think it is a competition to estimate the expected value of the evaluation items target1 to 4 on the next day for each player id.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"--------- Based on the above, we will look at other data such as train data ---------","metadata":{}},{"cell_type":"markdown","source":"# 1. train.csv","metadata":{}},{"cell_type":"code","source":"# It will take some time to load.\ntraining = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/train.csv\")\ntraining","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:14:15.851566Z","iopub.execute_input":"2021-06-11T07:14:15.851986Z","iopub.status.idle":"2021-06-11T07:15:31.922297Z","shell.execute_reply.started":"2021-06-11T07:14:15.851951Z","shell.execute_reply":"2021-06-11T07:15:31.921096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#date is converted to datetime\ntraining['date'] = pd.to_datetime(training['date'], format=\"%Y%m%d\")","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:31.924813Z","iopub.execute_input":"2021-06-11T07:15:31.925252Z","iopub.status.idle":"2021-06-11T07:15:31.934557Z","shell.execute_reply.started":"2021-06-11T07:15:31.925209Z","shell.execute_reply":"2021-06-11T07:15:31.933666Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"training.info()","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:31.935832Z","iopub.execute_input":"2021-06-11T07:15:31.936289Z","iopub.status.idle":"2021-06-11T07:15:31.966582Z","shell.execute_reply.started":"2021-06-11T07:15:31.936258Z","shell.execute_reply":"2021-06-11T07:15:31.965274Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Data for 1216 days. No null data. There are nan data here and there.","metadata":{}},{"cell_type":"markdown","source":"---------------------------------------------------------------------","metadata":{}},{"cell_type":"markdown","source":"## From here **Let's take a look at one json where there is data for each column**.\n\nAs mentioned above, the contents of train.csv are also in json file format in one cell, and it has a complicated shape like dataframe is further contained.\n\n(According to the result, it is an image that about 11 DataFrames (although it is a little small even if there is nan) are hanging as the amount of information for one day of data for 1216 days in total, which is a considerable amount of information. is.\n\nSo it's a little long from here. You may just grab the image and read it through. )","metadata":{}},{"cell_type":"code","source":"training.columns","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:31.967892Z","iopub.execute_input":"2021-06-11T07:15:31.968239Z","iopub.status.idle":"2021-06-11T07:15:31.974722Z","shell.execute_reply.started":"2021-06-11T07:15:31.968206Z","shell.execute_reply":"2021-06-11T07:15:31.97366Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"It is troublesome to input one by one, so I will omit NaN and make the nth (0 is the top) sample as a dataframe and create a function to see the column name and contents.","metadata":{}},{"cell_type":"code","source":"def exshow(col,n):\n    tmp = training[col]\n    tmp = tmp.dropna()\n    tmpdf = unpack_json(tmp.iloc[n])\n    print(tmpdf.columns)\n    return tmpdf","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:31.976013Z","iopub.execute_input":"2021-06-11T07:15:31.976295Z","iopub.status.idle":"2021-06-11T07:15:31.986585Z","shell.execute_reply.started":"2021-06-11T07:15:31.976268Z","shell.execute_reply":"2021-06-11T07:15:31.985538Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1.1 nextDayPlayerEngagement (column 1 of train.csv)\nNested JSON containing all modeling targets from the following day.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:31.987853Z","iopub.execute_input":"2021-06-11T07:15:31.988153Z","iopub.status.idle":"2021-06-11T07:15:32.019879Z","shell.execute_reply.started":"2021-06-11T07:15:31.988125Z","shell.execute_reply":"2021-06-11T07:15:32.018758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"nextDayPlayerEngagement\",0)\ntmpdf","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.021281Z","iopub.execute_input":"2021-06-11T07:15:32.021582Z","iopub.status.idle":"2021-06-11T07:15:32.061538Z","shell.execute_reply.started":"2021-06-11T07:15:32.021554Z","shell.execute_reply":"2021-06-11T07:15:32.060307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* engagementMetricsDate - date of player engagement metrics, based on US Pacific Time (aligns with previous day’s games, rosters, on-field statistics, transactions, awards, etc.).\n* playerId\n* target1\n* target2\n* target3\n* target4\n\n\ntarget1-target4 are each daily indexes of digital engagement on a 0-100 scale.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"From here, plyaerId and targets1 to 4 from the next day onwards are pulled out.","metadata":{}},{"cell_type":"markdown","source":"## 1.2 games(column 2 of train.csv)\nNested JSON containing all game information for a given day. Includes spring training and exhibition games along with regular season, Postseason, and All-Star games.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.063131Z","iopub.execute_input":"2021-06-11T07:15:32.063479Z","iopub.status.idle":"2021-06-11T07:15:32.090407Z","shell.execute_reply.started":"2021-06-11T07:15:32.063442Z","shell.execute_reply":"2021-06-11T07:15:32.089402Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"games\",1) # 0番目（1番上はデータが一行しかなかったので、1にしました。)\ntmpdf","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.092099Z","iopub.execute_input":"2021-06-11T07:15:32.092646Z","iopub.status.idle":"2021-06-11T07:15:32.145393Z","shell.execute_reply.started":"2021-06-11T07:15:32.092591Z","shell.execute_reply":"2021-06-11T07:15:32.14432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Please open ↓ for the meaning of the column. (Because it is long, I hide it.)","metadata":{}},{"cell_type":"markdown","source":"* gamePk - Unique identifier for a game.\n* gameType - Game type, various types can be found here.\n* season\n* gameDate\n* gameTimeUTC - First pitch time in UTC.\n* resumeDate - Time game was resumed (if abandoned, otherwise null).\n* resumedFrom - Time game was originally abandoned (if abandoned, otherwise null).\n* codedGameState - Game status code, various types can be found here.\n* detailedGameState - Game status, various types can be found here.\n* isTie - Boolean, true if game ended in a tie.\n* gameNumber - Game number flag to distinguish double headers - 1 or 2.\n* doubleHeader - Y for DH, N for single game, S for split-ticket.\n* dayNight - Day or night flag for scheduled start time.\n* scheduledInnings - Scheduled number of innings.\n* gamesInSeries - Number of games in current series.\n* seriesDescription - Text description of current series.\n* homeId - Unique identifier for home team.\n* homeName - Home team name.\n* homeAbbrev - Home team abbreviation.\n* homeWins - Number of current wins on season for home team.\n* homeLosses - Number of current losses on season for home team.\n* homeWinPct - Current winning percentage for home team.\n* homeWinner - Boolean, true if home team wins.\n* homeScore - Runs scored by home team.\n* awayId - Unique identifier for away team.\n* awayName - Unique identifier for away team.\n* awayAbbrev - Away team abbreviation.\n* awayWins - Number of current wins on season for away team.\n* awayLosses - Number of current losses on season for away team.\n* awayWinPct - Current winning percentage for away team.\n* awayWinner - Boolean, true if away team wins.\n* awayScore - Runs scored by away team.","metadata":{"_kg_hide-input":true}},{"cell_type":"markdown","source":"## 1.3 rosters(column 3 of train.csv)\nNested JSON that contains all the roster information for a particular day. Includes in-season and off-season team rosters.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.147109Z","iopub.execute_input":"2021-06-11T07:15:32.147568Z","iopub.status.idle":"2021-06-11T07:15:32.176349Z","shell.execute_reply.started":"2021-06-11T07:15:32.147503Z","shell.execute_reply":"2021-06-11T07:15:32.175258Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"rosters\",0) \ntmpdf","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.177745Z","iopub.execute_input":"2021-06-11T07:15:32.17859Z","iopub.status.idle":"2021-06-11T07:15:32.214115Z","shell.execute_reply.started":"2021-06-11T07:15:32.178544Z","shell.execute_reply":"2021-06-11T07:15:32.212935Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* playerId - Unique identifier for a player.\n* gameDate\n* teamId - teamId that player is on that date.\n* statusCode - Roster status abbreviation.\n* status - Descriptive roster status.","metadata":{}},{"cell_type":"markdown","source":"## 1.4 playerBoxScores(column 4 of train.csv)\nNested JSON containing game stats aggregated at the player game level for a given day. Includes regular","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.215655Z","iopub.execute_input":"2021-06-11T07:15:32.215969Z","iopub.status.idle":"2021-06-11T07:15:32.243582Z","shell.execute_reply.started":"2021-06-11T07:15:32.215935Z","shell.execute_reply":"2021-06-11T07:15:32.242167Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"playerBoxScores\",0) \ntmpdf.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.245047Z","iopub.execute_input":"2021-06-11T07:15:32.245336Z","iopub.status.idle":"2021-06-11T07:15:32.326017Z","shell.execute_reply.started":"2021-06-11T07:15:32.24531Z","shell.execute_reply":"2021-06-11T07:15:32.325084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Please open ↓ for the meaning of the column. (Because it is long, I hide it.)","metadata":{}},{"cell_type":"markdown","source":"* home - Binary, 1 if home team, 0 if away.\n* gamePk - unique identifier for game.\n* gameDate\n* gameTimeUTC - First pitch time in UTC.\n* teamId - Unique identifier for team.\n* teamName\n* playerId - Unique identifier for player.\n* playerName\n* jerseyNum\n* positionCode - Number position code, details are here.\n* positionName - Text position display, details are here.\n* positionType - Position group, details are here.\n* battingOrder - Format: “###”, where the first digit indicates the batting order spot, and the second two digits indicate the sequence in which that player occupied that batting order spot. Examples: “300”, which indicates the starter in the third spot in the batting order; “903,” which indicates the fourth player (after 900, 901 and 902) occupy the ninth spot in the batting order. Only populates if appeared in game.\n* gamesPlayedBatting - 1 if player entered the game as a batter, runner or fielder.\n* flyOuts - Game total fly outs.\n* groundOuts - Game total ground outs.\n* runsScored - Game total runs scored.\n* doubles - Game total doubles.\n* triples - Game total triples.\n* homeRuns - Game total home runs.\n* strikeOuts - Game total strike outs.\n* baseOnBalls - Game total walks.\n* intentionalWalks - Game total intentional walks.\n* hits - Game total hits.\n* hitByPitch - Game total hit by pitches.\n* atBats - Game total at-bats.\n* caughtStealing - Game total caught stealing.\n* stolenBases - Game total stolen bases.\n* groundIntoDoublePlay - Game total double plays grounded into.\n* groundIntoTriplePlay - Game total triple plays grounded into.\n* plateAppearances - Game total plate appearances.\n* totalBases - Game total bases.\n* rbi - Game total runs batted in.\n* leftOnBase - Game total runners left on base.\n* sacBunts - Game total sacrifice bunts.\n* sacFlies - Game total sacrifice flies.\n* catchersInterference - Game total catchers interference reached on.\n* pickoffs - Game total number of times picked off base.\n* gamesPlayedPitching- Binary, 1 if player entered the game as a pitcher.\n* gamesStartedPitching- Binary, 1 if player was game’s starting pitcher.\n* completeGamesPitching - Binary, 1 if credited with complete game.\n* shutoutsPitching - Binary, 1 if credited with shutout.\n* winsPitching - Binary, 1 if credited with win.\n* lossesPitching - Binary, 1 if credited with loss.\n* flyOutsPitching - Game total of flyouts allowed.\n* airOutsPitching - Game total of air outs (flyouts + popouts) allowed.\n* groundOutsPitching - Game total ground outs allowed.\n* runsPitching - Game total runs allowed.\n* doublesPitching - Game total doubles allowed.\n* triplesPitching - Game total triples allowed.\n* homeRunsPitching - Game total home runs allowed.\n* strikeOutsPitching - Game total strike outs allowed.\n* baseOnBallsPitching - Game total walks allowed.\n* intentionalWalksPitching - Game total intentional walks allowed.\n* hitsPitching - Game total hits allowed.\n* hitByPitchPitching - Game total hit by pitches allowed.\n* atBatsPitching - Game total at-bats against.\n* caughtStealingPitching - Game total caught stealing against.\n* stolenBasesPitching - Game total stolen bases allowed.\n* inningsPitched - Game total innings pitched.\n* saveOpportunities - Binary, 1 if credited with save opportunity.\n* earnedRuns - Game total earned runs allowed.\n* battersFaced - Game total batters faced.\n* outsPitching - Game total outs recorded.\n* pitchesThrown - Game total number of pitches thrown.\n* balls - Game total balls thrown.\n* strikes - Game total strikes thrown.\n* hitBatsmen - Game total hit batters.\n* balks - Game total balks.\n* wildPitches - Game total number of wild pitches thrown.\n* pickoffsPitching - Game total number of pickoffs.\n* rbiPitching - Game total number of runs batted in allowed.\n* inheritedRunners - Game total of inherited runners assumed.\n* inheritedRunnersScored- Game total of inherited runners that scored.\n* catchersInterferencePitching - Game total of catcher’s interference occurred by battery.\n* sacBuntsPitching - Game total sacrifice bunts allowed.\n* sacFliesPitching - Game total sacrifice flies allowed.\n* saves - Binary, 1 if credited with save.\n* holds - Binary, 1 if credited with hold.\n* blownSaves - Binary, 1 if credited with blown save.\n* assists - Game total number of assists.\n* putOuts - Game total number of putouts.\n* errors - Game total number of errors.\n* chances - Game total fielding chances.","metadata":{"_kg_hide-input":true}},{"cell_type":"markdown","source":"## 1.5 teamBoxScores(column 5 of train.csv)\nNested JSON containing game stats aggregated at the team game level for a given day. Includes regular season, Postseason, and All-Star games.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.327487Z","iopub.execute_input":"2021-06-11T07:15:32.327911Z","iopub.status.idle":"2021-06-11T07:15:32.353342Z","shell.execute_reply.started":"2021-06-11T07:15:32.327869Z","shell.execute_reply":"2021-06-11T07:15:32.35235Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"teamBoxScores\",0) \ntmpdf.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.3548Z","iopub.execute_input":"2021-06-11T07:15:32.355106Z","iopub.status.idle":"2021-06-11T07:15:32.409809Z","shell.execute_reply.started":"2021-06-11T07:15:32.355078Z","shell.execute_reply":"2021-06-11T07:15:32.408795Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Please open ↓ for the meaning of the column. (Because it is long, I hide it.)","metadata":{}},{"cell_type":"markdown","source":"* home - Binary, 1 if home team, 0 if away.\n* teamId - unique identifier for team.\n* gamePk - unique identifier for game.\n* gameDate\n* gameTimeUTC - First pitch time in UTC.\n* flyOuts - Game total fly outs.\n* groundOuts - Game total ground outs.\n* runsScored - Game total runs scored.\n* doubles - Game total doubles.\n* triples - Game total triples.\n* homeRuns - Game total home runs.\n* strikeOuts - Game total strike outs.\n* baseOnBalls - Game total walks.\n* intentionalWalks - Game total intentional walks.\n* hits - Game total hits.\n* hitByPitch - Game total hit by pitches.\n* atBats - Game total at-bats.\n* caughtStealing - Game total caught stealing.\n* stolenBases - Game total stolen bases.\n* groundIntoDoublePlay - Game total double plays grounded into.\n* groundIntoTriplePlay - Game total triple plays grounded into.\n* plateAppearances - Game total plate appearances.\n* totalBases - Game total bases.\n* rbi - Game total runs batted in.\n* leftOnBase - Game total runners left on base.\n* sacBunts - Game total sacrifice bunts.\n* sacFlies - Game total sacrifice flies.\n* catchersInterference - Game total catcher’s interference reached on.\n* pickoffs - Game total number of times picked off base.\n* airOutsPitching - Game total of air outs (flyouts + popouts) allowed.\n* groundOutsPitching - Game total ground outs allowed.\n* runsPitching - Game total runs allowed.\n* doublesPitching - Game total doubles allowed.\n* triplesPitching - Game total triples allowed.\n* homeRunsPitching - Game total home runs allowed.\n* strikeOutsPitching - Game total strike outs allowed.\n* baseOnBallsPitching - Game total walks allowed.\n* intentionalWalksPitching - Game total intentional walks allowed.\n* hitsPitching - Game total hits allowed.\n* hitByPitchPitching - Game total hit by pitches allowed.\n* atBatsPitching - Game total at-bats against.\n* caughtStealingPitching - Game total caught stealing against.\n* stolenBasesPitching - Game total stolen bases allowed.\n* inningsPitched - Game total innings pitched.\n* earnedRuns - Game total earned runs allowed.\n* battersFaced - Game total batters faced.\n* outsPitching - Game total outs recorded.\n* hitBatsmen - Game total hit batters.\n* balks - Game total balks.\n* wildPitches - Game total number of wild pitches thrown.\n* pickoffsPitching - Game total number of pickoffs.\n* rbiPitching - Game total number of runs batted in allowed.\n* inheritedRunners - Game total of inherited runners assumed.\n* inheritedRunnersScored- Game total of inherited runners that scored.\n* catchersInterferencePitching - Game total of catcher’s interference occurred by battery.\n* sacBuntsPitching - Game total sacrifice bunts allowed.\n* sacFliesPitching - Game total sacrifice flies allowed.","metadata":{"_kg_hide-input":true}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1.6 transactions(column 6 of train.csv)\nNested JSON containing all transaction information involving MLB teams for a given day.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.413519Z","iopub.execute_input":"2021-06-11T07:15:32.413803Z","iopub.status.idle":"2021-06-11T07:15:32.438421Z","shell.execute_reply.started":"2021-06-11T07:15:32.413776Z","shell.execute_reply":"2021-06-11T07:15:32.43707Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"transactions\",1) \ntmpdf","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.440485Z","iopub.execute_input":"2021-06-11T07:15:32.440805Z","iopub.status.idle":"2021-06-11T07:15:32.480155Z","shell.execute_reply.started":"2021-06-11T07:15:32.440775Z","shell.execute_reply":"2021-06-11T07:15:32.479473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* transactionId - Unique identifier for a transaction.\n* playerId - Unique identifier for a player.\n* playerName\n* date\n* fromTeamId - Unique identifier for the team a player goes from.\n* fromTeamName\n* toTeamId - Unique identifier for the team a player goes to.\n* toTeamName\n* effectiveDate\n* resolutionDate\n* typeCode - Transaction status abbreviation.\n* typeDesc - Transaction status description.\n* description - Text description of transaction.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1.7 standings(column 7 of train.csv)\nNested JSON containing all standings information involving MLB teams for a given day.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.481298Z","iopub.execute_input":"2021-06-11T07:15:32.481584Z","iopub.status.idle":"2021-06-11T07:15:32.507221Z","shell.execute_reply.started":"2021-06-11T07:15:32.481556Z","shell.execute_reply":"2021-06-11T07:15:32.505941Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"standings\",0) \ntmpdf.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.508713Z","iopub.execute_input":"2021-06-11T07:15:32.509007Z","iopub.status.idle":"2021-06-11T07:15:32.56013Z","shell.execute_reply.started":"2021-06-11T07:15:32.508978Z","shell.execute_reply":"2021-06-11T07:15:32.55901Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Please open ↓ for the meaning of the column. (Because it is long, I hide it.)","metadata":{}},{"cell_type":"markdown","source":"* season\n* gameDate\n* divisionId - Unique identifier of the division that this team plays in.\n* teamId - Unique identifier for a team.\n* teamName\n* streakCode - Abbreviation of team’s current win or loss streak. First letter indicates winning or losing, number is the number of games.\n* divisionRank - Team’s current rank in their division.\n* leagueRank - Team’s current rank in their league.\n* wildCardRank - Team’s current rank for a wildcard berth.\n* leagueGamesBack - Games back in team’s league.\n* sportGamesBack - Games back in all of MLB.\n* divisionGamesBack - Games back in team’s division.\n* wins - Current wins.\n* losses - Current losses.\n* pct - Current winning percentage.\n* runsAllowed - Runs allowed on the season.\n* runsScored - Runs scored on the season.\n* divisionChamp - true if team has clinched the division title.\n* divisionLeader - true if team is leading the division race.\n* wildCardLeader - true if team is wildcard leader.\n* eliminationNumber - number of games (team losses + opponent wins) before eliminated from the division race.\n* wildCardEliminationNumber - number of games (team losses + opponent wins) before eliminated from the wildcard race.\n* homeWins - Home wins on the season.\n* homeLosses - Home losses on the season.\n* awayWins - Away wins on the season.\n* awayLosses - Away losses on the season.\n* lastTenWins - Wins in the last 10 games.\n* lastTenLosses - Losses in the last 10 games.\n* extraInningWins - Wins in extra innings on the season.\n* extraInningLosses - Losses in extra innings on the season.\n* oneRunWins - Wins by one run on the season.\n* oneRunLosses - Losses by one run on the season.\n* dayWins - Day game wins on the season.\n* dayLosses Day game losses on the season.\n* nightWins - Night game wins on the season.\n* nightLosses - Night game losses on the season.\n* grassWins - Grass field wins on the season.\n* grassLosses - Grass field losses on the season.\n* turfWins - Turf field wins on the season.\n* turfLosses - Turf field losses on the season.\n* divWins - Wins against division opponents on the season.\n* divLosses - Losses against division opponents on the season.\n* alWins - Wins against AL teams on the season.\n* alLosses - Losses against AL teams on the season.\n* nlWins - Wins against NL teams on the season.\n* nlLosses - Losses against NL teams on the season.\n* xWinLossPct - Expected winning percentage based on runs scored and allowed.","metadata":{"_kg_hide-input":true}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1.8 awards(column 8 of train.csv)\nNested JSON containing all awards or honors handed out on a given day.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.561724Z","iopub.execute_input":"2021-06-11T07:15:32.56214Z","iopub.status.idle":"2021-06-11T07:15:32.587953Z","shell.execute_reply.started":"2021-06-11T07:15:32.562096Z","shell.execute_reply":"2021-06-11T07:15:32.586599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"awards\",0) \ntmpdf","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.589771Z","iopub.execute_input":"2021-06-11T07:15:32.59015Z","iopub.status.idle":"2021-06-11T07:15:32.617182Z","shell.execute_reply.started":"2021-06-11T07:15:32.590113Z","shell.execute_reply":"2021-06-11T07:15:32.616254Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* awardId\n* awardName\n* awardDate - Date award was given.\n* awardSeason - Season award was from.\n* playerId - Unique identifier for a player.\n* playerName\n* awardPlayerTeamId","metadata":{}},{"cell_type":"markdown","source":"## 1.9 events(column 9 of train.csv)\nNested JSON containing all on-field game events for a given day. Includes regular season and Postseason games.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.618511Z","iopub.execute_input":"2021-06-11T07:15:32.61882Z","iopub.status.idle":"2021-06-11T07:15:32.645646Z","shell.execute_reply.started":"2021-06-11T07:15:32.61879Z","shell.execute_reply":"2021-06-11T07:15:32.644561Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"events\",0) \ntmpdf.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.647059Z","iopub.execute_input":"2021-06-11T07:15:32.647366Z","iopub.status.idle":"2021-06-11T07:15:32.959876Z","shell.execute_reply.started":"2021-06-11T07:15:32.647334Z","shell.execute_reply":"2021-06-11T07:15:32.958952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Please open ↓ for the meaning of the column. (Because it is long, I hide it.)","metadata":{}},{"cell_type":"markdown","source":"* gamePk - unique identifier for game.\n* gameDate\n* gameTimeUTC - First pitch time in UTC.\n* season\n* gameType - Game type, various types can be found here.\n* playId - Statcast play guid.\n* eventId\n* inning - Inning AB occurred.\n* halfInning- “top” or “bottom” inning indicator.\n* homeScore - Home score at start of the event.\n* awayScore - Away score at start of the event.\n* menOnBase - Split used if runner on base – ie (RISP, Empty).\n* atBatIndex - At-Bat index number, begins with 0.\n* atBatDesc - Play-by-play description of AB.\n* atBatEvent - Event type result of the atBat, various types can be found here.\n* hasOut - Binary, 1 if runner is out on play.\n* pitcherTeamId - Unique identifier for pitching team.\n* isPitcherHome - Binary, 1 if pitcher is home team.\n* pitcherTeam - team name of pitching team.\n* hitterTeamId - Unique identifier for hitting team.\n* hitterTeam - Team name of hitting team.\n* pitcherId\n* pitcherName\n* isStarter - Binary, 1 if player was game’s starting pitcher.\n* pitcherHand - Player throw hand: “L”,”R”.\n* hitterId\n* hitterName\n* batSide - Player bat side: “L”,”R”.\n* pitchNumber - Pitch sequence number of AB.\n* balls - Ball count after the event.\n* strikes - Strike count after the event.\n* isGB - Binary, 1 if at bat is a ground ball.\n* isLD - Binary, 1 if at bat is a line drive.\n* isFB - Binary, 1 if at bat is a fly ball.\n* isPU - Binary, 1 if at bat is a pop up.\n* launchSpeed - Measured speed of the hit ball.\n* launchAngle - Vertical angle relative to the horizon at which the hit was launched.\n* totalDistance - Total distance ball traveled.\n* event - Events that may occur during an at-bat: strikeout, groundout, substitutions, stolen base, wild pitch, game advisory, etc.\n* description - Text description of event.\n* rbi - Number of runs batted in during AB.\n* pitchType - Pitch type classification code, various types can be found here.\n* call - Pitch or throw result classification code, various types can be found here.\n* outs - Current/Final outs of AB.\n* inPlay - True/False if ball was hit into play.\n* isPaOver - Binary, 1 if this event is the end of the plate appearance.\n* startSpeed - Speed in MPH of the ball at 50 feet in front of home plate.\n* endSpeed - Speed in MPH of the ball as it crosses the front edge of home plate (0,0 in the x axis).\n* nastyFactor - Evaluates several properties of each pitch, and rates the \"nastiness\" of the pitch on a scale from 0-100.\n* breakAngle - Degrees clockwise (batter’s view) that the plane of the pitch deviates from the vertical.\n* breakLength - Max distance that the pitch separates from the straight line between pitch start and pitch end.\n* breakY - Distance from home plate where the break is greatest.\n* spinRate - Rate of spin on the ball after it was released by pitcher in RPMs.\n* spinDirection - The axis of rotation for the ball at release given as an angle that reflects how the spin will influence the ball trajectory. Pure back-spin is 180 degrees, pure side-spin that puts the ball to the 1b side is 90 degrees, pure-side spin that pulls the ball to the 3b side is 270 degrees, and pure top-spin is 0 or 360 degrees.\n* pX - Horizontal position in feet of the ball as it crosses the front axis of home plate.\n* pZ - Vertical position in feet above home plate of the ball as it crosses the front axis of home plate.\n* aX - Ball acceleration on the z axis.\n* aY - Ball acceleration on the y axis.\n* aZ - Ball acceleration on the z axis.\n* pfxX - Horizontal movement of the ball in inches.\n* pfxZ - Vertical movement of the ball in inches.\n* vX0 - Velocity of the ball from the x axis.\n* vY0 - Velocity of the ball from the y axis; this is negative because 0,0,0 is behind the batter and the ball travels from pitcher mound towards 0,0,0.\n* vZ0 - Velocity of the ball from the z axis.\n* x - X coordinate where pitch crossed front of home plate.\n* y - Y coordinate where pitch crossed front of home plate.\n* x0 - Coordinate location of the ball at the point it was released from the pitchers hand on the x axis (time = 0).\n* y0 - Coordinate location of the ball at the point it was released from the pitchers hand on the y axis (time = 0).\n* z0 - Coordinate location of the ball at the point it was released from the pitchers hand on the z axis (time = 0).\n* type - Type of event, either ‘pitch’ or ‘action’\n* zone - Zone location number - see image below.\n\n![image.png](attachment:23a29292-57ee-4e08-9b4f-cb3659602929.png)\n\nfrom data page on kaggle : https://www.kaggle.com/c/mlb-player-digital-engagement-forecasting/data","metadata":{"_kg_hide-input":true},"attachments":{"23a29292-57ee-4e08-9b4f-cb3659602929.png":{"image/png":"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seW0wJPGW/+OF9cn/2h0LkIgDWAcZNumSfCMBiyr+iEzMsoxwYn60TZs+w5um1XytTAYu8ZSftpMEgz+MLrrrrtKxkJL0vP/Yd67+OKLKxpM66VwiuNE7F3a9vFMkUwpSUKu3TCNfHaCJER0Q+ZJ+FpJN7ocSIJByezroYceKoObAe6BBx4o+6YR4MUuGyQhVoE0MLSRJNx7772FHJx00knV5z//+WrnnXeudtxxx2r77bcv2zvttFPZ/tznPlf+27/rrrsWL2+Dm4FwKT9tJAlR9/fdd18V5qa99tqr2myzzaoPfvCD1frrr1995CMfqbbccsvqwAMPLKQB6SLHbdHQRJ2qX2s31M0NfcqTAAcTyjA3ZHRDSMbk306QBCo0moS+Oi4ut2RKOl+dKE9j9sGTTz65fKXV1nE53pZPDBSRh6KNmgQDrLU7RLYYsN74xjdWr3vd66rXvva11Wte85rq9a9/ffkf2/7bftvb3lYhDbQP1OZLiXsbSQIZvf/++4tG5uCDD6423njj6u1vf3v1qle9quD5hje8oWz7/453vKPafPPNqxNPPLGQyH/8x38sg1Jb5Bi+tCEIbgZ34P0AACAASURBVB8dF9UDksBxkaYtoxuaS2YnSIJK73N0g7UbbrnllkKUeO22falos5pf/OIXRU27zz77VO973/uqD33oQyVd7O23394qdW2QBANpGxd48nzwvPHGG6tDDz20Wm+99aq11167estb3vIYrma7w76bbrppddBBBxWTAz+GJAlrOk6DqoFe33LIIYdU6667boUUfOADH6i22mqrao899qj23XffQrI+9rGPFcL16le/uuB8/PHHF+KlXbblEyRBCKRVIM8///zi5N2W53syniNJwmwod4IkmI3yPO9rMiX2aIMrz/vTTjutzBaWemY4Shx1Vp6X+paK1mz2hS98YemAdbrIjjJt+SwHkqDzo01jUggNAnOCGSMfFRqGc8455wlfbYaJjqkizQ1rJE6daz+0R7ITvutd76pe/vKXV+9///tLIqKrrrqqyKlF1ZAzE5TPfvazRWPzspe9rBAFK7IiGUtJvNa8UVXql7mBbwoyifBmMqVvZsbFupCM2F72JIFKsO9rN+jQ7rzzzuJM1WZNgg7TjBWhOffcc6uNNtqoesELXlA961nPKoPb3nvvXTJHtpEksDUjYW0zN8BU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4Wc/+1nvSEIkUxLHH5qEXCp6svA3KREkIR0Xm6A1e5kkCbNj1+TMurmhz5qEJAlNpOXxZTpBEq688spCEq644orCjvumScg8CY8X6nn+QxKW49oNnnvUd574zOtay4EkjMIz9s8Li8W4TuDLNNvnjItCIE0q0yehuZR1hiTIntVXx8UkCc0FftqSBgB+L8shLXM8K38UnuwPPvhgdf/991f33Xdf+fWfrDzyyCOt07bFINbGBZ48G8xgB0N4xveBBx4oWNPcma2rgzZ+vIPnj+gGWse+pWVWP6IbmKe//OUvZwhkQ0HtBEn4zne+U+J++04S2pKWOWZWOqZZv3GNhnK8aMVi4OW4yDGUHbONIZCek8aDM9p1111XnvO0006rjjnmmGKDPvroo0sCGVlJpZg2YKibtnw8i7UF2kYS4rmsjcKcecYZZ1RHHHFEdfDBB1eHH354dfLJJ5eF1W644YZCxBDKNn7C3GCA9Nx9Wypanagb0Q2ZJ2E6Ce0ESaBC03kzN/TRJ0GH35YFngxWfCQ0RstXG5CED/rl/CdzoW2D7uA+/+P4XXfdVZmlGfhcc6k+QRK8g5TMbUzL7BnJwI9+9KPq8ssvL8TgU5/6VPX+97+/esc73lG98Y1vrN761reW/9tvv311yimnVMKGOfmaIS8lvlGvMRi3iSTQDiBd+he+PjvttFP1gQ98oHrDG95QveY1rym4rrvuutWnP/3p6oQTTqiYPcmtujAot+kTJEG9H3rooRXHRX1lnz5IQmZcnL7GO0MS+h7dYKnoiy66qDr77LOr733ve9VSOS7qjHSU6sOMZa+99qr222+/au+996523XXXarfddqv23HPPat999y2/9u2+++7luDJx3CzYe1DvLmWHGyQBeWHSalsyJc8HnzvvvLNgjgS87W1vq175yldWr3/966t3vvOd5Yso2PfqV7+6/DewITxUzm2Y/baNJHge2KxcubLaY489qve85z3VK17xiuplL3tZwfBNb3pT9eY3v7mQBYTh3e9+d7XNNttU55xzTqUtijhyjbZ8PAvyztxAu4SM9SkEUj1oJ8wNNM+nnnpqdd5555UFnpayf2mLfIx7jk6QBOojHbgGTQja1DjHgT+PYwYJjd+sXae/1KtAGnCuv/76ap999qk+/OEPlwHLbNZMVsfqa/vtb3979Za3vKX819na52sw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Pl8I+Yi30jbC3JAZFwOVyb+dIAmLEd0QrNbg/sUvfrH63Oc+Vx1zzDElEQfiMI7VakQPPPBAEe4LLrigOuqoo8r5n/zkJ6vNNtus2mKLLUrjOuKII6pvfetb1W233Vb98pe/nItKbXKVZ4kuI5Akocu1u7Tvps+jAb3nnnvKbP+ggw6q3vGOd1QvfOELq0984hMl/4A0x+P6xmFvoDzTxa233lrxFdh4442rtdZaq3rVq15V7b333oU4IBDTXrd+L+dqG8wNNBUWeOLsngs81VEavt0JkhDRDZdeemkRAgP8Qj7OJ7Q33XRTReX1oQ99qHrDG95Qffazn61WrlxZ8n2PEljnYtOICzXcpz/96WrdddetXv/611evfvWrq9e97nVl2+96661XbbPNNiWxxw033FDuudBnX8h757nLH4EkCcu/Dtv4Bvo7kx+DrLVyDjnkkOoDH/hA9fznP796xjOeUSY/+uFZSEJc1wJ92267bfXKV76yeupTn1q99KUvrXbffffqmmuuqR566KEFTaKCJIS54bTTTstVIBsKWidIgrTMFni64oorCstdyECrkyWQP/jBD6qzzz672mijjQpTfvnLX160Ae7BbjaMJLgvxmvApz348Ic/XEgB1dkmm2xStAe77rpruc6mm25aWPib3vSmcoz6a/Xq1Quy6TWs8yzWYQSSJHS4cpfg1WJwpT0102di2H///at3v/vdhSD88R//cfW0pz1tZpLg+vpbk6oDDzywevvb314985nPrP7oj/6okAT9pWR58yIJkXGRxiKTKTUTqE6RhIU4Lhrg+RogAH//939fZvdUaMiBhrD22mtXO++8c3GOHGZ3I+wY8R133FHUWB//+MeL5uDNb35zUZkxKxD2733ve6VBfP3rX6922mmnynEaBjY9ZQjxQkhOs2rPUl1FIElCV2v2yX+vIAj6RP2WiQzNJ18Bs/xnPetZpW9EEjbffPPiEDhqAjXs6V1fn3vnnXeWpZtpbF/xildUz372s4smQd+75557Fn+whZpj411oQv7mb/6mOuuss3KBp2GVMmRfJ0gCG5NBd9a1G0QgEEIDPOfHo48+uszuqb2wWiRBo5hEEjjXcExkR3vb295WHHq22267kgmSmos9TyeunPSg1jPfcsstS8Ng29tnn32qG2+8ccFhREPqOXf1BIEkCT2p6CfhNcmS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"}}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"## 1.10 playerTwitterFollowers(column 10 of train.csv)\nNested JSON containing some players’ number of Twitter followers on that day.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.961192Z","iopub.execute_input":"2021-06-11T07:15:32.961489Z","iopub.status.idle":"2021-06-11T07:15:32.988481Z","shell.execute_reply.started":"2021-06-11T07:15:32.961458Z","shell.execute_reply":"2021-06-11T07:15:32.987192Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"playerTwitterFollowers\",0) \ntmpdf.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:32.990291Z","iopub.execute_input":"2021-06-11T07:15:32.990744Z","iopub.status.idle":"2021-06-11T07:15:33.025687Z","shell.execute_reply.started":"2021-06-11T07:15:32.9907Z","shell.execute_reply":"2021-06-11T07:15:33.02454Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Twitter following data was collected by MLB from Twitter APIs for Major League players, on the first of each month, dating back to 1/1/2018. This dataset is not exhaustive of all players over all months, as not every player has/had a Twitter account, players may create/delete/reinstate accounts at random, or other scenarios preventing follower data from being collected on a given date.\n\n* date - Date of follower count.\n* playerId - Unique identifier for a player.\n* playerName\n* accountName - Name on player twitter account.\n* twitterHandle - Player twitter handle.\n* numberOfFollowers - Number of followers","metadata":{}},{"cell_type":"markdown","source":"## 1.11 teamTwitterFollowers(column 11 of train.csv)\n Nested JSON containing each team’s number of Twitter followers on that day.","metadata":{}},{"cell_type":"code","source":"training.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.027403Z","iopub.execute_input":"2021-06-11T07:15:33.027851Z","iopub.status.idle":"2021-06-11T07:15:33.055274Z","shell.execute_reply.started":"2021-06-11T07:15:33.027806Z","shell.execute_reply":"2021-06-11T07:15:33.054137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tmpdf = exshow(\"teamTwitterFollowers\",0) \ntmpdf.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.056711Z","iopub.execute_input":"2021-06-11T07:15:33.05701Z","iopub.status.idle":"2021-06-11T07:15:33.083629Z","shell.execute_reply.started":"2021-06-11T07:15:33.056976Z","shell.execute_reply":"2021-06-11T07:15:33.082473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Twitter following data was collected by MLB from Twitter APIs for all 30 Major League teams, on the first of each month, dating back to 1/1/2018.\n\n* date - Date of follower count.\n* teamId - Unique identifier for a team.\n* teamName\n* accountName - Name on team twitter account.\n* twitterHandle - Team twitter handle.\n* numberOfFollowers - Number of followers.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Finally, the contents have been confirmed. Thank you for your support. .. .","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 2. Other additional data ( awards.csv, players.csv, seasons.csv, teams.csv)","metadata":{}},{"cell_type":"markdown","source":"## 2.1 Practice the widget that was in the starter (I thought I could do this ...)","metadata":{}},{"cell_type":"code","source":"df_names = ['seasons', 'teams', 'players', 'awards']\n\npath = \"../input/mlb-player-digital-engagement-forecasting\"","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.085077Z","iopub.execute_input":"2021-06-11T07:15:33.085431Z","iopub.status.idle":"2021-06-11T07:15:33.094992Z","shell.execute_reply.started":"2021-06-11T07:15:33.085398Z","shell.execute_reply":"2021-06-11T07:15:33.093642Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"kaggle_data_tabs = widgets.Tab()\n# Display each DataFrame in widgets as a tab inside children\nkaggle_data_tabs.children = list([widgets.Output() for df_name in df_names])","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.096557Z","iopub.execute_input":"2021-06-11T07:15:33.096883Z","iopub.status.idle":"2021-06-11T07:15:33.138349Z","shell.execute_reply.started":"2021-06-11T07:15:33.096833Z","shell.execute_reply":"2021-06-11T07:15:33.137633Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for index in range(len(df_names)):\n    # Set tab title\n    kaggle_data_tabs.set_title(index, df_names[index])\n    \n    df = pd.read_csv(os.path.join(path,df_names[index]) + \".csv\")\n    \n    # Embed DataFrame in each tab\n    with kaggle_data_tabs.children[index]:\n        display(df)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.139485Z","iopub.execute_input":"2021-06-11T07:15:33.139948Z","iopub.status.idle":"2021-06-11T07:15:33.300439Z","shell.execute_reply.started":"2021-06-11T07:15:33.139904Z","shell.execute_reply":"2021-06-11T07:15:33.299505Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"display(kaggle_data_tabs)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.301792Z","iopub.execute_input":"2021-06-11T07:15:33.302189Z","iopub.status.idle":"2021-06-11T07:15:33.311461Z","shell.execute_reply.started":"2021-06-11T07:15:33.302148Z","shell.execute_reply":"2021-06-11T07:15:33.310546Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"-----------I will look at each one in detail-----------","metadata":{}},{"cell_type":"markdown","source":"## 2.2 Seasons.csv","metadata":{}},{"cell_type":"code","source":"seasons = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/seasons.csv\")\nseasons","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.314621Z","iopub.execute_input":"2021-06-11T07:15:33.315029Z","iopub.status.idle":"2021-06-11T07:15:33.340268Z","shell.execute_reply.started":"2021-06-11T07:15:33.314999Z","shell.execute_reply":"2021-06-11T07:15:33.339549Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* seasonId\n* seasonStartDate\n* seasonEndDate\n* preSeasonStartDate\n* preSeasonEndDate\n* regularSeasonStartDate\n* regularSeasonEndDate\n* lastDate1stHalf\n* allStarDate\n* firstDate2ndHalf\n* postSeasonStartDate\n* postSeasonEndDate","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2.3 teams.csv","metadata":{}},{"cell_type":"code","source":"teams = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/teams.csv\")\nteams.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.341352Z","iopub.execute_input":"2021-06-11T07:15:33.341771Z","iopub.status.idle":"2021-06-11T07:15:33.364761Z","shell.execute_reply.started":"2021-06-11T07:15:33.341727Z","shell.execute_reply":"2021-06-11T07:15:33.36363Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## teams.csv\n* id - teamId\n* name\n* teamName\n* teamCode\n* shortName\n* abbreviation\n* locationName\n* leagueId\n* leagueName\n* divisionId\n* divisionName\n* venueId\n* venueName","metadata":{}},{"cell_type":"markdown","source":"## 2.4 players.csv","metadata":{}},{"cell_type":"code","source":"players = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/players.csv\")\nplayers.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.366114Z","iopub.execute_input":"2021-06-11T07:15:33.366516Z","iopub.status.idle":"2021-06-11T07:15:33.394555Z","shell.execute_reply.started":"2021-06-11T07:15:33.366475Z","shell.execute_reply":"2021-06-11T07:15:33.393376Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"* playerId - Unique identifier for a player.\n* playerName\n* DOB - Player’s date of birth.\n* mlbDebutDate\n* birthCity\n* birthStateProvince\n* birthCountry\n* heightInches\n* weight\n* primaryPositionCode - Player’s primary position code, details are here.\n* primaryPositionName - player’s primary position, details are here.\n* playerForTestSetAndFuturePreds - Boolean, true if player is among those for whom predictions are to be made in test data","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2.5 awards.csv","metadata":{}},{"cell_type":"code","source":"awards = pd.read_csv(\"../input/mlb-player-digital-engagement-forecasting/awards.csv\")\nawards.head(3)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:15:33.396127Z","iopub.execute_input":"2021-06-11T07:15:33.396561Z","iopub.status.idle":"2021-06-11T07:15:33.427829Z","shell.execute_reply.started":"2021-06-11T07:15:33.396501Z","shell.execute_reply":"2021-06-11T07:15:33.426876Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"This file has awards won by players in the training set prior to the beginning of the daily data (i.e. before 2018).\n\n* awardDate - Date award was given.\n* awardSeason - Season award was from.\n* awardId\n* awardName\n* playerId - Unique identifier for a player.\n* playerName\n* awardPlayerTeamId","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 3. Data Merge","metadata":{}},{"cell_type":"markdown","source":"For the time being,  this is a copy of starter https://www.kaggle.com/ryanholbrook/getting-started-with-mlb-player-digital-engagement. It will take some time.","metadata":{}},{"cell_type":"code","source":"for name in df_names:\n    globals()[name] = pd.read_csv(os.path.join(path,name)+ \".csv\")","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:18:48.264177Z","iopub.execute_input":"2021-06-11T07:18:48.264562Z","iopub.status.idle":"2021-06-11T07:18:48.318178Z","shell.execute_reply.started":"2021-06-11T07:18:48.264514Z","shell.execute_reply":"2021-06-11T07:18:48.317117Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#### Unnest various nested data within training (daily) data ####\ndaily_data_unnested_dfs = pd.DataFrame(data = {\n  'dfName': training.drop('date', axis = 1).columns.values.tolist()\n  })\n\ndaily_data_unnested_dfs['df'] = [pd.DataFrame() for row in \n  daily_data_unnested_dfs.iterrows()]\n\nfor df_index, df_row in daily_data_unnested_dfs.iterrows():\n    nestedTableName = str(df_row['dfName'])\n    \n    date_nested_table = training[['date', nestedTableName]]\n    \n    date_nested_table = (date_nested_table[\n      ~pd.isna(date_nested_table[nestedTableName])\n      ].\n      reset_index(drop = True)\n      )\n    \n    daily_dfs_collection = []\n    \n    for date_index, date_row in date_nested_table.iterrows():\n        daily_df = unpack_json(date_row[nestedTableName])\n        \n        daily_df['dailyDataDate'] = date_row['date']\n        \n        daily_dfs_collection = daily_dfs_collection + [daily_df]\n\n    unnested_table = pd.concat(daily_dfs_collection,\n      ignore_index = True).set_index('dailyDataDate').reset_index()\n\n    # Creates 1 pandas df per unnested df from daily data read in, with same name\n    globals()[df_row['dfName']] = unnested_table    \n    \n    daily_data_unnested_dfs['df'][df_index] = unnested_table\n\ndel training\ngc.collect()\n\n\n\n#### Get some information on each date in daily data (using season dates of interest) ####\ndates = pd.DataFrame(data = \n  {'dailyDataDate': nextDayPlayerEngagement['dailyDataDate'].unique()})\n\ndates['date'] = pd.to_datetime(dates['dailyDataDate'].astype(str))\n\ndates['year'] = dates['date'].dt.year\ndates['month'] = dates['date'].dt.month\n\ndates_with_info = pd.merge(\n  dates,\n  seasons,\n  left_on = 'year',\n  right_on = 'seasonId'\n  )\n\ndates_with_info['inSeason'] = (\n  dates_with_info['date'].between(\n    dates_with_info['regularSeasonStartDate'],\n    dates_with_info['postSeasonEndDate'],\n    inclusive = True\n    )\n  )\n\ndates_with_info['seasonPart'] = np.select(\n  [\n    dates_with_info['date'] < dates_with_info['preSeasonStartDate'], \n    dates_with_info['date'] < dates_with_info['regularSeasonStartDate'],\n    dates_with_info['date'] <= dates_with_info['lastDate1stHalf'],\n    dates_with_info['date'] < dates_with_info['firstDate2ndHalf'],\n    dates_with_info['date'] <= dates_with_info['regularSeasonEndDate'],\n    dates_with_info['date'] < dates_with_info['postSeasonStartDate'],\n    dates_with_info['date'] <= dates_with_info['postSeasonEndDate'],\n    dates_with_info['date'] > dates_with_info['postSeasonEndDate']\n  ], \n  [\n    'Offseason',\n    'Preseason',\n    'Reg Season 1st Half',\n    'All-Star Break',\n    'Reg Season 2nd Half',\n    'Between Reg and Postseason',\n    'Postseason',\n    'Offseason'\n  ], \n  default = np.nan\n  )\n\n#### Add some pitching stats/pieces of info to player game level stats ####\n\nplayer_game_stats = (playerBoxScores.copy().\n  # Change team Id/name to reflect these come from player game, not roster\n  rename(columns = {'teamId': 'gameTeamId', 'teamName': 'gameTeamName'})\n  )\n\n# Adds in field for innings pitched as fraction (better for aggregation)\nplayer_game_stats['inningsPitchedAsFrac'] = np.where(\n  pd.isna(player_game_stats['inningsPitched']),\n  np.nan,\n  np.floor(player_game_stats['inningsPitched']) +\n    (player_game_stats['inningsPitched'] -\n      np.floor(player_game_stats['inningsPitched'])) * 10/3\n  )\n\n# Add in Tom Tango pitching game score (https://www.mlb.com/glossary/advanced-stats/game-score)\nplayer_game_stats['pitchingGameScore'] = (40\n#     + 2 * player_game_stats['outs']\n    + 1 * player_game_stats['strikeOutsPitching']\n    - 2 * player_game_stats['baseOnBallsPitching']\n    - 2 * player_game_stats['hitsPitching']\n    - 3 * player_game_stats['runsPitching']\n    - 6 * player_game_stats['homeRunsPitching']\n    )\n\n# Add in criteria for no-hitter by pitcher (individual, not multiple pitchers)\nplayer_game_stats['noHitter'] = np.where(\n  (player_game_stats['gamesStartedPitching'] == 1) &\n  (player_game_stats['inningsPitched'] >= 9) &\n  (player_game_stats['hitsPitching'] == 0),\n  1, 0\n  )\n\nplayer_date_stats_agg = pd.merge(\n  (player_game_stats.\n    groupby(['dailyDataDate', 'playerId'], as_index = False).\n    # Some aggregations that are not simple sums\n    agg(\n      numGames = ('gamePk', 'nunique'),\n      # Should be 1 team per player per day, but adding here for 1 exception:\n      # playerId 518617 (Jake Diekman) had 2 games for different teams marked\n      # as played on 5/19/19, due to resumption of game after he was traded\n      numTeams = ('gameTeamId', 'nunique'),\n      # Should be only 1 team for almost all player-dates, taking min to simplify\n      gameTeamId = ('gameTeamId', 'min')\n      )\n    ),\n  # Merge with a bunch of player stats that can be summed at date/player level\n  (player_game_stats.\n    groupby(['dailyDataDate', 'playerId'], as_index = False)\n    [['runsScored', 'homeRuns', 'strikeOuts', 'baseOnBalls', 'hits',\n      'hitByPitch', 'atBats', 'caughtStealing', 'stolenBases',\n      'groundIntoDoublePlay', 'groundIntoTriplePlay', 'plateAppearances',\n      'totalBases', 'rbi', 'leftOnBase', 'sacBunts', 'sacFlies',\n      'gamesStartedPitching', 'runsPitching', 'homeRunsPitching', \n      'strikeOutsPitching', 'baseOnBallsPitching', 'hitsPitching',\n      'inningsPitchedAsFrac', 'earnedRuns', \n      'battersFaced','saves', 'blownSaves', 'pitchingGameScore', \n      'noHitter'\n      ]].\n    sum()\n    ),\n  on = ['dailyDataDate', 'playerId'],\n  how = 'inner'\n  )\n\n#### Turn games table into 1 row per team-game, then merge with team box scores ####\n# Filter to regular or Postseason games w/ valid scores for this part\ngames_for_stats = games[\n  np.isin(games['gameType'], ['R', 'F', 'D', 'L', 'W', 'C', 'P']) &\n  ~pd.isna(games['homeScore']) &\n  ~pd.isna(games['awayScore'])\n  ]\n\n# Get games table from home team perspective\ngames_home_perspective = games_for_stats.copy()\n\n# Change column names so that \"team\" is \"home\", \"opp\" is \"away\"\ngames_home_perspective.columns = [\n  col_value.replace('home', 'team').replace('away', 'opp') for \n    col_value in games_home_perspective.columns.values]\n\ngames_home_perspective['isHomeTeam'] = 1\n\n# Get games table from away team perspective\ngames_away_perspective = games_for_stats.copy()\n\n# Change column names so that \"opp\" is \"home\", \"team\" is \"away\"\ngames_away_perspective.columns = [\n  col_value.replace('home', 'opp').replace('away', 'team') for \n    col_value in games_away_perspective.columns.values]\n\ngames_away_perspective['isHomeTeam'] = 0\n\n# Put together games from home/away perspective to get df w/ 1 row per team game\nteam_games = (pd.concat([\n  games_home_perspective,\n  games_away_perspective\n  ],\n  ignore_index = True)\n  )\n\n# Copy over team box scores data to modify\nteam_game_stats = teamBoxScores.copy()\n\n# Change column names to reflect these are all \"team\" stats - helps \n# to differentiate from individual player stats if/when joining later\nteam_game_stats.columns = [\n  (col_value + 'Team') \n  if (col_value not in ['dailyDataDate', 'home', 'teamId', 'gamePk',\n    'gameDate', 'gameTimeUTC'])\n    else col_value\n  for col_value in team_game_stats.columns.values\n  ]\n\n# Merge games table with team game stats\nteam_games_with_stats = pd.merge(\n  team_games,\n  team_game_stats.\n    # Drop some fields that are already present in team_games table\n    drop(['home', 'gameDate', 'gameTimeUTC'], axis = 1),\n  on = ['dailyDataDate', 'gamePk', 'teamId'],\n  # Doing this as 'inner' join excludes spring training games, postponed games,\n  # etc. from original games table, but this may be fine for purposes here \n  how = 'inner'\n  )\n\nteam_date_stats_agg = (team_games_with_stats.\n  groupby(['dailyDataDate', 'teamId', 'gameType', 'oppId', 'oppName'], \n    as_index = False).\n  agg(\n    numGamesTeam = ('gamePk', 'nunique'),\n    winsTeam = ('teamWinner', 'sum'),\n    lossesTeam = ('oppWinner', 'sum'),\n    runsScoredTeam = ('teamScore', 'sum'),\n    runsAllowedTeam = ('oppScore', 'sum')\n    )\n   )\n\n# Prepare standings table for merge w/ player digital engagement data\n# Pick only certain fields of interest from standings for merge\nstandings_selected_fields = (standings[['dailyDataDate', 'teamId', \n  'streakCode', 'divisionRank', 'leagueRank', 'wildCardRank', 'pct'\n  ]].\n  rename(columns = {'pct': 'winPct'})\n  )\n\n# Change column names to reflect these are all \"team\" standings - helps \n# to differentiate from player-related fields if/when joining later\nstandings_selected_fields.columns = [\n  (col_value + 'Team') \n  if (col_value not in ['dailyDataDate', 'teamId'])\n    else col_value\n  for col_value in standings_selected_fields.columns.values\n  ]\n\nstandings_selected_fields['streakLengthTeam'] = (\n  standings_selected_fields['streakCodeTeam'].\n    str.replace('W', '').\n    str.replace('L', '').\n    astype(float)\n    )\n\n# Add fields to separate winning and losing streak from streak code\nstandings_selected_fields['winStreakTeam'] = np.where(\n  standings_selected_fields['streakCodeTeam'].str[0] == 'W',\n  standings_selected_fields['streakLengthTeam'],\n  np.nan\n  )\n\nstandings_selected_fields['lossStreakTeam'] = np.where(\n  standings_selected_fields['streakCodeTeam'].str[0] == 'L',\n  standings_selected_fields['streakLengthTeam'],\n  np.nan\n  )\n\nstandings_for_digital_engagement_merge = (pd.merge(\n  standings_selected_fields,\n  dates_with_info[['dailyDataDate', 'inSeason']],\n  on = ['dailyDataDate'],\n  how = 'left'\n  ).\n  # Limit down standings to only in season version\n  query(\"inSeason\").\n  # Drop fields no longer necessary (in derived values, etc.)\n  drop(['streakCodeTeam', 'streakLengthTeam', 'inSeason'], axis = 1).\n  reset_index(drop = True)\n  )\n\n#### Merge together various data frames to add date, player, roster, and team info ####\n# Copy over player engagement df to add various pieces to it\nplayer_engagement_with_info = nextDayPlayerEngagement.copy()\n\n# Take \"row mean\" across targets to add (helps with studying all 4 targets at once)\nplayer_engagement_with_info['targetAvg'] = np.mean(\n  player_engagement_with_info[['target1', 'target2', 'target3', 'target4']],\n  axis = 1)\n\n# Merge in date information\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  dates_with_info[['dailyDataDate', 'date', 'year', 'month', 'inSeason',\n    'seasonPart']],\n  on = ['dailyDataDate'],\n  how = 'left'\n  )\n\n# Merge in some player information\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  players[['playerId', 'playerName', 'DOB', 'mlbDebutDate', 'birthCity',\n    'birthStateProvince', 'birthCountry', 'primaryPositionName']],\n   on = ['playerId'],\n   how = 'left'\n   )\n\n# Merge in some player roster information by date\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  (rosters[['dailyDataDate', 'playerId', 'statusCode', 'status', 'teamId']].\n    rename(columns = {\n      'statusCode': 'rosterStatusCode',\n      'status': 'rosterStatus',\n      'teamId': 'rosterTeamId'\n      })\n    ),\n  on = ['dailyDataDate', 'playerId'],\n  how = 'left'\n  )\n    \n# Merge in team name from player's roster team\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  (teams[['id', 'teamName']].\n    rename(columns = {\n      'id': 'rosterTeamId',\n      'teamName': 'rosterTeamName'\n      })\n    ),\n  on = ['rosterTeamId'],\n  how = 'left'\n  )\n\n# Merge in some player game stats (previously aggregated) from that date\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  player_date_stats_agg,\n  on = ['dailyDataDate', 'playerId'],\n  how = 'left'\n  )\n\n# Merge in team name from player's game team\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  (teams[['id', 'teamName']].\n    rename(columns = {\n      'id': 'gameTeamId',\n      'teamName': 'gameTeamName'\n      })\n    ),\n  on = ['gameTeamId'],\n  how = 'left'\n  )\n\n# Merge in some team game stats/results (previously aggregated) from that date\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  team_date_stats_agg.rename(columns = {'teamId': 'gameTeamId'}),\n  on = ['dailyDataDate', 'gameTeamId'],\n  how = 'left'\n  )\n\n# Merge in player transactions of note on that date\n    \n# Merge in some pieces of team standings (previously filter/processed) from that date\nplayer_engagement_with_info = pd.merge(\n  player_engagement_with_info,\n  standings_for_digital_engagement_merge.\n    rename(columns = {'teamId': 'gameTeamId'}),\n  on = ['dailyDataDate', 'gameTeamId'],\n  how = 'left'\n  )\n\ndisplay(player_engagement_with_info)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:18:58.27995Z","iopub.execute_input":"2021-06-11T07:18:58.280329Z","iopub.status.idle":"2021-06-11T07:23:50.547931Z","shell.execute_reply.started":"2021-06-11T07:18:58.280295Z","shell.execute_reply":"2021-06-11T07:23:50.546935Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"player_engagement_with_info.info()","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:24:39.571245Z","iopub.execute_input":"2021-06-11T07:24:39.571797Z","iopub.status.idle":"2021-06-11T07:24:39.591815Z","shell.execute_reply.started":"2021-06-11T07:24:39.571762Z","shell.execute_reply":"2021-06-11T07:24:39.590375Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Save it as pickle so that you can refer to the output result.","metadata":{}},{"cell_type":"code","source":"player_engagement_with_info.to_pickle(\"player_engagement_with_info.pkl\")","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:24:41.269867Z","iopub.execute_input":"2021-06-11T07:24:41.270233Z","iopub.status.idle":"2021-06-11T07:24:49.063731Z","shell.execute_reply.started":"2021-06-11T07:24:41.270203Z","shell.execute_reply":"2021-06-11T07:24:49.062501Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Starter code makes a simple model with keras from here, so if you are interested, please have a look there.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## For verification of submit, calculate the median value of each target.(from ver 9, I repaired from mean to median in order to get high score)","metadata":{}},{"cell_type":"code","source":"t1_median = player_engagement_with_info[\"target1\"].median()\nt2_median = player_engagement_with_info[\"target2\"].median()\nt3_median = player_engagement_with_info[\"target3\"].median()\nt4_median = player_engagement_with_info[\"target4\"].median()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 4. submit format\nAs explained in https://www.kaggle.com/chumajin/eda-for-biginner of riiid competition, get 1 part of test data → predict the 1 part → submit the 1 part and repeat the sequence. This time, test data for one day → predict and submit, then get a test data for the next day → predict and submit, roop it.\n\n\n## ** ↓ make_env can only be executed once. ** **\n## ** If you make a mistake, you will have to restart the data and try again, so be careful! **","metadata":{}},{"cell_type":"markdown","source":"#### The final form looks like this (excerpt from the starter. I will do it in a little more detail for explanation.","metadata":{}},{"cell_type":"code","source":"\"\"\"\nif 'kaggle_secrets' in sys.modules:  # only run while on Kaggle\n    import mlb\n\n    env = mlb.make_env()\n    iter_test = env.iter_test()\n\n    for (test_df, sample_prediction_df) in iter_test:\n    \n        # Example: unpack a dataframe from a json column\n        today_games = unpack_json(test_df['games'].iloc[0])\n    \n        # Make your predictions for the next day's engagement\n        sample_prediction_df['target1'] = 100.00\n    \n        # Submit your predictions \n        env.predict(sample_prediction_df)\n\n\n\"\"\"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Here is a little explanation of the sample code of ↑","metadata":{}},{"cell_type":"markdown","source":"mlb import","metadata":{}},{"cell_type":"code","source":"if 'kaggle_secrets' in sys.modules:  # only run while on Kaggle\n    import mlb","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:28:01.223734Z","iopub.execute_input":"2021-06-11T07:28:01.224079Z","iopub.status.idle":"2021-06-11T07:28:01.229369Z","shell.execute_reply.started":"2021-06-11T07:28:01.22405Z","shell.execute_reply":"2021-06-11T07:28:01.228469Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Definition of env and iter_test (if you think it's a routine task)","metadata":{}},{"cell_type":"code","source":"env = mlb.make_env()\niter_test = env.iter_test()","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:28:02.402195Z","iopub.execute_input":"2021-06-11T07:28:02.402735Z","iopub.status.idle":"2021-06-11T07:28:02.425248Z","shell.execute_reply.started":"2021-06-11T07:28:02.402702Z","shell.execute_reply":"2021-06-11T07:28:02.424102Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Take a look at the contents of iter_test (for the time being, look at only one with break. If you remove break, an error will occur. The reason will be explained later)","metadata":{}},{"cell_type":"code","source":"for (test_df, sample_prediction_df) in iter_test:\n    display(test_df)\n    display(sample_prediction_df)\n    break","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:30:48.436222Z","iopub.execute_input":"2021-06-11T07:30:48.436716Z","iopub.status.idle":"2021-06-11T07:30:48.692008Z","shell.execute_reply.started":"2021-06-11T07:30:48.436684Z","shell.execute_reply":"2021-06-11T07:30:48.691327Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"You can see that one day's worth of test data and submission file come out\n\n\nHere, if you do not fill in the predicted value in the submission file and submit it, you will get an error that you will not be able to receive the test data of the next day (I get angry when I run it again as shown below)","metadata":{}},{"cell_type":"code","source":"for (test_df, sample_prediction_df) in iter_test:\n    display(test_df)\n    display(sample_prediction_df)\n    break","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:33:43.870281Z","iopub.execute_input":"2021-06-11T07:33:43.87076Z","iopub.status.idle":"2021-06-11T07:33:43.895452Z","shell.execute_reply.started":"2021-06-11T07:33:43.870725Z","shell.execute_reply":"2021-06-11T07:33:43.893643Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Therefore, you have to fill out the submission file once and submit it. Here, as a trial, I will put median value of each target.","metadata":{}},{"cell_type":"code","source":"sample_prediction_df[\"target1\"] = t1_median\nsample_prediction_df[\"target2\"] = t2_median\nsample_prediction_df[\"target3\"] = t3_median\nsample_prediction_df[\"target4\"] = t4_median\n\n\nsample_prediction_df","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:35:22.563892Z","iopub.execute_input":"2021-06-11T07:35:22.564318Z","iopub.status.idle":"2021-06-11T07:35:22.580707Z","shell.execute_reply.started":"2021-06-11T07:35:22.564285Z","shell.execute_reply":"2021-06-11T07:35:22.579774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"After entering the predicted value, submit once with the following code at this point","metadata":{}},{"cell_type":"code","source":"env.predict(sample_prediction_df)","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:36:05.180441Z","iopub.execute_input":"2021-06-11T07:36:05.180879Z","iopub.status.idle":"2021-06-11T07:36:05.185172Z","shell.execute_reply.started":"2021-06-11T07:36:05.180847Z","shell.execute_reply":"2021-06-11T07:36:05.184371Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Then you will be able to receive the data for the next day. (Even if you run the same code as before, you will not get angry with an error)","metadata":{}},{"cell_type":"code","source":"for (test_df, sample_prediction_df) in iter_test:\n    display(test_df)\n    display(sample_prediction_df)\n    break","metadata":{"execution":{"iopub.status.busy":"2021-06-11T07:36:28.005498Z","iopub.execute_input":"2021-06-11T07:36:28.005917Z","iopub.status.idle":"2021-06-11T07:36:28.195227Z","shell.execute_reply.started":"2021-06-11T07:36:28.00588Z","shell.execute_reply":"2021-06-11T07:36:28.194141Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"If you look at the starter code below again, you'll see that it's repeatedly submitted in the for statement.\n\nBasically, the contents of the following for statement are preprocessed by test df, predicted, rewritten by sample_prediction_df, and submitted by env.predict.\n\nIn the case of the riiid competition, the correct answer for the previous information was flowing, so I used it as data for the next prediction (maybe this time too ??).","metadata":{}},{"cell_type":"code","source":"\"\"\"\nif 'kaggle_secrets' in sys.modules:  # only run while on Kaggle\n    import mlb\n\n    env = mlb.make_env()\n    iter_test = env.iter_test()\n\n    for (test_df, sample_prediction_df) in iter_test:\n    \n        # Example: unpack a dataframe from a json column\n        today_games = unpack_json(test_df['games'].iloc[0])\n    \n        # Make your predictions for the next day's engagement\n        sample_prediction_df['target1'] = 100.00\n    \n        # Submit your predictions \n        env.predict(sample_prediction_df)\n\n\n\"\"\"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## This time I want to submit as it is, so after the second submission, I will turn it to the end with a for statement","metadata":{}},{"cell_type":"code","source":"# 2nd submission\n\nsample_prediction_df[\"target1\"] = t1_median\nsample_prediction_df[\"target2\"] = t2_median\nsample_prediction_df[\"target3\"] = t3_median\nsample_prediction_df[\"target4\"] = t4_median\nenv.predict(sample_prediction_df)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Until the end\n\nfor (test_df, sample_prediction_df) in iter_test:\n    \n        # Example: unpack a dataframe from a json column\n        #today_games = unpack_json(test_df['games'].iloc[0])\n    \n        # Make your predictions for the next day's engagement\n        sample_prediction_df[\"target1\"] = t1_median\n        sample_prediction_df[\"target2\"] = t2_median\n        sample_prediction_df[\"target3\"] = t3_median\n        sample_prediction_df[\"target4\"] = t4_median\n    \n        # Submit your predictions \n        env.predict(sample_prediction_df)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Reference)\n\n* This is a Code Competition\n* Submissions to this competition must be made through Notebooks. In order for the \"Submit\" button to be active after a commit, the following conditions must be met:\n\n* CPU Notebook <= 6 hours run-time\n* GPU Notebook <= 6 hours run-time\n* **Internet access disabled**\n* Freely & publicly available external data is allowed, including pre-trained models\n* Submissions must be made using the mlb python module","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Thank you for reading this far!\n# If you find it useful, I would be grateful if you could upvote / follow!","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}