{"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":"# 序\n在学习ctr预估模型，包含DeepFM,DCN,xDeepFM等，通过比赛积累经验。欢迎follow及交流。\n","metadata":{}},{"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":"2023-03-22T07:42:46.372485Z","iopub.execute_input":"2023-03-22T07:42:46.375291Z","iopub.status.idle":"2023-03-22T07:42:46.415837Z","shell.execute_reply.started":"2023-03-22T07:42:46.375248Z","shell.execute_reply":"2023-03-22T07:42:46.414889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 下载包","metadata":{}},{"cell_type":"code","source":"import sys\nsys.executable\n!/opt/conda/bin/python3.7 -m pip install -U deepctr-torch -i  https://pypi.doubanio.com/simple/","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:42:46.421117Z","iopub.execute_input":"2023-03-22T07:42:46.423828Z","iopub.status.idle":"2023-03-22T07:43:12.050009Z","shell.execute_reply.started":"2023-03-22T07:42:46.423788Z","shell.execute_reply":"2023-03-22T07:43:12.048670Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%matplotlib inline\n%config InlineBackend.figure_format = 'svg'\n\nimport warnings\nimport gc\nimport time\nimport itertools\nwarnings.filterwarnings('ignore')\nimport numpy as np\nimport pandas as pd\nfrom catboost import CatBoostClassifier\nimport matplotlib.pyplot as plt\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.metrics import confusion_matrix, log_loss, roc_auc_score\nfrom matplotlib import pyplot as plt\nimport seaborn as sns\nimport gzip","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:43:12.051835Z","iopub.execute_input":"2023-03-22T07:43:12.052243Z","iopub.status.idle":"2023-03-22T07:43:13.309947Z","shell.execute_reply.started":"2023-03-22T07:43:12.052197Z","shell.execute_reply":"2023-03-22T07:43:13.308892Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch\nfrom deepctr_torch.models import DeepFM,DCN\nfrom deepctr_torch.inputs import SparseFeat, DenseFeat, get_feature_names","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:43:13.312899Z","iopub.execute_input":"2023-03-22T07:43:13.313263Z","iopub.status.idle":"2023-03-22T07:43:21.637745Z","shell.execute_reply.started":"2023-03-22T07:43:13.313226Z","shell.execute_reply":"2023-03-22T07:43:21.636539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(torch.__version__)","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:43:21.641808Z","iopub.execute_input":"2023-03-22T07:43:21.642295Z","iopub.status.idle":"2023-03-22T07:43:21.651131Z","shell.execute_reply.started":"2023-03-22T07:43:21.642265Z","shell.execute_reply":"2023-03-22T07:43:21.647056Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 读取数据\nchunksize = 10 ** 7\nnum_of_chunk = 0\ntrain = pd.DataFrame()\n\nfor chunk in pd.read_csv('/kaggle/input/avazu-ctr-prediction/train.gz',chunksize=chunksize):\n    num_of_chunk = num_of_chunk + 1\n    train = pd.concat([train,chunk.sample(frac=0.01)],axis = 0,ignore_index = True)\n    print(f'NUMBER {str(num_of_chunk)} is done.')","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:43:21.655077Z","iopub.execute_input":"2023-03-22T07:43:21.657660Z","iopub.status.idle":"2023-03-22T07:45:37.992216Z","shell.execute_reply.started":"2023-03-22T07:43:21.657623Z","shell.execute_reply":"2023-03-22T07:45:37.991005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# train.head().T\ntest_df = pd.read_csv(\"/kaggle/input/avazu-ctr-prediction/test.gz\", header=0, dtype=str)\n","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:37.993823Z","iopub.execute_input":"2023-03-22T07:45:37.994190Z","iopub.status.idle":"2023-03-22T07:45:55.602574Z","shell.execute_reply.started":"2023-03-22T07:45:37.994153Z","shell.execute_reply":"2023-03-22T07:45:55.601515Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df.shape,train.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:55.604054Z","iopub.execute_input":"2023-03-22T07:45:55.604411Z","iopub.status.idle":"2023-03-22T07:45:55.612508Z","shell.execute_reply.started":"2023-03-22T07:45:55.604374Z","shell.execute_reply":"2023-03-22T07:45:55.611398Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"set(train.columns.tolist())-set(test_df.columns)","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:55.614411Z","iopub.execute_input":"2023-03-22T07:45:55.615178Z","iopub.status.idle":"2023-03-22T07:45:55.627349Z","shell.execute_reply.started":"2023-03-22T07:45:55.615142Z","shell.execute_reply":"2023-03-22T07:45:55.626345Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df['click'] = -1\ntest_df['data_label'] = 'test'\ntrain['data_label'] = 'train'\n","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:55.632278Z","iopub.execute_input":"2023-03-22T07:45:55.632654Z","iopub.status.idle":"2023-03-22T07:45:55.668416Z","shell.execute_reply.started":"2023-03-22T07:45:55.632626Z","shell.execute_reply":"2023-03-22T07:45:55.667364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_test = pd.concat([test_df,train])","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:55.669788Z","iopub.execute_input":"2023-03-22T07:45:55.670621Z","iopub.status.idle":"2023-03-22T07:45:56.538592Z","shell.execute_reply.started":"2023-03-22T07:45:55.670582Z","shell.execute_reply":"2023-03-22T07:45:56.537066Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1 = train_test","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:56.540531Z","iopub.execute_input":"2023-03-22T07:45:56.541425Z","iopub.status.idle":"2023-03-22T07:45:56.548962Z","shell.execute_reply.started":"2023-03-22T07:45:56.541386Z","shell.execute_reply":"2023-03-22T07:45:56.547898Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1['hour'] = pd.to_datetime(data1['hour'], format = '%y%m%d%H')\ndata1.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:56.552457Z","iopub.execute_input":"2023-03-22T07:45:56.552780Z","iopub.status.idle":"2023-03-22T07:45:57.663225Z","shell.execute_reply.started":"2023-03-22T07:45:56.552749Z","shell.execute_reply":"2023-03-22T07:45:57.662072Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1['dt'] = data1['hour'].apply(lambda x:str(x)[:10])\n# device的ctr\ndevice_id_sum = data1.groupby(['dt','device_id']).click.sum().reset_index(name='id_sum')\ndevice_id_cnt = data1.groupby(['dt','device_id']).click.count().reset_index(name='id_cnt')\ndevice_id_cnt.head()\ncnt_sum = pd.merge(device_id_cnt,device_id_sum,on=(['dt','device_id']),how='left')\ncnt_sum.head()\ncnt_sum['device_ctr'] = cnt_sum['id_sum']/cnt_sum['id_cnt']\ncnt_sum = cnt_sum.sort_values(['device_id','dt'])\ncnt_sum['device_ctr'] = cnt_sum['id_sum']/cnt_sum['id_cnt']\ncnt_sum = cnt_sum.sort_values(['device_id','dt'])\ncnt_sum.head()\ncnt_sum['t_1']=cnt_sum.groupby(['device_id'])['device_ctr'].shift(1)\ncnt_sum.groupby('device_id')['dt'].count().reset_index().sort_values('dt',ascending=False)\ndata2 = pd.merge(data1,cnt_sum,on=(['dt','device_id']),how='left')\ndata2[data2.device_id=='afeffc18'].sort_values('dt')","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:45:57.664685Z","iopub.execute_input":"2023-03-22T07:45:57.665183Z","iopub.status.idle":"2023-03-22T07:46:40.080083Z","shell.execute_reply.started":"2023-03-22T07:45:57.665142Z","shell.execute_reply":"2023-03-22T07:46:40.077787Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cnt_sum[cnt_sum.device_id=='afeffc18'].sort_values('dt')","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:40.081582Z","iopub.execute_input":"2023-03-22T07:46:40.082078Z","iopub.status.idle":"2023-03-22T07:46:40.204532Z","shell.execute_reply.started":"2023-03-22T07:46:40.082037Z","shell.execute_reply":"2023-03-22T07:46:40.203474Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1 = data2","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:40.205970Z","iopub.execute_input":"2023-03-22T07:46:40.206851Z","iopub.status.idle":"2023-03-22T07:46:40.211943Z","shell.execute_reply.started":"2023-03-22T07:46:40.206810Z","shell.execute_reply":"2023-03-22T07:46:40.210753Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1['hour_of_day'] = data1['hour'].dt.hour\ndata1['weekday'] = (data1['hour'].dt.dayofweek)","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:40.213404Z","iopub.execute_input":"2023-03-22T07:46:40.215930Z","iopub.status.idle":"2023-03-22T07:46:41.066601Z","shell.execute_reply.started":"2023-03-22T07:46:40.215892Z","shell.execute_reply":"2023-03-22T07:46:41.065539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"obj_cols = ['site_id',\n 'site_domain',\n 'site_category',\n 'app_id',\n 'app_domain',\n 'app_category',\n 'device_id',\n 'device_ip',\n 'device_model','device_type','device_conn_type'\n,'hour_of_day','weekday','banner_pos']\nc_cols = ['C14',\n 'C15',\n 'C16',\n 'C17',\n 'C18',\n 'C19',\n 'C20',\n 'C21','C1']","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:41.068086Z","iopub.execute_input":"2023-03-22T07:46:41.068440Z","iopub.status.idle":"2023-03-22T07:46:41.074610Z","shell.execute_reply.started":"2023-03-22T07:46:41.068403Z","shell.execute_reply":"2023-03-22T07:46:41.073508Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# sparse特征列\nsparse_features = obj_cols+['hour_of_day','weekday']+ c_cols\nsparse_features","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:41.076280Z","iopub.execute_input":"2023-03-22T07:46:41.077040Z","iopub.status.idle":"2023-03-22T07:46:41.090304Z","shell.execute_reply.started":"2023-03-22T07:46:41.076936Z","shell.execute_reply":"2023-03-22T07:46:41.089229Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 填充\nfor f in ['device_type','device_conn_type','banner_pos'\n          ,'C14','C15','C16','C17','C18', 'C19', 'C20', 'C21', 'C1']:\n    data1[f] = data1[f].astype(str)","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:41.091716Z","iopub.execute_input":"2023-03-22T07:46:41.092134Z","iopub.status.idle":"2023-03-22T07:46:43.773271Z","shell.execute_reply.started":"2023-03-22T07:46:41.092097Z","shell.execute_reply":"2023-03-22T07:46:43.772252Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nfor f in sparse_features:\n    data1[f] = data1[f].fillna('-1', )","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:43.774770Z","iopub.execute_input":"2023-03-22T07:46:43.775503Z","iopub.status.idle":"2023-03-22T07:46:49.567878Z","shell.execute_reply.started":"2023-03-22T07:46:43.775460Z","shell.execute_reply":"2023-03-22T07:46:49.566828Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 对sparse onehot\nfor feat in sparse_features:\n    print('feat',feat)\n    lbe = LabelEncoder()\n    data1[feat] = lbe.fit_transform(data1[feat])","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:46:49.569545Z","iopub.execute_input":"2023-03-22T07:46:49.570228Z","iopub.status.idle":"2023-03-22T07:47:48.846373Z","shell.execute_reply.started":"2023-03-22T07:46:49.570188Z","shell.execute_reply":"2023-03-22T07:47:48.845313Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 连续特征\nfrom sklearn.preprocessing import LabelEncoder, MinMaxScaler\ndense_features = ['id_cnt',\n 'id_sum',\n 'device_ctr',\n 't_1']\nfor f in dense_features:\n    data1[f] = data1[f].fillna(0, )\n\nmms = MinMaxScaler(feature_range=(0, 1))\ndata1[dense_features] = mms.fit_transform(data1[dense_features])\n","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:48.847962Z","iopub.execute_input":"2023-03-22T07:47:48.848551Z","iopub.status.idle":"2023-03-22T07:47:50.907834Z","shell.execute_reply.started":"2023-03-22T07:47:48.848510Z","shell.execute_reply":"2023-03-22T07:47:50.906749Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 2.count #unique features for each sparse field,and record dense feature field name\n\nfixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data1[feat].nunique(),embedding_dim=4 )\n                       for i,feat in enumerate(sparse_features)] + [DenseFeat(feat, 1,)\n                      for feat in dense_features]\n# fixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data1[feat].nunique(),embedding_dim=4 )\n#                        for i,feat in enumerate(sparse_features)]\nfixlen_feature_columns","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:50.909086Z","iopub.execute_input":"2023-03-22T07:47:50.909443Z","iopub.status.idle":"2023-03-22T07:47:51.599618Z","shell.execute_reply.started":"2023-03-22T07:47:50.909406Z","shell.execute_reply":"2023-03-22T07:47:51.598451Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dnn_feature_columns = fixlen_feature_columns\nlinear_feature_columns = fixlen_feature_columns\nfeature_names = get_feature_names(linear_feature_columns + dnn_feature_columns)\nfeature_names","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:51.601046Z","iopub.execute_input":"2023-03-22T07:47:51.601497Z","iopub.status.idle":"2023-03-22T07:47:51.610491Z","shell.execute_reply.started":"2023-03-22T07:47:51.601457Z","shell.execute_reply":"2023-03-22T07:47:51.609273Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1.data_label.value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:51.611897Z","iopub.execute_input":"2023-03-22T07:47:51.612856Z","iopub.status.idle":"2023-03-22T07:47:51.780238Z","shell.execute_reply.started":"2023-03-22T07:47:51.612818Z","shell.execute_reply":"2023-03-22T07:47:51.779197Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_old = data1[data1['data_label']=='train']\ntest_old = data1[data1['data_label']=='test']\ntrain_old.shape,test_old.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:51.783207Z","iopub.execute_input":"2023-03-22T07:47:51.783921Z","iopub.status.idle":"2023-03-22T07:47:53.249792Z","shell.execute_reply.started":"2023-03-22T07:47:51.783881Z","shell.execute_reply":"2023-03-22T07:47:53.248831Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train, valid = train_test_split(train_old, test_size=0.2 \\\n                                , random_state=2018,stratify=train_old['click'])\ntrain.shape,valid.shape,test_old.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:53.255087Z","iopub.execute_input":"2023-03-22T07:47:53.256980Z","iopub.status.idle":"2023-03-22T07:47:53.570808Z","shell.execute_reply.started":"2023-03-22T07:47:53.256935Z","shell.execute_reply":"2023-03-22T07:47:53.569754Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_model_input = {name:train[name] for name in feature_names}\nvalid_model_input = {name:valid[name] for name in feature_names}\ntest_model_input = {name:test_old[name] for name in feature_names}","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:53.572120Z","iopub.execute_input":"2023-03-22T07:47:53.572477Z","iopub.status.idle":"2023-03-22T07:47:53.582498Z","shell.execute_reply.started":"2023-03-22T07:47:53.572438Z","shell.execute_reply":"2023-03-22T07:47:53.581366Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from deepctr_torch.models import DeepFM,AFM,xDeepFM,AutoInt,DCN,DIFM\ntrain['click'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:53.584293Z","iopub.execute_input":"2023-03-22T07:47:53.585132Z","iopub.status.idle":"2023-03-22T07:47:53.598356Z","shell.execute_reply.started":"2023-03-22T07:47:53.585094Z","shell.execute_reply":"2023-03-22T07:47:53.597392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"if data1 is not None:\n    del data1\nif data2 is not None:\n    del data2\n    ","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:53.599653Z","iopub.execute_input":"2023-03-22T07:47:53.600506Z","iopub.status.idle":"2023-03-22T07:47:53.705786Z","shell.execute_reply.started":"2023-03-22T07:47:53.600468Z","shell.execute_reply":"2023-03-22T07:47:53.704647Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"device = 'cpu'\nuse_cuda = True\nif use_cuda and torch.cuda.is_available():\n    print('cuda ready...')\n    device = 'cuda:0'\n\nmodel = DIFM(linear_feature_columns,dnn_feature_columns,task='binary',device=device)\nmodel.compile(\"adam\", \"binary_crossentropy\",\n              metrics=['binary_crossentropy'], )\nhistory = model.fit(train_model_input,train['click'].values,batch_size=128,epochs=1,verbose=2,validation_split=0.2)\n","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:47:53.707283Z","iopub.execute_input":"2023-03-22T07:47:53.708220Z","iopub.status.idle":"2023-03-22T07:48:42.196811Z","shell.execute_reply.started":"2023-03-22T07:47:53.708175Z","shell.execute_reply":"2023-03-22T07:48:42.195418Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"val_ans = model.predict(valid_model_input, batch_size=128)","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:49:01.789450Z","iopub.execute_input":"2023-03-22T07:49:01.789859Z","iopub.status.idle":"2023-03-22T07:49:04.135227Z","shell.execute_reply.started":"2023-03-22T07:49:01.789821Z","shell.execute_reply":"2023-03-22T07:49:04.134174Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"test LogLoss\", round(log_loss(valid['click'].values, val_ans), 4))\nprint(\"test AUC\", round(roc_auc_score(valid['click'].values, val_ans), 4))","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:49:04.137280Z","iopub.execute_input":"2023-03-22T07:49:04.137675Z","iopub.status.idle":"2023-03-22T07:49:04.179820Z","shell.execute_reply.started":"2023-03-22T07:49:04.137635Z","shell.execute_reply":"2023-03-22T07:49:04.178730Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_ans = model.predict(test_model_input, batch_size=128)\nsubmission_df = pd.read_csv(\"/kaggle/input/avazu-ctr-prediction/sampleSubmission.gz\")\nsubmission_df[\"click\"] = pred_ans\nsubmission_df.to_csv(\"submission_difm.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2023-03-22T07:51:53.210332Z","iopub.execute_input":"2023-03-22T07:51:53.210753Z","iopub.status.idle":"2023-03-22T07:54:23.964735Z","shell.execute_reply.started":"2023-03-22T07:51:53.210709Z","shell.execute_reply":"2023-03-22T07:54:23.963665Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}