diff --git a/README.md b/README.md
index 2fc95ab..d0b4ec0 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
# awesome-pandas
A collection of resources for [pandas](http://pandas.pydata.org/)
([Python](https://www.python.org/)) and related subjects.
-**Pull requests are very welcome.**
+**Pull requests are very welcome!**
**Contents:** This is an unofficial collection of resources for learning pandas,
an open source Python library for data analysis. Here you will find videos,
diff --git a/cheat_sheet/Cheat Sheet.ipynb b/cheat_sheet/Cheat Sheet.ipynb
index 72ecffc..83bc104 100644
--- a/cheat_sheet/Cheat Sheet.ipynb
+++ b/cheat_sheet/Cheat Sheet.ipynb
@@ -2,7 +2,9 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "raw_mimetype": "-"
+ },
"source": [
"# Pandas Cheat Sheet"
]
@@ -81,10 +83,16 @@
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
- "\n",
"%matplotlib inline"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "To make this Jupyter Notebook reproducible, here are the versions of the libraries we will be using."
+ ]
+ },
{
"cell_type": "code",
"execution_count": 2,
@@ -95,8 +103,8 @@
"output_type": "stream",
"text": [
"pandas version 0.22.0\n",
- "numpy version 1.13.3\n",
- "matplotlib version 2.1.1\n"
+ "numpy version 1.14.2\n",
+ "matplotlib version 2.2.2\n"
]
}
],
@@ -105,58 +113,26 @@
" print(f'{lib.__name__.ljust(12)} version {lib.__version__}')"
]
},
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "pd.set_option(\"display.max_rows\", 2**6)\n",
- "pd.set_option(\"display.max_columns\", 2**6)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "64"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "2**6"
- ]
- },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Importing data\n",
"\n",
- "We'll use"
+ "Using `!` let's us use terminal commands. The `head` command shows the first rows of the file."
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "color,director_name,num_critic_for_reviews,duration,director_facebook_likes,actor_3_facebook_likes,actor_2_name,actor_1_facebook_likes,gross,genres,actor_1_name,movie_title,num_voted_users,cast_total_facebook_likes,actor_3_name,facenumber_in_poster,plot_keywords,movie_imdb_link,num_user_for_reviews,language,country,content_rating,budget,title_year,actor_2_facebook_likes,imdb_score,aspect_ratio,movie_facebook_likes\r",
- "\r\n",
- "Color,James Cameron,723,178,0,855,Joel David Moore,1000,760505847,Action|Adventure|Fantasy|Sci-Fi,CCH Pounder,Avatar ,886204,4834,Wes Studi,0,avatar|future|marine|native|paraplegic,http://www.imdb.com/title/tt0499549/?ref_=fn_tt_tt_1,3054,English,USA,PG-13,237000000,2009,936,7.9,1.78,33000\r",
- "\r\n"
+ "color,director_name,num_critic_for_reviews,duration,director_facebook_likes,actor_3_facebook_likes,actor_2_name,actor_1_facebook_likes,gross,genres,actor_1_name,movie_title,num_voted_users,cast_total_facebook_likes,actor_3_name,facenumber_in_poster,plot_keywords,movie_imdb_link,num_user_for_reviews,language,country,content_rating,budget,title_year,actor_2_facebook_likes,imdb_score,aspect_ratio,movie_facebook_likes\n",
+ "Color,James Cameron,723,178,0,855,Joel David Moore,1000,760505847,Action|Adventure|Fantasy|Sci-Fi,CCH Pounder,Avatar ,886204,4834,Wes Studi,0,avatar|future|marine|native|paraplegic,http://www.imdb.com/title/tt0499549/?ref_=fn_tt_tt_1,3054,English,USA,PG-13,237000000,2009,936,7.9,1.78,33000\n"
]
}
],
@@ -164,25 +140,43 @@
"!head data/movie_metadata.csv -n 2"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It's a huge file, so we'll only load a couple of columns into a pandas DataFrame.\n",
+ "To familiarize ourselves with with [magic commands](http://ipython.readthedocs.io/en/stable/interactive/magics.html), we'll use `%%time` to time the execution of the cell below."
+ ]
+ },
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 4,
"metadata": {},
"outputs": [
{
- "data": {
- "text/plain": [
- "(5043, 28)"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loaded data of size (5043, 6) into memory.\n",
+ "CPU times: user 44 ms, sys: 525 µs, total: 44.5 ms\n",
+ "Wall time: 42.9 ms\n"
+ ]
}
],
"source": [
- "df = pd.read_csv(r'data/movie_metadata.csv', sep = ',')\n",
- "df.shape"
+ "%%time\n",
+ "\n",
+ "cols_to_use = ['movie_title', 'director_name', 'country', 'content_rating', 'imdb_score', 'gross']\n",
+ "df = pd.read_csv(r'data/movie_metadata.csv', sep=',', usecols=cols_to_use)\n",
+ "print(f'Loaded data of size {df.shape} into memory.')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The df.shape gives the rows and columns of the DataFrame. \n",
+ "This leads us naturally to consider summarizations."
]
},
{
@@ -192,6 +186,132 @@
"# Summarizing data"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "There are three methods that are useful to peek at the data, they are df.head, df.tail and df.sample.\n",
+ "Head and tail are $\\mathcal{O}(1)$ operations, while sample is $\\mathcal{O}(n)$, where $n$ is the number of rows.\n",
+ "For small datasets, this makes no difference in practice. We'll use df.sample here."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " director_name | \n",
+ " gross | \n",
+ " movie_title | \n",
+ " country | \n",
+ " content_rating | \n",
+ " imdb_score | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 3097 | \n",
+ " Darren Lynn Bousman | \n",
+ " 63270259.0 | \n",
+ " Saw IV | \n",
+ " USA | \n",
+ " R | \n",
+ " 5.9 | \n",
+ "
\n",
+ " \n",
+ " 1999 | \n",
+ " Roman Polanski | \n",
+ " NaN | \n",
+ " Carnage | \n",
+ " France | \n",
+ " R | \n",
+ " 7.2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " director_name gross movie_title country content_rating \\\n",
+ "3097 Darren Lynn Bousman 63270259.0 Saw IV USA R \n",
+ "1999 Roman Polanski NaN Carnage France R \n",
+ "\n",
+ " imdb_score \n",
+ "3097 5.9 \n",
+ "1999 7.2 "
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.sample(n=2, replace=False, weights=None, random_state=None)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We should make sure the data types are correct. To do so, we can use df.dtypes, or df.info() for some more information."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "RangeIndex: 5043 entries, 0 to 5042\n",
+ "Data columns (total 6 columns):\n",
+ "director_name 4939 non-null object\n",
+ "gross 4159 non-null float64\n",
+ "movie_title 5043 non-null object\n",
+ "country 5038 non-null object\n",
+ "content_rating 4740 non-null object\n",
+ "imdb_score 5043 non-null float64\n",
+ "dtypes: float64(2), object(4)\n",
+ "memory usage: 236.5+ KB\n"
+ ]
+ }
+ ],
+ "source": [
+ "df.info(verbose=True, memory_usage=True, null_counts=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We have some null values. Let's count them by chaining df.isnull() and df.sum()."
+ ]
+ },
{
"cell_type": "code",
"execution_count": 7,
@@ -200,7 +320,13 @@
{
"data": {
"text/plain": [
- "(5043, 28)"
+ "director_name 104\n",
+ "gross 884\n",
+ "movie_title 0\n",
+ "country 5\n",
+ "content_rating 303\n",
+ "imdb_score 0\n",
+ "dtype: int64"
]
},
"execution_count": 7,
@@ -209,7 +335,15 @@
}
],
"source": [
- "df.shape"
+ "null_values = df.isnull().sum()\n",
+ "null_values"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The result of the above is not a DataFrame, but a Series."
]
},
{
@@ -220,17 +354,7 @@
{
"data": {
"text/plain": [
- "color object\n",
- "director_name object\n",
- "num_critic_for_reviews float64\n",
- "duration float64\n",
- "director_facebook_likes float64\n",
- "actor_3_facebook_likes float64\n",
- "actor_2_name object\n",
- "actor_1_facebook_likes float64\n",
- "gross float64\n",
- "genres object\n",
- "dtype: object"
+ "pandas.core.series.Series"
]
},
"execution_count": 8,
@@ -239,7 +363,14 @@
}
],
"source": [
- "df.dtypes.head(10)"
+ "type(null_values)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can make the output prettier by converting null_values to a DataFrame using to_frame(), then transposing using .T, and finally renaming the first index."
]
},
{
@@ -268,149 +399,22 @@
" \n",
" \n",
" | \n",
- " 0 | \n",
- " 1 | \n",
+ " director_name | \n",
+ " gross | \n",
+ " movie_title | \n",
+ " country | \n",
+ " content_rating | \n",
+ " imdb_score | \n",
"
\n",
" \n",
" \n",
" \n",
- " color | \n",
- " Color | \n",
- " Color | \n",
- "
\n",
- " \n",
- " director_name | \n",
- " James Cameron | \n",
- " Gore Verbinski | \n",
- "
\n",
- " \n",
- " num_critic_for_reviews | \n",
- " 723 | \n",
- " 302 | \n",
- "
\n",
- " \n",
- " duration | \n",
- " 178 | \n",
- " 169 | \n",
- "
\n",
- " \n",
- " director_facebook_likes | \n",
+ " Missing values | \n",
+ " 104 | \n",
+ " 884 | \n",
" 0 | \n",
- " 563 | \n",
- "
\n",
- " \n",
- " actor_3_facebook_likes | \n",
- " 855 | \n",
- " 1000 | \n",
- "
\n",
- " \n",
- " actor_2_name | \n",
- " Joel David Moore | \n",
- " Orlando Bloom | \n",
- "
\n",
- " \n",
- " actor_1_facebook_likes | \n",
- " 1000 | \n",
- " 40000 | \n",
- "
\n",
- " \n",
- " gross | \n",
- " 7.60506e+08 | \n",
- " 3.09404e+08 | \n",
- "
\n",
- " \n",
- " genres | \n",
- " Action|Adventure|Fantasy|Sci-Fi | \n",
- " Action|Adventure|Fantasy | \n",
- "
\n",
- " \n",
- " actor_1_name | \n",
- " CCH Pounder | \n",
- " Johnny Depp | \n",
- "
\n",
- " \n",
- " movie_title | \n",
- " Avatar | \n",
- " Pirates of the Caribbean: At World's End | \n",
- "
\n",
- " \n",
- " num_voted_users | \n",
- " 886204 | \n",
- " 471220 | \n",
- "
\n",
- " \n",
- " cast_total_facebook_likes | \n",
- " 4834 | \n",
- " 48350 | \n",
- "
\n",
- " \n",
- " actor_3_name | \n",
- " Wes Studi | \n",
- " Jack Davenport | \n",
- "
\n",
- " \n",
- " facenumber_in_poster | \n",
- " 0 | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " plot_keywords | \n",
- " avatar|future|marine|native|paraplegic | \n",
- " goddess|marriage ceremony|marriage proposal|pi... | \n",
- "
\n",
- " \n",
- " movie_imdb_link | \n",
- " http://www.imdb.com/title/tt0499549/?ref_=fn_t... | \n",
- " http://www.imdb.com/title/tt0449088/?ref_=fn_t... | \n",
- "
\n",
- " \n",
- " num_user_for_reviews | \n",
- " 3054 | \n",
- " 1238 | \n",
- "
\n",
- " \n",
- " language | \n",
- " English | \n",
- " English | \n",
- "
\n",
- " \n",
- " country | \n",
- " USA | \n",
- " USA | \n",
- "
\n",
- " \n",
- " content_rating | \n",
- " PG-13 | \n",
- " PG-13 | \n",
- "
\n",
- " \n",
- " budget | \n",
- " 2.37e+08 | \n",
- " 3e+08 | \n",
- "
\n",
- " \n",
- " title_year | \n",
- " 2009 | \n",
- " 2007 | \n",
- "
\n",
- " \n",
- " actor_2_facebook_likes | \n",
- " 936 | \n",
- " 5000 | \n",
- "
\n",
- " \n",
- " imdb_score | \n",
- " 7.9 | \n",
- " 7.1 | \n",
- "
\n",
- " \n",
- " aspect_ratio | \n",
- " 1.78 | \n",
- " 2.35 | \n",
- "
\n",
- " \n",
- " movie_facebook_likes | \n",
- " 33000 | \n",
+ " 5 | \n",
+ " 303 | \n",
" 0 | \n",
"
\n",
" \n",
@@ -418,65 +422,11 @@
""
],
"text/plain": [
- " 0 \\\n",
- "color Color \n",
- "director_name James Cameron \n",
- "num_critic_for_reviews 723 \n",
- "duration 178 \n",
- "director_facebook_likes 0 \n",
- "actor_3_facebook_likes 855 \n",
- "actor_2_name Joel David Moore \n",
- "actor_1_facebook_likes 1000 \n",
- "gross 7.60506e+08 \n",
- "genres Action|Adventure|Fantasy|Sci-Fi \n",
- "actor_1_name CCH Pounder \n",
- "movie_title Avatar \n",
- "num_voted_users 886204 \n",
- "cast_total_facebook_likes 4834 \n",
- "actor_3_name Wes Studi \n",
- "facenumber_in_poster 0 \n",
- "plot_keywords avatar|future|marine|native|paraplegic \n",
- "movie_imdb_link http://www.imdb.com/title/tt0499549/?ref_=fn_t... \n",
- "num_user_for_reviews 3054 \n",
- "language English \n",
- "country USA \n",
- "content_rating PG-13 \n",
- "budget 2.37e+08 \n",
- "title_year 2009 \n",
- "actor_2_facebook_likes 936 \n",
- "imdb_score 7.9 \n",
- "aspect_ratio 1.78 \n",
- "movie_facebook_likes 33000 \n",
+ " director_name gross movie_title country content_rating \\\n",
+ "Missing values 104 884 0 5 303 \n",
"\n",
- " 1 \n",
- "color Color \n",
- "director_name Gore Verbinski \n",
- "num_critic_for_reviews 302 \n",
- "duration 169 \n",
- "director_facebook_likes 563 \n",
- "actor_3_facebook_likes 1000 \n",
- "actor_2_name Orlando Bloom \n",
- "actor_1_facebook_likes 40000 \n",
- "gross 3.09404e+08 \n",
- "genres Action|Adventure|Fantasy \n",
- "actor_1_name Johnny Depp \n",
- "movie_title Pirates of the Caribbean: At World's End \n",
- "num_voted_users 471220 \n",
- "cast_total_facebook_likes 48350 \n",
- "actor_3_name Jack Davenport \n",
- "facenumber_in_poster 0 \n",
- "plot_keywords goddess|marriage ceremony|marriage proposal|pi... \n",
- "movie_imdb_link http://www.imdb.com/title/tt0449088/?ref_=fn_t... \n",
- "num_user_for_reviews 1238 \n",
- "language English \n",
- "country USA \n",
- "content_rating PG-13 \n",
- "budget 3e+08 \n",
- "title_year 2007 \n",
- "actor_2_facebook_likes 5000 \n",
- "imdb_score 7.1 \n",
- "aspect_ratio 2.35 \n",
- "movie_facebook_likes 0 "
+ " imdb_score \n",
+ "Missing values 0 "
]
},
"execution_count": 9,
@@ -485,7 +435,14 @@
}
],
"source": [
- "df.head(2).T"
+ "null_values.to_frame().T.rename(index={0:'Missing values'})"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The above is called method chaining, and can be written like so:"
]
},
{
@@ -495,36 +452,53 @@
"outputs": [
{
"data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " director_name | \n",
+ " gross | \n",
+ " movie_title | \n",
+ " country | \n",
+ " content_rating | \n",
+ " imdb_score | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Missing values | \n",
+ " 104 | \n",
+ " 884 | \n",
+ " 0 | \n",
+ " 5 | \n",
+ " 303 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
"text/plain": [
- "cast_total_facebook_likes 0\n",
- "imdb_score 0\n",
- "movie_imdb_link 0\n",
- "num_voted_users 0\n",
- "movie_title 0\n",
- "genres 0\n",
- "movie_facebook_likes 0\n",
- "country 5\n",
- "actor_1_facebook_likes 7\n",
- "actor_1_name 7\n",
- "language 12\n",
- "actor_2_facebook_likes 13\n",
- "actor_2_name 13\n",
- "facenumber_in_poster 13\n",
- "duration 15\n",
- "color 19\n",
- "num_user_for_reviews 21\n",
- "actor_3_facebook_likes 23\n",
- "actor_3_name 23\n",
- "num_critic_for_reviews 50\n",
- "director_facebook_likes 104\n",
- "director_name 104\n",
- "title_year 108\n",
- "plot_keywords 153\n",
- "content_rating 303\n",
- "aspect_ratio 329\n",
- "budget 492\n",
- "gross 884\n",
- "dtype: int64"
+ " director_name gross movie_title country content_rating \\\n",
+ "Missing values 104 884 0 5 303 \n",
+ "\n",
+ " imdb_score \n",
+ "Missing values 0 "
]
},
"execution_count": 10,
@@ -533,13 +507,274 @@
}
],
"source": [
- "df.isnull().sum().sort_values()"
+ "(df\n",
+ " .isnull() # Figure out whether every entry is null (missing), or not\n",
+ " .sum(axis=0) # Sum over each column, axis=0 is the default\n",
+ " .to_frame() # The result is a Series, convert to DataFrame\n",
+ " .T # Transpose (switch rows and columns)\n",
+ " .rename(index={0:'Missing values'}) # Rename the index and show it\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A tour of summarization would not be completed without df.describe().\n",
+ "Calling df.count(), df.nunique(), df.mean(), df.std(), df.min(), df.quantile(), df.max() is also possible."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " director_name | \n",
+ " gross | \n",
+ " movie_title | \n",
+ " country | \n",
+ " content_rating | \n",
+ " imdb_score | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " count | \n",
+ " 4939 | \n",
+ " 4159 | \n",
+ " 5043 | \n",
+ " 5038 | \n",
+ " 4740 | \n",
+ " 5043 | \n",
+ "
\n",
+ " \n",
+ " unique | \n",
+ " 2398 | \n",
+ " | \n",
+ " 4917 | \n",
+ " 65 | \n",
+ " 18 | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " top | \n",
+ " Steven Spielberg | \n",
+ " | \n",
+ " King Kong | \n",
+ " USA | \n",
+ " R | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " freq | \n",
+ " 26 | \n",
+ " | \n",
+ " 3 | \n",
+ " 3807 | \n",
+ " 2118 | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " mean | \n",
+ " | \n",
+ " 4.84684e+07 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 6.44214 | \n",
+ "
\n",
+ " \n",
+ " std | \n",
+ " | \n",
+ " 6.8453e+07 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 1.12512 | \n",
+ "
\n",
+ " \n",
+ " min | \n",
+ " | \n",
+ " 162 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 1.6 | \n",
+ "
\n",
+ " \n",
+ " 50% | \n",
+ " | \n",
+ " 2.55175e+07 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 6.6 | \n",
+ "
\n",
+ " \n",
+ " max | \n",
+ " | \n",
+ " 7.60506e+08 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 9.5 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " director_name gross movie_title country content_rating \\\n",
+ "count 4939 4159 5043 5038 4740 \n",
+ "unique 2398 4917 65 18 \n",
+ "top Steven Spielberg King Kong USA R \n",
+ "freq 26 3 3807 2118 \n",
+ "mean 4.84684e+07 \n",
+ "std 6.8453e+07 \n",
+ "min 162 \n",
+ "50% 2.55175e+07 \n",
+ "max 7.60506e+08 \n",
+ "\n",
+ " imdb_score \n",
+ "count 5043 \n",
+ "unique \n",
+ "top \n",
+ "freq \n",
+ "mean 6.44214 \n",
+ "std 1.12512 \n",
+ "min 1.6 \n",
+ "50% 6.6 \n",
+ "max 9.5 "
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.describe(percentiles=[0.5], include='all').fillna('')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualizations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " gross | \n",
+ " imdb_score | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " gross | \n",
+ " 1.000000 | \n",
+ " 0.096247 | \n",
+ "
\n",
+ " \n",
+ " imdb_score | \n",
+ " 0.096247 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " gross imdb_score\n",
+ "gross 1.000000 0.096247\n",
+ "imdb_score 0.096247 1.000000"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.corr(method='spearman', min_periods=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plot = pd.plotting.scatter_matrix(df, alpha=0.5, figsize=(8,5))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Honorable mentions are len(df)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
"outputs": [],
"source": [
"# len(df), shape, value_counts, head, tail, max(), min(), mean, dtype, info(), \n",
@@ -555,7 +790,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -565,7 +800,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
@@ -637,7 +872,7 @@
"2 PG-13 6.8 "
]
},
- "execution_count": 13,
+ "execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
@@ -649,7 +884,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -721,7 +956,7 @@
"102 PG-13 7.8 "
]
},
- "execution_count": 14,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
@@ -732,9 +967,29 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 18,
"metadata": {},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/tommy/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: FutureWarning: \n",
+ "Passing list-likes to .loc or [] with any missing label will raise\n",
+ "KeyError in the future, you can use .reindex() as an alternative.\n",
+ "\n",
+ "See the documentation here:\n",
+ "http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
+ " \"\"\"Entry point for launching an IPython kernel.\n",
+ "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py:1367: FutureWarning: \n",
+ "Passing list-likes to .loc or [] with any missing label will raise\n",
+ "KeyError in the future, you can use .reindex() as an alternative.\n",
+ "\n",
+ "See the documentation here:\n",
+ "http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
+ " return self._getitem_tuple(key)\n"
+ ]
+ },
{
"data": {
"text/html": [
@@ -773,7 +1028,7 @@
" USA | \n",
" PG-13 | \n",
" 7.9 | \n",
- " 0.0 | \n",
+ " NaN | \n",
" 760505847.0 | \n",
" \n",
" \n",
@@ -783,7 +1038,7 @@
" USA | \n",
" PG-13 | \n",
" 7.1 | \n",
- " 563.0 | \n",
+ " NaN | \n",
" 309404152.0 | \n",
"
\n",
" \n",
@@ -796,11 +1051,11 @@
"1 Pirates of the Caribbean: At World's End Gore Verbinski USA \n",
"\n",
" content_rating imdb_score director_facebook_likes gross \n",
- "0 PG-13 7.9 0.0 760505847.0 \n",
- "1 PG-13 7.1 563.0 309404152.0 "
+ "0 PG-13 7.9 NaN 760505847.0 \n",
+ "1 PG-13 7.1 NaN 309404152.0 "
]
},
- "execution_count": 15,
+ "execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
@@ -812,7 +1067,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
@@ -877,7 +1132,7 @@
"1 PG-13 7.1 309404152.0 "
]
},
- "execution_count": 16,
+ "execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
@@ -889,7 +1144,7 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -965,7 +1220,7 @@
"3466 R 9.2 134821952.0 "
]
},
- "execution_count": 17,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
@@ -976,7 +1231,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
@@ -985,7 +1240,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -1065,7 +1320,7 @@
"max 10 760,505,847 20"
]
},
- "execution_count": 19,
+ "execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -1076,7 +1331,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
@@ -1135,7 +1390,7 @@
"gross_log 0.074280 0.616034 1.000000"
]
},
- "execution_count": 20,
+ "execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
@@ -1153,7 +1408,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
@@ -1233,7 +1488,7 @@
"9 PG 7.5 301956980.0 19.525795 "
]
},
- "execution_count": 21,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
@@ -1244,7 +1499,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
@@ -1324,7 +1579,7 @@
"4029 Brazil R 8.7 7563397.0 15.838831 "
]
},
- "execution_count": 22,
+ "execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
@@ -1336,7 +1591,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
@@ -1346,7 +1601,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 27,
"metadata": {},
"outputs": [
{
@@ -1450,7 +1705,7 @@
"1196 USA R 7.8 102310175.0 18.443520 "
]
},
- "execution_count": 24,
+ "execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
@@ -1461,7 +1716,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 28,
"metadata": {},
"outputs": [
{
@@ -1475,7 +1730,7 @@
"Name: country, dtype: int64"
]
},
- "execution_count": 25,
+ "execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
@@ -1486,7 +1741,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 29,
"metadata": {},
"outputs": [
{
@@ -1500,7 +1755,7 @@
"Name: country, dtype: int64"
]
},
- "execution_count": 26,
+ "execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
@@ -1517,10 +1772,8 @@
]
},
{
- "cell_type": "code",
- "execution_count": null,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [],
"source": [
"- **Split-apply-combine and pivots**: groupby, dt.month, dt.year, groupby.mean(), agg, stack, unstack, pivot, melt, merge"
]
@@ -1534,7 +1787,7 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
@@ -1600,7 +1853,7 @@
"Ridley Scott 16"
]
},
- "execution_count": 36,
+ "execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
@@ -1611,7 +1864,7 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": 31,
"metadata": {},
"outputs": [
{
@@ -1677,7 +1930,7 @@
"Charles Chaplin 8.6"
]
},
- "execution_count": 41,
+ "execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
@@ -1688,7 +1941,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": 32,
"metadata": {},
"outputs": [
{
@@ -1792,7 +2045,7 @@
"4 NaN NaN 7.1 NaN NaN "
]
},
- "execution_count": 43,
+ "execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
@@ -1803,7 +2056,7 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": 33,
"metadata": {},
"outputs": [
{
@@ -1869,7 +2122,7 @@
"Aaron Schneider 7.1 16.032162 1"
]
},
- "execution_count": 49,
+ "execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
@@ -1882,7 +2135,7 @@
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": 34,
"metadata": {},
"outputs": [
{
@@ -1948,7 +2201,7 @@
"Aaron Schneider 0.771125 -0.321155 -0.488133"
]
},
- "execution_count": 69,
+ "execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
@@ -1960,7 +2213,7 @@
},
{
"cell_type": "code",
- "execution_count": 71,
+ "execution_count": 35,
"metadata": {},
"outputs": [
{
@@ -2031,7 +2284,7 @@
"Clint Eastwood 0.883067 8.041961 8.705881 17.630909"
]
},
- "execution_count": 71,
+ "execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
@@ -2047,9 +2300,22 @@
},
{
"cell_type": "code",
- "execution_count": 82,
+ "execution_count": 36,
"metadata": {},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py:858: FutureWarning: \n",
+ "Passing list-likes to .loc or [] with any missing label will raise\n",
+ "KeyError in the future, you can use .reindex() as an alternative.\n",
+ "\n",
+ "See the documentation here:\n",
+ "http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
+ " return self._getitem_lowerdim(tup)\n"
+ ]
+ },
{
"data": {
"text/html": [
@@ -2071,155 +2337,23 @@
" \n",
" \n",
" content_rating | \n",
- " Approved | \n",
- " G | \n",
- " GP | \n",
- " M | \n",
- " NC-17 | \n",
- " Not Rated | \n",
- " PG | \n",
- " PG-13 | \n",
- " Passed | \n",
- " R | \n",
- " TV-14 | \n",
- " TV-G | \n",
- " TV-PG | \n",
- " Unrated | \n",
- " X | \n",
"
\n",
" \n",
" title_year | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
"
\n",
" \n",
" \n",
- " \n",
- " 2012.0 | \n",
- " 0.0 | \n",
- " 2.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 18.0 | \n",
- " 26.0 | \n",
- " 71.0 | \n",
- " 0.0 | \n",
- " 84.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2013.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 14.0 | \n",
- " 26.0 | \n",
- " 68.0 | \n",
- " 0.0 | \n",
- " 93.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2014.0 | \n",
- " 0.0 | \n",
- " 3.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 9.0 | \n",
- " 28.0 | \n",
- " 72.0 | \n",
- " 0.0 | \n",
- " 86.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 5.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2015.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 5.0 | \n",
- " 22.0 | \n",
- " 59.0 | \n",
- " 0.0 | \n",
- " 77.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2016.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 2.0 | \n",
- " 11.0 | \n",
- " 41.0 | \n",
- " 0.0 | \n",
- " 31.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- "
\n",
" \n",
"\n",
""
],
"text/plain": [
- "content_rating Approved G GP M NC-17 Not Rated PG PG-13 \\\n",
- "title_year \n",
- "2012.0 0.0 2.0 0.0 0.0 0.0 18.0 26.0 71.0 \n",
- "2013.0 0.0 1.0 0.0 0.0 0.0 14.0 26.0 68.0 \n",
- "2014.0 0.0 3.0 0.0 0.0 0.0 9.0 28.0 72.0 \n",
- "2015.0 0.0 1.0 0.0 0.0 0.0 5.0 22.0 59.0 \n",
- "2016.0 0.0 0.0 0.0 0.0 0.0 2.0 11.0 41.0 \n",
- "\n",
- "content_rating Passed R TV-14 TV-G TV-PG Unrated X \n",
- "title_year \n",
- "2012.0 0.0 84.0 0.0 1.0 0.0 0.0 0.0 \n",
- "2013.0 0.0 93.0 1.0 0.0 0.0 1.0 0.0 \n",
- "2014.0 0.0 86.0 0.0 0.0 0.0 5.0 0.0 \n",
- "2015.0 0.0 77.0 1.0 0.0 0.0 1.0 0.0 \n",
- "2016.0 0.0 31.0 0.0 0.0 0.0 0.0 0.0 "
+ "Empty DataFrame\n",
+ "Columns: []\n",
+ "Index: []"
]
},
- "execution_count": 82,
+ "execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
@@ -2238,7 +2372,7 @@
},
{
"cell_type": "code",
- "execution_count": 83,
+ "execution_count": 37,
"metadata": {},
"outputs": [
{
@@ -2262,182 +2396,59 @@
" \n",
" \n",
" | \n",
- " color | \n",
" director_name | \n",
- " num_critic_for_reviews | \n",
- " duration | \n",
- " director_facebook_likes | \n",
- " actor_3_facebook_likes | \n",
- " actor_2_name | \n",
- " actor_1_facebook_likes | \n",
" gross | \n",
- " genres | \n",
- " actor_1_name | \n",
" movie_title | \n",
- " num_voted_users | \n",
- " cast_total_facebook_likes | \n",
- " actor_3_name | \n",
- " facenumber_in_poster | \n",
- " plot_keywords | \n",
- " movie_imdb_link | \n",
- " num_user_for_reviews | \n",
- " language | \n",
" country | \n",
" content_rating | \n",
- " budget | \n",
- " title_year | \n",
- " actor_2_facebook_likes | \n",
" imdb_score | \n",
- " aspect_ratio | \n",
- " movie_facebook_likes | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
- " Color | \n",
" James Cameron | \n",
- " 723.0 | \n",
- " 178.0 | \n",
- " 0.0 | \n",
- " 855.0 | \n",
- " Joel David Moore | \n",
- " 1000.0 | \n",
" 760505847.0 | \n",
- " Action|Adventure|Fantasy|Sci-Fi | \n",
- " CCH Pounder | \n",
" Avatar | \n",
- " 886204 | \n",
- " 4834 | \n",
- " Wes Studi | \n",
- " 0.0 | \n",
- " avatar|future|marine|native|paraplegic | \n",
- " http://www.imdb.com/title/tt0499549/?ref_=fn_t... | \n",
- " 3054.0 | \n",
- " English | \n",
" USA | \n",
" PG-13 | \n",
- " 237000000.0 | \n",
- " 2009.0 | \n",
- " 936.0 | \n",
" 7.9 | \n",
- " 1.78 | \n",
- " 33000 | \n",
"
\n",
" \n",
" 1 | \n",
- " Color | \n",
" Gore Verbinski | \n",
- " 302.0 | \n",
- " 169.0 | \n",
- " 563.0 | \n",
- " 1000.0 | \n",
- " Orlando Bloom | \n",
- " 40000.0 | \n",
" 309404152.0 | \n",
- " Action|Adventure|Fantasy | \n",
- " Johnny Depp | \n",
" Pirates of the Caribbean: At World's End | \n",
- " 471220 | \n",
- " 48350 | \n",
- " Jack Davenport | \n",
- " 0.0 | \n",
- " goddess|marriage ceremony|marriage proposal|pi... | \n",
- " http://www.imdb.com/title/tt0449088/?ref_=fn_t... | \n",
- " 1238.0 | \n",
- " English | \n",
" USA | \n",
" PG-13 | \n",
- " 300000000.0 | \n",
- " 2007.0 | \n",
- " 5000.0 | \n",
" 7.1 | \n",
- " 2.35 | \n",
- " 0 | \n",
"
\n",
" \n",
" 2 | \n",
- " Color | \n",
" Sam Mendes | \n",
- " 602.0 | \n",
- " 148.0 | \n",
- " 0.0 | \n",
- " 161.0 | \n",
- " Rory Kinnear | \n",
- " 11000.0 | \n",
" 200074175.0 | \n",
- " Action|Adventure|Thriller | \n",
- " Christoph Waltz | \n",
" Spectre | \n",
- " 275868 | \n",
- " 11700 | \n",
- " Stephanie Sigman | \n",
- " 1.0 | \n",
- " bomb|espionage|sequel|spy|terrorist | \n",
- " http://www.imdb.com/title/tt2379713/?ref_=fn_t... | \n",
- " 994.0 | \n",
- " English | \n",
" UK | \n",
" PG-13 | \n",
- " 245000000.0 | \n",
- " 2015.0 | \n",
- " 393.0 | \n",
" 6.8 | \n",
- " 2.35 | \n",
- " 85000 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " color director_name num_critic_for_reviews duration \\\n",
- "0 Color James Cameron 723.0 178.0 \n",
- "1 Color Gore Verbinski 302.0 169.0 \n",
- "2 Color Sam Mendes 602.0 148.0 \n",
+ " director_name gross movie_title \\\n",
+ "0 James Cameron 760505847.0 Avatar \n",
+ "1 Gore Verbinski 309404152.0 Pirates of the Caribbean: At World's End \n",
+ "2 Sam Mendes 200074175.0 Spectre \n",
"\n",
- " director_facebook_likes actor_3_facebook_likes actor_2_name \\\n",
- "0 0.0 855.0 Joel David Moore \n",
- "1 563.0 1000.0 Orlando Bloom \n",
- "2 0.0 161.0 Rory Kinnear \n",
- "\n",
- " actor_1_facebook_likes gross genres \\\n",
- "0 1000.0 760505847.0 Action|Adventure|Fantasy|Sci-Fi \n",
- "1 40000.0 309404152.0 Action|Adventure|Fantasy \n",
- "2 11000.0 200074175.0 Action|Adventure|Thriller \n",
- "\n",
- " actor_1_name movie_title \\\n",
- "0 CCH Pounder Avatar \n",
- "1 Johnny Depp Pirates of the Caribbean: At World's End \n",
- "2 Christoph Waltz Spectre \n",
- "\n",
- " num_voted_users cast_total_facebook_likes actor_3_name \\\n",
- "0 886204 4834 Wes Studi \n",
- "1 471220 48350 Jack Davenport \n",
- "2 275868 11700 Stephanie Sigman \n",
- "\n",
- " facenumber_in_poster plot_keywords \\\n",
- "0 0.0 avatar|future|marine|native|paraplegic \n",
- "1 0.0 goddess|marriage ceremony|marriage proposal|pi... \n",
- "2 1.0 bomb|espionage|sequel|spy|terrorist \n",
- "\n",
- " movie_imdb_link num_user_for_reviews \\\n",
- "0 http://www.imdb.com/title/tt0499549/?ref_=fn_t... 3054.0 \n",
- "1 http://www.imdb.com/title/tt0449088/?ref_=fn_t... 1238.0 \n",
- "2 http://www.imdb.com/title/tt2379713/?ref_=fn_t... 994.0 \n",
- "\n",
- " language country content_rating budget title_year \\\n",
- "0 English USA PG-13 237000000.0 2009.0 \n",
- "1 English USA PG-13 300000000.0 2007.0 \n",
- "2 English UK PG-13 245000000.0 2015.0 \n",
- "\n",
- " actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes \n",
- "0 936.0 7.9 1.78 33000 \n",
- "1 5000.0 7.1 2.35 0 \n",
- "2 393.0 6.8 2.35 85000 "
+ " country content_rating imdb_score \n",
+ "0 USA PG-13 7.9 \n",
+ "1 USA PG-13 7.1 \n",
+ "2 UK PG-13 6.8 "
]
},
- "execution_count": 83,
+ "execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
@@ -2448,181 +2459,25 @@
},
{
"cell_type": "code",
- "execution_count": 90,
+ "execution_count": 38,
"metadata": {},
"outputs": [
{
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " content_rating | \n",
- " Approved | \n",
- " G | \n",
- " GP | \n",
- " M | \n",
- " NC-17 | \n",
- " Not Rated | \n",
- " PG | \n",
- " PG-13 | \n",
- " Passed | \n",
- " R | \n",
- " TV-14 | \n",
- " TV-G | \n",
- " TV-PG | \n",
- " Unrated | \n",
- " X | \n",
- "
\n",
- " \n",
- " title_year | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 2012.0 | \n",
- " 0.0 | \n",
- " 2.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 18.0 | \n",
- " 26.0 | \n",
- " 71.0 | \n",
- " 0.0 | \n",
- " 84.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2013.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 14.0 | \n",
- " 26.0 | \n",
- " 68.0 | \n",
- " 0.0 | \n",
- " 93.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2014.0 | \n",
- " 0.0 | \n",
- " 3.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 9.0 | \n",
- " 28.0 | \n",
- " 72.0 | \n",
- " 0.0 | \n",
- " 86.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 5.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2015.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 5.0 | \n",
- " 22.0 | \n",
- " 59.0 | \n",
- " 0.0 | \n",
- " 77.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " 2016.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 2.0 | \n",
- " 11.0 | \n",
- " 41.0 | \n",
- " 0.0 | \n",
- " 31.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- "content_rating Approved G GP M NC-17 Not Rated PG PG-13 \\\n",
- "title_year \n",
- "2012.0 0.0 2.0 0.0 0.0 0.0 18.0 26.0 71.0 \n",
- "2013.0 0.0 1.0 0.0 0.0 0.0 14.0 26.0 68.0 \n",
- "2014.0 0.0 3.0 0.0 0.0 0.0 9.0 28.0 72.0 \n",
- "2015.0 0.0 1.0 0.0 0.0 0.0 5.0 22.0 59.0 \n",
- "2016.0 0.0 0.0 0.0 0.0 0.0 2.0 11.0 41.0 \n",
- "\n",
- "content_rating Passed R TV-14 TV-G TV-PG Unrated X \n",
- "title_year \n",
- "2012.0 0.0 84.0 0.0 1.0 0.0 0.0 0.0 \n",
- "2013.0 0.0 93.0 1.0 0.0 0.0 1.0 0.0 \n",
- "2014.0 0.0 86.0 0.0 0.0 0.0 5.0 0.0 \n",
- "2015.0 0.0 77.0 1.0 0.0 0.0 1.0 0.0 \n",
- "2016.0 0.0 31.0 0.0 0.0 0.0 0.0 0.0 "
- ]
- },
- "execution_count": 90,
- "metadata": {},
- "output_type": "execute_result"
+ "ename": "KeyError",
+ "evalue": "'title_year'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'title_year'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'content_rating'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m aggfunc=pd.DataFrame.nunique)\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m .tail(5))\n",
+ "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36mpivot_table\u001b[0;34m(self, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name)\u001b[0m\n\u001b[1;32m 4466\u001b[0m \u001b[0maggfunc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maggfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfill_value\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfill_value\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4467\u001b[0m \u001b[0mmargins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmargins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdropna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdropna\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4468\u001b[0;31m margins_name=margins_name)\n\u001b[0m\u001b[1;32m 4469\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4470\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdropna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/reshape/pivot.py\u001b[0m in \u001b[0;36mpivot_table\u001b[0;34m(data, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m \u001b[0mgrouped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroupby\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0magged\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgrouped\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0magg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maggfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36mgroupby\u001b[0;34m(self, by, axis, level, as_index, sort, group_keys, squeeze, **kwargs)\u001b[0m\n\u001b[1;32m 5160\u001b[0m return groupby(self, by=by, axis=axis, level=level, as_index=as_index,\n\u001b[1;32m 5161\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroup_keys\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgroup_keys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msqueeze\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5162\u001b[0;31m **kwargs)\n\u001b[0m\u001b[1;32m 5163\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5164\u001b[0m def asfreq(self, freq, method=None, how=None, normalize=False,\n",
+ "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py\u001b[0m in \u001b[0;36mgroupby\u001b[0;34m(obj, by, **kwds)\u001b[0m\n\u001b[1;32m 1846\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'invalid type: %s'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1847\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1848\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mklass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mby\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1849\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1850\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, squeeze, **kwargs)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0mlevel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlevel\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 516\u001b[0;31m mutated=self.mutated)\n\u001b[0m\u001b[1;32m 517\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 518\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py\u001b[0m in \u001b[0;36m_get_grouper\u001b[0;34m(obj, key, axis, level, sort, mutated, validate)\u001b[0m\n\u001b[1;32m 2932\u001b[0m \u001b[0min_axis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgpr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2933\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2934\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgpr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2935\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mGrouper\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mgpr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkey\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2936\u001b[0m \u001b[0;31m# Add key to exclusions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mKeyError\u001b[0m: 'title_year'"
+ ]
}
],
"source": [
@@ -2680,455 +2535,9 @@
},
{
"cell_type": "code",
- "execution_count": 124,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py:4291: FutureWarning: using a dict with renaming is deprecated and will be removed in a future version\n",
- " return super(DataFrameGroupBy, self).aggregate(arg, *args, **kwargs)\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " m | \n",
- " sdf | \n",
- "
\n",
- " \n",
- " title_year | \n",
- " | \n",
- " | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 1916.0 | \n",
- " 123.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1920.0 | \n",
- " 110.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1925.0 | \n",
- " 151.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1927.0 | \n",
- " 145.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1929.0 | \n",
- " 105.000000 | \n",
- " 7.071068 | \n",
- "
\n",
- " \n",
- " 1930.0 | \n",
- " 96.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1932.0 | \n",
- " 79.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1933.0 | \n",
- " 77.500000 | \n",
- " 16.263456 | \n",
- "
\n",
- " \n",
- " 1934.0 | \n",
- " 65.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1935.0 | \n",
- " 81.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1936.0 | \n",
- " 93.500000 | \n",
- " 9.192388 | \n",
- "
\n",
- " \n",
- " 1937.0 | \n",
- " 92.000000 | \n",
- " 12.727922 | \n",
- "
\n",
- " \n",
- " 1938.0 | \n",
- " 116.000000 | \n",
- " 14.142136 | \n",
- "
\n",
- " \n",
- " 1939.0 | \n",
- " 149.333333 | \n",
- " 67.002488 | \n",
- "
\n",
- " \n",
- " 1940.0 | \n",
- " 108.000000 | \n",
- " 21.059440 | \n",
- "
\n",
- " \n",
- " 1941.0 | \n",
- " 118.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1942.0 | \n",
- " 76.000000 | \n",
- " 8.485281 | \n",
- "
\n",
- " \n",
- " 1943.0 | \n",
- " 122.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1944.0 | \n",
- " 101.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1945.0 | \n",
- " 103.750000 | \n",
- " 10.500000 | \n",
- "
\n",
- " \n",
- " 1946.0 | \n",
- " 144.666667 | \n",
- " 27.006172 | \n",
- "
\n",
- " \n",
- " 1947.0 | \n",
- " 101.666667 | \n",
- " 14.224392 | \n",
- "
\n",
- " \n",
- " 1948.0 | \n",
- " 98.666667 | \n",
- " 29.143324 | \n",
- "
\n",
- " \n",
- " 1949.0 | \n",
- " 106.000000 | \n",
- " 4.242641 | \n",
- "
\n",
- " \n",
- " 1950.0 | \n",
- " 107.000000 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1951.0 | \n",
- " 134.666667 | \n",
- " 32.593455 | \n",
- "
\n",
- " \n",
- " 1952.0 | \n",
- " 106.750000 | \n",
- " 31.223656 | \n",
- "
\n",
- " \n",
- " 1953.0 | \n",
- " 106.250000 | \n",
- " 24.878036 | \n",
- "
\n",
- " \n",
- " 1954.0 | \n",
- " 140.600000 | \n",
- " 36.073536 | \n",
- "
\n",
- " \n",
- " 1955.0 | \n",
- " 112.500000 | \n",
- " 19.091883 | \n",
- "
\n",
- " \n",
- " 1956.0 | \n",
- " 103.000000 | \n",
- " 13.114877 | \n",
- "
\n",
- " \n",
- " 1957.0 | \n",
- " 128.500000 | \n",
- " 45.961941 | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 1985.0 | \n",
- " 108.724138 | \n",
- " 20.325734 | \n",
- "
\n",
- " \n",
- " 1986.0 | \n",
- " 104.653846 | \n",
- " 14.707664 | \n",
- "
\n",
- " \n",
- " 1987.0 | \n",
- " 105.500000 | \n",
- " 29.359837 | \n",
- "
\n",
- " \n",
- " 1988.0 | \n",
- " 107.000000 | \n",
- " 18.638669 | \n",
- "
\n",
- " \n",
- " 1989.0 | \n",
- " 113.121212 | \n",
- " 19.582769 | \n",
- "
\n",
- " \n",
- " 1990.0 | \n",
- " 114.100000 | \n",
- " 32.563307 | \n",
- "
\n",
- " \n",
- " 1991.0 | \n",
- " 113.064516 | \n",
- " 26.856328 | \n",
- "
\n",
- " \n",
- " 1992.0 | \n",
- " 116.088235 | \n",
- " 24.342714 | \n",
- "
\n",
- " \n",
- " 1993.0 | \n",
- " 120.229167 | \n",
- " 43.293280 | \n",
- "
\n",
- " \n",
- " 1994.0 | \n",
- " 111.481481 | \n",
- " 25.176165 | \n",
- "
\n",
- " \n",
- " 1995.0 | \n",
- " 114.528571 | \n",
- " 24.225224 | \n",
- "
\n",
- " \n",
- " 1996.0 | \n",
- " 110.010101 | \n",
- " 18.521083 | \n",
- "
\n",
- " \n",
- " 1997.0 | \n",
- " 110.254237 | \n",
- " 21.591858 | \n",
- "
\n",
- " \n",
- " 1998.0 | \n",
- " 109.462687 | \n",
- " 20.978204 | \n",
- "
\n",
- " \n",
- " 1999.0 | \n",
- " 108.642857 | \n",
- " 20.332059 | \n",
- "
\n",
- " \n",
- " 2000.0 | \n",
- " 107.535294 | \n",
- " 20.673610 | \n",
- "
\n",
- " \n",
- " 2001.0 | \n",
- " 106.941489 | \n",
- " 23.319033 | \n",
- "
\n",
- " \n",
- " 2002.0 | \n",
- " 104.229665 | \n",
- " 18.260268 | \n",
- "
\n",
- " \n",
- " 2003.0 | \n",
- " 106.402367 | \n",
- " 22.667451 | \n",
- "
\n",
- " \n",
- " 2004.0 | \n",
- " 107.299065 | \n",
- " 20.988579 | \n",
- "
\n",
- " \n",
- " 2005.0 | \n",
- " 107.504545 | \n",
- " 22.870790 | \n",
- "
\n",
- " \n",
- " 2006.0 | \n",
- " 107.147059 | \n",
- " 20.243023 | \n",
- "
\n",
- " \n",
- " 2007.0 | \n",
- " 106.897059 | \n",
- " 24.419854 | \n",
- "
\n",
- " \n",
- " 2008.0 | \n",
- " 105.382222 | \n",
- " 17.785318 | \n",
- "
\n",
- " \n",
- " 2009.0 | \n",
- " 105.127413 | \n",
- " 18.262597 | \n",
- "
\n",
- " \n",
- " 2010.0 | \n",
- " 105.434211 | \n",
- " 15.323819 | \n",
- "
\n",
- " \n",
- " 2011.0 | \n",
- " 105.035714 | \n",
- " 16.797356 | \n",
- "
\n",
- " \n",
- " 2012.0 | \n",
- " 105.900000 | \n",
- " 22.001640 | \n",
- "
\n",
- " \n",
- " 2013.0 | \n",
- " 108.093220 | \n",
- " 22.074145 | \n",
- "
\n",
- " \n",
- " 2014.0 | \n",
- " 105.426295 | \n",
- " 19.384879 | \n",
- "
\n",
- " \n",
- " 2015.0 | \n",
- " 106.022321 | \n",
- " 17.848250 | \n",
- "
\n",
- " \n",
- " 2016.0 | \n",
- " 109.632075 | \n",
- " 17.020618 | \n",
- "
\n",
- " \n",
- "
\n",
- "
91 rows × 2 columns
\n",
- "
"
- ],
- "text/plain": [
- " m sdf\n",
- "title_year \n",
- "1916.0 123.000000 NaN\n",
- "1920.0 110.000000 NaN\n",
- "1925.0 151.000000 NaN\n",
- "1927.0 145.000000 NaN\n",
- "1929.0 105.000000 7.071068\n",
- "1930.0 96.000000 NaN\n",
- "1932.0 79.000000 NaN\n",
- "1933.0 77.500000 16.263456\n",
- "1934.0 65.000000 NaN\n",
- "1935.0 81.000000 NaN\n",
- "1936.0 93.500000 9.192388\n",
- "1937.0 92.000000 12.727922\n",
- "1938.0 116.000000 14.142136\n",
- "1939.0 149.333333 67.002488\n",
- "1940.0 108.000000 21.059440\n",
- "1941.0 118.000000 NaN\n",
- "1942.0 76.000000 8.485281\n",
- "1943.0 122.000000 NaN\n",
- "1944.0 101.000000 NaN\n",
- "1945.0 103.750000 10.500000\n",
- "1946.0 144.666667 27.006172\n",
- "1947.0 101.666667 14.224392\n",
- "1948.0 98.666667 29.143324\n",
- "1949.0 106.000000 4.242641\n",
- "1950.0 107.000000 NaN\n",
- "1951.0 134.666667 32.593455\n",
- "1952.0 106.750000 31.223656\n",
- "1953.0 106.250000 24.878036\n",
- "1954.0 140.600000 36.073536\n",
- "1955.0 112.500000 19.091883\n",
- "1956.0 103.000000 13.114877\n",
- "1957.0 128.500000 45.961941\n",
- "... ... ...\n",
- "1985.0 108.724138 20.325734\n",
- "1986.0 104.653846 14.707664\n",
- "1987.0 105.500000 29.359837\n",
- "1988.0 107.000000 18.638669\n",
- "1989.0 113.121212 19.582769\n",
- "1990.0 114.100000 32.563307\n",
- "1991.0 113.064516 26.856328\n",
- "1992.0 116.088235 24.342714\n",
- "1993.0 120.229167 43.293280\n",
- "1994.0 111.481481 25.176165\n",
- "1995.0 114.528571 24.225224\n",
- "1996.0 110.010101 18.521083\n",
- "1997.0 110.254237 21.591858\n",
- "1998.0 109.462687 20.978204\n",
- "1999.0 108.642857 20.332059\n",
- "2000.0 107.535294 20.673610\n",
- "2001.0 106.941489 23.319033\n",
- "2002.0 104.229665 18.260268\n",
- "2003.0 106.402367 22.667451\n",
- "2004.0 107.299065 20.988579\n",
- "2005.0 107.504545 22.870790\n",
- "2006.0 107.147059 20.243023\n",
- "2007.0 106.897059 24.419854\n",
- "2008.0 105.382222 17.785318\n",
- "2009.0 105.127413 18.262597\n",
- "2010.0 105.434211 15.323819\n",
- "2011.0 105.035714 16.797356\n",
- "2012.0 105.900000 22.001640\n",
- "2013.0 108.093220 22.074145\n",
- "2014.0 105.426295 19.384879\n",
- "2015.0 106.022321 17.848250\n",
- "2016.0 109.632075 17.020618\n",
- "\n",
- "[91 rows x 2 columns]"
- ]
- },
- "execution_count": 124,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"to_plot = df.groupby(df.title_year).agg({df.duration.name:{'m':np.mean, 'sdf':np.std}})\n",
"\n",
@@ -3136,7 +2545,7 @@
"\n",
"#to_plot = to_plot.assign(low = lambda df: df.mean - df.std)\n",
"\n",
- "to_plot"
+ "to_plot.plot()"
]
},
{
@@ -3173,6 +2582,78 @@
"cell_type": "markdown",
"metadata": {},
"source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# https://www.kaggle.com/zynicide/wine-reviews"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {