{"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":"code","source":"'''Hi everybody, I'm glad to submit my first EDA in Kaggle,first of all I would like to explain\n   how will be my work flow:\n   Part 1:EDA\n   1- Analysis of the characteristics\n   2- Find any relationship or trend between the data\n   Part 2: Data Cleaning\n   1- Add some features\n   2- Eliminate redundant features\n   3- Convert features appropriately to get results\n   \n   ''' \n\n\nimport numpy as np # linear algebra\nimport pandas as pd # to get dataframes, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt #to get graphs\nimport seaborn as sns #to get other graphs as heat map\nimport warnings #to eliminate warnings in code\nwarnings.filterwarnings('ignore')\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-11T17:03:23.496977Z","iopub.execute_input":"2022-07-11T17:03:23.497382Z","iopub.status.idle":"2022-07-11T17:03:23.507401Z","shell.execute_reply.started":"2022-07-11T17:03:23.497350Z","shell.execute_reply":"2022-07-11T17:03:23.506203Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = pd.read_csv(\"/kaggle/input/titanic/train.csv\")\ntrain_data.head()\n\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.509141Z","iopub.execute_input":"2022-07-11T17:03:23.509694Z","iopub.status.idle":"2022-07-11T17:03:23.539569Z","shell.execute_reply.started":"2022-07-11T17:03:23.509661Z","shell.execute_reply":"2022-07-11T17:03:23.538502Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"column goal: Survived\n\nget quantity of Nan values in dataframe\n","metadata":{}},{"cell_type":"code","source":"train_data.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.541926Z","iopub.execute_input":"2022-07-11T17:03:23.542732Z","iopub.status.idle":"2022-07-11T17:03:23.554507Z","shell.execute_reply.started":"2022-07-11T17:03:23.542676Z","shell.execute_reply":"2022-07-11T17:03:23.553398Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#For better comprehension I'll replace numerical variables into categorical\ntrain_data['Survived'].replace([0,1],['Dead','Alive'],inplace=True)\ntrain_data['Survived'].head()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.556069Z","iopub.execute_input":"2022-07-11T17:03:23.556596Z","iopub.status.idle":"2022-07-11T17:03:23.570722Z","shell.execute_reply.started":"2022-07-11T17:03:23.556552Z","shell.execute_reply":"2022-07-11T17:03:23.569423Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f, ax = plt.subplots(1,2,figsize =(20,10))\n\ntrain_data['Survived'].value_counts().plot.pie(autopct='%1.1f%%',ax=ax[0],explode=[0,0.1],shadow=True)\nax[0].set_title('Survivors')\nax[0].set_ylabel('')\n\nsns.countplot('Sex',hue='Survived',data=train_data,ax=ax[1])\nax[1].set_title('Survivors by Sex')\nax[1].set_ylabel('Number of Persons')\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.574751Z","iopub.execute_input":"2022-07-11T17:03:23.575470Z","iopub.status.idle":"2022-07-11T17:03:23.850199Z","shell.execute_reply.started":"2022-07-11T17:03:23.575427Z","shell.execute_reply":"2022-07-11T17:03:23.849015Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Undo the changes in variables at column 'Survived' for better analysis\ntrain_data['Survived'].replace(['Dead','Alive'],[0,1],inplace=True)\ntrain_data['Survived'].head()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.851711Z","iopub.execute_input":"2022-07-11T17:03:23.852305Z","iopub.status.idle":"2022-07-11T17:03:23.862365Z","shell.execute_reply.started":"2022-07-11T17:03:23.852268Z","shell.execute_reply":"2022-07-11T17:03:23.861291Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Characteristics Analysis**\n\nCategorical features\n\nA categorical variable is one that has 2 or more categories and each value in that characteristic can be classified by them. For example, gender is a categorical variable with two categories\n(male and female). We cannot give any order to these variables and they are also known as nominal variables.\n* **Categorical features in train_data:'Sex'**\n\nOrdinary features\n\nAn ordinal variable is similar to a categorical one with the difference that it can have a relative order between the values. For example if we have a characteristic like 'Height' with variables 'High','Medium','Low' then 'Height' is a variable ordinals.\n* **Ordinal features in train_data:'Pclass'**\n\nContinuous features\n\nA continuous variable is one that can take values ​​between 2 points or between the minimum and maximum values ​​of the characteristics column.\n* **Continuous features in train_data:'Fare'**\n\n","metadata":{}},{"cell_type":"markdown","source":"****","metadata":{}},{"cell_type":"markdown","source":"### **Categorical features in train_data:'Sex'**","metadata":{}},{"cell_type":"code","source":"train_data['PassengerId'].count()#all passengers in data","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.863848Z","iopub.execute_input":"2022-07-11T17:03:23.864180Z","iopub.status.idle":"2022-07-11T17:03:23.877343Z","shell.execute_reply.started":"2022-07-11T17:03:23.864150Z","shell.execute_reply":"2022-07-11T17:03:23.876312Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data['Survived'].value_counts()#0=dead 1=survived","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.881267Z","iopub.execute_input":"2022-07-11T17:03:23.881845Z","iopub.status.idle":"2022-07-11T17:03:23.889807Z","shell.execute_reply.started":"2022-07-11T17:03:23.881812Z","shell.execute_reply":"2022-07-11T17:03:23.889089Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.groupby(['Sex','Survived'])['Survived'].count()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.890699Z","iopub.execute_input":"2022-07-11T17:03:23.890997Z","iopub.status.idle":"2022-07-11T17:03:23.904018Z","shell.execute_reply.started":"2022-07-11T17:03:23.890969Z","shell.execute_reply":"2022-07-11T17:03:23.902949Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = pd.read_csv(\"/kaggle/input/titanic/test.csv\")\ntest_data.head()\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.909183Z","iopub.execute_input":"2022-07-11T17:03:23.909624Z","iopub.status.idle":"2022-07-11T17:03:23.935143Z","shell.execute_reply.started":"2022-07-11T17:03:23.909592Z","shell.execute_reply":"2022-07-11T17:03:23.934391Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"women = train_data.loc[train_data.Sex == 'female'][\"Survived\"]\nrate_women = sum(women)/len(women)\nprint(\"percentage of women who survived: \",rate_women * 100,\" %\")","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.938341Z","iopub.execute_input":"2022-07-11T17:03:23.938788Z","iopub.status.idle":"2022-07-11T17:03:23.947584Z","shell.execute_reply.started":"2022-07-11T17:03:23.938744Z","shell.execute_reply":"2022-07-11T17:03:23.946323Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"men = train_data.loc[train_data.Sex == 'male'][\"Survived\"]\nrate_men = sum(men)/len(men)\nprint(\"percentage of men who survived: \",rate_men * 100,\" %\")","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.949851Z","iopub.execute_input":"2022-07-11T17:03:23.950699Z","iopub.status.idle":"2022-07-11T17:03:23.959159Z","shell.execute_reply.started":"2022-07-11T17:03:23.950646Z","shell.execute_reply":"2022-07-11T17:03:23.958127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#graph about percentage of women and men who survived\ntrain_data[['Sex','Survived']].groupby(['Sex']).mean().plot.bar()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:23.960201Z","iopub.execute_input":"2022-07-11T17:03:23.960813Z","iopub.status.idle":"2022-07-11T17:03:24.093239Z","shell.execute_reply.started":"2022-07-11T17:03:23.960785Z","shell.execute_reply":"2022-07-11T17:03:24.092084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### **Ordinal features in train_data:'Pclass'**","metadata":{}},{"cell_type":"code","source":"pd.crosstab(train_data['Pclass'],train_data['Survived'],margins=True).style.background_gradient(cmap='YlOrRd')","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:24.094901Z","iopub.execute_input":"2022-07-11T17:03:24.095762Z","iopub.status.idle":"2022-07-11T17:03:24.145737Z","shell.execute_reply.started":"2022-07-11T17:03:24.095708Z","shell.execute_reply":"2022-07-11T17:03:24.144667Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f, ax = plt.subplots(1,2,figsize =(20,10))\ntrain_data['Pclass'].value_counts().plot.bar(ax=ax[0],color=['#ff1257','#f6f471','#c59161'])\nax[0].set_title('Quantity of passengers by class')\nax[0].set_ylabel('Quantity')\nax[0].set_xlabel('Class')\n\nsns.countplot('Pclass',hue='Survived',data=train_data,ax=ax[1])\nax[1].set_title('Survivors and deads by class')\nax[1].set_ylabel('Quantity')\nax[1].set_xlabel('Class')\nplt.show()\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:24.147515Z","iopub.execute_input":"2022-07-11T17:03:24.147965Z","iopub.status.idle":"2022-07-11T17:03:24.469302Z","shell.execute_reply.started":"2022-07-11T17:03:24.147924Z","shell.execute_reply":"2022-07-11T17:03:24.468532Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Analyzing the survival rate according sex and class","metadata":{}},{"cell_type":"code","source":"pd.crosstab([train_data['Sex'],train_data['Survived']],train_data['Pclass'],margins=True).style.background_gradient(cmap='YlOrRd')","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:24.470314Z","iopub.execute_input":"2022-07-11T17:03:24.470905Z","iopub.status.idle":"2022-07-11T17:03:24.520199Z","shell.execute_reply.started":"2022-07-11T17:03:24.470874Z","shell.execute_reply":"2022-07-11T17:03:24.519064Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.factorplot('Pclass','Survived',hue='Sex',data=train_data)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:24.521616Z","iopub.execute_input":"2022-07-11T17:03:24.521960Z","iopub.status.idle":"2022-07-11T17:03:25.058196Z","shell.execute_reply.started":"2022-07-11T17:03:24.521930Z","shell.execute_reply":"2022-07-11T17:03:25.057261Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The factorplot show that women in first class had a survival rate of more than 90% ","metadata":{}},{"cell_type":"markdown","source":"### **Continuous features in train_data:'Fare'**\n","metadata":{}},{"cell_type":"markdown","source":"Analyzing the fare column ","metadata":{}},{"cell_type":"code","source":"print('The most expensive fare was: ',train_data['Fare'].max())\nprint('The cheaper fare was: ',train_data['Fare'].min())","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:25.060197Z","iopub.execute_input":"2022-07-11T17:03:25.060519Z","iopub.status.idle":"2022-07-11T17:03:25.067707Z","shell.execute_reply.started":"2022-07-11T17:03:25.060484Z","shell.execute_reply":"2022-07-11T17:03:25.066480Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f, ax = plt.subplots(1,3,figsize =(18,8))\nsns.distplot(train_data[train_data['Pclass']==1]['Fare'],ax=ax[0])\nax[0].set_title('First Class fare')\nsns.distplot(train_data[train_data['Pclass']==2]['Fare'],ax=ax[1])\nax[1].set_title('Second Class fare')\nsns.distplot(train_data[train_data['Pclass']==3]['Fare'],ax=ax[2])\nax[2].set_title('Third Class fare')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:25.069127Z","iopub.execute_input":"2022-07-11T17:03:25.069889Z","iopub.status.idle":"2022-07-11T17:03:25.663133Z","shell.execute_reply.started":"2022-07-11T17:03:25.069842Z","shell.execute_reply":"2022-07-11T17:03:25.661950Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Data Cleaning**\n\n* To convert some continuous variables into ranges\n\n* To convert string values into numeric values\n\n* To eliminate unnecessary features\n\n* To correct null values \n\n\n","metadata":{}},{"cell_type":"markdown","source":"### **To convert some continuous variables into ranges**\n\n1. Troubles with the continuous variable 'Age', I'll normalize this feature.","metadata":{}},{"cell_type":"code","source":"#Binning or normalization\ntrain_data['Age_range'] = 0\ntrain_data.loc[train_data['Age'] <= 16,'Age_range'] = 0\ntrain_data.loc[(train_data['Age'] > 16) & (train_data['Age'] <= 32),'Age_range'] = 1\ntrain_data.loc[(train_data['Age'] > 32) & (train_data['Age'] <= 48),'Age_range'] = 2\ntrain_data.loc[(train_data['Age'] > 48) & (train_data['Age'] <= 64),'Age_range'] = 3\ntrain_data.loc[train_data['Age'] > 64,'Age_range'] = 4\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:25.664587Z","iopub.execute_input":"2022-07-11T17:03:25.665293Z","iopub.status.idle":"2022-07-11T17:03:25.692174Z","shell.execute_reply.started":"2022-07-11T17:03:25.665242Z","shell.execute_reply":"2022-07-11T17:03:25.691340Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Checking number of passenger for each range\ntrain_data['Age_range'].value_counts().to_frame().style.background_gradient(cmap='YlOrRd')","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:25.693197Z","iopub.execute_input":"2022-07-11T17:03:25.694004Z","iopub.status.idle":"2022-07-11T17:03:25.708848Z","shell.execute_reply.started":"2022-07-11T17:03:25.693971Z","shell.execute_reply":"2022-07-11T17:03:25.707873Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.factorplot('Age_range','Survived',data=train_data ,col='Pclass')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:25.710627Z","iopub.execute_input":"2022-07-11T17:03:25.711158Z","iopub.status.idle":"2022-07-11T17:03:26.629152Z","shell.execute_reply.started":"2022-07-11T17:03:25.711117Z","shell.execute_reply":"2022-07-11T17:03:26.628023Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The survival rate increase according age decrease, except in first class.  ","metadata":{}},{"cell_type":"markdown","source":"2. Troubles with continuous variable 'Fare'","metadata":{}},{"cell_type":"code","source":"train_data['Fare_range']= pd.qcut(train_data['Fare'],4)\ntrain_data.groupby(['Fare_range'])['Survived'].mean().to_frame().style.background_gradient(cmap='YlOrRd')\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:26.630497Z","iopub.execute_input":"2022-07-11T17:03:26.630829Z","iopub.status.idle":"2022-07-11T17:03:26.652203Z","shell.execute_reply.started":"2022-07-11T17:03:26.630798Z","shell.execute_reply":"2022-07-11T17:03:26.651250Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data['Category_Fare'] = 0\ntrain_data.loc[train_data['Fare'] <= 7.91,'Category_Fare'] = 0\ntrain_data.loc[(train_data['Fare'] > 7.91) & (train_data['Fare'] <= 14.454),'Category_Fare'] = 1\ntrain_data.loc[(train_data['Fare'] > 14.454) & (train_data['Fare'] <= 31),'Category_Fare'] = 2\ntrain_data.loc[(train_data['Fare'] > 31) & (train_data['Fare'] <= 512.329),'Category_Fare'] = 3\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:26.657728Z","iopub.execute_input":"2022-07-11T17:03:26.658113Z","iopub.status.idle":"2022-07-11T17:03:26.686784Z","shell.execute_reply.started":"2022-07-11T17:03:26.658070Z","shell.execute_reply":"2022-07-11T17:03:26.686011Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.factorplot('Category_Fare','Survived',data=train_data,hue='Sex')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:26.688231Z","iopub.execute_input":"2022-07-11T17:03:26.688841Z","iopub.status.idle":"2022-07-11T17:03:27.239949Z","shell.execute_reply.started":"2022-07-11T17:03:26.688804Z","shell.execute_reply":"2022-07-11T17:03:27.238876Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The survival increase according fare paid is higher, especially for women.","metadata":{}},{"cell_type":"markdown","source":"### **To convert string values into numeric values**","metadata":{}},{"cell_type":"code","source":"train_data['Sex'].replace(['male','female'],[0,1],inplace=True)\ntrain_data['Embarked'].replace(['S','C','Q'],[0,1,2],inplace=True)\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:27.241413Z","iopub.execute_input":"2022-07-11T17:03:27.242574Z","iopub.status.idle":"2022-07-11T17:03:27.272577Z","shell.execute_reply.started":"2022-07-11T17:03:27.242515Z","shell.execute_reply":"2022-07-11T17:03:27.271653Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### **To eliminate unnecessary features**\n\n* PassengerId : It cannot be classificated\n\n* Name :  It cannot be convert in categoric value\n\n* Age : I'm used column 'Age_range'\n\n* Ticket : It's a random string. It cannot be classificated\n\n* Fare : I'm used column 'Category_Fare'\n\n* Cabin : It has a lot of NaN values. It's useless feature\n\n* Fare_range : I'm used column 'Category_Fare'\n\n\n\n","metadata":{}},{"cell_type":"code","source":"train_data.drop(['PassengerId','Name','Age','Ticket','Fare','Cabin','Fare_range'],axis=1,inplace=True)\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:27.273774Z","iopub.execute_input":"2022-07-11T17:03:27.274169Z","iopub.status.idle":"2022-07-11T17:03:27.288717Z","shell.execute_reply.started":"2022-07-11T17:03:27.274141Z","shell.execute_reply":"2022-07-11T17:03:27.287705Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### **Null Values Treatment**\n\nBy this treatment I'll choose if remove,leave as it is or figure it out data","metadata":{}},{"cell_type":"code","source":"train_data.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:27.290636Z","iopub.execute_input":"2022-07-11T17:03:27.291432Z","iopub.status.idle":"2022-07-11T17:03:27.301498Z","shell.execute_reply.started":"2022-07-11T17:03:27.291388Z","shell.execute_reply":"2022-07-11T17:03:27.300261Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#There are few null values, I'll search where are they and evaluate to replace them\ntrain_data[train_data['Embarked'].isnull()]","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:27.305291Z","iopub.execute_input":"2022-07-11T17:03:27.305679Z","iopub.status.idle":"2022-07-11T17:03:27.318987Z","shell.execute_reply.started":"2022-07-11T17:03:27.305649Z","shell.execute_reply":"2022-07-11T17:03:27.317935Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f,ax = plt.subplots(1,1,figsize =(5,6))\nsns.countplot('Embarked', data=train_data,ax = ax )\nax.set_title('Number of passengers onboarding ')\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:27.320654Z","iopub.execute_input":"2022-07-11T17:03:27.321421Z","iopub.status.idle":"2022-07-11T17:03:27.688108Z","shell.execute_reply.started":"2022-07-11T17:03:27.321376Z","shell.execute_reply":"2022-07-11T17:03:27.684942Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Because the last graph indicates that most people embarked throughout door 0, I'll give this value to the null values\ntrain_data['Embarked'].fillna(0,inplace=True)\n#Replacing null values\ntrain_data.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-07-11T17:03:27.689758Z","iopub.execute_input":"2022-07-11T17:03:27.690402Z","iopub.status.idle":"2022-07-11T17:03:27.707770Z","shell.execute_reply.started":"2022-07-11T17:03:27.690355Z","shell.execute_reply":"2022-07-11T17:03:27.706651Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}