{"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":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\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-06-26T12:49:59.511683Z","iopub.execute_input":"2022-06-26T12:49:59.512421Z","iopub.status.idle":"2022-06-26T12:49:59.549632Z","shell.execute_reply.started":"2022-06-26T12:49:59.512314Z","shell.execute_reply":"2022-06-26T12:49:59.548461Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<div style=\"background-color:#3197BB; text-align:center; vertical-align: middle; padding:10px 0; margin-top:4px\">\n<center><h1>Study of a default prediction from American Express data</h1></center>\n<h3>Description of columns values</h3></div>\n<h3>\nD_* = Delinquency variables</br>\nS_* = Spend variables</br>\nP_* = Payment variables</br>\nB_* = Balance variables</br>\nR_* = Risk variables</h3>\n","metadata":{"execution":{"iopub.status.busy":"2022-06-23T14:15:56.568236Z","iopub.execute_input":"2022-06-23T14:15:56.568738Z","iopub.status.idle":"2022-06-23T14:15:56.585876Z","shell.execute_reply.started":"2022-06-23T14:15:56.568695Z","shell.execute_reply":"2022-06-23T14:15:56.584118Z"}}},{"cell_type":"markdown","source":"## Import Library","metadata":{}},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd \n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.pipeline import make_pipeline\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.linear_model import SGDClassifier\nimport seaborn as sns\nfrom sklearn.compose import make_column_transformer\n\n\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import OneHotEncoder\n\nfrom sklearn.model_selection import train_test_split\n\nfrom sklearn.metrics import r2_score, classification_report, confusion_matrix, accuracy_score, roc_auc_score, roc_curve, precision_recall_curve, average_precision_score\n\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import roc_auc_score\n\n\nimport warnings\nwarnings.simplefilter('ignore')\nimport gc\nimport subprocess\n","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:49:59.551744Z","iopub.execute_input":"2022-06-26T12:49:59.552427Z","iopub.status.idle":"2022-06-26T12:50:00.991229Z","shell.execute_reply.started":"2022-06-26T12:49:59.552389Z","shell.execute_reply":"2022-06-26T12:50:00.990171Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data= pd.read_parquet(\"../input/amex-parquet/train_data.parquet\")","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:50:00.997714Z","iopub.execute_input":"2022-06-26T12:50:01.000685Z","iopub.status.idle":"2022-06-26T12:50:39.078243Z","shell.execute_reply.started":"2022-06-26T12:50:01.000639Z","shell.execute_reply":"2022-06-26T12:50:39.077216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Getting Data and reduce memory usage","metadata":{}},{"cell_type":"code","source":"def reduce_mem_usage(df):\n    \"\"\" iterate through all the columns of a dataframe and modify the data type\n        to reduce memory usage.        \n    \"\"\"\n    start_mem = df.memory_usage().sum() / 1024**2\n    print('Memory usage of dataframe is {:.2f} MB'.format(start_mem))\n    \n    for col in df.columns:\n        col_type = df[col].dtype\n        \n        if col_type != object:\n            c_min = df[col].min()\n            c_max = df[col].max()\n            if str(col_type)[:3] == 'int':\n                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n                    df[col] = df[col].astype(np.int8)\n                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n                    df[col] = df[col].astype(np.int16)\n                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n                    df[col] = df[col].astype(np.int32)\n                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:\n                    df[col] = df[col].astype(np.int64)  \n            else:\n                if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:\n                    df[col] = df[col].astype(np.float16)\n                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n                    df[col] = df[col].astype(np.float32)\n                else:\n                    df[col] = df[col].astype(np.float64)\n        else:\n            df[col] = df[col].astype('category')\n\n    end_mem = df.memory_usage().sum() / 1024**2\n    print('Memory usage after optimization is: {:.2f} MB'.format(end_mem))\n    print('Decreased by {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem))\n    \n    return df\n\n","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:50:39.079816Z","iopub.execute_input":"2022-06-26T12:50:39.080195Z","iopub.status.idle":"2022-06-26T12:50:39.094828Z","shell.execute_reply.started":"2022-06-26T12:50:39.080155Z","shell.execute_reply":"2022-06-26T12:50:39.093615Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data= reduce_mem_usage(train_data)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:50:39.098348Z","iopub.execute_input":"2022-06-26T12:50:39.099016Z","iopub.status.idle":"2022-06-26T12:53:23.111679Z","shell.execute_reply.started":"2022-06-26T12:50:39.098978Z","shell.execute_reply":"2022-06-26T12:53:23.110542Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:53:23.113742Z","iopub.execute_input":"2022-06-26T12:53:23.114472Z","iopub.status.idle":"2022-06-26T12:53:23.245574Z","shell.execute_reply.started":"2022-06-26T12:53:23.114432Z","shell.execute_reply":"2022-06-26T12:53:23.243845Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.info()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:53:23.248081Z","iopub.execute_input":"2022-06-26T12:53:23.248903Z","iopub.status.idle":"2022-06-26T12:53:23.497532Z","shell.execute_reply.started":"2022-06-26T12:53:23.248861Z","shell.execute_reply":"2022-06-26T12:53:23.495243Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Manage column type and nan values","metadata":{}},{"cell_type":"code","source":"###############Some Change######################################\ntrain_data['B_31']=train_data['B_31'].astype('float16')\ntrain_data=train_data.rename(columns={'S_2':'Date'})\ntrain_data['Date']=pd.to_datetime(train_data['Date'])\ntrain_data['target']=train_data['target'].astype('category')","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:53:23.498880Z","iopub.execute_input":"2022-06-26T12:53:23.499271Z","iopub.status.idle":"2022-06-26T12:53:25.812336Z","shell.execute_reply.started":"2022-06-26T12:53:23.499239Z","shell.execute_reply":"2022-06-26T12:53:25.811082Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"##########################Manage null value##################################\n###########columns categorical##############\ncategorical_columns=['B_30', 'B_38', 'D_114', 'D_116', 'D_117', 'D_120', 'D_126', 'D_63', 'D_64', 'D_66', 'D_68']\ntrain_data[categorical_columns]=train_data[categorical_columns].astype('category')\nimp = SimpleImputer(missing_values=np.nan, strategy=\"most_frequent\")\nimp=imp.fit(train_data[categorical_columns])\ntrain_data[categorical_columns]=imp.transform(train_data[categorical_columns])\nprint('Categorical missing values done')\n","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:53:25.814836Z","iopub.execute_input":"2022-06-26T12:53:25.815538Z","iopub.status.idle":"2022-06-26T12:53:59.182933Z","shell.execute_reply.started":"2022-06-26T12:53:25.815495Z","shell.execute_reply":"2022-06-26T12:53:59.181001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:53:59.184555Z","iopub.execute_input":"2022-06-26T12:53:59.184942Z","iopub.status.idle":"2022-06-26T12:53:59.301059Z","shell.execute_reply.started":"2022-06-26T12:53:59.184903Z","shell.execute_reply":"2022-06-26T12:53:59.299717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"numeric=['float16']\nnumerical_columns=train_data.select_dtypes(include=numeric).columns.tolist()\nfor col in train_data[numerical_columns]:\n    train_data[col]=train_data[col].fillna(0)\nprint('numerical values missing done')","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:53:59.306783Z","iopub.execute_input":"2022-06-26T12:53:59.307701Z","iopub.status.idle":"2022-06-26T12:54:13.195053Z","shell.execute_reply.started":"2022-06-26T12:53:59.307658Z","shell.execute_reply":"2022-06-26T12:54:13.193961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:13.196450Z","iopub.execute_input":"2022-06-26T12:54:13.198071Z","iopub.status.idle":"2022-06-26T12:54:13.310666Z","shell.execute_reply.started":"2022-06-26T12:54:13.198028Z","shell.execute_reply":"2022-06-26T12:54:13.309411Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Some other few changes","metadata":{}},{"cell_type":"code","source":"#########################################################################################\n###########group by and sort date values#################################################\ntrain_data=train_data.groupby(['customer_ID']).nth(-1).reset_index(drop=True)\ntrain_data=train_data.sort_values(by='Date', ascending=True)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:13.312370Z","iopub.execute_input":"2022-06-26T12:54:13.313329Z","iopub.status.idle":"2022-06-26T12:54:21.310389Z","shell.execute_reply.started":"2022-06-26T12:54:13.313299Z","shell.execute_reply":"2022-06-26T12:54:21.309334Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:21.312068Z","iopub.execute_input":"2022-06-26T12:54:21.312442Z","iopub.status.idle":"2022-06-26T12:54:21.348513Z","shell.execute_reply.started":"2022-06-26T12:54:21.312404Z","shell.execute_reply":"2022-06-26T12:54:21.347487Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:21.350364Z","iopub.execute_input":"2022-06-26T12:54:21.350721Z","iopub.status.idle":"2022-06-26T12:54:21.465884Z","shell.execute_reply.started":"2022-06-26T12:54:21.350685Z","shell.execute_reply":"2022-06-26T12:54:21.464810Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for col in train_data[categorical_columns]:\n    print(col, \" : \" , train_data[col].unique())","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:21.467507Z","iopub.execute_input":"2022-06-26T12:54:21.469747Z","iopub.status.idle":"2022-06-26T12:54:22.727963Z","shell.execute_reply.started":"2022-06-26T12:54:21.469716Z","shell.execute_reply":"2022-06-26T12:54:22.726848Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## About the target","metadata":{}},{"cell_type":"code","source":"##############################About the target####################################\n\nval_target=train_data['target'].value_counts()\nprint(\"target distribution: \\n\", val_target)\nratio_target=val_target/len(train_data['target'])\nprint(f\"Rate of non default values:  {round(ratio_target[0],2)}\\n Rate of default values: {round(ratio_target[1],2)}\")","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:22.729377Z","iopub.execute_input":"2022-06-26T12:54:22.730403Z","iopub.status.idle":"2022-06-26T12:54:22.742609Z","shell.execute_reply.started":"2022-06-26T12:54:22.730363Z","shell.execute_reply":"2022-06-26T12:54:22.741321Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list_value=[False,True]\nplt.figure(figsize=(7,7))\ncount_df=train_data['target'].value_counts()\ncount_df.plot(kind='pie', subplots=True, labels=list_value, figsize=(12, 12),autopct='%1.1f%%', cmap=\"Set2\", fontsize=14, legend=False)\nplt.title(\"Target values\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:22.744698Z","iopub.execute_input":"2022-06-26T12:54:22.745471Z","iopub.status.idle":"2022-06-26T12:54:22.937114Z","shell.execute_reply.started":"2022-06-26T12:54:22.745430Z","shell.execute_reply":"2022-06-26T12:54:22.935847Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## View some performances of the data","metadata":{}},{"cell_type":"code","source":"#############################################################################\n\ntrain_data=train_data.reset_index()\ntrain_data=train_data.drop(columns='Date')\nX=train_data[numerical_columns + categorical_columns]\ny=train_data['target']","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:22.942983Z","iopub.execute_input":"2022-06-26T12:54:22.945808Z","iopub.status.idle":"2022-06-26T12:54:23.634719Z","shell.execute_reply.started":"2022-06-26T12:54:22.945730Z","shell.execute_reply":"2022-06-26T12:54:23.633641Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n##################################Use pipeline for preprocessing###########################################################\nX_train, X_test, y_train, y_test = train_test_split(X, y,  stratify=y, train_size=0.7, test_size=0.3, random_state=0)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:23.636176Z","iopub.execute_input":"2022-06-26T12:54:23.636787Z","iopub.status.idle":"2022-06-26T12:54:24.875450Z","shell.execute_reply.started":"2022-06-26T12:54:23.636746Z","shell.execute_reply":"2022-06-26T12:54:24.874305Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.compose import make_column_selector\nnumerical_features=make_column_selector(dtype_include=numerical_columns)\ncategorical_features=make_column_selector(dtype_include=categorical_columns)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:24.877052Z","iopub.execute_input":"2022-06-26T12:54:24.877441Z","iopub.status.idle":"2022-06-26T12:54:24.884372Z","shell.execute_reply.started":"2022-06-26T12:54:24.877403Z","shell.execute_reply":"2022-06-26T12:54:24.883233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nnumerical_pipeline=make_pipeline(StandardScaler())\ncategorical_pipeline=make_pipeline(OneHotEncoder())\n\npreprocessor=make_column_transformer((numerical_pipeline,numerical_columns),\n                       (categorical_pipeline, categorical_columns))\nmodel=make_pipeline(preprocessor, SGDClassifier(max_iter=1000,tol=1e-3))\nmodel.fit(X_train,y_train)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:24.886435Z","iopub.execute_input":"2022-06-26T12:54:24.886886Z","iopub.status.idle":"2022-06-26T12:54:39.810780Z","shell.execute_reply.started":"2022-06-26T12:54:24.886846Z","shell.execute_reply":"2022-06-26T12:54:39.809647Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.score(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:39.812476Z","iopub.execute_input":"2022-06-26T12:54:39.813225Z","iopub.status.idle":"2022-06-26T12:54:44.414559Z","shell.execute_reply.started":"2022-06-26T12:54:39.813181Z","shell.execute_reply":"2022-06-26T12:54:44.413441Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import plot_confusion_matrix\nplot_confusion_matrix(model, X_test, y_test)  ","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:44.415969Z","iopub.execute_input":"2022-06-26T12:54:44.416450Z","iopub.status.idle":"2022-06-26T12:54:46.564049Z","shell.execute_reply.started":"2022-06-26T12:54:44.416412Z","shell.execute_reply":"2022-06-26T12:54:46.563042Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_predicted = model.predict(X_test)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:46.565940Z","iopub.execute_input":"2022-06-26T12:54:46.566675Z","iopub.status.idle":"2022-06-26T12:54:48.350258Z","shell.execute_reply.started":"2022-06-26T12:54:46.566631Z","shell.execute_reply":"2022-06-26T12:54:48.348983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('Classification report:\\n', classification_report(y_test, y_predicted))\nconf_mat = confusion_matrix(y_true=y_test, y_pred=y_predicted)\nprint('Confusion matrix:\\n', conf_mat)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:48.352211Z","iopub.execute_input":"2022-06-26T12:54:48.353007Z","iopub.status.idle":"2022-06-26T12:54:48.692956Z","shell.execute_reply.started":"2022-06-26T12:54:48.352962Z","shell.execute_reply":"2022-06-26T12:54:48.690868Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X=train_data[categorical_columns + numerical_columns].drop(columns=['D_63', 'D_64'])\ny=train_data['target']","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:48.694483Z","iopub.execute_input":"2022-06-26T12:54:48.694840Z","iopub.status.idle":"2022-06-26T12:54:49.305732Z","shell.execute_reply.started":"2022-06-26T12:54:48.694787Z","shell.execute_reply":"2022-06-26T12:54:49.304609Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y,  stratify=y, train_size=0.7, test_size=0.3, random_state=0)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:49.307377Z","iopub.execute_input":"2022-06-26T12:54:49.308364Z","iopub.status.idle":"2022-06-26T12:54:50.889893Z","shell.execute_reply.started":"2022-06-26T12:54:49.308320Z","shell.execute_reply":"2022-06-26T12:54:50.888491Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## The ROC curve","metadata":{}},{"cell_type":"code","source":"ns_probs = [0 for _ in range(len(y_test))]\n\nmodel = LogisticRegression(solver='lbfgs')\nmodel.fit(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:54:50.896223Z","iopub.execute_input":"2022-06-26T12:54:50.896570Z","iopub.status.idle":"2022-06-26T12:55:13.137505Z","shell.execute_reply.started":"2022-06-26T12:54:50.896539Z","shell.execute_reply":"2022-06-26T12:55:13.136123Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lr_probs = model.predict_proba(X_test)\nlr_probs = lr_probs[:, 1]\nns_auc = roc_auc_score(y_test, ns_probs)\nlr_auc = roc_auc_score(y_test, lr_probs)\nprint('Fault: ROC AUC=%.3f' % (ns_auc))\nprint('True: ROC AUC=%.3f' % (lr_auc))","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:55:13.139113Z","iopub.execute_input":"2022-06-26T12:55:13.139529Z","iopub.status.idle":"2022-06-26T12:55:17.019446Z","shell.execute_reply.started":"2022-06-26T12:55:13.139488Z","shell.execute_reply":"2022-06-26T12:55:17.015644Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ns_fpr, ns_tpr, _ = roc_curve(y_test, ns_probs)\nlr_fpr, lr_tpr, _ = roc_curve(y_test, lr_probs)\nplt.plot(ns_fpr, ns_tpr, linestyle='--', label='Fault')\nplt.plot(lr_fpr, lr_tpr, marker='.', label='True')\n# axis labels\nplt.xlabel('False Positive Rate')\nplt.ylabel('True Positive Rate')\nplt.legend()\n# show the plot\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:55:17.021548Z","iopub.execute_input":"2022-06-26T12:55:17.022241Z","iopub.status.idle":"2022-06-26T12:55:17.500552Z","shell.execute_reply.started":"2022-06-26T12:55:17.022195Z","shell.execute_reply":"2022-06-26T12:55:17.499497Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"##############################################################################","metadata":{"execution":{"iopub.status.busy":"2022-06-26T12:55:17.502014Z","iopub.execute_input":"2022-06-26T12:55:17.502661Z","iopub.status.idle":"2022-06-26T12:55:17.508021Z","shell.execute_reply.started":"2022-06-26T12:55:17.502619Z","shell.execute_reply":"2022-06-26T12:55:17.506870Z"},"trusted":true},"execution_count":null,"outputs":[]}]}