{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# IMDB | IST 652 FINAL PROJECT | ALI HO & KENDRA OSBURN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# =======================================================\n",
    "# PART 1: COMPARISON to R\n",
    "# ======================================================="
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Ali and Kendra Final Project \n",
    "\n",
    "#importing pandas, csv, \n",
    "import csv \n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import statistics\n",
    "#To create testing and training dfs and labels \n",
    "from sklearn.model_selection import train_test_split \n",
    "#To get a count or tally of a category in our df \n",
    "from collections import Counter\n",
    "# To model the Gaussian Navie Bayes classifier\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "# To calculate the accuracy score of the model\n",
    "from sklearn.metrics import accuracy_score\n",
    "#confusion matrix \n",
    "from sklearn.metrics import confusion_matrix, classification_report\n",
    "#for pre-processing to fit all numeric data on the standard scale \n",
    "from sklearn.preprocessing import StandardScaler\n",
    "#for applying PCA function on training and testing sets \n",
    "from sklearn.decomposition import PCA\n",
    "#logistic regression \n",
    "from sklearn.linear_model import LogisticRegression\n",
    "#SVMs \n",
    "from sklearn.svm import SVC\n",
    "#For association rule mining \n",
    "from apyori import apriori\n",
    "#This will allow us to silence the warnings\n",
    "import warnings \n",
    "warnings.simplefilter(\"ignore\")\n",
    "#For the confusion matrix \n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Functions that we are going to use in our file: \n",
    "\n",
    "#Creating a function that will discretize our columns based on quartiles \n",
    "def quartile_discretize(df, column, categories): \n",
    "    df[column] = pd.qcut(df[column], 4, labels = categories)\n",
    "    return(df[column])\n",
    "\n",
    "#Creating a function that will merge our dfs with a left join\n",
    "def left_merge_2_conditions(df1, df2, column1, column2):\n",
    "    df = pd.merge(df1, df2, how = \"left\", on=[column1, column2])\n",
    "    return(df)\n",
    "\n",
    "#Creating a function that groups by, counts, creates a new column from the index, drops the index and changes the column names\n",
    "def groupby_count(df, groupby_column, count_column): \n",
    "    new_df = pd.DataFrame(df.groupby(groupby_column)[count_column].count())\n",
    "    new_df.columns = [\"count\"]\n",
    "    new_df[groupby_column] = new_df.index.get_level_values(0)\n",
    "    new_df.reset_index(drop = True, inplace = True)\n",
    "    return(new_df)\n",
    "\n",
    "#Creating a function that groups by, counts, creates a new column from the index, drops the index and changes the column names\n",
    "def groupby_2_count(df, groupby_column1, groupby_column2, count_column): \n",
    "    new_df = pd.DataFrame(df.groupby([groupby_column1, groupby_column2 ])[count_column].count())\n",
    "    new_df.columns = [\"count\"]\n",
    "    new_df[groupby_column1] = new_df.index.get_level_values(0)\n",
    "    new_df[groupby_column2] = new_df.index.get_level_values(1)\n",
    "    new_df.reset_index(drop = True, inplace = True)\n",
    "    return(new_df)\n",
    "\n",
    "#This will calculate the exponential moving average of the columns we want\n",
    "#exponential moving averages give more weight to the most recent data and less weight to older data \n",
    "def exp_moving_avg(d):\n",
    "    d[\"exp_moving_avg\"] = d[\"score\"].ewm(span=40,adjust=False).mean()\n",
    "    exp_moving_avg = list(d[\"exp_moving_avg\"])\n",
    "    #Adding a 0 to the first entry to exp_moving_avg\n",
    "    exp_moving_avg = [0] + exp_moving_avg\n",
    "    #Removing the last entry in the list \n",
    "    exp_moving_avg.pop()\n",
    "    #Creating a column named exp_moving_avg with the results \n",
    "    d[\"exp_moving_avg\"] = exp_moving_avg\n",
    "    return(exp_moving_avg)\n",
    "\n",
    "#This will calculate the cumulative moving average\n",
    "def cumulative_moving_avg(d): \n",
    "    d[\"moving_avg\"] = d.expanding(min_periods = 1).mean()\n",
    "    moving_avg = list(d[\"moving_avg\"])\n",
    "    #Adding a 0 to the first entry to moving avg\n",
    "    cumulative_moving_avg = [0] + moving_avg\n",
    "    #Removing the last entry in the list \n",
    "    cumulative_moving_avg.pop()\n",
    "    return(cumulative_moving_avg)\n",
    "\n",
    "#This will get the list of all of the entries in the column that we are interested in for calculating the averages\n",
    "def getting_list_of_entries(df, column_interested_in): \n",
    "    avg_people = pd.DataFrame(df.groupby([column_interested_in, \"released\"])[\"score\"].mean())\n",
    "    avg_column_scores = pd.DataFrame()\n",
    "    column_interested = list(df[column_interested_in].unique())\n",
    "    return([avg_people, column_interested])\n",
    "\n",
    "# Going to use matplotlib for plotting... \n",
    "# To create a plot we followed the following formula: \n",
    "# df.plot(x-axis, y-axis, kind = type of plot, color = [(we specified colors to use here)], legend = False (we did not \n",
    "# want a legend displayed), title = \"Title\") then we added a ylabel with plt.ylabel(\"Type label here\") and an x label \n",
    "# with plt.xlabel(\"type label here\"). Finally, we wanted to change the direction of the xtick names from a 90 degree angle \n",
    "# to no angle with plt.xticks(rotation = rotation angle desired)\n",
    "def bar_graph_count(df, x_column, y_column, title):\n",
    "    g = df.plot(x_column, y_column, kind = \"bar\", legend = False, title = title)\n",
    "    g = plt.ylabel(y_column)\n",
    "    g = plt.xlabel(x_column)\n",
    "    return(g)\n",
    "\n",
    "#This will make a df for our moving averages that we are calculating \n",
    "def making_df(people_df, column_interested_in, released, person, cumulative_avg, exp_avg): \n",
    "    df_2 = pd.DataFrame({column_interested_in: person, \"released\": released, \"cumulative_mean\": cumulative_avg, \"exp_mean\": exp_avg})\n",
    "    return(df_2)\n",
    "\n",
    "#This includes the functions above, and will calculate the exponential and cumulative moving averages for which ever \n",
    "#column we specify and return a df will the column interested in, released, cumulative_mean, exp_mean\n",
    "def calculating_moving_avg(df, column_interested_in):\n",
    "    people_df = pd.DataFrame()\n",
    "    people = getting_list_of_entries(df, column_interested_in)\n",
    "    cumulative_avg = []\n",
    "    avg_people = people[0]\n",
    "    avg_people\n",
    "    for person in people[1]: \n",
    "        d = avg_people.groupby(column_interested_in).get_group(person)\n",
    "        cumulative_avg = cumulative_moving_avg(d)\n",
    "        exp_avg = exp_moving_avg(d)\n",
    "        d.reset_index(inplace = True)\n",
    "        released = d[\"released\"]\n",
    "        df = pd.DataFrame({column_interested_in: person, \"released\": released, \"cumulative_mean_\"+column_interested_in : cumulative_avg, \"exp_mean_\"+column_interested_in: exp_avg})\n",
    "        people_df = people_df.append(df)\n",
    "    return(people_df)\n",
    "\n",
    "#Confusion Matrix Graph Function \n",
    "def confusion_matrix_graph (cm, accuracy_label, type_of_df): \n",
    "    g = plt.figure(figsize=(2,2))\n",
    "    g = sns.heatmap(cm, annot=True, fmt=\".3f\", linewidths=.5, square = True, cmap = 'Blues_r', cbar = False);\n",
    "    g = plt.ylabel('Actual');\n",
    "    g = plt.xlabel('Predicted');\n",
    "    g = all_sample_title = type_of_df +' Accuracy Score: {0}'.format(round(accuracy_label, 4))\n",
    "    g = plt.title(all_sample_title, size = 12);\n",
    "    return(g)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#reading in the movies.csv file from Kaggle \n",
    "movies = pd.read_csv(\"movies.csv\", encoding = \"ISO-8859-1\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6820"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(movies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>budget</th>\n",
       "      <th>company</th>\n",
       "      <th>country</th>\n",
       "      <th>director</th>\n",
       "      <th>genre</th>\n",
       "      <th>gross</th>\n",
       "      <th>name</th>\n",
       "      <th>rating</th>\n",
       "      <th>released</th>\n",
       "      <th>runtime</th>\n",
       "      <th>score</th>\n",
       "      <th>star</th>\n",
       "      <th>votes</th>\n",
       "      <th>writer</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8000000</td>\n",
       "      <td>Columbia Pictures Corporation</td>\n",
       "      <td>USA</td>\n",
       "      <td>Rob Reiner</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>52287414</td>\n",
       "      <td>Stand by Me</td>\n",
       "      <td>R</td>\n",
       "      <td>8/22/1986</td>\n",
       "      <td>89</td>\n",
       "      <td>8.1</td>\n",
       "      <td>Wil Wheaton</td>\n",
       "      <td>299174</td>\n",
       "      <td>Stephen King</td>\n",
       "      <td>1986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>70136369</td>\n",
       "      <td>Ferris Bueller's Day Off</td>\n",
       "      <td>PG-13</td>\n",
       "      <td>6/11/1986</td>\n",
       "      <td>103</td>\n",
       "      <td>7.8</td>\n",
       "      <td>Matthew Broderick</td>\n",
       "      <td>264740</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>1986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Tony Scott</td>\n",
       "      <td>Action</td>\n",
       "      <td>179800601</td>\n",
       "      <td>Top Gun</td>\n",
       "      <td>PG</td>\n",
       "      <td>5/16/1986</td>\n",
       "      <td>110</td>\n",
       "      <td>6.9</td>\n",
       "      <td>Tom Cruise</td>\n",
       "      <td>236909</td>\n",
       "      <td>Jim Cash</td>\n",
       "      <td>1986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18500000</td>\n",
       "      <td>Twentieth Century Fox Film Corporation</td>\n",
       "      <td>USA</td>\n",
       "      <td>James Cameron</td>\n",
       "      <td>Action</td>\n",
       "      <td>85160248</td>\n",
       "      <td>Aliens</td>\n",
       "      <td>R</td>\n",
       "      <td>7/18/1986</td>\n",
       "      <td>137</td>\n",
       "      <td>8.4</td>\n",
       "      <td>Sigourney Weaver</td>\n",
       "      <td>540152</td>\n",
       "      <td>James Cameron</td>\n",
       "      <td>1986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9000000</td>\n",
       "      <td>Walt Disney Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Randal Kleiser</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>18564613</td>\n",
       "      <td>Flight of the Navigator</td>\n",
       "      <td>PG</td>\n",
       "      <td>8/1/1986</td>\n",
       "      <td>90</td>\n",
       "      <td>6.9</td>\n",
       "      <td>Joey Cramer</td>\n",
       "      <td>36636</td>\n",
       "      <td>Mark H. Baker</td>\n",
       "      <td>1986</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     budget                                 company country        director  \\\n",
       "0   8000000           Columbia Pictures Corporation     USA      Rob Reiner   \n",
       "1   6000000                      Paramount Pictures     USA     John Hughes   \n",
       "2  15000000                      Paramount Pictures     USA      Tony Scott   \n",
       "3  18500000  Twentieth Century Fox Film Corporation     USA   James Cameron   \n",
       "4   9000000                    Walt Disney Pictures     USA  Randal Kleiser   \n",
       "\n",
       "       genre      gross                      name rating   released  runtime  \\\n",
       "0  Adventure   52287414               Stand by Me      R  8/22/1986       89   \n",
       "1     Comedy   70136369  Ferris Bueller's Day Off  PG-13  6/11/1986      103   \n",
       "2     Action  179800601                   Top Gun     PG  5/16/1986      110   \n",
       "3     Action   85160248                    Aliens      R  7/18/1986      137   \n",
       "4  Adventure   18564613   Flight of the Navigator     PG   8/1/1986       90   \n",
       "\n",
       "   score               star   votes         writer  year  \n",
       "0    8.1        Wil Wheaton  299174   Stephen King  1986  \n",
       "1    7.8  Matthew Broderick  264740    John Hughes  1986  \n",
       "2    6.9         Tom Cruise  236909       Jim Cash  1986  \n",
       "3    8.4   Sigourney Weaver  540152  James Cameron  1986  \n",
       "4    6.9        Joey Cramer   36636  Mark H. Baker  1986  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Looking at the head of the dataframe \n",
    "movies.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6820, 15)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting the shape of the df \n",
    "movies.shape\n",
    "#We currently have 6,820 rows and 15 columns "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "budget      0\n",
       "company     0\n",
       "country     0\n",
       "director    0\n",
       "genre       0\n",
       "gross       0\n",
       "name        0\n",
       "rating      0\n",
       "released    0\n",
       "runtime     0\n",
       "score       0\n",
       "star        0\n",
       "votes       0\n",
       "writer      0\n",
       "year        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to see if we have any missing values... It shows that we do not. \n",
    "movies.isnull().sum()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# If we had missing values we would do the following\n",
    "#We are dropping those rows with the following code\n",
    "#movies.dropna(inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4638"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#We are removing any movie that has a budget of 0, because for our machine learning, we will want to predict profit. \n",
    "# movies in our df that do not contain gross or budget will not be useful for this. \n",
    "movies = movies[movies[\"budget\"] != 0]\n",
    "#We are removing any movie with a gross of 0 \n",
    "movies = movies[movies[\"gross\"] != 0]\n",
    "# movies = movies[movies[\"production_companies\"] != \"[]\"]\n",
    "# movies = movies[movies[\"genres\"] !=  \"[]\"]\n",
    "len(movies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "budget        int64\n",
       "company      object\n",
       "country      object\n",
       "director     object\n",
       "genre        object\n",
       "gross         int64\n",
       "name         object\n",
       "rating       object\n",
       "released     object\n",
       "runtime       int64\n",
       "score       float64\n",
       "star         object\n",
       "votes         int64\n",
       "writer       object\n",
       "year          int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking data types of the columns \n",
    "movies.dtypes\n",
    "#Once we are done cleaning the data we are going to change the data types of: company, director, genre, rating, released\n",
    "#star, writer, and potentially year. If we change them now, when we clean the df and removed rows, the old categories \n",
    "#remain, and still show as possible categories. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Need to change the following to date \n",
    "    #released,year\n",
    "movies[\"released\"] = pd.to_datetime(movies[\"released\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Separating the month, day and year into their own columns in case we would like to analyze based on month, day or year\n",
    "movies[\"month\"], movies[\"day\"] = movies[\"released\"].dt.month, movies[\"released\"].dt.day"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "budget               int64\n",
       "company             object\n",
       "country             object\n",
       "director            object\n",
       "genre               object\n",
       "gross                int64\n",
       "name                object\n",
       "rating              object\n",
       "released    datetime64[ns]\n",
       "runtime              int64\n",
       "score              float64\n",
       "star                object\n",
       "votes                int64\n",
       "writer              object\n",
       "year                 int64\n",
       "month                int64\n",
       "day                  int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking the data types of the columns and making sure the new columns were added \n",
    "movies.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat = list(range(1,13))\n",
    "#Changing the month data type from int to ordered category \n",
    "movies[\"month\"] = pd.Categorical(movies[\"month\"], ordered = True, categories = cat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], ordered=True)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Making sure it shows as an ordered factor \n",
    "movies.month.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "budget               int64\n",
       "company             object\n",
       "country             object\n",
       "director            object\n",
       "genre               object\n",
       "gross                int64\n",
       "name                object\n",
       "rating              object\n",
       "released    datetime64[ns]\n",
       "runtime              int64\n",
       "score              float64\n",
       "star                object\n",
       "votes                int64\n",
       "writer              object\n",
       "year                 int64\n",
       "month             category\n",
       "day                  int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['R', 'PG-13', 'PG', 'UNRATED', 'G', 'NC-17', 'NOT RATED',\n",
       "       'Not specified'], dtype=object)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting a list of a the different ratings in our df \n",
    "movies[\"rating\"].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "#UNRATED, not specified AND NOT RATED mean the same thing, therefore we are going to change all not rated, not specified entries to unrated \n",
    "movies[\"rating\"] = movies[\"rating\"].replace([\"NOT RATED\", \"Not specified\"], \"UNRATED\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['R', 'PG-13', 'PG', 'UNRATED', 'G', 'NC-17'], dtype=object)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to make sure that worked: \n",
    "movies[\"rating\"].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Changing rating to an ordered factor\n",
    "#Creating the order that we would like for the ordered factor\n",
    "cat = [\"UNRATED\", \"G\", \"PG\", \"PG-13\", \"R\", \"NC-17\"]\n",
    "#Changing to ordered factor \n",
    "movies[\"rating\"] = pd.Categorical(movies[\"rating\"], ordered = True, categories = cat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['UNRATED', 'G', 'PG', 'PG-13', 'R', 'NC-17'], ordered=True)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to see if it worked \n",
    "movies.rating.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We want to be able to look at the profit for each movie... Therefore we are creating a \n",
    "#profit column which is gross - budget \n",
    "\n",
    "movies[\"profit\"] = movies[\"gross\"] - movies[\"budget\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating a percent profit column to have a normalized way to compare profits. \n",
    "#percent_profit = profit/budget*100 \n",
    "movies[\"percent_profit\"] = movies[\"profit\"]/movies[\"budget\"]*100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>budget</th>\n",
       "      <th>company</th>\n",
       "      <th>country</th>\n",
       "      <th>director</th>\n",
       "      <th>genre</th>\n",
       "      <th>gross</th>\n",
       "      <th>name</th>\n",
       "      <th>rating</th>\n",
       "      <th>released</th>\n",
       "      <th>runtime</th>\n",
       "      <th>score</th>\n",
       "      <th>star</th>\n",
       "      <th>votes</th>\n",
       "      <th>writer</th>\n",
       "      <th>year</th>\n",
       "      <th>month</th>\n",
       "      <th>day</th>\n",
       "      <th>profit</th>\n",
       "      <th>percent_profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8000000</td>\n",
       "      <td>Columbia Pictures Corporation</td>\n",
       "      <td>USA</td>\n",
       "      <td>Rob Reiner</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>52287414</td>\n",
       "      <td>Stand by Me</td>\n",
       "      <td>R</td>\n",
       "      <td>1986-08-22</td>\n",
       "      <td>89</td>\n",
       "      <td>8.1</td>\n",
       "      <td>Wil Wheaton</td>\n",
       "      <td>299174</td>\n",
       "      <td>Stephen King</td>\n",
       "      <td>1986</td>\n",
       "      <td>8</td>\n",
       "      <td>22</td>\n",
       "      <td>44287414</td>\n",
       "      <td>553.592675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>70136369</td>\n",
       "      <td>Ferris Bueller's Day Off</td>\n",
       "      <td>PG-13</td>\n",
       "      <td>1986-06-11</td>\n",
       "      <td>103</td>\n",
       "      <td>7.8</td>\n",
       "      <td>Matthew Broderick</td>\n",
       "      <td>264740</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>1986</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>64136369</td>\n",
       "      <td>1068.939483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Tony Scott</td>\n",
       "      <td>Action</td>\n",
       "      <td>179800601</td>\n",
       "      <td>Top Gun</td>\n",
       "      <td>PG</td>\n",
       "      <td>1986-05-16</td>\n",
       "      <td>110</td>\n",
       "      <td>6.9</td>\n",
       "      <td>Tom Cruise</td>\n",
       "      <td>236909</td>\n",
       "      <td>Jim Cash</td>\n",
       "      <td>1986</td>\n",
       "      <td>5</td>\n",
       "      <td>16</td>\n",
       "      <td>164800601</td>\n",
       "      <td>1098.670673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18500000</td>\n",
       "      <td>Twentieth Century Fox Film Corporation</td>\n",
       "      <td>USA</td>\n",
       "      <td>James Cameron</td>\n",
       "      <td>Action</td>\n",
       "      <td>85160248</td>\n",
       "      <td>Aliens</td>\n",
       "      <td>R</td>\n",
       "      <td>1986-07-18</td>\n",
       "      <td>137</td>\n",
       "      <td>8.4</td>\n",
       "      <td>Sigourney Weaver</td>\n",
       "      <td>540152</td>\n",
       "      <td>James Cameron</td>\n",
       "      <td>1986</td>\n",
       "      <td>7</td>\n",
       "      <td>18</td>\n",
       "      <td>66660248</td>\n",
       "      <td>360.325665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9000000</td>\n",
       "      <td>Walt Disney Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Randal Kleiser</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>18564613</td>\n",
       "      <td>Flight of the Navigator</td>\n",
       "      <td>PG</td>\n",
       "      <td>1986-08-01</td>\n",
       "      <td>90</td>\n",
       "      <td>6.9</td>\n",
       "      <td>Joey Cramer</td>\n",
       "      <td>36636</td>\n",
       "      <td>Mark H. Baker</td>\n",
       "      <td>1986</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>9564613</td>\n",
       "      <td>106.273478</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     budget                                 company country        director  \\\n",
       "0   8000000           Columbia Pictures Corporation     USA      Rob Reiner   \n",
       "1   6000000                      Paramount Pictures     USA     John Hughes   \n",
       "2  15000000                      Paramount Pictures     USA      Tony Scott   \n",
       "3  18500000  Twentieth Century Fox Film Corporation     USA   James Cameron   \n",
       "4   9000000                    Walt Disney Pictures     USA  Randal Kleiser   \n",
       "\n",
       "       genre      gross                      name rating   released  runtime  \\\n",
       "0  Adventure   52287414               Stand by Me      R 1986-08-22       89   \n",
       "1     Comedy   70136369  Ferris Bueller's Day Off  PG-13 1986-06-11      103   \n",
       "2     Action  179800601                   Top Gun     PG 1986-05-16      110   \n",
       "3     Action   85160248                    Aliens      R 1986-07-18      137   \n",
       "4  Adventure   18564613   Flight of the Navigator     PG 1986-08-01       90   \n",
       "\n",
       "   score               star   votes         writer  year month  day  \\\n",
       "0    8.1        Wil Wheaton  299174   Stephen King  1986     8   22   \n",
       "1    7.8  Matthew Broderick  264740    John Hughes  1986     6   11   \n",
       "2    6.9         Tom Cruise  236909       Jim Cash  1986     5   16   \n",
       "3    8.4   Sigourney Weaver  540152  James Cameron  1986     7   18   \n",
       "4    6.9        Joey Cramer   36636  Mark H. Baker  1986     8    1   \n",
       "\n",
       "      profit  percent_profit  \n",
       "0   44287414      553.592675  \n",
       "1   64136369     1068.939483  \n",
       "2  164800601     1098.670673  \n",
       "3   66660248      360.325665  \n",
       "4    9564613      106.273478  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Directors\n",
    "#Aggregating a moving average column and calculating the mean average imdb score for each actor; by calculating the \n",
    "#mean imdb scores for all actors but for only the movies prior to the movie we are calculting the mean for. \n",
    "directors_avg = calculating_moving_avg(movies, \"director\")\n",
    "#Writers: \n",
    "writers_avg = calculating_moving_avg(movies, \"writer\")\n",
    "#actors: \n",
    "stars_avg = calculating_moving_avg(movies, \"star\")\n",
    "#company: \n",
    "companies_avg = calculating_moving_avg(movies, \"company\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We are going to use our left_merge_2_conditions function: \n",
    "#Inputs: df1, df2, column to merge on 1 and column to merge on 2 \n",
    "movies = left_merge_2_conditions(movies, directors_avg, \"director\", \"released\")\n",
    "movies = left_merge_2_conditions(movies, writers_avg, \"writer\", \"released\")\n",
    "movies = left_merge_2_conditions(movies, stars_avg, \"star\", \"released\")\n",
    "movies = left_merge_2_conditions(movies, companies_avg, \"company\", \"released\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>budget</th>\n",
       "      <th>company</th>\n",
       "      <th>country</th>\n",
       "      <th>director</th>\n",
       "      <th>genre</th>\n",
       "      <th>gross</th>\n",
       "      <th>name</th>\n",
       "      <th>rating</th>\n",
       "      <th>released</th>\n",
       "      <th>runtime</th>\n",
       "      <th>...</th>\n",
       "      <th>profit</th>\n",
       "      <th>percent_profit</th>\n",
       "      <th>cumulative_mean_director</th>\n",
       "      <th>exp_mean_director</th>\n",
       "      <th>cumulative_mean_writer</th>\n",
       "      <th>exp_mean_writer</th>\n",
       "      <th>cumulative_mean_star</th>\n",
       "      <th>exp_mean_star</th>\n",
       "      <th>cumulative_mean_company</th>\n",
       "      <th>exp_mean_company</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8000000</td>\n",
       "      <td>Columbia Pictures Corporation</td>\n",
       "      <td>USA</td>\n",
       "      <td>Rob Reiner</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>52287414</td>\n",
       "      <td>Stand by Me</td>\n",
       "      <td>R</td>\n",
       "      <td>1986-08-22</td>\n",
       "      <td>89</td>\n",
       "      <td>...</td>\n",
       "      <td>44287414</td>\n",
       "      <td>553.592675</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.4</td>\n",
       "      <td>5.4</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.95</td>\n",
       "      <td>6.265854</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>70136369</td>\n",
       "      <td>Ferris Bueller's Day Off</td>\n",
       "      <td>PG-13</td>\n",
       "      <td>1986-06-11</td>\n",
       "      <td>103</td>\n",
       "      <td>...</td>\n",
       "      <td>64136369</td>\n",
       "      <td>1068.939483</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.8</td>\n",
       "      <td>6.8</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.10</td>\n",
       "      <td>6.641843</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Tony Scott</td>\n",
       "      <td>Action</td>\n",
       "      <td>179800601</td>\n",
       "      <td>Top Gun</td>\n",
       "      <td>PG</td>\n",
       "      <td>1986-05-16</td>\n",
       "      <td>110</td>\n",
       "      <td>...</td>\n",
       "      <td>164800601</td>\n",
       "      <td>1098.670673</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.90</td>\n",
       "      <td>6.628604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18500000</td>\n",
       "      <td>Twentieth Century Fox Film Corporation</td>\n",
       "      <td>USA</td>\n",
       "      <td>James Cameron</td>\n",
       "      <td>Action</td>\n",
       "      <td>85160248</td>\n",
       "      <td>Aliens</td>\n",
       "      <td>R</td>\n",
       "      <td>1986-07-18</td>\n",
       "      <td>137</td>\n",
       "      <td>...</td>\n",
       "      <td>66660248</td>\n",
       "      <td>360.325665</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.05</td>\n",
       "      <td>6.824390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9000000</td>\n",
       "      <td>Walt Disney Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Randal Kleiser</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>18564613</td>\n",
       "      <td>Flight of the Navigator</td>\n",
       "      <td>PG</td>\n",
       "      <td>1986-08-01</td>\n",
       "      <td>90</td>\n",
       "      <td>...</td>\n",
       "      <td>9564613</td>\n",
       "      <td>106.273478</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.20</td>\n",
       "      <td>7.200000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     budget                                 company country        director  \\\n",
       "0   8000000           Columbia Pictures Corporation     USA      Rob Reiner   \n",
       "1   6000000                      Paramount Pictures     USA     John Hughes   \n",
       "2  15000000                      Paramount Pictures     USA      Tony Scott   \n",
       "3  18500000  Twentieth Century Fox Film Corporation     USA   James Cameron   \n",
       "4   9000000                    Walt Disney Pictures     USA  Randal Kleiser   \n",
       "\n",
       "       genre      gross                      name rating   released  runtime  \\\n",
       "0  Adventure   52287414               Stand by Me      R 1986-08-22       89   \n",
       "1     Comedy   70136369  Ferris Bueller's Day Off  PG-13 1986-06-11      103   \n",
       "2     Action  179800601                   Top Gun     PG 1986-05-16      110   \n",
       "3     Action   85160248                    Aliens      R 1986-07-18      137   \n",
       "4  Adventure   18564613   Flight of the Navigator     PG 1986-08-01       90   \n",
       "\n",
       "   ...     profit percent_profit  cumulative_mean_director exp_mean_director  \\\n",
       "0  ...   44287414     553.592675                       0.0               0.0   \n",
       "1  ...   64136369    1068.939483                       0.0               0.0   \n",
       "2  ...  164800601    1098.670673                       0.0               0.0   \n",
       "3  ...   66660248     360.325665                       0.0               0.0   \n",
       "4  ...    9564613     106.273478                       0.0               0.0   \n",
       "\n",
       "   cumulative_mean_writer exp_mean_writer  cumulative_mean_star  \\\n",
       "0                     5.4             5.4                   0.0   \n",
       "1                     6.8             6.8                   0.0   \n",
       "2                     0.0             0.0                   0.0   \n",
       "3                     0.0             0.0                   0.0   \n",
       "4                     0.0             0.0                   0.0   \n",
       "\n",
       "   exp_mean_star  cumulative_mean_company  exp_mean_company  \n",
       "0            0.0                     5.95          6.265854  \n",
       "1            0.0                     6.10          6.641843  \n",
       "2            0.0                     5.90          6.628604  \n",
       "3            0.0                     7.05          6.824390  \n",
       "4            0.0                     7.20          7.200000  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Looking to see what happens if we remove all the movies with a 0 for exp_mean_director and exp_mean_star\n",
    "movies = movies[movies[\"exp_mean_director\"] != 0]\n",
    "movies = movies[movies[\"exp_mean_star\"] != 0]\n",
    "movies = movies[movies[\"exp_mean_writer\"] != 0]\n",
    "movies = movies[movies[\"exp_mean_company\"] != 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "883"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(movies) #We still have 883 movies in our df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>budget</th>\n",
       "      <th>company</th>\n",
       "      <th>country</th>\n",
       "      <th>director</th>\n",
       "      <th>genre</th>\n",
       "      <th>gross</th>\n",
       "      <th>name</th>\n",
       "      <th>rating</th>\n",
       "      <th>released</th>\n",
       "      <th>runtime</th>\n",
       "      <th>...</th>\n",
       "      <th>profit</th>\n",
       "      <th>percent_profit</th>\n",
       "      <th>cumulative_mean_director</th>\n",
       "      <th>exp_mean_director</th>\n",
       "      <th>cumulative_mean_writer</th>\n",
       "      <th>exp_mean_writer</th>\n",
       "      <th>cumulative_mean_star</th>\n",
       "      <th>exp_mean_star</th>\n",
       "      <th>cumulative_mean_company</th>\n",
       "      <th>exp_mean_company</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>30000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>49530280</td>\n",
       "      <td>Planes, Trains &amp; Automobiles</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-11-25</td>\n",
       "      <td>93</td>\n",
       "      <td>...</td>\n",
       "      <td>19530280</td>\n",
       "      <td>65.100933</td>\n",
       "      <td>7.8</td>\n",
       "      <td>7.8</td>\n",
       "      <td>7.3</td>\n",
       "      <td>6.84878</td>\n",
       "      <td>6.5</td>\n",
       "      <td>6.409756</td>\n",
       "      <td>6.428571</td>\n",
       "      <td>6.633831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>116</th>\n",
       "      <td>28000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Tony Scott</td>\n",
       "      <td>Action</td>\n",
       "      <td>153665000</td>\n",
       "      <td>Beverly Hills Cop II</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-05-20</td>\n",
       "      <td>100</td>\n",
       "      <td>...</td>\n",
       "      <td>125665000</td>\n",
       "      <td>448.803571</td>\n",
       "      <td>6.9</td>\n",
       "      <td>6.9</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.20000</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.900000</td>\n",
       "      <td>6.245455</td>\n",
       "      <td>6.557347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>16000000</td>\n",
       "      <td>Orion Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Woody Allen</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>14792779</td>\n",
       "      <td>Radio Days</td>\n",
       "      <td>PG</td>\n",
       "      <td>1987-01-30</td>\n",
       "      <td>88</td>\n",
       "      <td>...</td>\n",
       "      <td>-1207221</td>\n",
       "      <td>-7.545131</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.00000</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>7.100000</td>\n",
       "      <td>6.755443</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>350000</td>\n",
       "      <td>Cannon Group</td>\n",
       "      <td>USA</td>\n",
       "      <td>Sam Firstenberg</td>\n",
       "      <td>Action</td>\n",
       "      <td>4000000</td>\n",
       "      <td>American Ninja 2: The Confrontation</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-05-01</td>\n",
       "      <td>90</td>\n",
       "      <td>...</td>\n",
       "      <td>3650000</td>\n",
       "      <td>1042.857143</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>5.70000</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.900000</td>\n",
       "      <td>5.350000</td>\n",
       "      <td>5.034146</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>213</th>\n",
       "      <td>6000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>Canada</td>\n",
       "      <td>Jonathan Kaplan</td>\n",
       "      <td>Drama</td>\n",
       "      <td>32069318</td>\n",
       "      <td>Acusados</td>\n",
       "      <td>R</td>\n",
       "      <td>1988-10-14</td>\n",
       "      <td>111</td>\n",
       "      <td>...</td>\n",
       "      <td>26069318</td>\n",
       "      <td>434.488633</td>\n",
       "      <td>6.1</td>\n",
       "      <td>6.1</td>\n",
       "      <td>6.7</td>\n",
       "      <td>6.70000</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>6.377778</td>\n",
       "      <td>6.546875</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       budget             company country         director   genre      gross  \\\n",
       "110  30000000  Paramount Pictures     USA      John Hughes  Comedy   49530280   \n",
       "116  28000000  Paramount Pictures     USA       Tony Scott  Action  153665000   \n",
       "139  16000000      Orion Pictures     USA      Woody Allen  Comedy   14792779   \n",
       "151    350000        Cannon Group     USA  Sam Firstenberg  Action    4000000   \n",
       "213   6000000  Paramount Pictures  Canada  Jonathan Kaplan   Drama   32069318   \n",
       "\n",
       "                                    name rating   released  runtime  ...  \\\n",
       "110         Planes, Trains & Automobiles      R 1987-11-25       93  ...   \n",
       "116                 Beverly Hills Cop II      R 1987-05-20      100  ...   \n",
       "139                           Radio Days     PG 1987-01-30       88  ...   \n",
       "151  American Ninja 2: The Confrontation      R 1987-05-01       90  ...   \n",
       "213                             Acusados      R 1988-10-14      111  ...   \n",
       "\n",
       "        profit percent_profit  cumulative_mean_director exp_mean_director  \\\n",
       "110   19530280      65.100933                       7.8               7.8   \n",
       "116  125665000     448.803571                       6.9               6.9   \n",
       "139   -1207221      -7.545131                       8.0               8.0   \n",
       "151    3650000    1042.857143                       5.9               5.9   \n",
       "213   26069318     434.488633                       6.1               6.1   \n",
       "\n",
       "     cumulative_mean_writer exp_mean_writer  cumulative_mean_star  \\\n",
       "110                     7.3         6.84878                   6.5   \n",
       "116                     6.2         6.20000                   5.9   \n",
       "139                     8.0         8.00000                   8.0   \n",
       "151                     5.7         5.70000                   5.9   \n",
       "213                     6.7         6.70000                   6.2   \n",
       "\n",
       "     exp_mean_star  cumulative_mean_company  exp_mean_company  \n",
       "110       6.409756                 6.428571          6.633831  \n",
       "116       5.900000                 6.245455          6.557347  \n",
       "139       8.000000                 7.100000          6.755443  \n",
       "151       5.900000                 5.350000          5.034146  \n",
       "213       6.200000                 6.377778          6.546875  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating an aggregated column for the avg writer, director, company, actor cumulative mean \n",
    "movies[\"cumulative_mean_avg\"] = (movies[\"cumulative_mean_writer\"] + movies[\"cumulative_mean_director\"] + \n",
    "                              movies[\"cumulative_mean_company\"] + movies[\"cumulative_mean_star\"])/4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating an aggregated column for the avg writer, director, company, \n",
    "# and actor exponential mean\n",
    "movies[\"exp_mean_avg\"] = (movies[\"exp_mean_writer\"] + movies[\"exp_mean_director\"] + \n",
    "                              movies[\"exp_mean_company\"] + movies[\"exp_mean_star\"])/4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>budget</th>\n",
       "      <th>company</th>\n",
       "      <th>country</th>\n",
       "      <th>director</th>\n",
       "      <th>genre</th>\n",
       "      <th>gross</th>\n",
       "      <th>name</th>\n",
       "      <th>rating</th>\n",
       "      <th>released</th>\n",
       "      <th>runtime</th>\n",
       "      <th>...</th>\n",
       "      <th>cumulative_mean_director</th>\n",
       "      <th>exp_mean_director</th>\n",
       "      <th>cumulative_mean_writer</th>\n",
       "      <th>exp_mean_writer</th>\n",
       "      <th>cumulative_mean_star</th>\n",
       "      <th>exp_mean_star</th>\n",
       "      <th>cumulative_mean_company</th>\n",
       "      <th>exp_mean_company</th>\n",
       "      <th>cumulative_mean_avg</th>\n",
       "      <th>exp_mean_avg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>30000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>49530280</td>\n",
       "      <td>Planes, Trains &amp; Automobiles</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-11-25</td>\n",
       "      <td>93</td>\n",
       "      <td>...</td>\n",
       "      <td>7.8</td>\n",
       "      <td>7.8</td>\n",
       "      <td>7.3</td>\n",
       "      <td>6.84878</td>\n",
       "      <td>6.5</td>\n",
       "      <td>6.409756</td>\n",
       "      <td>6.428571</td>\n",
       "      <td>6.633831</td>\n",
       "      <td>7.007143</td>\n",
       "      <td>6.923092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>116</th>\n",
       "      <td>28000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Tony Scott</td>\n",
       "      <td>Action</td>\n",
       "      <td>153665000</td>\n",
       "      <td>Beverly Hills Cop II</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-05-20</td>\n",
       "      <td>100</td>\n",
       "      <td>...</td>\n",
       "      <td>6.9</td>\n",
       "      <td>6.9</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.20000</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.900000</td>\n",
       "      <td>6.245455</td>\n",
       "      <td>6.557347</td>\n",
       "      <td>6.311364</td>\n",
       "      <td>6.389337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>16000000</td>\n",
       "      <td>Orion Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Woody Allen</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>14792779</td>\n",
       "      <td>Radio Days</td>\n",
       "      <td>PG</td>\n",
       "      <td>1987-01-30</td>\n",
       "      <td>88</td>\n",
       "      <td>...</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.00000</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>7.100000</td>\n",
       "      <td>6.755443</td>\n",
       "      <td>7.775000</td>\n",
       "      <td>7.688861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>350000</td>\n",
       "      <td>Cannon Group</td>\n",
       "      <td>USA</td>\n",
       "      <td>Sam Firstenberg</td>\n",
       "      <td>Action</td>\n",
       "      <td>4000000</td>\n",
       "      <td>American Ninja 2: The Confrontation</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-05-01</td>\n",
       "      <td>90</td>\n",
       "      <td>...</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>5.70000</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.900000</td>\n",
       "      <td>5.350000</td>\n",
       "      <td>5.034146</td>\n",
       "      <td>5.712500</td>\n",
       "      <td>5.633537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>213</th>\n",
       "      <td>6000000</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>Canada</td>\n",
       "      <td>Jonathan Kaplan</td>\n",
       "      <td>Drama</td>\n",
       "      <td>32069318</td>\n",
       "      <td>Acusados</td>\n",
       "      <td>R</td>\n",
       "      <td>1988-10-14</td>\n",
       "      <td>111</td>\n",
       "      <td>...</td>\n",
       "      <td>6.1</td>\n",
       "      <td>6.1</td>\n",
       "      <td>6.7</td>\n",
       "      <td>6.70000</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>6.377778</td>\n",
       "      <td>6.546875</td>\n",
       "      <td>6.344444</td>\n",
       "      <td>6.386719</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 29 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       budget             company country         director   genre      gross  \\\n",
       "110  30000000  Paramount Pictures     USA      John Hughes  Comedy   49530280   \n",
       "116  28000000  Paramount Pictures     USA       Tony Scott  Action  153665000   \n",
       "139  16000000      Orion Pictures     USA      Woody Allen  Comedy   14792779   \n",
       "151    350000        Cannon Group     USA  Sam Firstenberg  Action    4000000   \n",
       "213   6000000  Paramount Pictures  Canada  Jonathan Kaplan   Drama   32069318   \n",
       "\n",
       "                                    name rating   released  runtime  ...  \\\n",
       "110         Planes, Trains & Automobiles      R 1987-11-25       93  ...   \n",
       "116                 Beverly Hills Cop II      R 1987-05-20      100  ...   \n",
       "139                           Radio Days     PG 1987-01-30       88  ...   \n",
       "151  American Ninja 2: The Confrontation      R 1987-05-01       90  ...   \n",
       "213                             Acusados      R 1988-10-14      111  ...   \n",
       "\n",
       "     cumulative_mean_director exp_mean_director  cumulative_mean_writer  \\\n",
       "110                       7.8               7.8                     7.3   \n",
       "116                       6.9               6.9                     6.2   \n",
       "139                       8.0               8.0                     8.0   \n",
       "151                       5.9               5.9                     5.7   \n",
       "213                       6.1               6.1                     6.7   \n",
       "\n",
       "    exp_mean_writer  cumulative_mean_star exp_mean_star  \\\n",
       "110         6.84878                   6.5      6.409756   \n",
       "116         6.20000                   5.9      5.900000   \n",
       "139         8.00000                   8.0      8.000000   \n",
       "151         5.70000                   5.9      5.900000   \n",
       "213         6.70000                   6.2      6.200000   \n",
       "\n",
       "     cumulative_mean_company  exp_mean_company  cumulative_mean_avg  \\\n",
       "110                 6.428571          6.633831             7.007143   \n",
       "116                 6.245455          6.557347             6.311364   \n",
       "139                 7.100000          6.755443             7.775000   \n",
       "151                 5.350000          5.034146             5.712500   \n",
       "213                 6.377778          6.546875             6.344444   \n",
       "\n",
       "     exp_mean_avg  \n",
       "110      6.923092  \n",
       "116      6.389337  \n",
       "139      7.688861  \n",
       "151      5.633537  \n",
       "213      6.386719  \n",
       "\n",
       "[5 rows x 29 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "#What is the breakdown of genre in our df?\n",
    "\n",
    "#Getting the count of movies for each genre in our df and saving it as a pandas df. \n",
    "#We are grouping by genre and then getting the count of the genre column in each group by \n",
    "#we could have used any column to get the count of... \n",
    "#We are using the groupby_count function that takes the following arguments (df, groupby_column, count_column)\n",
    "movies_genre = groupby_count(movies, \"genre\", \"genre\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>genre</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>301</td>\n",
       "      <td>Action</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>54</td>\n",
       "      <td>Adventure</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>33</td>\n",
       "      <td>Animation</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>38</td>\n",
       "      <td>Biography</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>233</td>\n",
       "      <td>Comedy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>69</td>\n",
       "      <td>Crime</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>116</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>4</td>\n",
       "      <td>Fantasy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>27</td>\n",
       "      <td>Horror</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>7</td>\n",
       "      <td>Mystery</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1</td>\n",
       "      <td>Romance</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count      genre\n",
       "0     301     Action\n",
       "1      54  Adventure\n",
       "2      33  Animation\n",
       "3      38  Biography\n",
       "4     233     Comedy\n",
       "5      69      Crime\n",
       "6     116      Drama\n",
       "7       4    Fantasy\n",
       "8      27     Horror\n",
       "9       7    Mystery\n",
       "10      1    Romance"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_genre"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'genre')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Sorting the df, so the bar graph will be in descending order\n",
    "movies_genre.sort_values(['count'], ascending=[False], inplace = True)\n",
    "#Creating a graph of the movies_genre df using our bar_graph_count function. It takes the following inputs: \n",
    "# df, x-column, y_column, and title \n",
    "bar_graph_count(movies_genre, \"genre\", \"count\", \"Visualization of Number of Movies Per Genre\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating a data frame of the movies star count \n",
    "movies_star = groupby_count(movies, \"star\", \"genre\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>star</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>Aaron Eckhart</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>Aaron Taylor-Johnson</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>12</td>\n",
       "      <td>Adam Sandler</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>Al Pacino</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>Albert Brooks</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count                  star\n",
       "0      2         Aaron Eckhart\n",
       "1      2  Aaron Taylor-Johnson\n",
       "2     12          Adam Sandler\n",
       "3      3             Al Pacino\n",
       "4      1         Albert Brooks"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_star.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# #Creating a subset of the movies_star df that contains only stars that have 2+ movies in our df \n",
    "# movies_star = movies_star[movies_star[\"count\"] > 1]\n",
    "# #Creating a list of the stars that are in our subsetted df\n",
    "# movies_star_list = list(movies_star[\"star\"])\n",
    "# movies_star_list\n",
    "# #Subsetting our movies df to include only stars who are listed in our movies_star_list\n",
    "# movies = movies[movies.star.isin(movies_star_list)]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>356.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.480337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2.290742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>12.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            count\n",
       "count  356.000000\n",
       "mean     2.480337\n",
       "std      2.290742\n",
       "min      1.000000\n",
       "25%      1.000000\n",
       "50%      2.000000\n",
       "75%      3.000000\n",
       "max     12.000000"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_star.describe()\n",
    "#The majority of our 356 stars.  Only 25% of our stars in 3 or more movies. \n",
    "# We have 649 stars in our newly reduced df "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# How many movies have each star in our df starred in? \n",
    "\n",
    "#Looking to see how many stars have starred in 1, 2, 3, 4+ movies \n",
    "movies_star = groupby_count(movies, \"star\", \"genre\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Changing the column names for our movies_star\n",
    "movies_star.columns = [\"number_of_movies\", \"star\"]\n",
    "movies_star = groupby_count(movies_star, \"number_of_movies\", \"star\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>number_of_movies</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>170</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>78</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>40</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>19</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>5</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count  number_of_movies\n",
       "0     170                 1\n",
       "1      78                 2\n",
       "2      40                 3\n",
       "3      19                 4\n",
       "4       9                 5\n",
       "5      17                 6\n",
       "6       5                 7\n",
       "7       5                 8\n",
       "8       3                 9\n",
       "9       3                10\n",
       "10      2                11\n",
       "11      5                12"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_star"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Changing the column names \n",
    "movies_star.columns = [\"number_of_stars\", \"number_of_movies\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'number_of_movies')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Sorting the df, so the bar graph will be in descending order\n",
    "movies_star.sort_values(['number_of_movies'], ascending=[True], inplace = True)\n",
    "#Creating a graph of the movies_star df using our bar_graph_count function. It takes the following inputs: \n",
    "# df, x-column, y_column, and title \n",
    "bar_graph_count(movies_star, \"number_of_movies\", \"number_of_stars\", \"Visualization of the The Number of Movies each Star has in our DF\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating a data frame of the movies director count \n",
    "movies_director = groupby_count(movies, \"director\", \"genre\")\n",
    "movies_director.columns = [\"director_count\", \"director\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "# #Creating a subset of the movies_director df that contains only directors that have 2 movies in our df \n",
    "# movies_director = movies_director[movies_director[\"director_count\"] > 1]\n",
    "# #Creating a list of the stars that are in our subsetted df\n",
    "# movies_director_list = list(movies_director[\"director\"])\n",
    "# movies_director_list\n",
    "# #Subsetting our movies df to include only stars who are listed in our movies_star_list\n",
    "# movies = movies[movies.director.isin(movies_director_list)]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# How many movies have each director in our df produced? \n",
    "\n",
    "#Creating a new groupby to see how many directors we have that have produced 1, 2, 3, 4... movies \n",
    "movies_director = groupby_count(movies_director, \"director_count\", \"director\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>number_of_movies</th>\n",
       "      <th>director_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>257</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>94</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>48</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>22</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>15</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   number_of_movies  director_count\n",
       "0               257               1\n",
       "1                94               2\n",
       "2                48               3\n",
       "3                22               4\n",
       "4                15               5\n",
       "5                11               6\n",
       "6                 4               7\n",
       "7                 2               9\n",
       "8                 1              19"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting a tally of the number of directors that have the same number of movies \n",
    "movies_director.columns = [\"number_of_movies\", \"director_count\"]\n",
    "movies_director"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'director_count')"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Creating a graph of the movies_director df \n",
    "bar_graph_count(movies_director, \"director_count\", \"number_of_movies\", \"Visualization of the The Number of Movies each Director has in our DF\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>number_of_companies</th>\n",
       "      <th>number_of_movies</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>99</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>25</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>2</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>1</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>1</td>\n",
       "      <td>102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    number_of_companies  number_of_movies\n",
       "0                    99                 1\n",
       "1                    25                 2\n",
       "2                    11                 3\n",
       "3                     6                 4\n",
       "4                     2                 5\n",
       "5                     1                 6\n",
       "6                     2                 7\n",
       "7                     1                 8\n",
       "8                     2                 9\n",
       "9                     2                11\n",
       "10                    2                12\n",
       "11                    2                13\n",
       "12                    1                14\n",
       "13                    1                15\n",
       "14                    2                17\n",
       "15                    1                18\n",
       "16                    2                21\n",
       "17                    1                28\n",
       "18                    1                34\n",
       "19                    2                50\n",
       "20                    1                72\n",
       "21                    1                90\n",
       "22                    1               102"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# How many movies have each company in our df produced? \n",
    "#Creating a new groupby to see how many company we have that have produced 1, 2, 3, 4... movies \n",
    "movies_company = groupby_count(movies, \"company\", \"star\")\n",
    "movies_company.columns = [\"number_of_movies\", \"company\"]\n",
    "movies_company = groupby_count(movies_company, \"number_of_movies\", \"company\")\n",
    "movies_company.columns = [\"number_of_companies\", \"number_of_movies\"]\n",
    "movies_company"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'number_of_movies')"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Creating a graph of the movies_company df \n",
    "bar_graph_count(movies_company, \"number_of_movies\", \"number_of_companies\", \"Visualization of the The Number of Movies each Company has in our DF\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>1987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>1988</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5</td>\n",
       "      <td>1989</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>1990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10</td>\n",
       "      <td>1991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>16</td>\n",
       "      <td>1992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>18</td>\n",
       "      <td>1993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>21</td>\n",
       "      <td>1994</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>17</td>\n",
       "      <td>1995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>18</td>\n",
       "      <td>1996</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>18</td>\n",
       "      <td>1997</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>20</td>\n",
       "      <td>1998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>26</td>\n",
       "      <td>1999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>25</td>\n",
       "      <td>2000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>30</td>\n",
       "      <td>2001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>35</td>\n",
       "      <td>2002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>32</td>\n",
       "      <td>2003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>45</td>\n",
       "      <td>2004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>38</td>\n",
       "      <td>2005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>48</td>\n",
       "      <td>2006</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>42</td>\n",
       "      <td>2007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>33</td>\n",
       "      <td>2008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>47</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>49</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>51</td>\n",
       "      <td>2011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>43</td>\n",
       "      <td>2012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>50</td>\n",
       "      <td>2013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>38</td>\n",
       "      <td>2014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>42</td>\n",
       "      <td>2015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>54</td>\n",
       "      <td>2016</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count  year\n",
       "0       4  1987\n",
       "1       3  1988\n",
       "2       5  1989\n",
       "3       5  1990\n",
       "4      10  1991\n",
       "5      16  1992\n",
       "6      18  1993\n",
       "7      21  1994\n",
       "8      17  1995\n",
       "9      18  1996\n",
       "10     18  1997\n",
       "11     20  1998\n",
       "12     26  1999\n",
       "13     25  2000\n",
       "14     30  2001\n",
       "15     35  2002\n",
       "16     32  2003\n",
       "17     45  2004\n",
       "18     38  2005\n",
       "19     48  2006\n",
       "20     42  2007\n",
       "21     33  2008\n",
       "22     47  2009\n",
       "23     49  2010\n",
       "24     51  2011\n",
       "25     43  2012\n",
       "26     50  2013\n",
       "27     38  2014\n",
       "28     42  2015\n",
       "29     54  2016"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#How are the movies in our df distributed by year?\n",
    "\n",
    "#Looking to see how the movies are distributed by year \n",
    "movies_year = groupby_count(movies, \"year\", \"star\")\n",
    "movies_year"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'year')"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEmCAYAAABlB/tmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3debwcVZn/8c83CxAIhC2sIQkCKjgjoBFwdEb2AZFFBxAUCIjGGcdBBBfGwQFUEBxHBNTBDDvIzgBhEYJRQEWRVdnXH7IEwpJECKCS8Pz+OOdCpW71Td+b1L3d1Pf9etXrVlc9fep0VfVTp05V11VEYGZmzTFsqCtgZmaDy4nfzKxhnPjNzBrGid/MrGGc+M3MGsaJ38ysYZz4ayTpZElfr3kZ10v6dB7/pKTpNSzja5JOWdLltrHcj0p6QtI8SZsO9vIr6vPGuh6CZY+SdIWkP0m6aIjqcI+kLYdi2bZkOfEPkKRrJX2jYvqukp6RNCIi/jkivjlYdYqIn0TE9otThqQtJT1ZKveYiBiKhPdd4PMRMToi7ijPlBSS7pI0rDDtW5LOGMxKDpLdgdWBVSJij/JMSUfm9XFQafrBefqRi1uBiHhXRFy/uOUUSXpM0qv54D5L0umSRi+BcrfL5a1amLa0pPskfXZxy+92TvwDdwawrySVpu8L/CQi5g9+ld5yJgD3LCJmLWCvQajLEqOkv9+9CcCDi9ivHgQml6btl6d3sp0jYjTwHuB9wOH9LUDSiOLriLgOuBI4oTD5cOBpYOrAq7roZXcDJ/6BuwxYGfj7ngmSVgI+ApyVX58h6Vt5fFVJV0qaK2m2pF/2fPlzi2z9QjnF962U3/ecpDl5fFxVhSTtL+lXefwruRXVM7zW0xKWdEBu+bwk6dGeFpCk5YCfAmsV3rdWbk2eU1jOLvm0f27u/tiwMO8xSV+S9IfcLXGBpGVa1HeYpMMl/VHSs5LOkjQmt8zmAcOB30t6pI/t8B3gqKovX9XZS67ftnn8SEkXSTonr4u7JL1d0r/n+jwhqXwGtZ6k3+XPdrmklQtlbyHpprxefl/sFsnr6WhJvwZeAd5WUd8Nc9zcvH53ydOPAv4T+HjeJge2WBe3AMtKeld+37uAUXl6cTmfkfRw3g+nSVorTz9Z0ndLsZdLOqRi3Q2TdJikRyS9IOnCnnUhaZm8Tl/In+UWSau3qPMbIuIp0v73N7mcMZJOlfS0pKeUzuaG53n7S/q1pOMlzQaOrCjyEOBDknaS9DfA54HPRH5cgaQPSPptruOdkv6h8Lk/XfiOPKJCF5+kbfO6+JqkZ4D/XdRn6zRO/AMUEa8CF5JaVD32BO6PiN9XvOVQ4ElgLOmU/WtAO8/LGAacTmrxjQdeBX7QRv2+k7tIRgMbAs/l+gI8SzpArQAcABwv6T0R8TKwIzCz570RMbNYrqS3A+cBB+fPcjVwhaSlCmF7AjsA6wLvBvZvUc3987AVKRGOBn4QEX/J9QbYOCLW6+Oj/h/wYh/LWJSdgbOBlYA7gGtJ63xt4BvAj0vx+wGfIp1pzAdOBJC0NnAV8C1Sg+BLwCWSxhbeuy8wBVge+GOxUEkjgSuA6cBqwL8BP5H0jog4AjgGuCBvk1P7+Dxn8+Y+OZncCCksZ2vg26RttGaux/l59rmkg4ty7ErA9oX5RQcBuwEfyutiDvDDwnLHAOsAqwD/TNpv+yRpHeDDpO0AcCZpHa8PbJrrUuxy3Bx4lLS+ji6XFxF/Av4FOBk4DTgqIh4pLGsacARpex0G/J+kVfLbZwE7kb4jnwFOkvTuQvHjSPvreOBzi/psncaJf/GcCewhaVR+vV+eVuU10hdtQkS8FhG/7Gl59CUiXoiISyLilYh4ibSDf6jdCua6XQacEBFX5zKviohHIrmBlGz+vq9yCj4OXBUR10XEa6R++FHA3xViToyImRExm5TMNmlR1ieB70XEoxExD/h3YK+q1nsfAvg68J+Slu7H+3r8MiKuzV0oF5EOZsfmz3Y+MFHSioX4syPi7nyQ/DqwZ26F7gNcHRFXR8TruavhVlIi63FGRNwTEfNz+UVbkBLJsRHx14j4OamrYu9+fp5zgL3zgWSv/Lrok8BpEXF7RPyFtM7fL2ki8EvS+uzZF3YHflM++GefBf4jIp7M5RwJ7J633WukhL9+RCyIiNsi4sU+6nyZpLnAr4AbgGPyGcKOwMER8XJEPAscz8LdejMj4qS8PisPLBFxBfBbUq47sTBrP2Ba3vavR8Q1wO9JDRYi4oq8X0beFjNY+DsyHzgyb6tFHtQ6jRP/YoiIX5Fa0rtKehupf/LcFuH/BTwMTFfqXjmsnWVIWlbSj3N3yIvAjcCKPae8bTgVeCAijiuUuWM+xZ2dv3AfBlZtWcLC1qLQWo2I14EnSC3kHs8Uxl8hJbRFlpXHR5DOiNqWD2iPk1rT/TWrMP4q8HxELCi8hoXr/0Rh/I/ASNK6m0BqBMztGYAPkg72Ve8tWwt4Iq/PYvlrt4ivFBGPk/azY4CHIqK8zPL2mwe8AKydGyLn8+bB5hPAT1osagJwaeGz3gcsIG27s0lnTudLminpO/lA1MpuEbFiREyIiM/lRDqBtG6fLizjx6TWfY++1mfRPaQz8eK6nUA6QBa31xak9YOkj0i6ufAd2Z6FvyOzIuKvbS6/4zjxL76zSK2HfYHpETGrKigiXoqIQyPibaTuhUMkbZNnvwIsWwhfozB+KPAOYPOIWAHo6YcsX1TuJR9c3gEcWJi2NHAJqaW+ekSsSOqu6SlvUWchM0lfmp7yRDqlf2pR9VlUWaTT5vksnIzbdTjwHyy8Hl8uvs4Hy7EsnnUK4+NJrdvnSUno7JzAeoblIuLYQnxf63YmsI4Wvug7noGt17NI+81ZFfPK2285Uuu8ZznnkVruE0hdKZe0WMYTwI6lz7tMRDyVz2iPioiNSGeCH2HhLtF2PAH8BVi1UP4KEfGuQsziPFr4CeD0iu31X/ks+WJSl1jPd2Q6C3/nuvqxxk78i+8sYFtSP2Crbp6eFsT6OVG+SGod9bQs7wQ+IWm4pB1YuCtneVLLc26+eHZEO5WStCO5H7Z0KroUsDTpTGV+jitewJwFrCJpTIuiLwR2krRNbsUdSvqC3tROvUrOA74oaV2lW/h6+rH7fUdUpNsM72Lhu1oeBJbJF/dGkg4OA+kOKtpH0kaSliVdA7g4nyGcA+ws6R/zdlxG6eJy5YX4CjeTDlRfkTRS6cLwzlT3ry/KBaRtemHFvHOBAyRtkhsBxwA3R8RjAJFum30OOAW4NiLmtljGycDR+QCBpLGSds3jW0n623ygfZF0cFzQopxKEfE0Kdn+t6QVlC4mryep7W7ORTgb+KjSbZ8922srpQvdS5O+J88BCyR9BNimr8K6jRP/YspfmJuA5UgXi1rZAPgZMA/4DfCjePOe6C+QvuRzSX2wlxXe931SH/rzpL7Ka9qs2sdJrdv79OYdOifn6wQHkZLCHNLp/Bv1joj7SQn50XwKvFbp8z5A6s8+KddpZ9LteAM57T2N9AW8Efh/wJ9JFzUH6nDShbqeuv6JdOHtFFKL9mXSBfbFcTbpVt5ngGVI65LcpbIr6aL9c6QW5Zdp8zuW198upH7t54EfAfvl7dEvEfFqRPysqu85ImaQrk1cQrq1cT163w57Hqkx06rbEtJtktNIXZcvkfbNzfO8NUgt5hdJXUA30PtaQzv2IyXge0n76sUs3HU2YPl7+1HSuniO1FV4KDAsH+y+CFwKzCZd67hySSy3Uyj8j1jMzBrFLX4zs4Zx4jczaxgnfjOzhnHiNzNrGCd+M7OG6Yqnyq266qoxceLEoa6GmVlXue22256PiF4/WuyKxD9x4kRuvfXWoa6GmVlXkfTHqunu6jEzaxgnfjOzhnHiNzNrGCd+M7OGceI3M2sYJ34zs4Zx4jczaxgnfjOzhumKH3CZmdnCJh52VeX0x47daZHvdYvfzKxhnPjNzBrGid/MrGGc+M3MGsaJ38ysYZz4zcwaxonfzKxhnPjNzBrGid/MrGGc+M3MGsaJ38ysYWp9Vo+kx4CXgAXA/IiYJGll4AJgIvAYsGdEzKmzHmbWPIvzLJu3usFo8W8VEZtExKT8+jBgRkRsAMzIr83MbJAMRVfPrsCZefxMYLchqIOZWWPVnfgDmC7pNklT8rTVI+JpgPx3tZrrYGZmBXU/j/8DETFT0mrAdZLub/eN+UAxBWD8+PF11c/MrN+qrh9007WDWlv8ETEz/30WuBTYDJglaU2A/PfZFu+dGhGTImLS2LFj66ymmVmj1Jb4JS0nafmecWB74G5gGjA5h00GLq+rDmZm1ludXT2rA5dK6lnOuRFxjaRbgAslHQg8DuxRYx3M7C3Et2guGbUl/oh4FNi4YvoLwDZ1LdfMzPrmX+6amTWME7+ZWcPUfTunmXWwbr8t0QbGLX4zs4Zx4jczaxgnfjOzhnEfv5kNKd+bP/jc4jczaxgnfjOzhnHiNzNrGCd+M7OGceI3M2sYJ34zs4Zx4jczaxjfx2/W4Xyfuy1pbvGbmTWME7+ZWcM48ZuZNYwTv5lZwzjxm5k1jBO/mVnD+HZOMzOa9W8o3eI3M2sYJ34zs4Zx4jczaxj38ZtZW5rUBz5UBuvxHG7xm5k1jBO/mVnDOPGbmTVM7Ylf0nBJd0i6Mr9eV9LNkh6SdIGkpequg5mZvWkwWvxfAO4rvD4OOD4iNgDmAAcOQh3MzCyrNfFLGgfsBJySXwvYGrg4h5wJ7FZnHczMbGF1t/i/D3wFeD2/XgWYGxHz8+sngbVrroOZmRXUlvglfQR4NiJuK06uCI0W758i6VZJtz733HO11NHMrInqbPF/ANhF0mPA+aQunu8DK0rq+eHYOGBm1ZsjYmpETIqISWPHjq2xmmZmzVJb4o+If4+IcRExEdgL+HlEfBL4BbB7DpsMXF5XHczMrLehuI//q8Ahkh4m9fmfOgR1MDNrrEF5Vk9EXA9cn8cfBTYbjOWamVlv/uWumVnDOPGbmTWME7+ZWcP4efxmbyGD9Tx3a18nbhO3+M3MGsaJ38ysYZz4zcwaxonfzKxhnPjNzBrGid/MrGGc+M3MGsaJ38ysYZz4zcwaxonfzKxh/MgGsyWkE3+ab1bFLX4zs4Zx4jczaxgnfjOzhnHiNzNrGCd+M7OGceI3M2sYJ34zs4bxffxmtsT5Nw2dzS1+M7OGceI3M2sYJ34zs4ZxH7/ZEHAfuA0lt/jNzBqmrcQvaUY708zMrPP12dUjaRlgWWBVSSsByrNWANaquW5mZlaDRfXxfxY4mJTkb+PNxP8i8MO+3pgPGjcCS+flXBwRR0haFzgfWBm4Hdg3Iv464E9gZmb90mdXT0ScEBHrAl+KiLdFxLp52DgifrCIsv8CbB0RGwObADtI2gI4Djg+IjYA5gAHLoHPYWZmbWrrrp6IOEnS3wETi++JiLP6eE8A8/LLkXkIYGvgE3n6mcCRwP/0s95mZjZAbSV+SWcD6wF3Agvy5ABaJv78vuGkLqL1SV1DjwBzI2J+DnkSWLvFe6cAUwDGjx/fTjXNlriq2y59y6V1u3bv458EbJRb8W2LiAXAJpJWBC4FNqwKa/HeqcBUgEmTJvVruWZm1lq79/HfDawx0IVExFzgemALYEVJPQecccDMgZZrZmb9126Lf1XgXkm/I120BSAidmn1BkljgdciYq6kUcC2pAu7vwB2J93ZMxm4fIB1NzOzAWg38R85gLLXBM7M/fzDgAsj4kpJ9wLnS/oWcAdw6gDKNjOzAWr3rp4b+ltwRPwB2LRi+qPAZv0tz8zMlox27+p5iTcvwi5FujXz5YhYoa6KmZlZPdpt8S9ffC1pN9xqNzPrSgN6OmdEXEb6IZaZmXWZdrt6PlZ4OYx0X7/vrTcz60Lt3tWzc2F8PvAYsOsSr42ZmdWu3T7+A+quiJmZDY52/xHLOEmXSnpW0ixJl0gaV3flzMxsyWv34u7pwDTSc/nXBq7I08zMrMu0m/jHRsTpETE/D2cAY2usl5mZ1aTdxP+8pH0kDc/DPsALdVbMzMzq0e5dPZ8CfgAcT7qN8ybAF3ytY/i5+WbtazfxfxOYHBFzACStDHyXdEAwM7Mu0m5Xz7t7kj5ARMym4gFsZmbW+dpt8Q+TtFKpxd/ue806iruFrOnaTd7/Ddwk6WJSH/+ewNG11crMzGrT7i93z5J0K+nBbAI+FhH31lozMzOrRdvdNTnRO9mbmXW5AT2W2czMupcTv5lZwzjxm5k1jBO/mVnDOPGbmTWME7+ZWcM48ZuZNYwTv5lZwzjxm5k1jBO/mVnDOPGbmTWME7+ZWcPU9kx9SesAZwFrAK8DUyPihPws/wuAicBjwJ7Ff/Ji9fAz6M2sR50t/vnAoRGxIbAF8K+SNgIOA2ZExAbAjPzazMwGSW2JPyKejojb8/hLwH3A2sCuwJk57Exgt7rqYGZmvQ1KH7+kiaT/0XszsHpEPA3p4ACsNhh1MDOzpPb/mytpNHAJcHBEvCip3fdNAaYAjB8/vr4KWkequiYBvi5htiTU2uKXNJKU9H8SEf+XJ8+StGaevybwbNV7I2JqREyKiEljx46ts5pmZo1SW+JXatqfCtwXEd8rzJoGTM7jk4HL66qDmZn1VmdXzweAfYG7JN2Zp30NOBa4UNKBwOPAHjXWwczMSmpL/BHxK6BVh/42dS3XzMz65l/umpk1jBO/mVnD1H47p9WnEx7D0J/bLn2LpllncIvfzKxhnPjNzBrGid/MrGHcx2+9dMK1AzOrj1v8ZmYN48RvZtYwTvxmZg3jPv4O4vvczWwwuMVvZtYwTvxmZg3jxG9m1jBO/GZmDePEb2bWME78ZmYN48RvZtYwTvxmZg3jxG9m1jBO/GZmDePEb2bWME78ZmYN48RvZtYwTvxmZg3jxG9m1jBO/GZmDePEb2bWME78ZmYNU1vil3SapGcl3V2YtrKk6yQ9lP+uVNfyzcysWp0t/jOAHUrTDgNmRMQGwIz82szMBlFtiT8ibgRmlybvCpyZx88Edqtr+WZmVm2w+/hXj4inAfLf1QZ5+WZmjTdiqCvQiqQpwBSA8ePHD3FtBm7iYVdVTn/s2J0GuSZmZslgt/hnSVoTIP99tlVgREyNiEkRMWns2LGDVkEzs7e6wU7804DJeXwycPkgL9/MrPHqvJ3zPOA3wDskPSnpQOBYYDtJDwHb5ddmZjaIauvjj4i9W8zapq5lmpnZovmXu2ZmDePEb2bWME78ZmYN48RvZtYwTvxmZg3jxG9m1jBO/GZmDePEb2bWME78ZmYN48RvZtYwTvxmZg3jxG9m1jBO/GZmDePEb2bWMB37rxcHW3/+RaL/naKZdTO3+M3MGsaJ38ysYZz4zcwapuv6+Kv61923bmbWPrf4zcwaxonfzKxhnPjNzBqm6/r4+8PXA8zMenOL38ysYZz4zcwaxonfzKxhnPjNzBrGid/MrGGc+M3MGsaJ38ysYYYk8UvaQdIDkh6WdNhQ1MHMrKkGPfFLGg78ENgR2AjYW9JGg10PM7OmGooW/2bAwxHxaET8FTgf2HUI6mFm1kiKiMFdoLQ7sENEfDq/3hfYPCI+X4qbAkzJL98BPFAqalXg+X4suj/xb+XYTqlHt8V2Sj06IbZT6tEJsZ1Sj1axEyJibK+pETGoA7AHcErh9b7ASQMo59a64t/KsZ1Sj26L7ZR6dEJsp9SjE2I7pR79rfNQdPU8CaxTeD0OmDkE9TAza6ShSPy3ABtIWlfSUsBewLQhqIeZWSMN+mOZI2K+pM8D1wLDgdMi4p4BFDW1xvi3cmyn1KPbYjulHp0Q2yn16ITYTqlHv+o86Bd3zcxsaPmXu2ZmDePEb2bWME78ZmYN48RvZtYwTvzWGJLGSPq4pEMkfTGPr9jPMrZrMX0FSetVTH93xbQ1JK2Rx8dK+pikd7W5/GPajFs3l/vOinnjJS2TxyXpAEknSfoXSSNKsbv0xLZL0j9Iekce/6CkL0naqUXsaEm75+3xb/kBjpV5SdI7JX1V0omSTsjjG/azbge0KHcbSaNL03eoiN1M0vvy+EZ5X/pwm8s+qx/1/GAue/uKeZtLWiGPj5J0lKQrJB0naUxb5XfLXT2SDgIujYgn2ojt+X3AzIj4maRPAH8H3AdMjYjXSvHrAR8l/bBsPvAQcF5E/Kmi7H8EdgPWBoL047PLI+KafnyW/4yIb1SUOw6YERGPFaZ/KiJOK7wW6dfPAVwMbE161tH9wMkR8Xoby/95RGxdMX3ViHi+8Hof0rOV7gb+Nwo7i6SPAjdExGxJY4H/BjYF7gUOjYgnC7HfAy6JiF+3UbeVgc+T1uupwNeA95O23TERMacUvxXwTyy87U6JiIdLcfsBRwDTgafy5HHAdsBREdHWl1LS4xExvjRtT+D7wLPASGD/iLglz7s9It5TiP0scBgg4Dhgf+Ae4APAdyLi1ELsieXFk37pfhZARBxUiL0sInbL47vm+lxP2u+/HRFnFGLvBjaLiFckHQesB1xG2peIiE8VYl8FXgZ+CpwHXBsRC/pYP98n7TMjSLdsb5Pf+yHgjoj4cmm9fRn4PbAVcBOpMfq3wCcj4q5C7FeBvUnP9urZt8aRvufnR8SxrepUqt9C2y/nlX8l7V+bAF+IiMvzvPK2O4L0cMkRwHXA5qR1vG1eL0cXYsu/TVL+jD8HiIhdSvX6XURslsc/k+t0KbA9cEXx80m6B9g43xo/FXiFlAu2ydM/tsgV0Z+f+Q7lAPyJlAx+CXwOGNtH7E+AC4ArgLPzCtwXOAM4sxR7UN6Ih5N2vB8BR5MS2Jal2O8DV5N2tg/mYa887YR+fJbHS6+PAW7M5T8C/Fth3u2l2B/ljTwNOAe4CNiP9IXoVQfgD6XhLuAvPa9LsbcXxg8nfXEn52UcX4q9tzB+AfBF0hdxf+C6UuxzwK3AH4HvAJv2sW6uJiXE/yF9qU4C/h74BukAW4w9Fjgd2Cevk/8CPgPcAexRin0AWLFieSsBD5amTWsxXAG8XFHGncCaeXwz0kH4Y/n1HaXYu4BlgVWAecAahXrcWYp9Mm/j/fJ2mJzX5WRgcin2jsL4TcC6eXxV4Pd9bLvbgGGF1+XYO3LdPgPMAGYBJwMfarH97iEluWWBOcCyefpI4O6KfXPZQj2vzePvBm4qxT4IjKxY3lLAQ4vY5xfa9yu2x+g8PjHvp1/oY9sNz5/tRWCFPH0UFd+lvO22JB30tgSezuO91l1p+91Czm/AcsBdpdj7+sgPd5bLrtxO7QR1wpB3wGGkI+Cp+QtwTf4SLF/e8PnviLyjDs+vVbGB7irMXxa4Po+Pr9jwD7aomyp2vhdbDC8B8yvqMCKPr0hKfse32vkKX6QXgKUKn/Wuirr1HCDeCUzIO/cTeXxCHzvf7cByhWWVd74HCuO39bXz9ZQLbAB8nZQc7ie1wN9e9d68Tp9aRLl3FcZHAL/O4yvRO8k8CIypWD9jKrbdHGAn8pe0MGwJzKooo7xu1iQl1IPo/cUsHlx7JdnS6+VJjYFzgbXztEdb7IPFcn+3iHKvBbbO45f07Aekg1G5TuX6r5E/12+AJyrqcXf+u0xej6Py6+EUDjiF/b6n12FUaf8rb7/7y/trnj6huC/mabNIrfcJpWEiqRegGFuu02hSXvleq/24xTotxw4jNYauAzbpa9v17At5v12F0nN3KpZ1EXBAHj8dmJTH3w7c0moZxWHQf7m7GCJSN8Z0YLqkkaTTrr2B7wLFJ9ANy909y5GS+RhgNrA0KYmVjQAW5PnL54U9npdR9GdJm0XE70rT3wf8uTRtLvC+iJhVXpikcnfViIiYn5c7V9LOwFRJF5FaNEU9ca9JuiXSo62JdNrX6xQ8InbJ3TJTge9GxDRJr0XEHyvWwyhJm5J22uER8XJhWeWyr5f0DeDbeXy3iLgsd72Uu8gil/MQ8E3gm7nve2/SQW79QuwwSSuRtsNoSRMj4jFJq1Ssi9clrRwRs4G1SMmFiJiTu8SKjgZulzSddOCDdHDfLtep6LfAKxFxQ3kFSSo/JRbgJUnrRcQjeflPS9qS1H1S7rt/XdLISN2Nb/R75370hfq2I+Il4GBJ7wXOkXRVOaZgY0kvkg6YS0taIyKeyd+D4aXYTwNnSTqStK3ulNTTsj+k/JFLdXoGOBE4UdKEinpcJemXpMR/CnChpN+SDpw3lmKvBq6RdAPpu3xRXhcrl5cLHAzMkPQQC2+/9Uldg0VXklrxd5YrJ+n60qRnJG3SExsR8yR9BDiN1OVU9FdJy0bEK8B7C2WOARbqYs256vj8HT5e0iz6flLCGFJjQUAUtt9oeq+LTwMnSDqc9ETO3+Sc8kSet2jtHB06YaB01CvNG1V6/UXgUVLXwkGkU9T/JbUwjijFfoF0GjiV1KroOZKOBW4sxb4HuJnUDTQ9D/flae8txX6L1I9aVd/jSq+vpPr071vA66VpPyWfmpamr0GppVeavxypFTMNeLJFzC9KQ0/3RVUrZCRwJPB4Hl4nnc2cC4xvd9tV1GFvUottFqnv/mekVtNTwJRS7MfzNp6e67BTYdudW1H2SqSuuUOBL+XxlZbAvrkxsEHF9JGkvuritPFUd1msDWzbxzJE6vc9p591WxF4f4t5G5KuD/0Tqb96WEXMlgNYH+8Htsjj6+V1vWeL8j+c529XmDYMWLoidhiwRa7v7nl8+GJuu3Hk7raKeR8ove5Vpzx9VeBvF7GcnUjXqPpbv2XJ3XYV85bP+957gdX7U243Xdx9e0Q82I/4tQAiYqbSnRvbkvrWy611lO6o2JB0enl/G2WvQfqiipREn2m3Xi3KG5Xr+mrFvLUj4qne7+oVtxypa+bZRcRtTEoEJ/ejfsNJO/0rLeaPIZ21vNBi/uiImNfP5SnSWcwI0mn7UxHxdEXsysDbSP/cZ24bZa9O4cJ8VJyRDSS2zrK7Lbbusive3/b+1W2xdZXdNV09EfGgpPHAi5G6QyYCk4D7I+LuireMIPWpQ2r1QLr6XeUl4GdtlgupldBzF8k8oGXilzSpEPtQ1YGlJ+FXxbZK+i3KfbnNelzfKq6Pslsl/TdiJbX6fINx9pUAAAXWSURBVPP6KLeXiFggaZKkYmyvpJ9jZ0t6G7CVpJblStqEdFFyDOmiqYBxkuYCn4uI2wuxm5IuLo+hcAdQVWxF2eX4f4mIO2qI7U+dF6fctmPrLrsP95LOpN6KsbWU3TWJX+mfsn8W+Iuk75JOD38NHCXp1Ij43iDEfoh02+Jc0unVr4GVJL0G7BuFW007IbZT6tEJsaQ7uj4bETeX1s8WpAtkGxcmn96P2EWVfUYpfknF9qfOi1Nuf2JrK1tS+drDG7NIF2Tp1ti6y67U3z6noRpId4KMIvU3v8TCtzuV7wCoK/aOwvx1Sb8rgHSBcHqnxXZKPTokdqE7d0rzHh5obJ1ld1tszfX4M+ki/BEVw9xujq277Kqha1r8wIKIeFXSX4FXSbcyEhEvq9cNHLXFDo+I5/L446RbxIiI65R+uNJpsZ1Sj06I/anSXTFn8eZdIeuQ7pEv//iuP7F1lt1tsXWWfTtwWUTcVl6gpPKdLN0WW3fZvXTTxd0zSLfzLUfqb55P2jm2Jt3Hv+cgxJ5GugA1g3Q3xFMRcYikZUn3O7+zk2I7pR6dEJvjd8xxb1yYB6ZFxNWU9Ce2zrK7LbauspUeATG7cKAvzls9CheEuy227rKrdFPiH8HCjyrYnHTr3+PADyPfc15z7EjSLxg3Iv3g4rRIFyJHAatF4d74TojtlHp0QqyZFbTTH+TBQ7cPpDtHjiX97uKFPNyXp6040Ng6y+622EGqx/1vtdi6y64auubpnEpP8fuGpHsk/UnSc5J+K2nyEMTeXYrdvxNjO6UenRALXEh6hMBWEbFKRKxCemjWXPIvRgcYW2fZ3RY7GPXYshQ75y0QW3fZvQ11S6zdAbic9ACwcaSflX+d9OyXMyn9Is6xnVWPDol9oLxuWs3rT2ydZXdbbKfUo9ti6y67Mq6doE4Y6P3wqFvy32GkH1s5thTbKfXokNjpwFco/LQdWB34KunHewOKrbPsbovtlHp0W2zdZVcNXdPVA7ws6YMASg8xmw1vPAypfN+lYzurHp0Q+3HSbzVukDRH0mzSL5hXJj1HZqCxdZbdbbGdUo9ui6277N7aOTp0wkB6RvfvSP1/vyI/zpf0QK6DHNs7tlPq0Qmxefo7Sc9sGl2avsPixNZZdrfFdko9ui227rJ7vb+doE4fyE/UdGz7sZ1Sj8GKJT2l9QHSo5IfA3YtzCs/c77t2DrL7rbYTqlHt8XWXXbl96PdL1InD5T+o5Vju6cegxVL///TUluxdZbdbbGdUo9ui6277Kqhax7ZIOkPrWaRLmw4thTbKfXohFjS4x3mAUT6xy5bAhcr/TOR8vWA/sTWWXa3xXZKPbottu6ye2vn6NAJA/37d2qO7aB6dEjsz8n/Aq8wbQTpOTELBhpbZ9ndFtsp9ei22LrLrhpqT9hLaiD9n90Ptph3rmN7x3ZKPToktj//aant2DrL7rbYTqlHt8XWXXbV0DXP6jEzsyWjm+7jNzOzJcCJ38ysYZz4zcwaxonfbBBIGj7UdTDr4cRvViLpm5K+UHh9tKSDJH1Z0i2S/iDpqML8yyTdpvRo7ymF6fOUHht9M/D+Qf4YZi058Zv1diowGUDSMGAv0m8GNgA2I/124L2S/iHHfyoi3gtMAg6StEqevhxwd0RsHhG/GswPYNaXrvnlrtlgifRryBckbUr6BfAdwPuA7fM4wGjSgeBGUrL/aJ6+Tp7+ArAAuGQw627WDid+s2qnkP7JyxrAacA2wLcj4sfFoPxz+W2B90fEK5KuB5bJs/8cEQsGq8Jm7XJXj1m1S4EdSC39a/PwKUmjASStLWk10v8/nZOT/juBLYaqwmbtcovfrEJE/FXSL4C5udU+XdKGwG8kAcwD9gGuAf45PzDuAeC3Q1Vns3b5kQ1mFfJF3duBPSLioaGuj9mS5K4esxJJGwEPAzOc9O2tyC1+M7OGcYvfzKxhnPjNzBrGid/MrGGc+M3MGsaJ38ysYZz4zcwa5v8D4IEy3KILZOgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Creating a graph of the movies_year df \n",
    "bar_graph_count(movies_year, \"year\", \"count\", \"Visualization of Number of Movies Per Year\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "# What is the breakdown of the number of movies per genre per year?\n",
    "\n",
    "#Looking at the number of movies per genre per year \n",
    "#Looking to see how the movies are distributed by year \n",
    "#We are using the groupby_2 function that takes the following arguements: \n",
    "#(df, groupby_column1, groupby_column2, agg_column)\n",
    "movies_year_genre = groupby_2_count(movies, \"year\", \"genre\", \"star\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>year</th>\n",
       "      <th>genre</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>1987</td>\n",
       "      <td>Action</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1987</td>\n",
       "      <td>Comedy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>1988</td>\n",
       "      <td>Comedy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1988</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>1989</td>\n",
       "      <td>Action</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count  year   genre\n",
       "0      2  1987  Action\n",
       "1      2  1987  Comedy\n",
       "2      2  1988  Comedy\n",
       "3      1  1988   Drama\n",
       "4      2  1989  Action"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_year_genre.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x27e096ac8d0>"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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zwaAatWq5a9duzYDADp16hQ9derUHYmJiWeXLl1a/b777mu6Zs2aLWX3CYlKHwsIkRvDhw9v+vPPP9cIDAzUiIiIs+np6cELFiwIBYCsrCz/1NTUalWqVNHExMSTLVq0yAGAhISEU9u2bTt/yGvEiBHHACAzM9Nv/fr1NW6++eYWjmHnzp2Tsv5MRKWNBYQIQGJi4ukvv/wy1PH/rFmzdu7bty+gY8eOcY0bNz43adKknYMGDTrh/J5FixaFVK1a9fwl6v7+/sjNzT1fGEJCQvIBIC8vDyEhIbnp6empZfFZiMoKz4EQAejfv3/W2bNn5aWXXqrr6Jedne0HAD179sx8++236549e1YA4Ndff6164sQJj787YWFh+REREeemTZsWCpgT9v/73/+CSvszEJU1FhAiAH5+fli4cOG2lStXhjRu3DgxMTEx7rbbboucOHHi7jFjxhyOjY09k5iYGBcVFZVw9913N8vJySnWIajZs2f/Pn369PCYmJj4qKiohM8++4yXB1OFJ6revUl848aN29u0aXPYqxMhIiKv2LhxY3ibNm0i3Q3jHggREdnCAkJERLawgBARkS0sIEREZAsLCBER2cICQkREtpT5neiR47/qUJrj2/5iv7WexM2cObP27bff3mLdunUp7dq1O1NQ3OTJk+sMGDDgRGRkZA4ADBkypNm4ceMOdOjQocD3VGRpsXGlujzi0tOKXB7+/v4doqKiTqsq/P399d///vfOnj17nty+fXvgvffe2+Tbb7/9vTRz8tSjjz7aqEaNGnnPPPPMgfKY/u7xK0t1WUS82MXjZZGbmyv+/v46bNiwI08//fQBf3//0kyl3DVYtqFU5+3+7m2LnLci0uGGG244On/+/D8AICcnB/Xq1WvTtm3bk8uWLdtanOmtXr06aNeuXVWGDBmSaTdnb6g0eyBz5swJa9++ffasWbPCCov78MMPw3fu3Bno+P+TTz7ZcakWj/JStWrV/PT09NSMjIzUZ599ds+TTz4ZAQCRkZE5pVU82IS6ZxzLYuvWrSlLly7dsnjx4lqPPfZYI9e4nJyc8kivQgsKCsrPyMgIys7OFgD44osvatavX9/WjExOTg7+6quvahXnPWWxzCpFAcnMzPRLTk6uMX369O1ffPHF+faOnnrqqfrR0dHxMTEx8ffff3/j6dOnh27evDl4xIgRl8XGxsZnZ2dLUlJSzA8//BAMAFOmTAmLjo6Oj4qKSrjvvvsaO8YTHBzc7qGHHmocExMT36ZNm9hdu3axjTEPZWZm+teqVSsXADIyMqpERUUlAMCpU6fkpptuioyOjo6Pi4uLX7hwYQgAZGVl+fXt2/ey6Ojo+H79+l3WunXrWMfyCQ4ObvfII480at26dez3339f47HHHmvYqlWruKioqIRhw4Y1czS1npSUFHPnnXc2adeuXWxUVFTCsmXLgh35pKWlBSUlJcVEREQk/vOf/6wHAKNHj2707LPP1nPEPPTQQ40dwy4ljRs3zn3vvfe2T58+vV5+fj4mT55cp0+fPpf16NGjZZcuXaIzMzP9OnXqFB0fHx8XHR0d/+GHH9YGzHJr3rx5wpAhQ5pFRUUlDBgwoPn8+fND2rdvH9usWbNWjvm7bNmy4Hbt2sXGxcXFt2vXLnbjxo1Vy/cTe9+1116b+emnn9YGgNmzZ4cNGjToKGDaR2vWrFmrvXv3Bjj+b9q0aat9+/YFTJs2LTQqKiohJiYmvmPHjjFnzpyRF154odHChQtDY2Nj4999993QEydO+N18882RrVq1iouLizu/LFyX2cCBA5s7hgHAgAEDmn/00UfFKkSFqRQF5KOPPqrdrVu3zNatW5+tXbt23o8//hg8d+7cml999VXo2rVr0zMyMlInTJiwf+TIkcdatWp1aubMmb+np6en1qhR4/xt+tu3bw+cOHFi4+XLl29JTU1NWb9+ffVZs2bVBoDTp0/7derUKTsjIyO1U6dO2W+88UbdgrOhs2fP+sXGxsY3b948YfTo0c0mTJiwzzXmpZdeqgcAW7ZsSf34449/HzVqVOSpU6fk5Zdfrlu7du28LVu2pE6cOHFvampqdcd7Tp8+7deqVavTv/76a/r111+f/fjjjx/cvHlz2m+//ZZy+vRpvzlz5pz/4pw6dcpv/fr16ZMnT94xatSo5o7+W7durbZixYotv/zyS9orr7zS6OzZs3L//fcfnj17dh3AfNHnz58fetdddx3x7lwqH/Hx8efy8/OxZ8+eAABYt25djdmzZ/+xZs2aLcHBwflfffXV1tTU1LQVK1ZsefLJJyMcRXnXrl3Vxo4dezA9PT1l27Zt1T766KM6ycnJ6c8999zu5557riEAtGnT5szPP/+cnpaWljphwoQ948aNiyjHj1omhg8ffvSTTz4JPXXqlKSlpQV36tTpJGAa3rzpppuOvPfee2EA8OWXX9aMi4s73bBhw9wXX3yx4eLFi7dkZGSkfvvtt1urVaum//d//7e3f//+x9LT01PvvvvuY08++WTD7t27n9i8eXPaypUrM5566qkIR/tszsvs7rvvPjRjxow6AHDkyBH/tWvX1hg8eHCpHQarFAVk7ty5YcOGDTsGAIMGDTo6a9assCVLltS87bbbDjtaTK1fv35eYeP48ccfq1955ZVZjRo1yg0MDMSQIUOOrlixogYABAYG6tChQzMBoEOHDid37NhR4qfYXcoch03++OOPlC+++OK3kSNHnn8Qk8Pq1atrjBgx4ggAtGvX7kyjRo3Obdq0qdrq1atrDBs27CgAXH755Weio6PPP8PD398fd9xxxzHH/998801I69atY6Ojo+NXr14dsnnz5vMNGN5yyy1HAaBPnz7Z2dnZfocPH/YHgF69eh0PCgrShg0b5oaFheXs3r07ICYm5lzt2rVzV61aFfTFF1/UTEhIONWgQYNC15eKzLl5oy5dupxwfDfy8/PlkUceiYiOjo7v3r179MGDB6vs3r07AAAaN258Nikp6bS/vz+io6NP9+jR44Sfnx/at29/avfu3VUB4OjRo/59+/ZtERUVlTBu3LgmW7ZsueQfqnXFFVec3r17d9V333037Lrrrrtgw33fffcdnjNnTh0AmDZtWvgdd9xxGAA6duyYfeutt0ZOmjQpvKBDscuXL6/52muvNYyNjY3v3LlzzNmzZ2Xr1q1VgAuXWb9+/bJ37NhRbc+ePQHvv/9+WL9+/Y4FBga6Hacdl/yhlv379/uvWbOm5pYtW4IefPBB5OXliYho3759j4t43h5eYW2GBQQEqJ+fn6P7gia9qXDXXXfdyWPHjgXs27fvgnWxoPld2HKoUqVKfkCAGc2pU6dk7NixzX766afUli1b5jz66KONzpw5c/4Hk+uyd/xfUPPsI0eOPPzee++FHzx4MHDkyJGX5N4HAKSmplbx9/dH48aNcwEgODj4fGWfMmVK2JEjRwI2bdqUVrVqVW3cuHHi6dOn/QCgSpUq5+ebn58fqlWrpoCZh3l5eQIATzzxROOuXbtmLVmyZFtGRkaVHj16xJTtpysfvXv3Pj5hwoQmixcvzjh48OD59bxly5Y54eHhuQsWLAhZv3599fnz5/8OAB9//PHOpUuXVl+wYEGttm3bJmzYsCHFdZyqinnz5m1t06bNWef+P/74Y3XnZQYAgwcPPvLee++FffbZZ2HTpk3bXpqf7ZLfA5k1a1boX//61yN79+7dtGfPnk379+//NSIi4lxYWFjurFmzwrOysvwA4MCBA/4AUKNGjbzMzMyLLkG55pprTv70008h+/btC8jNzcWnn34a1q1bt+yy/jyXmvXr11fLz89H/fr1L/ip1blz5+wPP/wwDDDNp+/bt69K69atz1x11VXZc+bMCQWAtWvXVtuyZYvbZtFPnTrlBwANGjTIzczM9Fu4cGGo8/DZs2eHAsB3331XIyQkJK9OnTqF7lEMHz78+LJly2pt3Lix+qBBg3zqSpjSsnfv3oC777672ciRIw86fhA5y8zM9A8PD8+pWrWqLly4MGTv3r3F2tM+ceKEf0RExDkAmDJlSngppe3z7rvvvsNjx47dm5SUdNp12J133nnorrvuaj5gwICjjh8/KSkpVXv06HHy9ddf3xsaGpr7+++/V6lZs2ae4/ECANC9e/cTkyZNqu/Yc1+1alWBjwe49957D0+ZMqU+AHTs2LFULwgq8z0QTy+7LS2ffvppnXHjxl1wjP2GG244lpaWVq1Pnz7H27ZtGxcYGKjXXXdd5ptvvrlnxIgRhx966KFmjz/+eH5ycnKa4z3NmjXL+fvf/76na9eu0aoq1157beZtt912vCw/izd4ctltaXOcAwHML6m33357u+PL4zBu3LiDw4cPbxYdHR3v7++PKVOmbA8KCtLHH3/80ODBgyOjo6PjW7VqdSomJuZ0aGjoRRv/8PDwvFtvvfVQfHx8QkRExLk2bdqcdB4eGhqa165du9js7Gz/qVOn/lFUztWqVdOrrrrqRO3atfNccy0tnlx2W9ocy8JxGe+QIUOOTJgwwe1lzHfdddfRPn36tGzVqlVcQkLCqebNmxdrY/TEE0/sv+uuu5pPnjy5QZcuXU4U/Y7S48llt97SokWLnKeffvqgu2HDhg3LfPDBB/1HjRp1fq92zJgxEdu3b6+qqtK5c+cTV1555ekWLVqce+WVVxrGxsbGjx07dt+LL764d9SoUU1jY2PjVVUiIiLOFnRpcJMmTXJbtGhxpn///qW+vWJz7lSh5Obm4ty5cxIcHKwpKSlVe/XqFb1t27bNjkMmnkhKSop55ZVXdl1zzTVun4HuTl5eHhISEuI//fTTbYmJiWeLfgdR0X744YfgMWPGNFm7dm2Gt6aRlZXlFx8fH79hw4a0ova03SmsOfdL/hwIXVqysrL8unTpEpOTkyOqitdee21HcYqHHWvXrq12ww03RPXp0+cYiweVlieffLLBjBkz6k6fPr3IPWC75s+fH3LfffdF3nfffQfsFI+icA+EiIgKxAdKERFRqWMBISIiW1hAiIjIFhYQIiKypeyvwppYq1SbVcbEzFJpzn3QoEGRf/nLXzJHjhx5zN377Vi0aFFI1apV83v27Hmy6Ojy8da9S0t1eTzwTo8il8fOnTsD7r///qYbN24MrlKlikZERJx94403drVu3drrVzg1btw4MTk5Oa1hw4Y+11zvxIkTS3VZTJw40ePm3B3/f/nll1tjYmLOFXdazzzzTL0xY8acbxrI15THYyQc8zYvL0+aNGlydu7cuX+Eh4dfUk3gVJo9EE+bcy9NS5cuDVm5cmWN4rznUm+GPD8/HwMGDGh5zTXXZO3atWvztm3bUl544YU9e/fuLb0GeshjjnbJHC87xQMApkyZUt/5Tmn6c97+9ttvKbVr1859+eWXL7lGVivFAnfXnHt+fj5GjBjRtEWLFgndunVrefjw4QAAmDt3bs2+ffte5njvokWLQnr06NESAD7//POabdu2jY2Pj4/r06fPZZmZmX6A+VU7ZsyYRo5mrtevX18tIyOjysyZM+u+88479WNjY+O//fbbGoMGDYqcPn36+SY1goOD2zmmccUVV0T379+/eUxMTAIA/Oc//wlLTEyMi42Njb/llluaXSqFZdGiRSEBAQE6bty4Q45+V1111elevXpl33PPPRFRUVEJ0dHR8e+++26oI/7yyy+P6du372WRkZGt7r///sZvv/12WGJiYlx0dHR8SkpKVcA0w3H99de3aNWqVVyrVq3iFi9eXB0wbaFdffXVUXFxcfG33HJLM8dl65WliXY7MjIyqnTo0CEmPj4+Lj4+Pm7JkiXVAbMskpKSYnr37n1Z8+bNEwYMGNA8Pz8f//znP+sdPHgwsGvXrtFXXHFFNADceuutTVu1ahXXsmXLhDFjxpx/vsj999/fuEWLFgnR0dHxo0aNijh27Jhf48aNE8+ePSsAcPTo0Qv+v1RceeWVJ/fs2VMFMNuekqzrH3/8ca3WrVvHxsXFxV911VXRjsdHPProo41uvvnmSNfHEQDAm2++Wcfx6IqBAwc2Bwr+zhRHpSgg7ppznzVrVu2tW7dWzcjISJkxY8aOdevW1QCAG2+88cT69eurO5pGnj17duhNN910dN++fQHPP/98wx9++GFLampqWvv27U89++yz9R3TCA8Pz01NTU278847D7344ov1Y2Jizo0YMeLQvffeeyA9PT21d+/ehbab9euvv1Z/+eWX92zbti1l3bp11ebNmxeWnJycnp6enurn56fvvPNOHe/OpbLx66+/BrVp0+aiO8BnzpxZe9OmTUFpaWkp33///Za///3vETt27AgEgPT09KC33357V1paWsq8efPqbNmypdqmTZvShg8ffnjSpEn1AOCee+5p8uijjx7YvHlz2hdffLHt3nvvjQSA8ePHN+rUqVN2Wlpa6oABA47v27evCgBUpibaIm0j8gAADP5JREFUC+NoyiQ2Nja+Z8+eLQCgUaNGuStXrtySmpqa9sknn/w+ZsyYpo74tLS0oLfeemvX1q1bU3bu3Fl1yZIlNZ566qmD9erVy1mxYsWWn376aQsAvPrqq3s2b96clp6enrJq1aqQn376KejAgQP+X3/9dehvv/2WsmXLltTnn39+X2hoaH6nTp2y5s6dWwsApk2bFta3b99jzo1aVnS5ublYtmxZyMCBA48DJV/Xe/bsmb1hw4b0tLS01JtuuunoM88808AxLXePI0hOTq72yiuvNFyxYsWWjIyM1ClTpuwECv7OFEeluBN97ty5YaNHjz4I/Nmce05OjgwePPhoQEAAIiMjczp16pQFAIGBgejWrduJOXPm1Bo5cuSxpUuX1nrzzTd3f/vttyHbtm2rlpSUFAsAOTk50qFDh/NF4ZZbbjkGAElJSacWLFgQ6i6PwrRu3fpkbGzsOQD49ttvQzZv3hzcpk2bOAA4c+aMX7169S6NXZACrFy5MsSxPJo0aZJ7xRVXZP/444/BtWrVyk9MTDzZrFmzHABo2rTp2T59+mQCQJs2bU6vWLEiBABWrVpV87fffjvfoFx2drb/sWPH/NasWRPy+eefbwWAoUOHZt5zzz15AODcRPu+ffsCL/Um2gviOMzi3O/cuXPyt7/9rVlqamqQn58fduzYcf7BT4mJiSdbtGiRAwAJCQmntm3b5rZBxQ8++CBsxowZ4bm5uXLo0KHAjRs3Vmvfvv3pqlWr5g8dOrRZv379Mh2PZx01atShl156qcHw4cOPf/jhh+Hvvvvudi9+5DLjKM579uyp0qpVq1MDBw48AZR8Xf/jjz+qDBw4MOLQoUOB586d82vSpMn5c4eOxxEEBQWdfxzBd999V7N///7HHOf9HE29F/SdCQ0N9fg81iVfQApqzr13794FNuc+dOjQo2+99Va98PDwvNatW58KDQ3NV1V07tz5xMKFC902O+BoTiMgIEALas49ICBA8/LMNio/Px85OTnn45ybYFZVufnmm4+89dZbe+x/ct+UmJh4ev78+RcV2MJaRHD+NercVLifn9/5psJVFcnJyWnODwFzfo87laWJ9uJ67rnn6terVy/ns88++yM/Px9BQUHnT0AX1Ny9s/T09Cpvvvlm/bVr16bVrVs3b9CgQZFnzpzxCwwMxIYNG9IWLFhQc86cOaFvv/12vTVr1mzp1avXyYceeqjqV199VSMvL08uv/zyS+IR0o7ifOTIEf9evXq1fPHFF+s99dRTB0u6rj/44INNR48evf/WW2/NXLRoUcgzzzzTyN37HctHVSEiF020sO+Mpy75Q1iFNef+6aefhuXm5mLHjh2Ba9asCXG8p1+/flkpKSnB7777bvjNN998FAC6det2Mjk5ucbmzZurAqZNpl9//bXQR3KGhITkZWVlnW8avlmzZufWrl0bDJjDagUVmt69e59YtGhRqOOpcAcOHPDfsmXLJfGQqv79+2edO3dOJk2adL457xUrVgSHhobmzps3Lyw3Nxd79+4N+Pnnn2t06dLF46vXOnfufMLxFEMAWL16dRAAXHnllVnTpk2rA5jzWydOnDi/PCpDE+12ZGZm+jds2DDH398f//nPf+o4fvQUpnr16nmOc4LHjh3zDwoKyg8LC8vbtWtXwPLly2tZ4/U7evSo/5AhQzLfeeedXWlpaecfJTx06NAjI0eOvOy222675Jo9qlOnTt7kyZN3vvXWW/XPnj0rXbt2zSrJup6VleXftGnTHABwPG2wML179z6xYMGCsP379/sDfz66oqDvTHGUw2W8nl12W1oKa879sssuOxsTE5PQvHnzM0lJSVmO4QEBAbj22msz582bV2fu3LnbAXNceMqUKduHDh36/9u7v5gk/z2A4x8BRZDmT93BX1ZimU+CmmMwDBU3K0c27ELZ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#To visualize this, we are going to use a grouped bar graph. Our bar_graph_count function does not apply to this \n",
    "#situation... We are going to use the pivot function \n",
    "# Attempting to graph this data using a grouped bar chart: \n",
    "# formula: df.pivot(columns, group, values).plot(kind = \"type of graph\", color = [\"color to use, can be a list of colors\"], \n",
    "# title = \"you can set the title of your graph here\")\n",
    "movies_year_genre.pivot(\"year\", \"genre\", \"count\").plot(kind=\"bar\", title = \"Visualization of Genre Breakdown by Year\")\n",
    "#Creating a y axis label \n",
    "plt.ylabel(\"Number of Movies\")\n",
    "#Changing the x axis label \n",
    "plt.xlabel(\"Year\")\n",
    "#Changing the label to display male and female instead of 0 and 1\n",
    "plt.legend(loc = \"lower center\", bbox_to_anchor = (.5, -.8), ncol = 4, title = \"Genre\")\n",
    "\n",
    "#This was not very helpful, we are going to subset the data by 5 year chunks and regraph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Come back here if time prevails to do what is said above'"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''Come back here if time prevails to do what is said above'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>month</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>63</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>47</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>55</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>58</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>81</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>79</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>78</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>81</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>57</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>86</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>96</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>102</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count month\n",
       "0      63     1\n",
       "1      47     2\n",
       "2      55     3\n",
       "3      58     4\n",
       "4      81     5\n",
       "5      79     6\n",
       "6      78     7\n",
       "7      81     8\n",
       "8      57     9\n",
       "9      86    10\n",
       "10     96    11\n",
       "11    102    12"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#What are the most prolific months for movies to be released in our dataset?\n",
    "\n",
    "#Looking at month \n",
    "movies_month = groupby_count(movies, \"month\", \"star\")\n",
    "movies_month"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating a new column called month with the names of the month of the year, since the df is ordered, we know that \n",
    "#the months of the year can be added this way \n",
    "movies_month[\"month\"] = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Changing the data type of the month column to ordered categorical \n",
    "cat = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"]\n",
    "movies_month[\"month\"] = pd.Categorical(movies_month[\"month\"], ordered = True, categories = cat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',\n",
       "                  'Sept', 'Oct', 'Nov', 'Dec'],\n",
       "                 ordered=True)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_month.month.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>month</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>63</td>\n",
       "      <td>Jan</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>47</td>\n",
       "      <td>Feb</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>55</td>\n",
       "      <td>Mar</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>58</td>\n",
       "      <td>Apr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>81</td>\n",
       "      <td>May</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>79</td>\n",
       "      <td>Jun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>78</td>\n",
       "      <td>Jul</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>81</td>\n",
       "      <td>Aug</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>57</td>\n",
       "      <td>Sept</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>86</td>\n",
       "      <td>Oct</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>96</td>\n",
       "      <td>Nov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>102</td>\n",
       "      <td>Dec</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count month\n",
       "0      63   Jan\n",
       "1      47   Feb\n",
       "2      55   Mar\n",
       "3      58   Apr\n",
       "4      81   May\n",
       "5      79   Jun\n",
       "6      78   Jul\n",
       "7      81   Aug\n",
       "8      57  Sept\n",
       "9      86   Oct\n",
       "10     96   Nov\n",
       "11    102   Dec"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_month"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'month')"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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9tG2N7W96cSJE/vT4IiIcWIQex8JOBa42fb/dN10LjC5Xp4MnNPvtkVEjHcLD6DmG4C9gBskXVenHQYcCZwhaV/gHmCXAbQtImJc63so2L4c0Ag3b93PtkRExMxyRHNERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNhEJERDQSChER0UgoREREI6EQERGNeSoUJL1V0q2Sbpd06KDbExEx3swzoSBpAvANYFtgQ2APSRsOtlUREePLPBMKwOuA223fYftZ4DRgxwG3KSJiXJHtQbcBAEk7A2+1/a/1+l7A621/cMh8+wH71avrA7fOQbmVgYfnormpl3oLQq3UG7/11rY9cbgbFp679vSUhpn2osSyfTRw9FwVkqbY3nRulpF6qTe/10q91BvOvDR8dB+wVtf1NYH7B9SWiIhxaV4Khd8C60paR9KiwO7AuQNuU0TEuDLPDB/Zni7pg8AFwATge7ZvaqncXA0/pV7qLSC1Ui/1XmSe2dAcERGDNy8NH0VExIAlFCIiopFQiIiIxjyzoblNkhYD3glMousx2/70oNo0v5K0ELCZ7Sv7XPdVtm/sQ531gI8AazPze2WrHtfZZLTbbV/Ty3qDJOkNtq+Y1bT5laQJtp8fdDt6ZVxsaJb0U+Ax4GqgefFsf7nluu8AtqQchHe57R+2VGcCcIHtbdpY/jD1fmV7837U6qp5ObAocDzwfdvTWqrzO+DbvPi9cnWP6/xilJvd6xDqqnseLz4o9DFgCvAd239roeY1tjeZ1bQe1rvY9tazmtbDevcAPwVOB37ulr9UJX0e+GLnMyBpBeAQ24f3YvnjoqcArGn7rf0sKOmbwCuAU+uk90vaxvb+va5l+3lJT0lazvZjvV7+MC6U9E7gB21/ADpsbylpXeC9wBRJvwGOs31Rj0tNt/2tHi/zRWy/pe0aI7gDmMiM9+VuwIPAesB3gb16VUjS5sAWwERJH+66aVnKbuc9JWlxYElg5fpF2TlLwrLA6r2u12V9YHtgf+BYST8CTrN9eUv1trV9WOeK7Ucl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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bar_graph_count(movies_month, \"month\", \"count\", \"Visualization of Number of Movies by Month\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Descritizing the df based on all of the numeric columns: \n",
    "#Creating a new df name movies_descritized \n",
    "movies_discretized = movies.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['budget', 'company', 'country', 'director', 'genre', 'gross', 'name',\n",
       "       'rating', 'released', 'runtime', 'score', 'star', 'votes', 'writer',\n",
       "       'year', 'month', 'day', 'profit', 'percent_profit',\n",
       "       'cumulative_mean_director', 'exp_mean_director',\n",
       "       'cumulative_mean_writer', 'exp_mean_writer', 'cumulative_mean_star',\n",
       "       'exp_mean_star', 'cumulative_mean_company', 'exp_mean_company',\n",
       "       'cumulative_mean_avg', 'exp_mean_avg'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We are going to descritize our data based on the quartiles. The categories are: \n",
    "# extremely_low, low, high, extremely_high\n",
    "# We are using our quartile_discretize function that takes the following arguments: \n",
    "#(df, column, category)\n",
    "categories = [\"extremely_low\", \"low\", \"high\", \"extremely_high\"]\n",
    "movies_discretized[\"budget\"] = quartile_discretize(movies_discretized, \"budget\", categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['extremely_low', 'low', 'high', 'extremely_high'], ordered=True)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to make sure it worked \n",
    "movies_discretized.budget.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Gross: We are using the same categories and discretizing based on quantiles 25%, 50%, 75% 100%\n",
    "movies_discretized[\"gross\"] = quartile_discretize(movies_discretized, \"gross\", categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['extremely_low', 'low', 'high', 'extremely_high'], ordered=True)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to see that it worked \n",
    "movies_discretized.gross.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Score: We are using the same categories and discretizing based on quantiles 25%, 50%, 75% 100%\n",
    "movies_discretized[\"score\"] = quartile_discretize(movies_discretized, \"score\", categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['extremely_low', 'low', 'high', 'extremely_high'], ordered=True)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to see that it worked \n",
    "movies_discretized.score.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Votes: We are using the same categories and discretizing based on quantiles 25%, 50%, 75% 100%\n",
    "movies_discretized[\"votes\"] = quartile_discretize(movies_discretized, \"votes\", categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['extremely_low', 'low', 'high', 'extremely_high'], ordered=True)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized.votes.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "#writer_mean: We are using the same categories and discretizing based on quantiles 25%, 50%, 75% 100%\n",
    "movies_discretized[\"cumulative_mean_writer\"] = quartile_discretize(movies_discretized,\"cumulative_mean_writer\", categories)\n",
    "movies_discretized[\"exp_mean_writer\"] = quartile_discretize(movies_discretized,\"exp_mean_writer\", categories)\n",
    "movies_discretized[\"cumulative_mean_director\"] = quartile_discretize(movies_discretized, \"cumulative_mean_director\", categories)\n",
    "movies_discretized[\"exp_mean_director\"] = quartile_discretize(movies_discretized,\"exp_mean_director\", categories)\n",
    "movies_discretized[\"cumulative_mean_star\"] = quartile_discretize(movies_discretized, \"cumulative_mean_star\", categories)\n",
    "movies_discretized[\"exp_mean_star\"] = quartile_discretize(movies_discretized, \"exp_mean_star\", categories)\n",
    "movies_discretized[\"cumulative_mean_company\"] = quartile_discretize(movies_discretized, \"cumulative_mean_company\", categories)\n",
    "movies_discretized[\"exp_mean_company\"] = quartile_discretize(movies_discretized, \"exp_mean_company\", categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We are creating new label categories \n",
    "categories = [\"extremely_short\", \"short\", \"long\", \"extremely_long\"]\n",
    "movies_discretized[\"runtime\"] = quartile_discretize(movies_discretized, \"runtime\", categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['extremely_short', 'short', 'long', 'extremely_long'], ordered=True)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to see if that worked \n",
    "movies_discretized.runtime.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     883.000000\n",
       "mean       47.168989\n",
       "std       171.138287\n",
       "min       -99.976634\n",
       "25%       -44.219378\n",
       "50%         6.505111\n",
       "75%        80.332174\n",
       "max      1707.844444\n",
       "Name: percent_profit, dtype: float64"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized.percent_profit.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We are creating new label categories ; Discretized Percent Profit \n",
    "#We cannot use our function on this, because we are not discretizing by quartiles\n",
    "categories = [\"negative\", \"low\", \"high\", \"extremely_high\"]\n",
    "movies_discretized[\"percent_profit\"] = pd.cut(movies_discretized[\"percent_profit\"], [-100, 0, 50, 150, 999999], labels = categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['negative', 'low', 'high', 'extremely_high'], ordered=True)"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to see if it worked \n",
    "movies_discretized.percent_profit.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    8.830000e+02\n",
       "mean     1.691477e+07\n",
       "std      6.503097e+07\n",
       "min     -1.286123e+08\n",
       "25%     -1.660067e+07\n",
       "50%      2.697999e+06\n",
       "75%      3.387665e+07\n",
       "max      5.022706e+08\n",
       "Name: profit, dtype: float64"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized.profit.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Profit\n",
    "#We cannot use our function on this, because we are not discretizing by quartiles\n",
    "movies_discretized[\"profit\"] = pd.cut(movies_discretized[\"profit\"], [-9999999999, 0, 1000000, 50000000, 999999999], labels = categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>budget</th>\n",
       "      <th>company</th>\n",
       "      <th>country</th>\n",
       "      <th>director</th>\n",
       "      <th>genre</th>\n",
       "      <th>gross</th>\n",
       "      <th>name</th>\n",
       "      <th>rating</th>\n",
       "      <th>released</th>\n",
       "      <th>runtime</th>\n",
       "      <th>...</th>\n",
       "      <th>cumulative_mean_director</th>\n",
       "      <th>exp_mean_director</th>\n",
       "      <th>cumulative_mean_writer</th>\n",
       "      <th>exp_mean_writer</th>\n",
       "      <th>cumulative_mean_star</th>\n",
       "      <th>exp_mean_star</th>\n",
       "      <th>cumulative_mean_company</th>\n",
       "      <th>exp_mean_company</th>\n",
       "      <th>cumulative_mean_avg</th>\n",
       "      <th>exp_mean_avg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>low</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>John Hughes</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>low</td>\n",
       "      <td>Planes, Trains &amp; Automobiles</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-11-25</td>\n",
       "      <td>extremely_short</td>\n",
       "      <td>...</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>high</td>\n",
       "      <td>low</td>\n",
       "      <td>low</td>\n",
       "      <td>high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>7.007143</td>\n",
       "      <td>6.923092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>116</th>\n",
       "      <td>low</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Tony Scott</td>\n",
       "      <td>Action</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>Beverly Hills Cop II</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-05-20</td>\n",
       "      <td>extremely_short</td>\n",
       "      <td>...</td>\n",
       "      <td>high</td>\n",
       "      <td>high</td>\n",
       "      <td>low</td>\n",
       "      <td>low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>low</td>\n",
       "      <td>high</td>\n",
       "      <td>6.311364</td>\n",
       "      <td>6.389337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>extremely_low</td>\n",
       "      <td>Orion Pictures</td>\n",
       "      <td>USA</td>\n",
       "      <td>Woody Allen</td>\n",
       "      <td>Comedy</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>Radio Days</td>\n",
       "      <td>PG</td>\n",
       "      <td>1987-01-30</td>\n",
       "      <td>extremely_short</td>\n",
       "      <td>...</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>7.775000</td>\n",
       "      <td>7.688861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>extremely_low</td>\n",
       "      <td>Cannon Group</td>\n",
       "      <td>USA</td>\n",
       "      <td>Sam Firstenberg</td>\n",
       "      <td>Action</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>American Ninja 2: The Confrontation</td>\n",
       "      <td>R</td>\n",
       "      <td>1987-05-01</td>\n",
       "      <td>extremely_short</td>\n",
       "      <td>...</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>5.712500</td>\n",
       "      <td>5.633537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>213</th>\n",
       "      <td>extremely_low</td>\n",
       "      <td>Paramount Pictures</td>\n",
       "      <td>Canada</td>\n",
       "      <td>Jonathan Kaplan</td>\n",
       "      <td>Drama</td>\n",
       "      <td>low</td>\n",
       "      <td>Acusados</td>\n",
       "      <td>R</td>\n",
       "      <td>1988-10-14</td>\n",
       "      <td>long</td>\n",
       "      <td>...</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>high</td>\n",
       "      <td>low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>extremely_low</td>\n",
       "      <td>high</td>\n",
       "      <td>high</td>\n",
       "      <td>6.344444</td>\n",
       "      <td>6.386719</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 29 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            budget             company country         director   genre  \\\n",
       "110            low  Paramount Pictures     USA      John Hughes  Comedy   \n",
       "116            low  Paramount Pictures     USA       Tony Scott  Action   \n",
       "139  extremely_low      Orion Pictures     USA      Woody Allen  Comedy   \n",
       "151  extremely_low        Cannon Group     USA  Sam Firstenberg  Action   \n",
       "213  extremely_low  Paramount Pictures  Canada  Jonathan Kaplan   Drama   \n",
       "\n",
       "              gross                                 name rating   released  \\\n",
       "110             low         Planes, Trains & Automobiles      R 1987-11-25   \n",
       "116  extremely_high                 Beverly Hills Cop II      R 1987-05-20   \n",
       "139   extremely_low                           Radio Days     PG 1987-01-30   \n",
       "151   extremely_low  American Ninja 2: The Confrontation      R 1987-05-01   \n",
       "213             low                             Acusados      R 1988-10-14   \n",
       "\n",
       "             runtime  ... cumulative_mean_director exp_mean_director  \\\n",
       "110  extremely_short  ...           extremely_high    extremely_high   \n",
       "116  extremely_short  ...                     high              high   \n",
       "139  extremely_short  ...           extremely_high    extremely_high   \n",
       "151  extremely_short  ...            extremely_low     extremely_low   \n",
       "213             long  ...            extremely_low     extremely_low   \n",
       "\n",
       "    cumulative_mean_writer exp_mean_writer  cumulative_mean_star  \\\n",
       "110         extremely_high            high                   low   \n",
       "116                    low             low         extremely_low   \n",
       "139         extremely_high  extremely_high        extremely_high   \n",
       "151          extremely_low   extremely_low         extremely_low   \n",
       "213                   high             low         extremely_low   \n",
       "\n",
       "      exp_mean_star  cumulative_mean_company exp_mean_company  \\\n",
       "110             low                     high   extremely_high   \n",
       "116   extremely_low                      low             high   \n",
       "139  extremely_high           extremely_high   extremely_high   \n",
       "151   extremely_low            extremely_low    extremely_low   \n",
       "213   extremely_low                     high             high   \n",
       "\n",
       "    cumulative_mean_avg exp_mean_avg  \n",
       "110            7.007143     6.923092  \n",
       "116            6.311364     6.389337  \n",
       "139            7.775000     7.688861  \n",
       "151            5.712500     5.633537  \n",
       "213            6.344444     6.386719  \n",
       "\n",
       "[5 rows x 29 columns]"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We are setting new categories for the day column by creating a new column for week \n",
    "# week_1 is the first 7 days of the month, week_2 is days 8 - 14, week_3 is days 15 - 21, and week_4 are the \n",
    "# rest of the days\n",
    "categories = [\"week_1\", \"week_2\", \"week_3\", \"week_4\"]\n",
    "\n",
    "movies_discretized[\"week\"] = pd.cut(movies_discretized[\"day\"], [0, 8, 15, 22, 32], labels = categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['week_1', 'week_2', 'week_3', 'week_4'], ordered=True)"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized.week.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Looking at the relationship between genre and percent profit \n",
    "movies_discretized_genre_pp = groupby_2_count(movies_discretized, \"genre\", \"percent_profit\", \"score\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>genre</th>\n",
       "      <th>percent_profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>150</td>\n",
       "      <td>Action</td>\n",
       "      <td>negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>60</td>\n",
       "      <td>Action</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>62</td>\n",
       "      <td>Action</td>\n",
       "      <td>high</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>29</td>\n",
       "      <td>Action</td>\n",
       "      <td>extremely_high</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>negative</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count      genre  percent_profit\n",
       "0    150     Action        negative\n",
       "1     60     Action             low\n",
       "2     62     Action            high\n",
       "3     29     Action  extremely_high\n",
       "4     16  Adventure        negative"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized_genre_pp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "genre\n",
       "Action       301\n",
       "Adventure     54\n",
       "Animation     33\n",
       "Biography     38\n",
       "Comedy       233\n",
       "Crime         69\n",
       "Drama        116\n",
       "Fantasy        4\n",
       "Horror        27\n",
       "Mystery        7\n",
       "Romance        1\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Now we are getting the sum of each genre category... We do not have a function for sum... we could go back and rework \n",
    "#our function.\n",
    "movies_discretized_genre_pp.groupby(\"genre\")[\"count\"].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "'''We ultimately want a column that contains the total counts for each genre group. We are probably doing this in \n",
    "a roundabout way, but as I am extremely new to python this is the best way I can think of doing it. We are going to create \n",
    "a new column that replicates the genre column called genre_count and then we will use the replace function to \n",
    "replace the genre names with their total count '''\n",
    "#First, replicating the income level column in a column named budget_category_count\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre\"] \n",
    "#Now replacing the income level with the total count for each income level \n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Action\"], 301 )\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Adventure\"], 54)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Animation\"], 33)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Biography\"], 38)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Comedy\"], 233)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Crime\"], 69)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Drama\"], 116)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Fantasy\"], 4)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Horror\"], 27)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Mystery\"], 7)\n",
    "movies_discretized_genre_pp[\"genre_count\"] = movies_discretized_genre_pp[\"genre_count\"].replace([\"Romance\"], 1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>genre</th>\n",
       "      <th>percent_profit</th>\n",
       "      <th>genre_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>150</td>\n",
       "      <td>Action</td>\n",
       "      <td>negative</td>\n",
       "      <td>301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>60</td>\n",
       "      <td>Action</td>\n",
       "      <td>low</td>\n",
       "      <td>301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>62</td>\n",
       "      <td>Action</td>\n",
       "      <td>high</td>\n",
       "      <td>301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>29</td>\n",
       "      <td>Action</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>negative</td>\n",
       "      <td>54</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count      genre  percent_profit  genre_count\n",
       "0    150     Action        negative          301\n",
       "1     60     Action             low          301\n",
       "2     62     Action            high          301\n",
       "3     29     Action  extremely_high          301\n",
       "4     16  Adventure        negative           54"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized_genre_pp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "movies_discretized_genre_pp[\"genre_count\"] = pd.to_numeric(movies_discretized_genre_pp[\"genre_count\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Okay, we are one step closer... Now, we need to create a column that takes the counts/genre_counts * 100 \n",
    "movies_discretized_genre_pp[\"percent\"] = movies_discretized_genre_pp[\"count\"]/movies_discretized_genre_pp[\"genre_count\"] *100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>genre</th>\n",
       "      <th>percent_profit</th>\n",
       "      <th>genre_count</th>\n",
       "      <th>percent</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>150</td>\n",
       "      <td>Action</td>\n",
       "      <td>negative</td>\n",
       "      <td>301</td>\n",
       "      <td>49.833887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>60</td>\n",
       "      <td>Action</td>\n",
       "      <td>low</td>\n",
       "      <td>301</td>\n",
       "      <td>19.933555</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>62</td>\n",
       "      <td>Action</td>\n",
       "      <td>high</td>\n",
       "      <td>301</td>\n",
       "      <td>20.598007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>29</td>\n",
       "      <td>Action</td>\n",
       "      <td>extremely_high</td>\n",
       "      <td>301</td>\n",
       "      <td>9.634551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>Adventure</td>\n",
       "      <td>negative</td>\n",
       "      <td>54</td>\n",
       "      <td>29.629630</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count      genre  percent_profit  genre_count    percent\n",
       "0    150     Action        negative          301  49.833887\n",
       "1     60     Action             low          301  19.933555\n",
       "2     62     Action            high          301  20.598007\n",
       "3     29     Action  extremely_high          301   9.634551\n",
       "4     16  Adventure        negative           54  29.629630"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies_discretized_genre_pp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x27e0abb4c18>"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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f/jDfgAff/xxnZ49e+Z07ty52/HHH99h1apVmRBcKV522WUtDz300C7XXXdd85YtW/ZIXEl9++23GcmPJTpKDgIEZ2hvvfVWgx49emz+3//+V/ull15qPGnSpLy8vLxZGRkZ/sgjj+wLsHnz5ozu3btvnj59el7//v03nnHGGR3uu+++RXPmzJk1fvz4OdnZ2UX33Xdfk4YNGxbOmDFj9rRp02Y/88wzTfPy8moCzJ49u85DDz20eN68eTMXLVpU65133sm+4YYbVjZr1mz7+PHj506cOHFuSeX70Y9+lP/pp59mFxQU8OKLLzY+++yzv02sq1u3btGbb745b9asWbPHjx8/9/rrr2+VXAU1bdq0WqecckrHJ5544uv+/ftvKqt8ZWnQoEHhF198Mfviiy9eefnll7cuvv7aa69t0bNnz01z586ddeutty4dPnx4+5YtWxY8/PDDC3v37r0hLy9vVm5u7tbE89euXZuxadOmjJycnG0lxVu+fHnW7bff3vyDDz6YO2vWrNmHHHLIpltvvXW/xPomTZoUzJo1a/Z555236o477tixfPr06XXfeuutea+//vrXFdnX6dOn1+nZs+emkspQ2ns7cuTIJa1bt96al5c3a9SoUUteeeWVBvPmzas9ffr02bNnz541derUuv/5z3+yP/jgg7qvv/56oy+++GLWm2++OX/69On1Ets+55xz2t9+++1L5s6dOys3N3fzb3/72x0J5bvvvsv8/PPP54wcOXL54Ycfnv/CCy80BHjyyScb/+QnP1lbq1YttTtGbK/ryiqVa+vWrRk5OTndAPr27Zs/YsSI1ffcc0+TGTNm1O3Zs2dXgC1btmQ0a9asACAzM5NzzjlnLcD06dNrN2vWbHv//v03ASTOdt99990GeXl5dV977bVGAPn5+ZmzZs2qXbNmTe/Ro8fGDh06bAfIzc3dNH/+/HIPygBZWVnep0+fDY8//njjLVu2ZHTp0mXHAbWoqMiuvPLKVp9++ml2RkYGK1eurLlkyZIsgG+//TbrpJNO6vjiiy/O792795byyldWGYYPH/4twIUXXvjtDTfckJIcPvvss/ovv/zyPIATTzwx/6KLLspas2ZNZmnbc3fMvj8Bfvnllxv87ne/a5Wfn5/59NNPf7V69eqs+fPn1+7Tp08OwPbt261Xr14bEs8//fTT1wL06dNnU2JfAAYNGvRddna2l7WvpSWk4sp6b5ONHTu2wQcffNCgW7du3QA2bdqUkZeXVzs/Pz9j8ODBifL48ccf/x0E1VL5+fmZJ5xwwobwPV0zdOjQAxLbO+2003Yk/4suumjVnXfeuf9ZZ5313bPPPtvkscceW1CRssvuUXKo5hJtDsnL3N2GDh265qGHHlpa/Pk1a9YsysrKSjwPM0s5oLq7jRw5ctEpp5yyPnn5G2+8UT/5jC8zM5OCgoIKVw+cccYZ35522mkdr7nmmmXJy0eNGtV4zZo1WV988cXsWrVqecuWLXts3rw5A4K2iubNm297//33sxPJobTyvfXWW9nJVxzFqy4yMr6/0C5lv1PKXNLzEho3blxUp06dory8vJo5OTnbTjnllPWnnHLKrIEDB3bcunVrhrtz1FFHrX/99de/Lun1tWvXdggSZ/L7WK9evR07Udq+JuvRo8fmV199NaWhHMp+b4vv+5VXXrn8mmuuWZ28/Oabb96ldon69evv2Icf/ehHGy+//PJab775ZnZhYaEdeuihW3Zlm/LDqFpJUgwaNGj9G2+80Wjp0qVZENSlz507N+UMv2fPnlu++eabmuPHj68LQTXJ9u3bOf7449f99a9/bZo4uE6fPr3W+vXry/ys1atXrzBRn16aH//4xxuuuOKK5eedd963ycvXrVuX2aRJk+21atXy119/vf6yZct2lLVGjRo+duzY+c8999y+jzzySGOg1PJ16NBh67x58+ps3rzZ1qxZk/nhhx82SI4zevToxgBPPPFEo4MPPnhj8fIddthh+U899dS+ECTCRo0aFSSupkpz5ZVXLr/wwgvbrl69OhOCxuGtW7dmAAwYMGDjpEmTshPtG/n5+Rll9SAqSUX+F0OGDMnftm2bjRw5ckd7xPjx4+u++eab2aW9tw0bNizcuHHjju0MHjx4/d/+9rcmif/h119/XWPp0qVZAwYM2PDWW2813LRpk61bty7j3Xff3Qdg3333LWzQoEHh2LFjs8P3dN/DDz98A6UYNmzYmnPPPfeAM888c3Vpz5HKpSsHSdGrV68tN9xww9Jjjz22c1FRETVq1PAHHnhgUefOnXeqiqhdu7aPGTNm/hVXXNFmy5YtGbVr1y764IMP5l511VWrFyxYUKtHjx5d3d0aN268/d///vf8smIOHz589eDBgzs1a9Zse2ntDhkZGdxyyy3fFF9+wQUXfDt48OCO3bt375qbm7upffv2O51ZNmjQoOitt96aN2DAgM7Z2dlFpZWvY8eO24cMGbK2a9euue3bt9+Sm5u7Uz381q1b7cADD8wpKiqyf/zjH18VL8edd9657PTTT2/XuXPnbnXq1Cl6+umnSzzjT3bttdeu2rRpU0bv3r271qxZs6hevXpFffr02XD44Ydv2nfffQtHjRq1YNiwYQds27bNAG688calBx544NbytptQkf9FRkYGr7322vxLL7209X333bd/rVq1vFWrVlsffPDBxYccckiJ7+3+++9f2KtXrw2dOnXKPeaYY9aNGjVqycyZM2sfeuihORC0VYwZM+br/v37bxo0aNC6bt265bZs2XLrgQceuLFhw4aFAE899dTXl1xySdsrrrgio02bNlufe+65BaXtx/nnn7/mzjvvbHn++ed/W9pzpHJZSZfCe7Jp06Yt6Nmzp84eJFYtW7bsMWnSpNnNmzevvP671cS6desyGjZsWJSfn59x+OGHd3nkkUcWHnXUUSU2gJfmqaeeavSvf/1rn1dffbXchCs/zLRp05r07NmzXfHlunIQkUideeaZbb/88ss6W7dutWHDhq35oYlh+PDhrd97772Gb7zxxpdRlVFS6cpBRKQaK+3KQQ3SIiKSQslBRERSKDmIiEgKJQcREUmh5LAHKj4c8oIFC2oMGjTogLJeU5WVNzR3dVDa8ONXXnlli1dffbV+Wa+9+uqrWyQGuxOpqL2+K+v8pv16Veb2OqyaMLkyt7crEsMhX3fddasA2rVrt33s2LEpN12lw/abf1Op73eNG0em/f3+oUYVjKrU9+DirIt3+T247777lpX/rHjYhVap74s/5pX62Vi9enXm448/3jjxvYrLnDlzav70pz/t9OWXX878Ia+7+uqrW2RnZxeWdOPnwQcfnDNlypS8sl6/u/fm6MphF8yZM6fmAQcckDts2LC2HTt2zD3yyCM7bdiwwWbOnFmrX79+nXJzc7v26tWrS2IY5ZkzZ9bq2bNnTvfu3bteeeWVLRJnwhUdDjn5rPHAAw/MmTRpUu1EWfr06dNlwoQJddevX58xdOjQdt27d+/atWvXEoet3tsVFRVx8cUXt+rUqVNu586dd0ycc+aZZ7YZM2ZMQ4Djjz++w9ChQ9sB3HvvvU2uuOKKFmVscq9SWFhI8c/cKaec0u6pp55qBPD88883bN++fW6vXr26nHPOOa2Thx+fPXt2nT59+nRp1apVj9tuuy3yeRj2RGXNQVGZc5PEobzEUBmUHHbRokWLal9xxRUr582bN7Nhw4aFo0ePbnTBBRe0ffjhhxfNnDlz9t13373kkksuaQNw2WWXtb700ktXzpgxY3aLFi12zF5S0eGQk+OecsopO+Y1WLhwYY2VK1fW6Nev36brr7+++cCBA9fPmDFj9oQJE+bccMMNrcobz2hvM3r06H2++OKLOrNnz545bty4uX/4wx9aLVy4sMbRRx+d/8EHH9QHWLFiRc25c+fWBvjoo4+y+/fvX+p4PXubkj5ziXWbNm2yESNGtP3Pf/7z5eTJk+esWbNmp1qBefPm1R4/fvzczz//fPaf//znFlVpPoTic4/MnTu3Ztu2bbsvX748q7CwkF69enV55ZVXGhQ/6XrjjTfq9+3bt/OQIUPad+nSJbekbSXPY3LJJZe0zM3N7XrEEUd0fu+99+omkm3ixKQic2f06tWry8cff1wn8fiQQw7JmThxYp3iz0soLaknTjALCws588wz23Ts2DF34MCBHfv3798xcbIAcNdddzUrPudHRVWpg0ecWrZsufWII47YDHDwwQdvWrBgQa0pU6ZkDx06tENOTk63Sy+9tG1itrIpU6ZkJwaLu+CCC9YktpEYDrlz587dBg4c2Lm04ZCTnX322WsTwy+PHj260ZAhQ9YCvP/++w3uvffe5jk5Od2OOuqoLlu3brV58+ZVaDjsvcWECRPq/+IXv/g2KyuL1q1bF/Tt23fDhx9+WPf444/f8Omnn2ZPnjy5dufOnTc3adJk+8KFC2tMnjy53jHHHFNlkkNJn7nEuqlTp9Zu3br11sRQ3MOGDdtpDKIf/ehH39WpU8ebN29e0Lhx4+3lfc72FiXNPfL222/XHzFixIpzzz23zU033bRfly5dtpx88snrSzrpmj59er2777576fz582eWN4/JwIED82fOnDm7Xr16hTfccEPLCRMmzH3xxRfn3XrrrS0BKjJ3xjnnnLP68ccfbxLGrrVt2zbr27fv5tL2r7ykPnr06EaLFy+uOWfOnJnPPPPMgilTpmQnry9tzo+KqBIfkHRIHvs/MzPTv/nmm6z69esXFB/+uiwVHQ45Wfv27bfvs88+BRMnTqzzyiuvNB41atRCCIZMfumll+b17NmzwoOy7W1Ku5u/ffv229etW5f1+uuvN+zXr1/+t99+mzV69OhG9erVK2rUqFGZo6LuTYp/5pI/K+WNdLA7Q6XvycaOHVu/pLlH7rnnnmWvvPJKo6effrrp9OnTS/1OHnjggRsTCbW0bUEwuu+pp566HiA3N3dzrVq1imrVquV9+vTZvHTp0ppQ+twZubm5OwaCPOecc9befffdzbdu3brkkUceaXL66aeXOdpDIqnXqVNnR1JPzIcCMGHChOyTTz55bWZmJm3atCk47LDD8pNfX9qcHxWhK4dK0qBBg6JWrVpte/LJJxtBUD/+ySef1AE46KCDNjz99NONIJjJKvGaig6HXNypp5767e23375/fn5+Zp8+fTYDDBw4cP3IkSP3S8xH8NFHH5V6qbq36t+/f/5LL73UuKCggGXLlmV99tln2f36D/Am3QAABCRJREFU9dsI0KtXrw2jRo1qdtxxx20YMGDAhoceemj/vn37VpmrhvL07Nlzy+LFi2vNmTOnJsDzzz/fuLzXVAWJuUfy8vJm5eXlzVqwYMGMe+65Z1l+fn7GihUragKsX7++1AmX6tatW1TetiCYMyMxn0dGRsaOZJuZmUlhYaElXj9y5MhFidcvXbr0i5NPPnmneTTq169f1K9fv/V///vf93nttdcalzfKbHlJvbyTgtLm/KgIJYdK9Nxzz3311FNPNenSpUu3Tp065b788sv7ADz44IOLH3zwwf169OjRdfny5TWys7MLIRhqetq0afW6d+/e9dlnn21c0nDIifl5k5155plr33zzzcY/+9nPdnyw7rjjjmUFBQWWk5PTrVOnTrk33HBDy7j2Oy5nnXXWd7m5uZu7du2aO2DAgM4333zzkjZt2hRAMP91YWGhde/efeuRRx65ad26dZlHH310fnnbrCqys7P9nnvuWTho0KBOvXr16tKsWbPt9evXL0x3uaJW2twjl112WctTTz11zfXXX7/snHPOaQvln3RVdB6T0lR0HpNf/epXq3/729+27tmz58b99ttvt/5H/fr12/Dqq682KiwsZPHixVkTJ04ss1vzD7HXVyulo+tply5dtiV3S0vuajZhwoSUkSPbtWu3ferUqXkZGRk8+uijjXr06LERoHnz5gVTp04tsddB8dm/kuO1bt26oKCgYKf9zs7O9r///e8Ld32vKiYdXU83bdo0BYIztrCueEnx51x11VWrr7rqqtUQnG1t3rx5SlTl2Z2up7uqrM9cwgknnJB/+umnzywqKuLss89u06tXr40AibPfhB/apbKiKrvraUWUNPfIXXfdtXjq1Kn1nnjiibysrCz++c9/Nrr//vv3HTFixJrkOSiGDBmyrrxtlTSPSWkqOo9Jv379NtWrV6/w3HPP3e0BRIcPH7723Xffrd+5c+fc9u3bb+nZs+fGffbZp1JOCjQqawzGjh2bPWLEiDbuToMGDQqffvrpBd27d6+ybQOSHjfffHOz5557rsn27dstNzd305gxYxYmT7cpe4YFCxbUGDBgQJf58+fPyMwstcarwhLzZaxYsSLz0EMP7frRRx/lJa6oK6K0UVmVHEREYvKXv/xl39tuu63l7bffvvi8885bWxnb7NOnT5f169dnbt++3UaMGLHiiiuuWFP+q76n5CAisge6//779/3rX/+6UzfTQw89dMPf/va3RXHEV3IQEZEUVWmyn6KioqIq0UdbRCSdwmNpie1Se2NymLFq1aqGShAiIruuqKjIVq1a1RCYUdL6va4ra0FBwQUrVqx4fMWKFd3ZO5ObiMieoAiYUVBQcEFJK/e6NgcREYmezrxFRCSFkoOIiKRQchARkRRKDiIikkLJQUREUvx/C8CtmQazcWQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Attempting to graph this data using a grouped bar chart: \n",
    "# formula: df.pivot(columns, group, values).plot(kind = \"type of graph\", color = [\"color to use, can be a list of colors\"], \n",
    "# title = \"you can set the title of your graph here\")\n",
    "graph = movies_discretized_genre_pp.pivot(\"genre\", \"percent_profit\", \n",
    "                                                \"percent\").plot(kind=\"bar\", color = [\"crimson\", \"salmon\", \"palegreen\", \"darkgreen\"],\n",
    "                                                               title = \"Percent of Percent Profit to Genre Category\")\n",
    "#Changing the y label of our graph to Percent\n",
    "plt.ylabel(\"Percent\")\n",
    "#Changing the x axis label of our graph to Budget Category \n",
    "plt.xlabel(\"Genre\")\n",
    "#How to change the tick labels (we ended up not needing this, but want to keep for future reference)\n",
    "#plt.Axes.set_xticklabels(graph, labels = ['extremely low', 'low', 'high', 'extremely high'])\n",
    "#moving the legend position to underneath the graph, also setting it to have 4 columns so the legend is in a \n",
    "#straight single line and adding a legend title\n",
    "plt.legend( loc = \"lower center\", bbox_to_anchor = (.5, -.6), ncol = 4, title = \"Percent Makeup of Genre Category\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "##############################################################################################################\n",
    "# We are going to implement machine learning to see if we can predict either tmdb score or percent profit\n",
    "##############################################################################################################\n",
    "#\n",
    "##############################################################################################################\n",
    "# We are going to create an all numeric df, that does not contain the profit, percent profit, votes, and gross. \n",
    "# This information would give us an unfair look when trying to predict either score or percent profit, as these \n",
    "# metrics would not be available prior to the release of the movie. \n",
    "################################################################################################################\n",
    "# Potential Machine Learning algorithms we can use on our all numeric df: \n",
    "# logistic regression\n",
    "# Naive Bayes \n",
    "# k-means \n",
    "# Decision Tree \n",
    "# knn \n",
    "# svm\n",
    "################################################################################################################\n",
    "#\n",
    "#\n",
    "################################################################################################################\n",
    "# We are also going to create an all discretized df\n",
    "################################################################################################################\n",
    "################################################################################################################\n",
    "# Potential Machine Learning algorithms we can use on our discretized df: \n",
    "# Decision Tree\n",
    "# Association Rule Mining \n",
    "# Random Forest \n",
    "################################################################################################################\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "#################################################################\n",
    "#Naive Bayes \n",
    "#**All Numerica Data *** \n",
    "#################################################################"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating testing and training datasets comprised of all numeric data for score\n",
    "test_train_movies = movies.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_train_movies_score = test_train_movies.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    883.000000\n",
       "mean       6.461608\n",
       "std        0.946882\n",
       "min        2.600000\n",
       "25%        5.900000\n",
       "50%        6.500000\n",
       "75%        7.100000\n",
       "max        9.000000\n",
       "Name: score, dtype: float64"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_train_movies_score.score.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We believe that people will be most interested in if they will get a high imdb score and not if they will have an \n",
    "#average or low score... Due to this, we have decided to discretize score in 2 categories: high and not_high. \n",
    "#We have decided that a high score is 7+. \n",
    "test_train_movies_score = test_train_movies_score.copy()\n",
    "categories = [\"not_high\", \"high\"]\n",
    "# not_high = 0 - 7 \n",
    "# high = 7 - 10\n",
    "test_train_movies_score[\"score\"] = pd.cut(test_train_movies_score[\"score\"], [0, 7, 10], labels = categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "score\n",
       "not_high    641\n",
       "high        242\n",
       "Name: score, dtype: int64"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting a count of the number of movies that are classified as high and not high in our df. \n",
    "test_train_movies_score_count = test_train_movies_score.groupby(\"score\")[\"score\"].count()\n",
    "test_train_movies_score_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "641"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We are going to create a testing and training df that contains 242 not_high entries and 242 high entries \n",
    "#First we are going to subset the not_high scores and the high scores \n",
    "not_high = test_train_movies_score[test_train_movies_score[\"score\"] == \"not_high\"]\n",
    "test_train_movies_score = test_train_movies_score[test_train_movies_score[\"score\"] == \"high\"]\n",
    "#Getting the length to make sure that we have 641 movies\n",
    "len(not_high)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "242"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Checking to make sure that the test_train_movies_score is equal to the 242 high movies \n",
    "len(test_train_movies_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "242"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Now getting a random sample of 242 entries in the not_high df and setting the seed to 123 to reproduce the results \n",
    "not_high = not_high.sample(n = 242, random_state = 123)\n",
    "#Getting the length to make sure that it worked \n",
    "len(not_high)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "484"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Adding the not_high movies back to the test_train_movies_score df \n",
    "test_train_movies_score = pd.concat([test_train_movies_score, not_high])\n",
    "len(test_train_movies_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Changing the data type of month day and year to numeric\n",
    "columns = [\"month\", \"day\"]\n",
    "test_train_movies_score[columns] = test_train_movies_score[columns].apply(pd.to_numeric)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We need to remove gross, votes, profit, and percent profit (these columns give an unfair look at the potential \n",
    "# imdb rating) and all non numeric data \n",
    "\n",
    "#We are creating a test_train_movies_score_exp df that includes the exponential moving averages. We are interested to \n",
    "#see if the cumulative or exponential moving averages will help our algorithm the most. \n",
    "\n",
    "#Using the exponential moving average to try to predict score first \n",
    "columns = list(test_train_movies_score.columns)\n",
    "columns = ['budget', 'runtime', 'score', 'month', 'day', 'exp_mean_writer', 'exp_mean_director',\n",
    " 'exp_mean_star',  'exp_mean_company', 'exp_mean_avg']\n",
    "test_train_movies_score_exp = test_train_movies_score[columns].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating a test_train_movies_score_cumulative df \n",
    "\n",
    "#We need to remove gross, votes, profit, and percent profit (these columns give an unfair look at the potential imdb rating) and all non numeric data \n",
    "#Getting a list of column names, so we can copy and paste it to select the columns we want. \n",
    "columns = list(test_train_movies_score.columns)\n",
    "columns = ['budget', 'runtime', 'score', \"month\", 'day', 'cumulative_mean_writer', 'cumulative_mean_director',\n",
    " 'cumulative_mean_star',  'cumulative_mean_company', 'cumulative_mean_avg']\n",
    "test_train_movies_score_cumulative = test_train_movies_score[columns].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating a df that contains both the cumulative and exponential moving averages \n",
    "columns = ['budget',  'runtime', 'score', \"month\", 'day', 'cumulative_mean_writer', 'cumulative_mean_director',\n",
    " 'cumulative_mean_star',  'cumulative_mean_company', 'cumulative_mean_avg', 'exp_mean_writer', 'exp_mean_director',\n",
    " 'exp_mean_star',  'exp_mean_company', 'exp_mean_avg']\n",
    "test_train_movies_score_cumulative_exp = test_train_movies_score[columns].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "# #removing the label from the test_train_movies_score_exp df and saving it in a label df\n",
    "test_train_movies_score_exp_label = test_train_movies_score_exp[\"score\"]\n",
    "test_train_movies_score_exp.drop(\"score\", axis = 1, inplace = True)\n",
    "#repeating the process for cumulative \n",
    "test_train_movies_score_cumulative_label = test_train_movies_score_cumulative[\"score\"]\n",
    "test_train_movies_score_cumulative.drop(\"score\", axis = 1, inplace = True)\n",
    "# #repeating the process for the cumulative and exp combined dfs\n",
    "test_train_movies_score_cumulative_exp_label = test_train_movies_score_cumulative_exp[\"score\"]\n",
    "test_train_movies_score_cumulative_exp.drop(\"score\", axis = 1, inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating 4 dfs: 1: the training df with label removed, 2: the testing df with label removed, 3: the training label, 4: testing label\n",
    "#For each test_train df\n",
    "from sklearn.model_selection import train_test_split \n",
    "score_exp_train, score_exp_test, score_exp_train_label, score_exp_test_label = train_test_split(test_train_movies_score_exp, test_train_movies_score_exp_label, test_size = .3, random_state = 123)\n",
    "score_cumulative_train, score_cumulative_test, score_cumulative_train_label, score_cumulative_test_label = train_test_split(test_train_movies_score_cumulative, test_train_movies_score_cumulative_label, test_size = .3, random_state = 123)\n",
    "score_cumulative_exp_train, score_cumulative_exp_test, score_cumulative_exp_train_label, score_cumulative_exp_test_label = train_test_split(test_train_movies_score_cumulative_exp, test_train_movies_score_cumulative_exp_label, test_size = .3, random_state = 123)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Counter({'not_high': 72, 'high': 74})"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting a count of high scores in our test label and not_high scores in out test label\n",
    "#We would prefer to have an equal or almost equal number of movies classified as high and not high in our test set \n",
    "\n",
    "Counter(score_exp_test_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Using the standard scale to help preprocess and normalize the data \n",
    "# performing preprocessing part \n",
    "sc = StandardScaler()\n",
    "score_exp_train = sc.fit_transform(score_exp_train)\n",
    "score_exp_test = sc.transform(score_exp_test)\n",
    "score_cumulative_train = sc.fit_transform(score_cumulative_train)\n",
    "score_cumulative_test = sc.transform(score_cumulative_test)\n",
    "score_cumulative_exp_train = sc.fit_transform(score_cumulative_exp_train)\n",
    "score_cumulative_exp_test = sc.transform(score_cumulative_exp_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Attempt 1: all variables\n",
    "clf = GaussianNB()\n",
    "clf.fit(score_exp_train, score_exp_train_label)\n",
    "test_predicted_exp_nb = clf.predict(score_exp_test)\n",
    "\n",
    "clf.fit(score_cumulative_train, score_cumulative_train_label)\n",
    "test_predicted_cumulative_nb = clf.predict(score_cumulative_test)\n",
    "\n",
    "clf.fit(score_cumulative_exp_train, score_cumulative_exp_train_label)\n",
    "test_predicted_cumulative_exp_nb = clf.predict(score_cumulative_exp_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'Exp Accuracy Score: 0.7123')"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Accuracy for exp \n",
    "exp_accuracy_nb = accuracy_score(score_exp_test_label, test_predicted_exp_nb, normalize = True)\n",
    "cm = confusion_matrix(score_exp_test_label, test_predicted_exp_nb)\n",
    "confusion_matrix_graph(cm, exp_accuracy_nb, \"Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.72      0.70      0.71        74\n",
      "    not_high       0.70      0.72      0.71        72\n",
      "\n",
      "    accuracy                           0.71       146\n",
      "   macro avg       0.71      0.71      0.71       146\n",
      "weighted avg       0.71      0.71      0.71       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_exp_test_label, test_predicted_exp_nb))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'Cumulative Accuracy Score: 0.7466')"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Accuracy for cumulative \n",
    "cum_accuracy_nb = accuracy_score(score_cumulative_test_label, test_predicted_cumulative_nb, normalize = True)\n",
    "cm = confusion_matrix(score_cumulative_test_label, test_predicted_cumulative_nb)\n",
    "confusion_matrix_graph(cm, cum_accuracy_nb, \"Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.74      0.77      0.75        74\n",
      "    not_high       0.75      0.72      0.74        72\n",
      "\n",
      "    accuracy                           0.75       146\n",
      "   macro avg       0.75      0.75      0.75       146\n",
      "weighted avg       0.75      0.75      0.75       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_cumulative_test_label, test_predicted_cumulative_nb))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'Cumulative & Exp Accuracy Score: 0.7123')"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Accuracy for cumulative and exp\n",
    "cum_exp_accuracy_nb = accuracy_score(score_cumulative_exp_test_label, test_predicted_cumulative_exp_nb, \n",
    "                                     normalize = True)\n",
    "cm = confusion_matrix(score_cumulative_exp_test_label, test_predicted_cumulative_exp_nb)\n",
    "confusion_matrix_graph(cm, cum_exp_accuracy_nb, \"Cumulative & Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.71      0.74      0.72        74\n",
      "    not_high       0.72      0.68      0.70        72\n",
      "\n",
      "    accuracy                           0.71       146\n",
      "   macro avg       0.71      0.71      0.71       146\n",
      "weighted avg       0.71      0.71      0.71       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_cumulative_exp_test_label, test_predicted_cumulative_exp_nb))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [],
   "source": [
    "#The Naive Bayes with the cumulative mean, proved better than the other options... While, it did correctly classify \n",
    "# less high scores than the other two models. It had a much better accuracy classifying low scores as well as high \n",
    "#scores. It correctly classifying 57 out of 74 high scores and 52 out of 72 not high scores... The other models \n",
    "#suffered when classifying not high scores... "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "###########################################################################################\n",
    "# PCA and Logistic Regression \n",
    "###########################################################################################\n",
    "#Running PCA (Principal Component Analysis) to see which variables are the most beneficial for our prediction \n",
    "# pca = PCA(n_components = 2)\n",
    "# score_exp_train_pca = pca.fit_transform(score_exp_train)\n",
    "# score_exp_test_pca = pca.transform(score_exp_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "# explained_variance = pca.explained_variance_ratio_\n",
    "# explained_variance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'LG Exp Accuracy Score: 0.726')"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Fitting Logistic Regression \n",
    "classifier = LogisticRegression(random_state = 723)\n",
    "\n",
    "classifier.fit(score_exp_train, score_exp_train_label)\n",
    "\n",
    "#Predicting the test labels \n",
    "test_predicted_exp_lg = classifier.predict(score_exp_test)\n",
    "\n",
    "#getting the accuracy \n",
    "exp_accuracy_lg = accuracy_score(score_exp_test_label, test_predicted_exp_lg, normalize = True)\n",
    "cm = confusion_matrix(score_exp_test_label, test_predicted_exp_lg)\n",
    "confusion_matrix_graph(cm, exp_accuracy_lg, \"LG Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.72      0.76      0.74        74\n",
      "    not_high       0.74      0.69      0.71        72\n",
      "\n",
      "    accuracy                           0.73       146\n",
      "   macro avg       0.73      0.73      0.73       146\n",
      "weighted avg       0.73      0.73      0.73       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_exp_test_label, test_predicted_exp_lg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'LG Cumulative Accuracy Score: 0.726')"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#For the cumulative avg \n",
    "classifier.fit(score_cumulative_train, score_cumulative_train_label)\n",
    "\n",
    "#Predicting the test labels \n",
    "test_predicted_cumulative_lg = classifier.predict(score_cumulative_test)\n",
    "\n",
    "#getting the accuracy \n",
    "cum_accuracy_lg =accuracy_score(score_cumulative_test_label, test_predicted_cumulative_lg, normalize = True)\n",
    "\n",
    "#Looking at the confusion matrix \n",
    "cm = confusion_matrix(score_cumulative_test_label, test_predicted_cumulative_lg)\n",
    "confusion_matrix_graph(cm, cum_accuracy_lg, \"LG Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.71      0.77      0.74        74\n",
      "    not_high       0.74      0.68      0.71        72\n",
      "\n",
      "    accuracy                           0.73       146\n",
      "   macro avg       0.73      0.73      0.73       146\n",
      "weighted avg       0.73      0.73      0.73       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_cumulative_test_label, test_predicted_cumulative_lg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'LG Cumulative & Exp Accuracy Score: 0.7192')"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#For the cumulative avg \n",
    "classifier.fit(score_cumulative_exp_train, score_cumulative_exp_train_label)\n",
    "\n",
    "#Predicting the test labels \n",
    "test_predicted_cumulative_exp_lg = classifier.predict(score_cumulative_exp_test)\n",
    "\n",
    "#getting the accuracy \n",
    "cum_exp_accuracy_lg = accuracy_score(score_cumulative_exp_test_label, test_predicted_cumulative_exp_lg, normalize = True)\n",
    "cm = confusion_matrix(score_cumulative_exp_test_label, test_predicted_cumulative_exp_lg)\n",
    "confusion_matrix_graph(cm, cum_exp_accuracy_lg, \"LG Cumulative & Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.71      0.76      0.73        74\n",
      "    not_high       0.73      0.68      0.71        72\n",
      "\n",
      "    accuracy                           0.72       146\n",
      "   macro avg       0.72      0.72      0.72       146\n",
      "weighted avg       0.72      0.72      0.72       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_cumulative_exp_test_label,test_predicted_cumulative_exp_lg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Out of the 3 different testing and training dfs the df with the exponential moving averages proved best for our \n",
    "# logistic regression models. We had an overall accuracy of 72.6% and accurately classified high scores 74.4% and \n",
    "# not_high scores 64.1% of the time... "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [],
   "source": [
    "###########################################################################################\n",
    "# SVMS\n",
    "###########################################################################################\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Cumulative Accuracy Score: 0.7466')"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Cumulative SVM - Fitting the classifier \n",
    "svclassifier = SVC(kernel='sigmoid')\n",
    "svclassifier.fit(score_cumulative_train, score_cumulative_train_label)\n",
    "#Making the predictions \n",
    "test_predicted_cum_svm = svclassifier.predict(score_cumulative_test)\n",
    "#Creating my confusion matrix \n",
    "cum_accuracy_svm = accuracy_score(score_cumulative_test_label, test_predicted_cum_svm, normalize = True)\n",
    "cm = confusion_matrix(score_cumulative_test_label, test_predicted_cum_svm)\n",
    "confusion_matrix_graph(cm, cum_accuracy_svm, \"SVM Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.73      0.80      0.76        74\n",
      "    not_high       0.77      0.69      0.73        72\n",
      "\n",
      "    accuracy                           0.75       146\n",
      "   macro avg       0.75      0.75      0.75       146\n",
      "weighted avg       0.75      0.75      0.75       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_cumulative_test_label, test_predicted_cum_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Exp Accuracy Score: 0.726')"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Exp SVM - Fitting the classifier \n",
    "svclassifier = SVC(kernel='linear')\n",
    "svclassifier.fit(score_exp_train, score_exp_train_label)\n",
    "#Making the predictions \n",
    "test_predicted_exp_svm = svclassifier.predict(score_exp_test)\n",
    "#Creating my confusion matrix \n",
    "exp_accuracy_svm = accuracy_score(score_exp_test_label, test_predicted_exp_svm, normalize = True)\n",
    "cm = confusion_matrix(score_exp_test_label, test_predicted_exp_svm)\n",
    "confusion_matrix_graph(cm, exp_accuracy_svm, \"SVM Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.73      0.73      0.73        74\n",
      "    not_high       0.72      0.72      0.72        72\n",
      "\n",
      "    accuracy                           0.73       146\n",
      "   macro avg       0.73      0.73      0.73       146\n",
      "weighted avg       0.73      0.73      0.73       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_exp_test_label, test_predicted_exp_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Exp & Cumulative Accuracy Score: 0.7192')"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Exp & Cum SVM - Fitting the classifier \n",
    "svclassifier = SVC(kernel='sigmoid')\n",
    "svclassifier.fit(score_cumulative_exp_train, score_cumulative_exp_train_label)\n",
    "#Making the predictions \n",
    "test_predicted_cum_exp_svm = svclassifier.predict(score_cumulative_exp_test)\n",
    "#Creating my confusion matrix \n",
    "cum_exp_accuracy_svm = accuracy_score(score_cumulative_exp_test_label, test_predicted_cum_exp_svm, \n",
    "                                      normalize = True)\n",
    "cm = confusion_matrix(score_cumulative_exp_test_label, test_predicted_cum_exp_svm)\n",
    "confusion_matrix_graph(cm, cum_exp_accuracy_svm, \"SVM Exp & Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        high       0.71      0.76      0.73        74\n",
      "    not_high       0.73      0.68      0.71        72\n",
      "\n",
      "    accuracy                           0.72       146\n",
      "   macro avg       0.72      0.72      0.72       146\n",
      "weighted avg       0.72      0.72      0.72       146\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(score_cumulative_exp_test_label, test_predicted_cum_exp_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [],
   "source": [
    "################################################################################################\n",
    "#\n",
    "# Now looking to see if we can predict percent profit\n",
    "#\n",
    "################################################################################################\n",
    "\n",
    "#We will be using the same columns, but instead of having score, we will have percent_profit. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We are interested in if a movie will make a profit or not. Therefore, we are only discretizing into 2 categories: \n",
    "#negative and postive. \n",
    "test_train_movies_pp = test_train_movies_score.copy()\n",
    "categories = [\"negative\", \"positive\"]\n",
    "# Negative anything less than 0 \n",
    "#positive anything greater than 0 \n",
    "test_train_movies_pp[\"percent_profit\"] = pd.cut(test_train_movies_pp[\"percent_profit\"], [-101, 0, 999999], labels = categories)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "percent_profit\n",
       "negative    198\n",
       "positive    286\n",
       "Name: percent_profit, dtype: int64"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting the count of each category in our df\n",
    "test_train_movies_pp_count = test_train_movies_pp.groupby(\"percent_profit\")[\"percent_profit\"].count()\n",
    "test_train_movies_pp_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "286\n",
      "198\n"
     ]
    }
   ],
   "source": [
    "# We are going to create a testing and training df that contains 198 negative, 198 positive percent_profits  \n",
    "#First we are going to subset the positive percent profits and the negative per+cent_profits \n",
    "positive = test_train_movies_pp[test_train_movies_pp[\"percent_profit\"] == \"positive\"]\n",
    "test_train_movies_pp = test_train_movies_pp[test_train_movies_pp[\"percent_profit\"] == \"negative\"]\n",
    "#Getting the length to make sure that we have 198 negative, 286 postive in our df \n",
    "print(len(positive))\n",
    "print(len(test_train_movies_pp))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "198\n"
     ]
    }
   ],
   "source": [
    "#Now getting a random sample of 198 entries in the positive df and setting the seed to 123\n",
    "#to reproduce the results \n",
    "positive = positive.sample(n = 198, random_state = 123)\n",
    "#Getting the length to make sure that it worked \n",
    "print(len(positive))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "396"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Adding the positive movies back to the test_train_movies_pp df \n",
    "test_train_movies_pp = pd.concat([test_train_movies_pp, positive])\n",
    "#Getting the length to make sure that the 2 df were combined correctly and if it did we would have 396 movies in our df\n",
    "len(test_train_movies_pp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Changing the data type of month day and year to numeric\n",
    "columns = [\"month\", \"day\"]\n",
    "test_train_movies_pp[columns] = test_train_movies_pp[columns].apply(pd.to_numeric)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [],
   "source": [
    "'''We need to remove gross, votes, profit, and score (these columns give an unfair look at the potential \n",
    "imdb rating) and all non numeric data \n",
    "'''\n",
    "#Using the exponential moving average to try to predict score first \n",
    "columns = list(test_train_movies_pp.columns)\n",
    "columns = ['budget', 'runtime', 'percent_profit', 'month', 'day', 'exp_mean_writer', 'exp_mean_director',\n",
    " 'exp_mean_star',  'exp_mean_company', 'exp_mean_avg']\n",
    "test_train_movies_pp_exp = test_train_movies_pp[columns].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [],
   "source": [
    "#We need to remove gross, votes, profit, and percent profit (these columns give an unfair look at the potential imdb rating) and all non numeric data \n",
    "#Getting a list of column names, so we can copy and paste it to select the columns we want. \n",
    "columns = list(test_train_movies_pp.columns)\n",
    "columns = ['budget', 'runtime', 'percent_profit', \"month\", 'day', 'cumulative_mean_writer', 'cumulative_mean_director',\n",
    " 'cumulative_mean_star',  'cumulative_mean_company', 'cumulative_mean_avg']\n",
    "test_train_movies_pp_cumulative = test_train_movies_pp[columns].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [],
   "source": [
    " columns = ['percent_profit', \"month\", 'day', 'cumulative_mean_writer', 'cumulative_mean_director',\n",
    " 'cumulative_mean_star',  'cumulative_mean_company', 'cumulative_mean_avg', 'exp_mean_writer', 'exp_mean_director',\n",
    " 'exp_mean_star',  'exp_mean_company', 'exp_mean_avg']\n",
    "test_train_movies_pp_cumulative_exp = test_train_movies_pp[columns].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [],
   "source": [
    "# #removing the label from the test_train_movies_spp df and saving it in a label df\n",
    "test_train_movies_pp_exp_label = test_train_movies_pp_exp[\"percent_profit\"]\n",
    "test_train_movies_pp_exp.drop(\"percent_profit\", axis = 1, inplace = True)\n",
    "#repeating the process for cumulative \n",
    "test_train_movies_pp_cumulative_label = test_train_movies_pp_cumulative[\"percent_profit\"]\n",
    "test_train_movies_pp_cumulative.drop(\"percent_profit\", axis = 1, inplace = True)\n",
    "# #repeating the process for the cumulative and exp combined dfs\n",
    "test_train_movies_pp_cumulative_exp_label = test_train_movies_pp_cumulative_exp[\"percent_profit\"]\n",
    "test_train_movies_pp_cumulative_exp.drop(\"percent_profit\", axis = 1, inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating 4 df: 1: the training df with label removed, 2: the testing df with label removed, 3: the training label, 4: testing label\n",
    "from sklearn.model_selection import train_test_split \n",
    "pp_exp_train, pp_exp_test, pp_exp_train_label, pp_exp_test_label = train_test_split(test_train_movies_pp_exp, test_train_movies_pp_exp_label, test_size = .3, random_state = 123)\n",
    "pp_cumulative_train, pp_cumulative_test, pp_cumulative_train_label, pp_cumulative_test_label = train_test_split(test_train_movies_pp_cumulative, test_train_movies_pp_cumulative_label, test_size = .3, random_state = 123)\n",
    "pp_cumulative_exp_train, pp_cumulative_exp_test, pp_cumulative_exp_train_label, pp_cumulative_exp_test_label = train_test_split(test_train_movies_pp_cumulative_exp, test_train_movies_pp_cumulative_exp_label, test_size = .3, random_state = 123)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Counter({'negative': 61, 'positive': 58})"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Getting a count of percent_profit in our test label  scores in out test label\n",
    "#We want to have roughly the same number of positive and negative movies in our test df\n",
    "Counter(pp_exp_test_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Using the standard scale to help preprocess and normalize the data \n",
    "# performing preprocessing part \n",
    "sc = StandardScaler()\n",
    "pp_exp_train = sc.fit_transform(pp_exp_train)\n",
    "pp_exp_test = sc.transform(pp_exp_test)\n",
    "pp_cumulative_train = sc.fit_transform(pp_cumulative_train)\n",
    "pp_cumulative_test = sc.transform(pp_cumulative_test)\n",
    "pp_cumulative_exp_train = sc.fit_transform(pp_cumulative_exp_train)\n",
    "pp_cumulative_exp_test = sc.transform(pp_cumulative_exp_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Attempt 1: all variables\n",
    "clf = GaussianNB()\n",
    "clf.fit(pp_exp_train, pp_exp_train_label)\n",
    "test_predicted_exp_svm = clf.predict(pp_exp_test)\n",
    "\n",
    "clf.fit(pp_cumulative_train, pp_cumulative_train_label)\n",
    "test_predicted_cumulative_svm = clf.predict(pp_cumulative_test)\n",
    "\n",
    "clf.fit(pp_cumulative_exp_train, pp_cumulative_exp_train_label)\n",
    "test_predicted_cumulative_exp_svm = clf.predict(pp_cumulative_exp_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Exp Accuracy Score: 0.5294')"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Accuracy for exp \n",
    "exp_accuracy_svm = accuracy_score(pp_exp_test_label, test_predicted_exp_svm, normalize = True)\n",
    "cm = confusion_matrix(pp_exp_test_label, test_predicted_exp_svm)\n",
    "confusion_matrix_graph(cm, exp_accuracy_svm, \"SVM Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.54      0.56      0.55        61\n",
      "    positive       0.52      0.50      0.51        58\n",
      "\n",
      "    accuracy                           0.53       119\n",
      "   macro avg       0.53      0.53      0.53       119\n",
      "weighted avg       0.53      0.53      0.53       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_exp_test_label, test_predicted_exp_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Cumulative Accuracy Score: 0.521')"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Accuracy for cumulative\n",
    "cum_accuracy_svm = accuracy_score(pp_cumulative_test_label, test_predicted_cumulative_svm, normalize = True)\n",
    "cm = confusion_matrix(pp_cumulative_test_label, test_predicted_cumulative_svm)\n",
    "confusion_matrix_graph(cm, cum_accuracy_svm, \"SVM Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Exp & Cumulative Accuracy Score: 0.4874')"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Accuracy for cumulative and exp \n",
    "exp_cum_accuracy_svm = accuracy_score(pp_cumulative_exp_test_label, test_predicted_cumulative_exp_svm, normalize = True)\n",
    "cm = confusion_matrix(pp_cumulative_exp_test_label, test_predicted_cumulative_exp_svm)\n",
    "confusion_matrix_graph(cm, exp_cum_accuracy_svm, \"SVM Exp & Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [],
   "source": [
    "###########################################################################################\n",
    "# PCA and Logistic Regression \n",
    "###########################################################################################"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'LG Exp Accuracy Score: 0.5126')"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Fitting Logistic Regression \n",
    "classifier = LogisticRegression(random_state = 723)\n",
    "\n",
    "classifier.fit(pp_exp_train, pp_exp_train_label)\n",
    "\n",
    "#Predicting the test labels \n",
    "test_predicted_exp_lg = classifier.predict(pp_exp_test)\n",
    "\n",
    "#getting the accuracy \n",
    "exp_accuracy_lg = accuracy_score(pp_exp_test_label, test_predicted_exp_lg, normalize = True)\n",
    "cm = confusion_matrix(pp_exp_test_label, test_predicted_exp_lg)\n",
    "confusion_matrix_graph(cm, exp_accuracy_lg, \"LG Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.53      0.51      0.52        61\n",
      "    positive       0.50      0.52      0.51        58\n",
      "\n",
      "    accuracy                           0.51       119\n",
      "   macro avg       0.51      0.51      0.51       119\n",
      "weighted avg       0.51      0.51      0.51       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_exp_test_label, test_predicted_exp_lg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'LG Cumulative Accuracy Score: 0.5378')"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Fitting Logistic Regression \n",
    "classifier = LogisticRegression(random_state = 723)\n",
    "\n",
    "classifier.fit(pp_cumulative_train, pp_cumulative_train_label)\n",
    "\n",
    "#Predicting the test labels \n",
    "test_predicted_cum_lg = classifier.predict(pp_exp_test)\n",
    "\n",
    "#getting the accuracy \n",
    "cum_accuracy_lg = accuracy_score(pp_cumulative_test_label, test_predicted_cum_lg, normalize = True)\n",
    "cm = confusion_matrix(pp_cumulative_test_label, test_predicted_cum_lg)\n",
    "confusion_matrix_graph(cm, cum_accuracy_lg, \"LG Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.55      0.51      0.53        61\n",
      "    positive       0.52      0.57      0.55        58\n",
      "\n",
      "    accuracy                           0.54       119\n",
      "   macro avg       0.54      0.54      0.54       119\n",
      "weighted avg       0.54      0.54      0.54       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_cumulative_test_label, test_predicted_cum_lg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'LG Exp & Cumulative Accuracy Score: 0.4454')"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Fitting Logistic Regression \n",
    "classifier = LogisticRegression(random_state = 723)\n",
    "\n",
    "classifier.fit(pp_cumulative_exp_train, pp_cumulative_exp_train_label)\n",
    "\n",
    "#Predicting the test labels \n",
    "test_predicted_cum_exp_lg = classifier.predict(pp_cumulative_exp_test)\n",
    "\n",
    "#getting the accuracy \n",
    "cum_exp_accuracy_lg = accuracy_score(pp_cumulative_exp_test_label, test_predicted_cum_exp_lg, normalize = True)\n",
    "cm = confusion_matrix(pp_cumulative_exp_test_label, test_predicted_cum_exp_lg)\n",
    "confusion_matrix_graph(cm, cum_exp_accuracy_lg, \"LG Exp & Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.45      0.38      0.41        61\n",
      "    positive       0.44      0.52      0.48        58\n",
      "\n",
      "    accuracy                           0.45       119\n",
      "   macro avg       0.45      0.45      0.44       119\n",
      "weighted avg       0.45      0.45      0.44       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_cumulative_exp_test_label, test_predicted_cum_exp_lg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [],
   "source": [
    "###########################################################################################\n",
    "# SVMS\n",
    "###########################################################################################\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Cumulative Accuracy Score: 0.5042')"
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Cumulative SVM - Fitting the classifier \n",
    "svclassifier = SVC(kernel='rbf')\n",
    "svclassifier.fit(pp_cumulative_train, pp_cumulative_train_label)\n",
    "#Making the predictions \n",
    "test_predicted_cum_svm = svclassifier.predict(pp_cumulative_test)\n",
    "#Creating my confusion matrix \n",
    "cum_accuracy_svm = accuracy_score(pp_cumulative_test_label, test_predicted_cum_svm, normalize = True)\n",
    "cm = confusion_matrix(pp_cumulative_test_label, test_predicted_cum_svm)\n",
    "confusion_matrix_graph(cm, cum_accuracy_svm, \"SVM Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.52      0.41      0.46        61\n",
      "    positive       0.49      0.60      0.54        58\n",
      "\n",
      "    accuracy                           0.50       119\n",
      "   macro avg       0.51      0.51      0.50       119\n",
      "weighted avg       0.51      0.50      0.50       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_cumulative_test_label, test_predicted_cum_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Exp Accuracy Score: 0.5714')"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Exp SVM - Fitting the classifier \n",
    "svclassifier = SVC(kernel='linear')\n",
    "svclassifier.fit(pp_exp_train, pp_exp_train_label)\n",
    "#Making the predictions \n",
    "test_predicted_exp_svm = svclassifier.predict(pp_exp_test)\n",
    "#Creating my confusion matrix \n",
    "exp_accuracy_svm = accuracy_score(pp_exp_test_label, test_predicted_exp_svm, normalize = True)\n",
    "cm = confusion_matrix(pp_exp_test_label, test_predicted_exp_svm)\n",
    "confusion_matrix_graph(cm, exp_accuracy_svm, \"SVM Exp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.57      0.64      0.60        61\n",
      "    positive       0.57      0.50      0.53        58\n",
      "\n",
      "    accuracy                           0.57       119\n",
      "   macro avg       0.57      0.57      0.57       119\n",
      "weighted avg       0.57      0.57      0.57       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_exp_test_label, test_predicted_exp_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1, 'SVM Exp & Cumulative Accuracy Score: 0.479')"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Exp & Cum SVM - Fitting the classifier \n",
    "svclassifier = SVC(kernel='rbf')\n",
    "svclassifier.fit(pp_cumulative_exp_train, pp_cumulative_exp_train_label)\n",
    "#Making the predictions \n",
    "test_predicted_cum_exp_svm = svclassifier.predict(pp_cumulative_exp_test)\n",
    "#Creating my confusion matrix \n",
    "cum_exp_accuracy_svm = accuracy_score(pp_cumulative_exp_test_label, test_predicted_cum_exp_svm, \n",
    "                                      normalize = True)\n",
    "cm = confusion_matrix(pp_cumulative_exp_test_label, test_predicted_cum_exp_svm)\n",
    "confusion_matrix_graph(cm, cum_exp_accuracy_svm, \"SVM Exp & Cumulative\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.43      0.38      0.40        61\n",
      "    positive       0.42      0.47      0.44        58\n",
      "\n",
      "    accuracy                           0.42       119\n",
      "   macro avg       0.42      0.42      0.42       119\n",
      "weighted avg       0.42      0.42      0.42       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(pp_cumulative_exp_test_label, test_predicted_cum_exp_svm))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We had much more success when predicting score versus percent profit... However, the SVM with Linear Kernel on \n",
    "#the exponential df did have a 57% accuracy.\n",
    "#We believe that in order to have a better accuracy when predicting percent profit, we need to have more data. Our \n",
    "#next step is to find more data and then use the information gained from this analysis on our new data. "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
