\n",
"Int64Index: 1682 entries, 0 to 1681\n",
"Data columns (total 5 columns):\n",
"movie_id 1682 non-null values\n",
"title 1682 non-null values\n",
"release_date 1681 non-null values\n",
"video_release_date 0 non-null values\n",
"imdb_url 1679 non-null values\n",
"dtypes: float64(1), int64(1), object(3)"
]
}
],
"prompt_number": 161
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"movie_ratings = pd.merge(movies, ratings)\n",
"movie_ratings"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/Users/johndowns/Applications/anaconda/lib/python2.7/site-packages/pandas/core/config.py:570: DeprecationWarning: height has been deprecated.\n",
"\n",
" warnings.warn(d.msg, DeprecationWarning)\n"
]
},
{
"html": [
"\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 100000 entries, 0 to 99999\n",
"Data columns (total 8 columns):\n",
"movie_id 100000 non-null values\n",
"title 100000 non-null values\n",
"release_date 99991 non-null values\n",
"video_release_date 0 non-null values\n",
"imdb_url 99987 non-null values\n",
"user_id 100000 non-null values\n",
"rating 100000 non-null values\n",
"unix_timestamp 100000 non-null values\n",
"dtypes: float64(1), int64(4), object(3)\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 162,
"text": [
"\n",
"Int64Index: 100000 entries, 0 to 99999\n",
"Data columns (total 8 columns):\n",
"movie_id 100000 non-null values\n",
"title 100000 non-null values\n",
"release_date 99991 non-null values\n",
"video_release_date 0 non-null values\n",
"imdb_url 99987 non-null values\n",
"user_id 100000 non-null values\n",
"rating 100000 non-null values\n",
"unix_timestamp 100000 non-null values\n",
"dtypes: float64(1), int64(4), object(3)"
]
}
],
"prompt_number": 162
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data = pd.merge(movie_ratings, users)\n",
"data"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/Users/johndowns/Applications/anaconda/lib/python2.7/site-packages/pandas/core/config.py:570: DeprecationWarning: height has been deprecated.\n",
"\n",
" warnings.warn(d.msg, DeprecationWarning)\n"
]
},
{
"html": [
"\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 100000 entries, 0 to 99999\n",
"Data columns (total 12 columns):\n",
"movie_id 100000 non-null values\n",
"title 100000 non-null values\n",
"release_date 99991 non-null values\n",
"video_release_date 0 non-null values\n",
"imdb_url 99987 non-null values\n",
"user_id 100000 non-null values\n",
"rating 100000 non-null values\n",
"unix_timestamp 100000 non-null values\n",
"age 100000 non-null values\n",
"sex 100000 non-null values\n",
"occupation 100000 non-null values\n",
"zip_code 100000 non-null values\n",
"dtypes: float64(1), int64(5), object(6)\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 163,
"text": [
"\n",
"Int64Index: 100000 entries, 0 to 99999\n",
"Data columns (total 12 columns):\n",
"movie_id 100000 non-null values\n",
"title 100000 non-null values\n",
"release_date 99991 non-null values\n",
"video_release_date 0 non-null values\n",
"imdb_url 99987 non-null values\n",
"user_id 100000 non-null values\n",
"rating 100000 non-null values\n",
"unix_timestamp 100000 non-null values\n",
"age 100000 non-null values\n",
"sex 100000 non-null values\n",
"occupation 100000 non-null values\n",
"zip_code 100000 non-null values\n",
"dtypes: float64(1), int64(5), object(6)"
]
}
],
"prompt_number": 163
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/Users/johndowns/Applications/anaconda/lib/python2.7/site-packages/pandas/core/config.py:570: DeprecationWarning: height has been deprecated.\n",
"\n",
" warnings.warn(d.msg, DeprecationWarning)\n",
"/Users/johndowns/Applications/anaconda/lib/python2.7/site-packages/pandas/core/config.py:570: DeprecationWarning: height has been deprecated.\n",
"\n",
" warnings.warn(d.msg, DeprecationWarning)\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/Users/johndowns/Applications/anaconda/lib/python2.7/site-packages/pandas/core/config.py:570: DeprecationWarning: height has been deprecated.\n",
"\n",
" warnings.warn(d.msg, DeprecationWarning)\n"
]
},
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" movie_id | \n",
" title | \n",
" release_date | \n",
" video_release_date | \n",
" imdb_url | \n",
" user_id | \n",
" rating | \n",
" unix_timestamp | \n",
" age | \n",
" sex | \n",
" occupation | \n",
" zip_code | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" Toy Story (1995) | \n",
" 01-Jan-1995 | \n",
" NaN | \n",
" http://us.imdb.com/M/title-exact?Toy%20Story%2... | \n",
" 308 | \n",
" 4 | \n",
" 887736532 | \n",
" 60 | \n",
" M | \n",
" retired | \n",
" 95076 | \n",
"
\n",
" \n",
" 1 | \n",
" 4 | \n",
" Get Shorty (1995) | \n",
" 01-Jan-1995 | \n",
" NaN | \n",
" http://us.imdb.com/M/title-exact?Get%20Shorty%... | \n",
" 308 | \n",
" 5 | \n",
" 887737890 | \n",
" 60 | \n",
" M | \n",
" retired | \n",
" 95076 | \n",
"
\n",
" \n",
" 2 | \n",
" 5 | \n",
" Copycat (1995) | \n",
" 01-Jan-1995 | \n",
" NaN | \n",
" http://us.imdb.com/M/title-exact?Copycat%20(1995) | \n",
" 308 | \n",
" 4 | \n",
" 887739608 | \n",
" 60 | \n",
" M | \n",
" retired | \n",
" 95076 | \n",
"
\n",
" \n",
" 3 | \n",
" 7 | \n",
" Twelve Monkeys (1995) | \n",
" 01-Jan-1995 | \n",
" NaN | \n",
" http://us.imdb.com/M/title-exact?Twelve%20Monk... | \n",
" 308 | \n",
" 4 | \n",
" 887738847 | \n",
" 60 | \n",
" M | \n",
" retired | \n",
" 95076 | \n",
"
\n",
" \n",
" 4 | \n",
" 8 | \n",
" Babe (1995) | \n",
" 01-Jan-1995 | \n",
" NaN | \n",
" http://us.imdb.com/M/title-exact?Babe%20(1995) | \n",
" 308 | \n",
" 5 | \n",
" 887736696 | \n",
" 60 | \n",
" M | \n",
" retired | \n",
" 95076 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 164,
"text": [
" movie_id title release_date video_release_date \\\n",
"0 1 Toy Story (1995) 01-Jan-1995 NaN \n",
"1 4 Get Shorty (1995) 01-Jan-1995 NaN \n",
"2 5 Copycat (1995) 01-Jan-1995 NaN \n",
"3 7 Twelve Monkeys (1995) 01-Jan-1995 NaN \n",
"4 8 Babe (1995) 01-Jan-1995 NaN \n",
"\n",
" imdb_url user_id rating \\\n",
"0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 308 4 \n",
"1 http://us.imdb.com/M/title-exact?Get%20Shorty%... 308 5 \n",
"2 http://us.imdb.com/M/title-exact?Copycat%20(1995) 308 4 \n",
"3 http://us.imdb.com/M/title-exact?Twelve%20Monk... 308 4 \n",
"4 http://us.imdb.com/M/title-exact?Babe%20(1995) 308 5 \n",
"\n",
" unix_timestamp age sex occupation zip_code \n",
"0 887736532 60 M retired 95076 \n",
"1 887737890 60 M retired 95076 \n",
"2 887739608 60 M retired 95076 \n",
"3 887738847 60 M retired 95076 \n",
"4 887736696 60 M retired 95076 "
]
}
],
"prompt_number": 164
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Some questions**"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# How are ages distributed?\n",
"data.age.hist(bins=30)\n",
"plt.title(\"Distribution of users' ages\")\n",
"plt.ylabel('count of users')\n",
"plt.xlabel('age');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEZCAYAAABSN8jfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVPW+P/D3yKDtlJumkIw6KSANIJCG3SzUMPOE20tR\neOKiVjvtoj2efpl7V3ZOCVZ7p1Q+nTqYZB7RfdpHzZTcKsvstEETKRNLVJCrbA0R8IIOfH9/ECtH\nlFnDDLPWwvfreebRtWbNrPdcP6zvZ601BiGEABERkRN6qB2AiIj0j8WEiIicxmJCREROYzEhIiKn\nsZgQEZHTWEyIiMhpLCbkNnPmzMEbb7zhkvsqKyuDl5cX2vZsj42NRWZmpkvuGwAmTZqE1atXu+z+\nlPrTn/6E/v37Y+DAgW5fN5EzDDzOhFzBbDbjn//8J4xGIzw8PGCxWJCcnIynnnoKBoPB4ftauXIl\nxo0bp/g2Y8eORVJSEmbNmuVodCxevBhHjx5VpXhcrqysDKGhoSgvL0e/fv1UzXItixcvhsFgwGuv\nvaZ2FNIYbpmQSxgMBmzevBn19fUoKyvDwoULsXTpUsyePbtT99XR3zhWq9WZqJpVVlaGfv36qVpI\n7D23jv5hQNcPFhNyOS8vL8THx2PdunXIyspCUVERACA1NRWvvPIKAODUqVN46KGH4Ofnh379+uHe\ne++FEAJJSUkoKytDfHw8vLy88M4776C0tBQ9evTAypUrMWTIENx///04fvw4evTogZaWFnm9R44c\nwejRo+Hj44MpU6bg9OnTAABJkjBo0CCbjGazGTt27EBOTg7S0tKwbt06eHl5ITo6GoDtsJkQAm+8\n8QbMZjP8/f2RkpKC+vp6AJCzffrppxgyZAj69++PJUuWXPO5OXPmDJKTkzFgwACYzWa8+eabEEJg\n+/btmDBhAqqqquDl5XXVLaxVq1ZhzJgxNvN69OiBY8eOAQC2bNmCsLAweHt7w2Qy4c9//rO83ObN\nmxEVFQU/Pz/cfffdOHDggM1z8dZbb2HEiBHw8vJCc3Mzli5dCpPJBG9vb4SGhmLnzp3y8tcqKEeP\nHsW4ceNw0003oX///nj88cdx5swZ+fqCggJER0fD29sbCQkJePTRR+X3g72MHeUhjRBELmA2m8WO\nHTvazR88eLD48MMPhRBCpKamildeeUUIIcTChQvF008/LaxWq7BareKbb7655n2VlJQIg8EgUlJS\nxLlz58SFCxfkec3NzUIIIe677z4RGBgoDh48KM6ePSumT58uHn/8cSGEELm5ucJkMl0z7+LFi0VS\nUpLN9bGxsSIzM1MIIURmZqYICgoSJSUlorGxUUybNk1evi3HU089JS5cuCC+//570atXL3Ho0KGr\nPk9JSUliypQporGxUZSWloqQkBB5PZIktct5uU8++UTcc889NvMMBoM4evSoEEKIgIAA+Xmsq6sT\nBQUFQgghCgoKxIABA8SePXtES0uLyMrKEmazWVy8eFEIIcSQIUNEdHS0qKioEBcuXBA//fSTGDRo\nkKiurhZCCHH8+HF5HR05cuSI2L59u7h48aI4efKkuPfee8X8+fOFEEI0NTWJwYMHi4yMDGG1WsXf\n/vY30bNnT/n90FHGzuYh9+KWCXWpgQMHora2tt38nj17orq6GqWlpfDw8MDdd99t974WL16M3/3u\nd+jVq1e76wwGA5KTk2GxWHDjjTfiP/7jP7B+/foOh8vaCCE6XG7NmjVYsGABzGYzevfujbS0NGRn\nZ9tsFb322mvo1asXRowYgcjISHz//fft7qe5uRnr1q1DWloaevfujSFDhmDBggVyr0ZJ1o707NkT\nBw8eRH19PXx8fOStrI8++gh/+MMfcPvtt8vPU69evZCXlweg9bl7/vnnERgYiF69esHDwwNNTU04\nePAgLl26hMGDB2Po0KF21z9s2DCMHz8enp6euOmmm/DCCy9g165dAIC8vDw0Nzfjueeeg4eHB6ZO\nnYqYmBj5ttfK+I9//ANGo7FTeci9WEyoS1VUVKBv377ydNsX5osvvoigoCBMmDABw4YNw9KlS+3e\n15VDVR1dP3jwYFy6dAmnTp3qZPLfVFdXY8iQITb3bbVaUVNTI88LCAiQ/3/jjTfi7Nmz7e7n1KlT\nuHTpUrv7qqysdDojAHz++efYsmULzGYzYmNj5WJx/Phx/PnPf4afn598qaioQFVVlXzby5+7oKAg\nLFu2DIsXL4a/vz8SExNRXV1td/01NTV47LHHYDKZ4OPjg6SkJPzyyy8AgKqqKgQGBtosf/k6r5Wx\nuroaw4YN61Qeci8WE+oye/fuRVVVFe6555521/Xp0wfvvPMOjh49ik2bNuEvf/kLcnNzAVx7TN5e\n87esrMzm/21/Iffu3Rvnzp2Tr2tubsbJkycV3+/AgQNRWlpqc99GoxH+/v4d3u5KN910Ezw9Pdvd\n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\n",
"text": [
""
]
}
],
"prompt_number": 165
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# How are occupations distributed?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 166
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Which movie is the highest rated?\n",
"most_rated = data.title.value_counts()[0:10]\n",
"print most_rated"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Star Wars (1977) 583\n",
"Contact (1997) 509\n",
"Fargo (1996) 508\n",
"Return of the Jedi (1983) 507\n",
"Liar Liar (1997) 485\n",
"English Patient, The (1996) 481\n",
"Scream (1996) 478\n",
"Toy Story (1995) 452\n",
"Air Force One (1997) 431\n",
"Independence Day (ID4) (1996) 429\n",
"dtype: int64\n"
]
}
],
"prompt_number": 168
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# What movie is the most popular"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# How many movies have less than 100 ratings"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Remove movies with less than 100 ratings from the dataset"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Extra Credit: How would we go about making a recommender system based on this data set?\n",
"#Hint:\n",
"VimeoVideo('64445499')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
" \n",
" "
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 216,
"text": [
""
]
}
],
"prompt_number": 216
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Generators**\n",
"\n",
"Watch this! It was my favorite talk from PyData."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"VimeoVideo(\"79535180\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
" \n",
" "
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 74,
"text": [
""
]
}
],
"prompt_number": 74
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Some material taken from:\n",
" \n",
" https://github.com/jakevdp/2013_fall_ASTR599/\n",
"\n",
" http://www.gregreda.com/2013/10/26/working-with-pandas-dataframes/\n",
" \n",
" "
]
}
],
"metadata": {}
}
]
}