{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"mount_file_id":"1z2Tq7dKp7YLHVFK8dXL2EZn0hBclc6dQ","authorship_tag":"ABX9TyNCgalS8m4obOk+v6xZ1zQQ"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Initial instructions"],"metadata":{"id":"Do8-wzEtQiVu"}},{"cell_type":"code","execution_count":1,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6NUxzlPDIej5","executionInfo":{"status":"ok","timestamp":1688570661655,"user_tz":-210,"elapsed":3937,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"e8d93915-58f9-4b3c-8688-08e8c3c5ce91"},"outputs":[{"output_type":"stream","name":"stdout","text":["Requirement already satisfied: kaggle in /usr/local/lib/python3.10/dist-packages (1.5.13)\n","Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.10/dist-packages (from kaggle) (1.16.0)\n","Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from kaggle) (2023.5.7)\n","Requirement already satisfied: python-dateutil in /usr/local/lib/python3.10/dist-packages (from kaggle) (2.8.2)\n","Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from kaggle) (2.27.1)\n","Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from kaggle) (4.65.0)\n","Requirement already satisfied: python-slugify in /usr/local/lib/python3.10/dist-packages (from kaggle) (8.0.1)\n","Requirement already satisfied: urllib3 in /usr/local/lib/python3.10/dist-packages (from kaggle) (1.26.16)\n","Requirement already satisfied: text-unidecode>=1.3 in /usr/local/lib/python3.10/dist-packages (from python-slugify->kaggle) (1.3)\n","Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->kaggle) (2.0.12)\n","Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->kaggle) (3.4)\n"]}],"source":["! pip install kaggle"]},{"cell_type":"code","source":["from google.colab import files"],"metadata":{"id":"9gjOv_WUJBzz","executionInfo":{"status":"ok","timestamp":1688570665466,"user_tz":-210,"elapsed":8,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["files.upload()\n","! mkdir ~/.kaggle\n","! cp kaggle.json ~/.kaggle/\n","! chmod 600 ~/.kaggle/kaggle.json\n","! kaggle datasets download -d rounakbanik/the-movies-dataset"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":125},"id":"cQoNEnDDJOvf","executionInfo":{"status":"ok","timestamp":1688570709193,"user_tz":-210,"elapsed":40889,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"3c8e5f7b-618d-4109-950c-30be7e04569b"},"execution_count":3,"outputs":[{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n"," \n"," \n"," Upload widget is only available when the cell has been executed in the\n"," current browser session. Please rerun this cell to enable.\n"," \n"," "]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Saving kaggle.json to kaggle.json\n","Downloading the-movies-dataset.zip to /content\n"," 96% 219M/228M [00:02<00:00, 121MB/s]\n","100% 228M/228M [00:02<00:00, 102MB/s]\n"]}]},{"cell_type":"code","source":["import os"],"metadata":{"id":"ArIWM5DHqXYZ","executionInfo":{"status":"ok","timestamp":1688570797771,"user_tz":-210,"elapsed":371,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["if not os.path.isdir('/content/drive/MyDrive/Rec/data/raw') :\n"," os.mkdir('/content/drive/MyDrive/Rec/data/raw')"],"metadata":{"id":"HaEx9oF3Li7f"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["! unzip '/content/the-movies-dataset.zip' -d '/content/drive/MyDrive/Rec/data/raw'"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pLeGJcfvLwwJ","executionInfo":{"status":"ok","timestamp":1688565261896,"user_tz":-210,"elapsed":11516,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"449b2179-ff5a-4ac8-f9c5-07efc6a7e7c6"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Archive: /content/the-movies-dataset.zip\n"," inflating: /content/drive/MyDrive/Rec/data/raw/credits.csv \n"," inflating: /content/drive/MyDrive/Rec/data/raw/keywords.csv \n"," inflating: /content/drive/MyDrive/Rec/data/raw/links.csv \n"," inflating: /content/drive/MyDrive/Rec/data/raw/links_small.csv \n"," inflating: /content/drive/MyDrive/Rec/data/raw/movies_metadata.csv \n"," inflating: /content/drive/MyDrive/Rec/data/raw/ratings.csv \n"," inflating: /content/drive/MyDrive/Rec/data/raw/ratings_small.csv \n"]}]},{"cell_type":"code","source":["raw_dir = '/content/drive/MyDrive/Rec/data/raw'"],"metadata":{"id":"PAWyXXGxMVIX","executionInfo":{"status":"ok","timestamp":1688570776985,"user_tz":-210,"elapsed":496,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":["# Needed imports"],"metadata":{"id":"6rPjGeurQdnV"}},{"cell_type":"code","source":["import numpy as np\n","import pandas as pd\n","import json\n","import csv\n","import matplotlib.pyplot as plt\n","from ast import literal_eval"],"metadata":{"id":"tx4gvgqgMxgo","executionInfo":{"status":"ok","timestamp":1688570807449,"user_tz":-210,"elapsed":390,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":6,"outputs":[]},{"cell_type":"markdown","source":["# Credits dataset"],"metadata":{"id":"GA6noW_jSjRc"}},{"cell_type":"code","source":["credits = pd.read_csv(os.path.join(raw_dir, 'credits.csv'))\n","print('shape of credits dataset: {}'.format(credits.shape))\n","credits.head(3)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":161},"id":"ZaOZPI1NQcg5","executionInfo":{"status":"ok","timestamp":1688547894409,"user_tz":-210,"elapsed":3235,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"1bc46c8b-c287-49bb-bc9c-b832e85b1e8f"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of credits dataset: (45476, 3)\n"]},{"output_type":"execute_result","data":{"text/plain":[" cast \\\n","0 [{'cast_id': 14, 'character': 'Woody (voice)',... \n","1 [{'cast_id': 1, 'character': 'Alan Parrish', '... \n","2 [{'cast_id': 2, 'character': 'Max Goldman', 'c... \n","\n"," crew id \n","0 [{'credit_id': '52fe4284c3a36847f8024f49', 'de... 862 \n","1 [{'credit_id': '52fe44bfc3a36847f80a7cd1', 'de... 8844 \n","2 [{'credit_id': '52fe466a9251416c75077a89', 'de... 15602 "],"text/html":["\n","
\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
castcrewid
0[{'cast_id': 14, 'character': 'Woody (voice)',...[{'credit_id': '52fe4284c3a36847f8024f49', 'de...862
1[{'cast_id': 1, 'character': 'Alan Parrish', '...[{'credit_id': '52fe44bfc3a36847f80a7cd1', 'de...8844
2[{'cast_id': 2, 'character': 'Max Goldman', 'c...[{'credit_id': '52fe466a9251416c75077a89', 'de...15602
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":10}]},{"cell_type":"code","source":["credits.isnull().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6of-O22CTBD7","executionInfo":{"status":"ok","timestamp":1688547995732,"user_tz":-210,"elapsed":473,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"6da185d8-74eb-4701-c341-8304a241aa94"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["cast 0\n","crew 0\n","id 0\n","dtype: int64"]},"metadata":{},"execution_count":11}]},{"cell_type":"code","source":["credits.isna().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"tfhS7WLITas6","executionInfo":{"status":"ok","timestamp":1688548005437,"user_tz":-210,"elapsed":27,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"aa448602-e8af-456a-c269-6dcc16337a5e"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["cast 0\n","crew 0\n","id 0\n","dtype: int64"]},"metadata":{},"execution_count":12}]},{"cell_type":"code","source":["credits.nunique()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8gj4gQr2Tc_H","executionInfo":{"status":"ok","timestamp":1688548048490,"user_tz":-210,"elapsed":1036,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"2911f641-04bd-4573-8260-65327de68818"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["cast 43019\n","crew 44669\n","id 45432\n","dtype: int64"]},"metadata":{},"execution_count":14}]},{"cell_type":"code","source":["credits.drop_duplicates(inplace=True)"],"metadata":{"id":"shIqe3YbTiCw"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Extracting information from json strings"],"metadata":{"id":"XvobXUNzVxFf"}},{"cell_type":"code","source":["def get_text(text, obj='name'):\n"," text = literal_eval(text)\n"," if len(text) == 1:\n"," for i in text:\n"," return i[obj]\n"," else:\n"," s = []\n"," for i in text:\n"," s.append(str(i[obj]))\n"," return ', '.join(s)"],"metadata":{"id":"wmybX3cqTsrm","executionInfo":{"status":"ok","timestamp":1688571301495,"user_tz":-210,"elapsed":495,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":28,"outputs":[]},{"cell_type":"code","source":["credits['name_crew'] = credits['crew'].apply(get_text, obj = \"name\")\n","credits['department_crew'] = credits['crew'].apply(get_text, obj = \"department\")\n","credits['gender_crew'] = credits['crew'].apply(get_text, obj = \"gender\")\n","credits['job_crew'] = credits['crew'].apply(get_text, obj = \"job\")\n","credits['profile_path_crew'] = credits['crew'].apply(get_text, obj = \"profile_path\")\n","credits['id_crew'] = credits['crew'].apply(get_text, obj = \"id\")"],"metadata":{"id":"NIfflprHV4mT"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["credits['name_cast'] = credits['cast'].apply(get_text, obj = \"name\")\n","credits['order_cast'] = credits['cast'].apply(get_text, obj = \"order\")\n","credits['gender_cast'] = credits['cast'].apply(get_text, obj = \"gender\")\n","credits['credit_id_cast'] = credits['cast'].apply(get_text, obj = \"credit_id\")\n","credits['profile_path_cast'] = credits['cast'].apply(get_text, obj = \"profile_path\")\n","credits['id_cast'] = credits['cast'].apply(get_text, obj = \"id\")\n","credits['character_cast'] = credits['cast'].apply(get_text, obj = \"character\")"],"metadata":{"id":"6mVD2jb9V9Gy"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Constructing the new dataframe and saving that"],"metadata":{"id":"lDgPbPtyYJrG"}},{"cell_type":"code","source":["clean_credits = credits.drop([\"crew\", \"cast\"], axis=1)"],"metadata":{"id":"zGjkFiWEWicR"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Checking the new dataframe"],"metadata":{"id":"QeO-YhWTYUvz"}},{"cell_type":"code","source":["print ('shape of the cleaned Credits dataset: {}'.format(clean_credits.shape))\n","clean_credits.head(3)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":572},"id":"k9Iqhry2Xsyt","executionInfo":{"status":"ok","timestamp":1688549213175,"user_tz":-210,"elapsed":473,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"65d54e2b-4828-4937-dada-233a2dd45011"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of the cleaned Credits dataset: (45439, 14)\n"]},{"output_type":"execute_result","data":{"text/plain":[" id name_crew \\\n","0 862 John Lasseter, Joss Whedon, Andrew Stanton, Jo... \n","1 8844 Larry J. Franco, Jonathan Hensleigh, James Hor... \n","2 15602 Howard Deutch, Mark Steven Johnson, Mark Steve... \n","\n"," department_crew \\\n","0 Directing, Writing, Writing, Writing, Writing,... \n","1 Production, Writing, Sound, Directing, Editing... \n","2 Directing, Writing, Writing, Crew \n","\n"," gender_crew \\\n","0 2, 2, 2, 2, 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2... \n","1 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2 \n","2 2, 2, 2, 2 \n","\n"," job_crew \\\n","0 Director, Screenplay, Screenplay, Screenplay, ... \n","1 Executive Producer, Screenplay, Original Music... \n","2 Director, Characters, Writer, Sound Recordist \n","\n"," profile_path_crew \\\n","0 /7EdqiNbr4FRjIhKHyPPdFfEEEFG.jpg, /dTiVsuaTVTe... \n","1 None, /l1c4UFD3g0HVWj5f0CxXAvMAGiT.jpg, /oLOtX... \n","2 /68Vae1HkU1NxQZ6KEmuxIpno7c9.jpg, /6trChNn3o2b... \n","\n"," id_crew \\\n","0 7879, 12891, 7, 12892, 12893, 12894, 12895, 12... \n","1 511, 876, 1729, 4945, 4951, 4952, 8023, 9967, ... \n","2 26502, 16837, 16837, 1551320 \n","\n"," name_cast \\\n","0 Tom Hanks, Tim Allen, Don Rickles, Jim Varney,... \n","1 Robin Williams, Jonathan Hyde, Kirsten Dunst, ... \n","2 Walter Matthau, Jack Lemmon, Ann-Margret, Soph... \n","\n"," order_cast \\\n","0 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 \n","1 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ... \n","2 0, 1, 2, 3, 4, 5, 6 \n","\n"," gender_cast \\\n","0 2, 2, 2, 2, 2, 2, 1, 0, 2, 1, 2, 1, 2 \n","1 2, 2, 1, 0, 1, 1, 2, 1, 0, 1, 2, 1, 2, 0, 0, 0... \n","2 2, 2, 1, 1, 1, 2, 2 \n","\n"," credit_id_cast \\\n","0 52fe4284c3a36847f8024f95, 52fe4284c3a36847f802... \n","1 52fe44bfc3a36847f80a7c73, 52fe44bfc3a36847f80a... \n","2 52fe466a9251416c75077a8d, 52fe466a9251416c7507... \n","\n"," profile_path_cast \\\n","0 /pQFoyx7rp09CJTAb932F2g8Nlho.jpg, /uX2xVf6pMmP... \n","1 /sojtJyIV3lkUeThD7A2oHNm8183.jpg, /7il5D76vx6Q... \n","2 /xJVkvprOnzP5Zdh5y63y8HHniDZ.jpg, /chZmNRYMtqk... \n","\n"," id_cast \\\n","0 31, 12898, 7167, 12899, 12900, 7907, 8873, 111... \n","1 2157, 8537, 205, 145151, 5149, 10739, 58563, 1... \n","2 6837, 3151, 13567, 16757, 589, 16523, 7166 \n","\n"," character_cast \n","0 Woody (voice), Buzz Lightyear (voice), Mr. Pot... \n","1 Alan Parrish, Samuel Alan Parrish / Van Pelt, ... \n","2 Max Goldman, John Gustafson, Ariel Gustafson, ... "],"text/html":["\n","
\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
idname_crewdepartment_crewgender_crewjob_crewprofile_path_crewid_crewname_castorder_castgender_castcredit_id_castprofile_path_castid_castcharacter_cast
0862John Lasseter, Joss Whedon, Andrew Stanton, Jo...Directing, Writing, Writing, Writing, Writing,...2, 2, 2, 2, 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2...Director, Screenplay, Screenplay, Screenplay, .../7EdqiNbr4FRjIhKHyPPdFfEEEFG.jpg, /dTiVsuaTVTe...7879, 12891, 7, 12892, 12893, 12894, 12895, 12...Tom Hanks, Tim Allen, Don Rickles, Jim Varney,...0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 122, 2, 2, 2, 2, 2, 1, 0, 2, 1, 2, 1, 252fe4284c3a36847f8024f95, 52fe4284c3a36847f802.../pQFoyx7rp09CJTAb932F2g8Nlho.jpg, /uX2xVf6pMmP...31, 12898, 7167, 12899, 12900, 7907, 8873, 111...Woody (voice), Buzz Lightyear (voice), Mr. Pot...
18844Larry J. Franco, Jonathan Hensleigh, James Hor...Production, Writing, Sound, Directing, Editing...2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2Executive Producer, Screenplay, Original Music...None, /l1c4UFD3g0HVWj5f0CxXAvMAGiT.jpg, /oLOtX...511, 876, 1729, 4945, 4951, 4952, 8023, 9967, ...Robin Williams, Jonathan Hyde, Kirsten Dunst, ...0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...2, 2, 1, 0, 1, 1, 2, 1, 0, 1, 2, 1, 2, 0, 0, 0...52fe44bfc3a36847f80a7c73, 52fe44bfc3a36847f80a.../sojtJyIV3lkUeThD7A2oHNm8183.jpg, /7il5D76vx6Q...2157, 8537, 205, 145151, 5149, 10739, 58563, 1...Alan Parrish, Samuel Alan Parrish / Van Pelt, ...
215602Howard Deutch, Mark Steven Johnson, Mark Steve...Directing, Writing, Writing, Crew2, 2, 2, 2Director, Characters, Writer, Sound Recordist/68Vae1HkU1NxQZ6KEmuxIpno7c9.jpg, /6trChNn3o2b...26502, 16837, 16837, 1551320Walter Matthau, Jack Lemmon, Ann-Margret, Soph...0, 1, 2, 3, 4, 5, 62, 2, 1, 1, 1, 2, 252fe466a9251416c75077a8d, 52fe466a9251416c7507.../xJVkvprOnzP5Zdh5y63y8HHniDZ.jpg, /chZmNRYMtqk...6837, 3151, 13567, 16757, 589, 16523, 7166Max Goldman, John Gustafson, Ariel Gustafson, ...
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":20}]},{"cell_type":"markdown","source":["Saving the new .csv dataset"],"metadata":{"id":"CR5anOZZYlBe"}},{"cell_type":"code","source":["clean_credits.to_csv('/content/drive/MyDrive/Rec/data/cleaned/clean_credits.csv', index=False)"],"metadata":{"id":"yto7-njpYD7U"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Keywords dataset"],"metadata":{"id":"emyNitcyZPCr"}},{"cell_type":"code","source":["keywords = pd.read_csv(os.path.join(raw_dir, \"keywords.csv\"))\n","print('shape of raw Keywores dataset: {}'.format(keywords.shape))\n","keywords.head(3)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":161},"id":"4JqG86_-ZKHn","executionInfo":{"status":"ok","timestamp":1688549658847,"user_tz":-210,"elapsed":511,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"7a279461-cc46-4f3b-f211-2a02492658f2"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of raw Keywores dataset: (46419, 2)\n"]},{"output_type":"execute_result","data":{"text/plain":[" id keywords\n","0 862 [{'id': 931, 'name': 'jealousy'}, {'id': 4290,...\n","1 8844 [{'id': 10090, 'name': 'board game'}, {'id': 1...\n","2 15602 [{'id': 1495, 'name': 'fishing'}, {'id': 12392..."],"text/html":["\n","
\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
idkeywords
0862[{'id': 931, 'name': 'jealousy'}, {'id': 4290,...
18844[{'id': 10090, 'name': 'board game'}, {'id': 1...
215602[{'id': 1495, 'name': 'fishing'}, {'id': 12392...
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":24}]},{"cell_type":"code","source":["keywords.isna().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"tLkNXoSJZmDE","executionInfo":{"status":"ok","timestamp":1688549694116,"user_tz":-210,"elapsed":486,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"fb4852d3-563a-4833-8674-eeaab7c29bbf"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["id 0\n","keywords 0\n","dtype: int64"]},"metadata":{},"execution_count":25}]},{"cell_type":"code","source":["keywords.isnull().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9tyQTNKPZ5V0","executionInfo":{"status":"ok","timestamp":1688549730364,"user_tz":-210,"elapsed":963,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"9d0fcf3b-3aad-46e8-f36e-2c77038f5b3f"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["id 0\n","keywords 0\n","dtype: int64"]},"metadata":{},"execution_count":26}]},{"cell_type":"code","source":["keywords.nunique()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"u2jgxSs_aB9x","executionInfo":{"status":"ok","timestamp":1688549740316,"user_tz":-210,"elapsed":604,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"ba5dbee0-d701-46c0-d2e8-341d806794ad"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["id 45432\n","keywords 25989\n","dtype: int64"]},"metadata":{},"execution_count":27}]},{"cell_type":"code","source":["keywords.drop_duplicates(inplace=True)\n","print('shape of dataset after dropping duplicates: {}'.format(keywords.shape))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"BqPLBOeyaEif","executionInfo":{"status":"ok","timestamp":1688549823949,"user_tz":-210,"elapsed":429,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"d7a7d607-69cd-4367-f302-d384bb90bdcd"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of dataset after dropping duplicates: (45432, 2)\n"]}]},{"cell_type":"markdown","source":["## Extracting information from json strings"],"metadata":{"id":"CEea-KSLaqI2"}},{"cell_type":"code","source":["keywords['name_keywords'] = keywords['keywords'].apply(get_text, obj = \"name\")\n","keywords['id_keywords'] = keywords['keywords'].apply(get_text, obj = \"id\")"],"metadata":{"id":"_W1h0U4-aWYX"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Constructing new dataframe and saving that"],"metadata":{"id":"KMGfBLW7a4wi"}},{"cell_type":"code","source":["clean_keywords = keywords.drop([\"keywords\"], axis=1)"],"metadata":{"id":"JUuH5tmxazAW"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Checking the new dataset"],"metadata":{"id":"hwYzBGyjbZMN"}},{"cell_type":"code","source":["print('shape of the cleaned data: {}'.format(clean_keywords.shape))\n","clean_keywords.head(3)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":161},"id":"QsOVt41MbLCz","executionInfo":{"status":"ok","timestamp":1688550078229,"user_tz":-210,"elapsed":575,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"6a400dc8-6ea3-4dca-f034-6ca0f1643fc0"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of the cleaned data: (45432, 3)\n"]},{"output_type":"execute_result","data":{"text/plain":[" id name_keywords \\\n","0 862 jealousy, toy, boy, friendship, friends, rival... \n","1 8844 board game, disappearance, based on children's... \n","2 15602 fishing, best friend, duringcreditsstinger, ol... \n","\n"," id_keywords \n","0 931, 4290, 5202, 6054, 9713, 9823, 165503, 170... \n","1 10090, 10941, 15101, 33467, 158086, 158091 \n","2 1495, 12392, 179431, 208510 "],"text/html":["\n","
\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
idname_keywordsid_keywords
0862jealousy, toy, boy, friendship, friends, rival...931, 4290, 5202, 6054, 9713, 9823, 165503, 170...
18844board game, disappearance, based on children's...10090, 10941, 15101, 33467, 158086, 158091
215602fishing, best friend, duringcreditsstinger, ol...1495, 12392, 179431, 208510
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":32}]},{"cell_type":"markdown","source":["Saving the cleaned dataset as a .csv file"],"metadata":{"id":"W0YT8YV3bcf_"}},{"cell_type":"code","source":["clean_keywords.to_csv('/content/drive/MyDrive/Rec/data/cleaned/clean_keywords.csv', index=False)\n"],"metadata":{"id":"M9f5_VeibXC-"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Metadata dataset"],"metadata":{"id":"SKlrgI-Ub1SP"}},{"cell_type":"code","source":["metadata = pd.read_csv(os.path.join(raw_dir, 'movies_metadata.csv'))\n","print('shape of the raw metadata dataset: {}'.format(metadata.shape))\n","metadata.head(3)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":567},"id":"MwDtrtVJbvM5","executionInfo":{"status":"ok","timestamp":1688571617483,"user_tz":-210,"elapsed":1283,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"3b0db80d-e8e3-4bdf-dce4-edbfd4addabe"},"execution_count":35,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of the raw metadata dataset: (45466, 24)\n"]},{"output_type":"stream","name":"stderr","text":[":1: DtypeWarning: Columns (10) have mixed types. Specify dtype option on import or set low_memory=False.\n"," metadata = pd.read_csv(os.path.join(raw_dir, 'movies_metadata.csv'))\n"]},{"output_type":"execute_result","data":{"text/plain":[" adult belongs_to_collection budget \\\n","0 False {'id': 10194, 'name': 'Toy Story Collection', ... 30000000 \n","1 False NaN 65000000 \n","2 False {'id': 119050, 'name': 'Grumpy Old Men Collect... 0 \n","\n"," genres \\\n","0 [{'id': 16, 'name': 'Animation'}, {'id': 35, '... \n","1 [{'id': 12, 'name': 'Adventure'}, {'id': 14, '... \n","2 [{'id': 10749, 'name': 'Romance'}, {'id': 35, ... \n","\n"," homepage id imdb_id original_language \\\n","0 http://toystory.disney.com/toy-story 862 tt0114709 en \n","1 NaN 8844 tt0113497 en \n","2 NaN 15602 tt0113228 en \n","\n"," original_title overview ... \\\n","0 Toy Story Led by Woody, Andy's toys live happily in his ... ... \n","1 Jumanji When siblings Judy and Peter discover an encha... ... \n","2 Grumpier Old Men A family wedding reignites the ancient feud be... ... \n","\n"," release_date revenue runtime \\\n","0 1995-10-30 373554033.0 81.0 \n","1 1995-12-15 262797249.0 104.0 \n","2 1995-12-22 0.0 101.0 \n","\n"," spoken_languages status \\\n","0 [{'iso_639_1': 'en', 'name': 'English'}] Released \n","1 [{'iso_639_1': 'en', 'name': 'English'}, {'iso... Released \n","2 [{'iso_639_1': 'en', 'name': 'English'}] Released \n","\n"," tagline title video \\\n","0 NaN Toy Story False \n","1 Roll the dice and unleash the excitement! Jumanji False \n","2 Still Yelling. Still Fighting. Still Ready for... Grumpier Old Men False \n","\n"," vote_average vote_count \n","0 7.7 5415.0 \n","1 6.9 2413.0 \n","2 6.5 92.0 \n","\n","[3 rows x 24 columns]"],"text/html":["\n","
\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
adultbelongs_to_collectionbudgetgenreshomepageidimdb_idoriginal_languageoriginal_titleoverview...release_daterevenueruntimespoken_languagesstatustaglinetitlevideovote_averagevote_count
0False{'id': 10194, 'name': 'Toy Story Collection', ...30000000[{'id': 16, 'name': 'Animation'}, {'id': 35, '...http://toystory.disney.com/toy-story862tt0114709enToy StoryLed by Woody, Andy's toys live happily in his ......1995-10-30373554033.081.0[{'iso_639_1': 'en', 'name': 'English'}]ReleasedNaNToy StoryFalse7.75415.0
1FalseNaN65000000[{'id': 12, 'name': 'Adventure'}, {'id': 14, '...NaN8844tt0113497enJumanjiWhen siblings Judy and Peter discover an encha......1995-12-15262797249.0104.0[{'iso_639_1': 'en', 'name': 'English'}, {'iso...ReleasedRoll the dice and unleash the excitement!JumanjiFalse6.92413.0
2False{'id': 119050, 'name': 'Grumpy Old Men Collect...0[{'id': 10749, 'name': 'Romance'}, {'id': 35, ...NaN15602tt0113228enGrumpier Old MenA family wedding reignites the ancient feud be......1995-12-220.0101.0[{'iso_639_1': 'en', 'name': 'English'}]ReleasedStill Yelling. Still Fighting. Still Ready for...Grumpier Old MenFalse6.592.0
\n","

3 rows × 24 columns

\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":35}]},{"cell_type":"code","source":["metadata.isna().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Kt9tI1iydiXd","executionInfo":{"status":"ok","timestamp":1688571624293,"user_tz":-210,"elapsed":398,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"41a87985-be28-49d6-86c1-d86fbe49b2f5"},"execution_count":36,"outputs":[{"output_type":"execute_result","data":{"text/plain":["adult 0\n","belongs_to_collection 40972\n","budget 0\n","genres 0\n","homepage 37684\n","id 0\n","imdb_id 17\n","original_language 11\n","original_title 0\n","overview 954\n","popularity 5\n","poster_path 386\n","production_companies 3\n","production_countries 3\n","release_date 87\n","revenue 6\n","runtime 263\n","spoken_languages 6\n","status 87\n","tagline 25054\n","title 6\n","video 6\n","vote_average 6\n","vote_count 6\n","dtype: int64"]},"metadata":{},"execution_count":36}]},{"cell_type":"code","source":["metadata.isnull().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9ASDp8eTkg4h","executionInfo":{"status":"ok","timestamp":1688571627733,"user_tz":-210,"elapsed":685,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"2751d9b1-f910-4de2-de33-6ff6bee31bd5"},"execution_count":37,"outputs":[{"output_type":"execute_result","data":{"text/plain":["adult 0\n","belongs_to_collection 40972\n","budget 0\n","genres 0\n","homepage 37684\n","id 0\n","imdb_id 17\n","original_language 11\n","original_title 0\n","overview 954\n","popularity 5\n","poster_path 386\n","production_companies 3\n","production_countries 3\n","release_date 87\n","revenue 6\n","runtime 263\n","spoken_languages 6\n","status 87\n","tagline 25054\n","title 6\n","video 6\n","vote_average 6\n","vote_count 6\n","dtype: int64"]},"metadata":{},"execution_count":37}]},{"cell_type":"code","source":["metadata.nunique()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"yYM0Ud3Tlpjw","executionInfo":{"status":"ok","timestamp":1688571629398,"user_tz":-210,"elapsed":363,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"b1aa8de1-0749-466c-8dd9-7a2dae7dcdeb"},"execution_count":38,"outputs":[{"output_type":"execute_result","data":{"text/plain":["adult 5\n","belongs_to_collection 1698\n","budget 1226\n","genres 4069\n","homepage 7673\n","id 45436\n","imdb_id 45417\n","original_language 92\n","original_title 43373\n","overview 44307\n","popularity 44176\n","poster_path 45024\n","production_companies 22708\n","production_countries 2393\n","release_date 17336\n","revenue 6863\n","runtime 353\n","spoken_languages 1931\n","status 6\n","tagline 20283\n","title 42277\n","video 2\n","vote_average 92\n","vote_count 1820\n","dtype: int64"]},"metadata":{},"execution_count":38}]},{"cell_type":"markdown","source":["Histogram of the dataset"],"metadata":{"id":"m7T_-wt1mFvu"}},{"cell_type":"code","source":["metadata.hist(bins=50, figsize=(10, 7))\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":622},"id":"rLGE24QNl17Y","executionInfo":{"status":"ok","timestamp":1688571633442,"user_tz":-210,"elapsed":1657,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"de36782e-7d6f-4664-f10f-36d695f7675c"},"execution_count":39,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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97/69ddfVa9ePUlXbgVy+vRppaWlKTw8XJK0ceNG5efnKyIiwuzz4osvKjc31/zjIDk5WXfccYdq165t9klJSdGoUaPM57r6liJFKY/7LzrjnmnX3r/x6mNXBFe879u1XD0HV49fIoeqoiJzsPI8lu9TBQCAKzt37pzS09OVnp4uSTp06JDS09N15MgRnTt3TmPGjNH27dt1+PBhpaSk6JFHHlGzZs3MVWlbtmypBx98UMOHD9fOnTv1xRdfKD4+XgMGDFD9+vUlSU888YS8vLw0bNgw7du3T8uWLdO8efMczjI9++yzWrdunWbNmqUDBw5o8uTJ2rVrF4syAYALoKgCAFRru3btUocOHdShQwdJV+6F2KFDB02cOFEeHh765ptv9Nvf/la33367hg0bpvDwcP3rX/9yOEP04YcfqkWLFurRo4ceeughde3a1eEeVAEBAdqwYYMOHTqk8PBw/elPf9LEiRMd7mV19913a8mSJXrnnXfUrl07ffTRR1q1apVat25dcS8GAKBMmP4HAKjWunfvLsMoerU6SVq/vujrg64WFBSkJUuWlNinbdu2+te//lVin379+qlfv37XfT4AQNXCmSoAAAAAsICiCgAAAAAsoKgCAAAAAAsoqgAAAADAAooqAAAAALCAogoAAAAALKCoAgAAAAALKKoAAAAAwAKKKgAAAACwgKIKAAAAACygqAIAAAAACyiqAAAAAMACiioAAAAAsICiCgAAAAAsoKgCAAAAAAsoqgAAAADAAooqAAAAALCAogoAAAAALKCoAgAAAAALKKoAAAAAwAKKKgAAAACwgKIKAAAAACyoUdkBAACA6qHJC2uK3XZ4RnQFRgIAzsWZKgAAAACwgKIKAAAAACygqAIAAAAACyiqAAAAAMACiioAAAAAsICiCgAAAAAsoKgCAAAAAAsoqgAAAADAAooqAAAAALCAogoAAAAALChVUTV9+nTdddddqlWrloKDgxUTE6ODBw869Ll06ZLi4uJUp04d+fv7q2/fvsrMzHToc+TIEUVHR8vPz0/BwcEaM2aMLl++7NBn8+bN6tixo7y9vdWsWTMtWrSoUDyJiYlq0qSJfHx8FBERoZ07d5YmHQAAAACwrFRF1ZYtWxQXF6ft27crOTlZubm56tWrl86fP2/2GT16tD799FOtWLFCW7Zs0dGjR9WnTx9ze15e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Z/3hD39Qo0aNtG3bNo0bN07Hjh3T3LlzHfZfuHChLl26pKefflre3t4KCgpSVlaW3nvvPT3++OMaPny4zp49q/fff192u107d+5U+/btJUn5+fl6+OGHtXPnTo0cOVItWrTQP/7xD8XGxhbKc9++fbrnnnt066236oUXXlDNmjW1fPlyxcTE6O9//7seffTRG3q9AABFc8Ux8Ny5c+rWrZu+/fZbPfnkk+rYsaN++eUXffLJJ/rvf/+runXr6uLFi+revbu+//57xcfHKywsTCtWrNCQIUN0+vRpPfvss2V6vfLy8mS32xUREaHXX39dn332mWbNmqWmTZtq5MiRuuWWW/TWW29p5MiRevTRR9WnTx9JUtu2bcv0fKhmDMDFPf7440ZwcLBx+fJls+3YsWOGu7u78dJLLxmGYRjt27c3goODjV9//dXs8/XXXxvu7u7G4MGDzbbXXnvNkGQcOnTI4TkOHz5seHh4GNOmTXNo37Nnj1GjRo1C7SW5dOmSkZeX59B26NAhw9vb24zXMAzj7bffNiQZe/bscejbqlUr44EHHjAfT5061ahZs6bx73//26HfCy+8YHh4eBhHjhwxn0OSYbPZjOPHjzv0vXz5spGdne3QdurUKSMkJMR48sknzba///3vhiRj7ty5ZlteXp7xwAMPGJKMhQsXmu09evQw2rRpY1y6dMlsy8/PN+6++26jefPmJb5GAIAb42pj4MSJEw1Jxscff1xoW35+vmEYhjF37lxDkvHBBx+Y23JycozIyEjD39/fyMrKMgzDMDZt2mRIMjZt2uRwnILx7uoxKTY21pDkMM4ahmF06NDBCA8PNx+fOHHCkGRMmjTphnMCDMMwmP4Hl9e/f38dP37c4fT/Rx99pPz8fPXv31/Hjh1Tenq6hgwZoqCgILNP27Zt1bNnT61du/a6z/Hxxx8rPz9fjz32mH755RfzX2hoqJo3b17kNLnieHt7y939ykcvLy9Pv/76q/z9/XXHHXfoq6++Mvv16dNHNWrU0LJly8y2vXv3av/+/erfv7/ZtmLFCnXr1k21a9d2iC0qKkp5eXnaunWrw/P37dvX/OaxgIeHh7y8vCRdORt18uRJXb58WZ06dXKIad26dfL09NTw4cPNNnd3d8XFxTkc7+TJk9q4caMee+wxnT171ozp119/ld1u13fffaeff/75hl8z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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["## Removing entries with numeric name of comopanies or countries"],"metadata":{"id":"uTNnaW8Jmr3U"}},{"cell_type":"code","source":["def is_string_number(string):\n"," try:\n"," float(string)\n"," return True\n"," except ValueError:\n"," return False"],"metadata":{"id":"-sB4JFQnmCxW","executionInfo":{"status":"ok","timestamp":1688571638129,"user_tz":-210,"elapsed":595,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":40,"outputs":[]},{"cell_type":"code","source":["for i in range(metadata.shape[0]):\n"," if is_string_number(metadata.loc[i, 'production_countries']) or is_string_number(metadata.loc[i, 'production_companies']):\n"," metadata.drop(index=i, inplace=True)\n","metadata.shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"7EZfyxccmqMQ","executionInfo":{"status":"ok","timestamp":1688571640517,"user_tz":-210,"elapsed":784,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"564f7e66-ea73-4755-cd9e-9e55e50707d4"},"execution_count":41,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(45460, 24)"]},"metadata":{},"execution_count":41}]},{"cell_type":"code","source":["metadata.drop_duplicates(inplace=True)\n","metadata.dropna(subset=['production_companies', 'production_countries'], inplace=True)"],"metadata":{"id":"vtrzBhjznD7p","executionInfo":{"status":"ok","timestamp":1688571642826,"user_tz":-210,"elapsed":363,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":42,"outputs":[]},{"cell_type":"code","source":["metadata = metadata.fillna(\"NaN value\")\n"],"metadata":{"id":"q7mDM3zAnlH_","executionInfo":{"status":"ok","timestamp":1688571644612,"user_tz":-210,"elapsed":398,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":43,"outputs":[]},{"cell_type":"markdown","source":["## Extracting information from json values"],"metadata":{"id":"J952IGoVrwJA"}},{"cell_type":"code","source":["def get_text_nan(text, obj=\"name\"):\n"," if(text == \"NaN value\"):\n"," return np.nan\n"," elif (isinstance(literal_eval(str(text)), float)):\n"," return np.nan\n"," else:\n"," text = literal_eval(str(text))\n"," for i in text:\n"," if(i == obj):\n"," return (text[i])"],"metadata":{"id":"C3ElqfyRrgK8","executionInfo":{"status":"ok","timestamp":1688571653225,"user_tz":-210,"elapsed":739,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":44,"outputs":[]},{"cell_type":"code","source":["def text_getter(text, obj='name'):\n"," if(text == 'NaN value'):\n"," return np.nan\n"," elif (isinstance(literal_eval(str(text)), float)):\n"," return np.nan\n"," elif(isinstance(literal_eval(str(text)), list)):\n"," s = []\n"," for i in text:\n"," s.append(str(i[obj]))\n"," return ', '.join(s)\n"," else:\n"," text = literal_eval(str(text))\n"," for i in text:\n"," if(i == obj):\n"," return (text[i])"],"metadata":{"id":"sPZP1mKRrhnY","executionInfo":{"status":"ok","timestamp":1688571654839,"user_tz":-210,"elapsed":6,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":45,"outputs":[]},{"cell_type":"markdown","source":["'belongs to collection' column"],"metadata":{"id":"kvoi_xr8sw5X"}},{"cell_type":"code","source":["metadata['name_belongs_to_collection'] = metadata['belongs_to_collection'].apply(get_text_nan ,obj = \"name\")\n","metadata['id_belongs_to_collection'] = metadata['belongs_to_collection'].apply(get_text_nan ,obj = \"id\")\n","metadata['poster_path_belongs_to_collection'] = metadata['belongs_to_collection'].apply(get_text_nan ,obj = \"poster_path\")\n","metadata['backdrop_path_belongs_to_collection'] = metadata['belongs_to_collection'].apply(get_text_nan ,obj = \"backdrop_path\")"],"metadata":{"id":"9-ZGGNdfsFKw","executionInfo":{"status":"ok","timestamp":1688571660522,"user_tz":-210,"elapsed":933,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":46,"outputs":[]},{"cell_type":"markdown","source":["'genres' column"],"metadata":{"id":"B-8-Qd9dtIcv"}},{"cell_type":"code","source":["metadata['name_genres'] = metadata['genres'].apply(get_text ,obj = \"name\")\n","metadata['id_genres'] = metadata['genres'].apply(get_text ,obj = \"id\")"],"metadata":{"id":"QJp5U6BGsu0Z","executionInfo":{"status":"ok","timestamp":1688571665947,"user_tz":-210,"elapsed":2373,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":47,"outputs":[]},{"cell_type":"markdown","source":["'production countries' column"],"metadata":{"id":"GLFk9tGQtM4_"}},{"cell_type":"code","source":["metadata['name_production_countries'] = metadata['production_countries'].apply(get_text ,obj = \"name\")\n","metadata['iso_3166_1_production_companies'] = metadata['production_countries'].apply(get_text ,obj = \"iso_3166_1\")"],"metadata":{"id":"viAxv4kGsvbD","executionInfo":{"status":"ok","timestamp":1688571671111,"user_tz":-210,"elapsed":1435,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":48,"outputs":[]},{"cell_type":"markdown","source":["'production companies' column"],"metadata":{"id":"VDodd_DPtbrz"}},{"cell_type":"code","source":["metadata['name_production_companies'] = metadata['production_companies'].apply(get_text ,obj = \"name\")\n","metadata['id_production_companies'] = metadata['production_companies'].apply(get_text ,obj = \"id\")\n"],"metadata":{"id":"9fyeJVlftaEU","executionInfo":{"status":"ok","timestamp":1688571676262,"user_tz":-210,"elapsed":1791,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":49,"outputs":[]},{"cell_type":"code","source":["metadata = metadata.replace('NaN value', np.nan)"],"metadata":{"id":"VkkYNztRuf42","executionInfo":{"status":"ok","timestamp":1688571907439,"user_tz":-210,"elapsed":579,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":52,"outputs":[]},{"cell_type":"markdown","source":["## Constructing the new dataframe and saving the new dataset"],"metadata":{"id":"8-Z-JMlCtlon"}},{"cell_type":"code","source":["clean_metadata = metadata.drop([\"spoken_languages\" ,\"genres\" ,\"production_countries\" ,\"belongs_to_collection\"] ,axis=1)\n","print('shape of the cleaned dataset: {}'.format(clean_metadata.shape))\n","clean_metadata.head(3)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":532},"id":"zveKnpTPtfiA","executionInfo":{"status":"ok","timestamp":1688571914195,"user_tz":-210,"elapsed":578,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}},"outputId":"8b7df7c5-f07e-418b-9dfe-de0f92557bb3"},"execution_count":53,"outputs":[{"output_type":"stream","name":"stdout","text":["shape of the cleaned dataset: (45447, 30)\n"]},{"output_type":"execute_result","data":{"text/plain":[" adult budget homepage id imdb_id \\\n","0 False 30000000 http://toystory.disney.com/toy-story 862 tt0114709 \n","1 False 65000000 NaN 8844 tt0113497 \n","2 False 0 NaN 15602 tt0113228 \n","\n"," original_language original_title \\\n","0 en Toy Story \n","1 en Jumanji \n","2 en Grumpier Old Men \n","\n"," overview popularity \\\n","0 Led by Woody, Andy's toys live happily in his ... 21.946943 \n","1 When siblings Judy and Peter discover an encha... 17.015539 \n","2 A family wedding reignites the ancient feud be... 11.7129 \n","\n"," poster_path ... name_belongs_to_collection \\\n","0 /rhIRbceoE9lR4veEXuwCC2wARtG.jpg ... Toy Story Collection \n","1 /vzmL6fP7aPKNKPRTFnZmiUfciyV.jpg ... NaN \n","2 /6ksm1sjKMFLbO7UY2i6G1ju9SML.jpg ... Grumpy Old Men Collection \n","\n"," id_belongs_to_collection poster_path_belongs_to_collection \\\n","0 10194.0 /7G9915LfUQ2lVfwMEEhDsn3kT4B.jpg \n","1 NaN NaN \n","2 119050.0 /nLvUdqgPgm3F85NMCii9gVFUcet.jpg \n","\n"," backdrop_path_belongs_to_collection name_genres \\\n","0 /9FBwqcd9IRruEDUrTdcaafOMKUq.jpg Animation, Comedy, Family \n","1 NaN Adventure, Fantasy, Family \n","2 /hypTnLot2z8wpFS7qwsQHW1uV8u.jpg Romance, Comedy \n","\n"," id_genres name_production_countries iso_3166_1_production_companies \\\n","0 16, 35, 10751 United States of America US \n","1 12, 14, 10751 United States of America US \n","2 10749, 35 United States of America US \n","\n"," name_production_companies id_production_companies \n","0 Pixar Animation Studios 3 \n","1 TriStar Pictures, Teitler Film, Interscope Com... 559, 2550, 10201 \n","2 Warner Bros., Lancaster Gate 6194, 19464 \n","\n","[3 rows x 30 columns]"],"text/html":["\n","
\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
adultbudgethomepageidimdb_idoriginal_languageoriginal_titleoverviewpopularityposter_path...name_belongs_to_collectionid_belongs_to_collectionposter_path_belongs_to_collectionbackdrop_path_belongs_to_collectionname_genresid_genresname_production_countriesiso_3166_1_production_companiesname_production_companiesid_production_companies
0False30000000http://toystory.disney.com/toy-story862tt0114709enToy StoryLed by Woody, Andy's toys live happily in his ...21.946943/rhIRbceoE9lR4veEXuwCC2wARtG.jpg...Toy Story Collection10194.0/7G9915LfUQ2lVfwMEEhDsn3kT4B.jpg/9FBwqcd9IRruEDUrTdcaafOMKUq.jpgAnimation, Comedy, Family16, 35, 10751United States of AmericaUSPixar Animation Studios3
1False65000000NaN8844tt0113497enJumanjiWhen siblings Judy and Peter discover an encha...17.015539/vzmL6fP7aPKNKPRTFnZmiUfciyV.jpg...NaNNaNNaNNaNAdventure, Fantasy, Family12, 14, 10751United States of AmericaUSTriStar Pictures, Teitler Film, Interscope Com...559, 2550, 10201
2False0NaN15602tt0113228enGrumpier Old MenA family wedding reignites the ancient feud be...11.7129/6ksm1sjKMFLbO7UY2i6G1ju9SML.jpg...Grumpy Old Men Collection119050.0/nLvUdqgPgm3F85NMCii9gVFUcet.jpg/hypTnLot2z8wpFS7qwsQHW1uV8u.jpgRomance, Comedy10749, 35United States of AmericaUSWarner Bros., Lancaster Gate6194, 19464
\n","

3 rows × 30 columns

\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":53}]},{"cell_type":"code","source":["clean_metadata.to_csv('/content/drive/MyDrive/Rec/data/cleaned/clean_metadata.csv', index=False)"],"metadata":{"id":"bFZ03yWWuFTO","executionInfo":{"status":"ok","timestamp":1688571930421,"user_tz":-210,"elapsed":1566,"user":{"displayName":"Amir Hossein Karami","userId":"12632705231641967217"}}},"execution_count":54,"outputs":[]},{"cell_type":"code","source":[],"metadata":{"id":"LiikvR3euR2Z"},"execution_count":null,"outputs":[]}]}