Skip to content

Instantly share code, notes, and snippets.

@d-kahara
Created July 5, 2019 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save d-kahara/adda6ba9ad06d6f903db26b2ea748603 to your computer and use it in GitHub Desktop.
Save d-kahara/adda6ba9ad06d6f903db26b2ea748603 to your computer and use it in GitHub Desktop.
Jupyter Notebook tutorial
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: pandas in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (0.24.2)\n",
"Requirement already satisfied: python-dateutil>=2.5.0 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from pandas) (2.8.0)\n",
"Requirement already satisfied: numpy>=1.12.0 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from pandas) (1.16.4)\n",
"Requirement already satisfied: pytz>=2011k in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from pandas) (2019.1)\n",
"Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n"
]
}
],
"source": [
"!pip install pandas"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: matplotlib in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (3.1.1)\n",
"Requirement already satisfied: numpy>=1.11 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib) (1.16.4)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib) (1.1.0)\n",
"Requirement already satisfied: python-dateutil>=2.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib) (2.8.0)\n",
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib) (2.4.0)\n",
"Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib) (0.10.0)\n",
"Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib) (39.0.1)\n",
"Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from python-dateutil>=2.1->matplotlib) (1.12.0)\n",
"Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (0.9.0)\n",
"Requirement already satisfied: scipy>=0.14.0 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from seaborn) (1.3.0)\n",
"Requirement already satisfied: numpy>=1.9.3 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from seaborn) (1.16.4)\n",
"Requirement already satisfied: matplotlib>=1.4.3 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from seaborn) (3.1.1)\n",
"Requirement already satisfied: pandas>=0.15.2 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from seaborn) (0.24.2)\n",
"Requirement already satisfied: python-dateutil>=2.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (2.8.0)\n",
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (2.4.0)\n",
"Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (0.10.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (1.1.0)\n",
"Requirement already satisfied: pytz>=2011k in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from pandas>=0.15.2->seaborn) (2019.1)\n",
"Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from python-dateutil>=2.1->matplotlib>=1.4.3->seaborn) (1.12.0)\n",
"Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib>=1.4.3->seaborn) (39.0.1)\n"
]
}
],
"source": [
"!pip install matplotlib\n",
"!pip install seaborn\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set(style=\"darkgrid\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('fortune500.csv')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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>Year</th>\n",
" <th>Rank</th>\n",
" <th>Company</th>\n",
" <th>Revenue (in millions)</th>\n",
" <th>Profit (in millions)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1955</td>\n",
" <td>1</td>\n",
" <td>General Motors</td>\n",
" <td>9823.5</td>\n",
" <td>806</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1955</td>\n",
" <td>2</td>\n",
" <td>Exxon Mobil</td>\n",
" <td>5661.4</td>\n",
" <td>584.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1955</td>\n",
" <td>3</td>\n",
" <td>U.S. Steel</td>\n",
" <td>3250.4</td>\n",
" <td>195.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1955</td>\n",
" <td>4</td>\n",
" <td>General Electric</td>\n",
" <td>2959.1</td>\n",
" <td>212.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1955</td>\n",
" <td>5</td>\n",
" <td>Esmark</td>\n",
" <td>2510.8</td>\n",
" <td>19.1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Year Rank Company Revenue (in millions) Profit (in millions)\n",
"0 1955 1 General Motors 9823.5 806\n",
"1 1955 2 Exxon Mobil 5661.4 584.8\n",
"2 1955 3 U.S. Steel 3250.4 195.4\n",
"3 1955 4 General Electric 2959.1 212.6\n",
"4 1955 5 Esmark 2510.8 19.1"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"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>Year</th>\n",
" <th>Rank</th>\n",
" <th>Company</th>\n",
" <th>Revenue (in millions)</th>\n",
" <th>Profit (in millions)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>25495</th>\n",
" <td>2005</td>\n",
" <td>496</td>\n",
" <td>Wm. Wrigley Jr.</td>\n",
" <td>3648.6</td>\n",
" <td>493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25496</th>\n",
" <td>2005</td>\n",
" <td>497</td>\n",
" <td>Peabody Energy</td>\n",
" <td>3631.6</td>\n",
" <td>175.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25497</th>\n",
" <td>2005</td>\n",
" <td>498</td>\n",
" <td>Wendy's International</td>\n",
" <td>3630.4</td>\n",
" <td>57.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25498</th>\n",
" <td>2005</td>\n",
" <td>499</td>\n",
" <td>Kindred Healthcare</td>\n",
" <td>3616.6</td>\n",
" <td>70.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25499</th>\n",
" <td>2005</td>\n",
" <td>500</td>\n",
" <td>Cincinnati Financial</td>\n",
" <td>3614.0</td>\n",
" <td>584</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Year Rank Company Revenue (in millions) \\\n",
"25495 2005 496 Wm. Wrigley Jr. 3648.6 \n",
"25496 2005 497 Peabody Energy 3631.6 \n",
"25497 2005 498 Wendy's International 3630.4 \n",
"25498 2005 499 Kindred Healthcare 3616.6 \n",
"25499 2005 500 Cincinnati Financial 3614.0 \n",
"\n",
" Profit (in millions) \n",
"25495 493 \n",
"25496 175.4 \n",
"25497 57.8 \n",
"25498 70.6 \n",
"25499 584 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tail()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"df.columns = ['year', 'rank', 'company', 'revenue', 'profit']"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25500"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"year int64\n",
"rank int64\n",
"company object\n",
"revenue float64\n",
"profit object\n",
"dtype: object"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>year</th>\n",
" <th>rank</th>\n",
" <th>company</th>\n",
" <th>revenue</th>\n",
" <th>profit</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>228</th>\n",
" <td>1955</td>\n",
" <td>229</td>\n",
" <td>Norton</td>\n",
" <td>135.0</td>\n",
" <td>N.A.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>290</th>\n",
" <td>1955</td>\n",
" <td>291</td>\n",
" <td>Schlitz Brewing</td>\n",
" <td>100.0</td>\n",
" <td>N.A.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>294</th>\n",
" <td>1955</td>\n",
" <td>295</td>\n",
" <td>Pacific Vegetable Oil</td>\n",
" <td>97.9</td>\n",
" <td>N.A.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>296</th>\n",
" <td>1955</td>\n",
" <td>297</td>\n",
" <td>Liebmann Breweries</td>\n",
" <td>96.0</td>\n",
" <td>N.A.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>352</th>\n",
" <td>1955</td>\n",
" <td>353</td>\n",
" <td>Minneapolis-Moline</td>\n",
" <td>77.4</td>\n",
" <td>N.A.</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" year rank company revenue profit\n",
"228 1955 229 Norton 135.0 N.A.\n",
"290 1955 291 Schlitz Brewing 100.0 N.A.\n",
"294 1955 295 Pacific Vegetable Oil 97.9 N.A.\n",
"296 1955 297 Liebmann Breweries 96.0 N.A.\n",
"352 1955 353 Minneapolis-Moline 77.4 N.A."
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"non_numberic_profits = df.profit.str.contains('[^0-9.-]')\n",
"df.loc[non_numberic_profits].head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'N.A.'}"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(df.profit[non_numberic_profits])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"369"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df.profit[non_numberic_profits])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bin_sizes, _, _ = plt.hist(df.year[non_numberic_profits], bins=range(1955, 2006))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"df = df.loc[~non_numberic_profits]\n",
"df.profit = df.profit.apply(pd.to_numeric)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25131"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"group_by_year = df.loc[:, ['year', 'revenue', 'profit']].groupby('year')\n",
"avgs = group_by_year.mean()\n",
"x = avgs.index\n",
"y = avgs.profit\n",
"def plot(x, y, ax, title, y_label):\n",
" ax.set_title(title)\n",
" ax.set_ylabel(y_label)\n",
" ax.plot(x, y)\n",
" ax.margins(x=0, y=0)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEJCAYAAACzPdE9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3RUZfrA8e9kZtILJCQkBEKREiFAKFKkCSihRRRcBSy4q+K6rP4WFUUNYAEF5Qi6CvbVZV0UQbAhCrIUwUKT3kmAhPQ6aVPf3x8hQ0J6MpOE5PmcwwHu3Ln3mXeSeebtGqWUQgghhKgjl4YOQAghRNMgCUUIIYRDSEIRQgjhEJJQhBBCOIQkFCGEEA4hCUUIIYRDNImEMmrUKA4fPtzQYdTJQw89xJkzZxo6jBqbO3cuw4YNY9KkSaX+JCcn1+g6b731Flu2bHFSlKWtWrWKIUOG2GOdPn26/bG1a9cybtw4xowZw4IFCzCbzQAUFBTwxBNPMG7cOKKiouot1qYgMTGRiRMncuutt7J3714ee+wxAA4dOsT8+fNrdK2ff/6ZkSNHMmXKFAoLC50Rbhk5OTlER0eX+ow5ceIEU6dOZeLEiUydOpVffvnF/tjixYu56aab7D9f//jHP+yPTZ48mfHjx9sf++CDD8rcz2AwcN9999U4zkOHDjF16lQmTZpEdHQ0X331lf2xbdu2ER0dTVRUFI899hi5ubkAWK1WFi5cyNixY7nllltYvXq1/Tlbt25lwIABpX6vi59XIdUEjBw5Uh06dKihw2iWnn76afXBBx/U+Tr33HOP+v777x0QUdVmz56tvv766zLHT548qYYPH67S09OV1WpVs2fPVu+9955SSqklS5aomJgYpZRSCQkJasiQISoxMbFe4r3WrV+/Xs2YMaPM8XXr1qmZM2fW6Fpz585Vb7/9toMiq9q2bdvUmDFjVI8ePUp9xowcOVKtXbtWKaVUSkqKGjNmjEpJSVFKKXXnnXeqffv2lblWXl6e6tevnzKZTJXe8+LFiyoyMrJGcdpsNjVixAi1a9cupZRSiYmJatCgQSo2Nlalp6fb/62UUq+++qpasGCBUkqp//znP+rBBx9UZrNZZWVlqaioKHXw4EGllFJLly5VK1eurFEcuhqnwUauZ8+ezJw5k127dpGSksJ9993H/fffD8C7777L+vXr0el0tG/fnsWLF7N582bWrl1LQUEB3t7erFq1ii+++ILVq1djs9lo0aIF8+bN47rrriM2NpYXX3yR/Px8UlJSCA8PZ/ny5bi5ufHmm2+yefNm9Ho9LVu25JVXXiEoKIizZ8+yaNEisrKysFqt3Hvvvdxxxx1l4h41ahRvvPEG+fn5LFu2jHbt2nH69GlMJhPz589n0KBBpc7/7bffeP311wkKCuL06dN4eHjw6KOPsmrVKmJjYxkzZgzPPvssUPRNY+XKlZjNZtzd3Xn66afp06cPaWlpzJ8/n/T0dFJTUwkNDWX58uUEBAQwatQobr/9dn755RcSExMZN24cTz31VI3eC4PBwAsvvMCJEyfQaDQMGzaMxx9/HJ1OR0REBKNHj+bEiRNER0dz5MgRXn31VbRaLT/99BNdunThgQceAIpqQcX/ryyuil7n1Q4cOEBeXh4ffvghAQEBPPXUU3Tr1o2ffvqJUaNG4e/vD8Bdd93FwoULeeihh9iyZQtLly4FoE2bNgwdOpTvv/+eP//5z6WunZqayoIFCzh37hwuLi5MnTqV++67j6SkJJ5//nkSEhJQSnHbbbfx4IMPEh8fz4wZMxg0aBB//PEHFouFp556is8//5xz584RERHB66+/zqVLl7j33nsZMGAAJ06cQCnF/Pnz6d+/f63ex5iYGPz9/Xn88ccB+Prrr/nhhx94++23y/xc3nzzzezduxeDwcCf//xnpk+fzm+//caiRYvw9PQkPz+ftWvXsn79elatWoWLiwutWrVi3rx5JCcns3z5cgwGA/feey9///vfeemll3j//fd58803MRgMPPPMM8TExPDMM89w/vx5XFxc6NGjBy+++CIuLlcaUT744AN++ukn3NzcMBgMeHp68scff5CSkkK3bt145ZVXWLx4Mb/88gtarZZevXrxzDPP4O3tzahRo5g4cSLbtm0jKyuLRx99lP3793P06FF0Oh0rV66kdevWZX5W/v3vf7N48WKeeOIJ+7GMjAwSExO57bbbAAgMDKRbt27s3LmTiRMncuzYMT766COef/552rdvzzPPPEObNm04dOgQnp6ePPzww6SmpjJ48GAef/xx3N3dS93zmWeeobCwkEmTJvHll19y4MABXn31VQoKCtDr9fzjH/9g+PDhpZ5jMpmYNWsWN954IwDBwcG0bNmSpKQkDh06RM+ePenQoQMA06ZNY9KkSSxYsIAtW7Zw5513otPp8PPzY8KECXz99df06tWLAwcOoNPp+PHHH3F3d2f27NnccMMNZcqolBqln0aqZA2la9euatWqVUoppQ4fPqwiIiJUYWGh2rJlixozZozKyspSSin18ssvqxUrVqh169apG264QRkMBqWUUr/99puaPn26ys/PV0optXPnTjVu3DillFKLFy9WGzZsUEopZTKZ1MSJE9WmTZvUpUuXVN++fZXRaFRKKfXhhx+qzZs3K7PZrMaPH6+OHDmilFIqJydHjRs3Th04cKDC1/Drr7+q66+/Xh07dsx+rbvvvrvM+cXnHT16VCml1AMPPKDuuusuZTQaVXp6uurRo4dKSkpSsbGxauLEiSojI0MppdSpU6fUkCFDVF5envr444/Vu+++q5Qq+obz4IMPqg8//NAez+LFi5VSSiUlJamePXuqCxculInj6aefVkOHDlW33nqr/c+aNWuUUko99dRT6qWXXlI2m00ZjUb1l7/8xX6/rl27qvXr19uvU7KGcnWtp+T/K4qrstdZUl5envrLX/5i/wb53XffqWHDhqnc3Fw1b948e3xKKRUXF6duuOEGpZRSERER9m+gSin1+uuvq5dffrlMecyaNUstWbJEKVX0fk+YMEHFxcWpu+++W3300Uf249HR0erbb79VFy9eVF27dlVbtmxRSik1f/58NXLkSGUwGFRhYaEaMmSI2rdvn/284prVtm3b1JAhQ5TJZKrV+3js2DE1ZMgQZTablVJKTZ8+Xe3YsaPM6xk5cqSaN2+estlsKjExUQ0cOFCdOHFC/frrryo8PFzFx8crpZTavXu3uvnmm1V6erpSqqj2MW7cOGWz2UrVRH799Vc1YcIE+znFx9evX6/+8pe/KKWUslgs6rnnnlNxcXFl4in5s/Dmm2+qqKgo+2t444031N///ndlMpmU1WpVc+fOVfPmzbO/juL367vvvlPh4eHq+PHjSiml/va3v1X5TfzqVpCbb75ZffHFF0oppS5cuKBuvPFG9c4776gLFy6oBx98UJ09e1bZbDb1/vvvq0mTJimbzaa2bNminnzySft7+/e//10tXLiwzL1K1lAyMjLU4MGD1R9//KGUKvq5HjBgQLm/iyV99tlnasSIEaqgoEC9++679nJQSimz2ay6du2q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yRpKeUaMGMGZM2eYNm0aAJ07d+all16yF1ixYcOG8dBDD/GXv/wFjUaDt7c3b731FhqNhtmzZzNr1iz8/Pzw8PDghhtu4MKFC/zpT39i3LhxTJkyBU9PT9zd3YmJicHV1ZUVK1awaNEiPvjgAywWC//3f/9Hv3796u11d+nShRdffJHHH3/c/g1j5cqVeHp6MmvWLF599VVWrFiBVqulb9++XLhwwWH3jomJYeHChURHR2M2mxk2bBh//etfyz135MiRLFmyBLPZzL333suTTz5JVFQUbdu2LfeXpyavsyR/f3+WL1/O/PnzMZvNeHt78/bbb+Pq6kp4eDizZs1ixowZmM1mevfuzUMPPQTAo48+yvPPP8+ECROwWq3MmTOHsLCwMnHMnz+f559/nujoaJRSPPzww0RERLB06VJefPFFvvzyS0wmE9HR0UyePJmEhIRql2fxl5OlS5fi7u7O22+/jVarrfX76OrqSlRUFGlpafamqvLEx8czefJkCgsLiYmJoVOnTqW+1ULRF7H777+fGTNmYLPZ8Pf359133y23WbBYnz59WL58ObNmzeK1117j999/Z/z48Xh4eNCmTZsaD5195JFHWLJkCbfddhsWi4VevXoxb968Gl2jul588UViYmJ4++238fT0tP/dtWtXYmJieOSRR7BarQQHB/P6668DMHXqVC5evMjtt9+O1Wpl4MCBpZrkigUGBtK9e3fGjRvH6tWreeONN3jppZcoLCxEo9Hwyiuv0LFjx1LP2bdvH//73//o0KGD/TMO4Mknn2TYsGG88sorPPbYY5jNZsLCwliyZAlQ1EF/4cIFJk2ahNls5q677rL/vq1YsYKFCxfyz3/+E61Wy7Jlyyr9OQHQqJq2Ywgh6l18fDzR0dEcOHDAYdfMz8/nnnvuYcGCBaX6XEoqHn3Ys2dPh91XNF3NpslLCHHFzp07uemmmxg4cGCFyUSImpIaihBCCIeQGooQQgiHkIQihBDCISShCCGEcAhJKEIIIRyiyc9DyczMw2Zr2HEHAQHepKdXsexzMyFlcYWUxRVSFlc0ZFlk55l456sjvPpo2cmr1eHUhJKbm8vUqVN55513aNu2Lbt37+aVV17BaDQybtw4Zs+eDcDx48eJiYkhNzeX/v3788ILL6DT6bh06RJz5swhPT2djh07snTpUry8vGoUg82mGjyh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J9/MY3d0bvDNtCriVc0FIo2m4v3kGyihDB8+nH79+vHpp5+yePFizp07h1arpUOHDkRFRfHZZ5/h7d041rQRQghHys418sPvF+kfHkSnNr4NHU6FPN11pGRVvYS9yeL8vVCgij4ULy8vZs6cycyZM50ahBBCNCZf7YrDYrUxZUTjWKq+Il7u+mqN8jLat/9toD4UIYRojhLT89jxxyVuigyldUvPhg6nUp7uOvILLSilKj3vyva/DTwPRQghmpN128/hqnchekiHhg6lSl7uemxKUXg5YVTEZK6fPhRJKEIIcdmZ+Gz2n0pl3MAwfL0az7pdFanubPkrTV4NnFCWL19e5tjChQudEowQQjQUpRRr/ncGP29XxtxwbaxdeGXF4cr7UYoTSoN1yr/55pvk5OSwceNGcnNz7cfNZjNbt24lJibGqYEJIUR9OnA6jTMJ2cwY283pa145Ssk9USpjKk4oTn5dFSaU3r17c/jwYVxcXGjRooX9uFar5Z///KdTgxJCiPpktdlYu+0sIQGeDO0V0tDhVFt190SxN3npGmj5+hEjRjBixAiGDx9Or169nBqEEEI0pJ2HEknKyOfRKT0b3ZpdlanunijG4k75hqqhLFq0iOeee44VK1aU+/g777zjtKCEEKI+/XE6jZAATyI7V2cz3cbDvidKY+9Dad++PQBRUVFODUAIIRpalsFIYAuPRrvESkWKl7CvapSXyWxF66JBp22gJq8vv/ySe+65h927d/Paa685NQghhGhIWblGOjbiJVYqUryEfXVqKM4eMgyVJBSDwcC8efPYtWtXucOEZZSXEKIpsFht5OSbaeHk7XGdxbMaC0QWba7l/L6hCu/wz3/+k+DgYPsor6v/1NWSJUuYO3cuAMePH2fKlClERUXx3HPPYbEUZdtLly5x9913M3bsWB555BHy8vLqfF8hhCgpO9cEQEufazOheHvoyS2oapSXzen9J1BJDSU8PJzw8HDCwsKIjo7GYilaL0av19f5pr/88gvr16/npptuAmDOnDksXLiQyMhInn32WdasWcP06dN54YUXmD59OhMmTODtt99mxYoVzJkzp873F0KIYpm5Rfs+tfBu/DPjy9PSx41LaZV/2TaarPWSUKqsAw0ePJgHH3yQyMhIevXqxX333UdycnKtb5iVlcWyZcv461//CkBCQgKFhYVERkYC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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"plot(x, y, ax, 'Increase in mean Fortune 500 company profits from 1955 to 2005', 'Profit (millions)')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y2 = avgs.revenue\n",
"fig, ax = plt.subplots()\n",
"plot(x, y2, ax, 'Increase in mean Fortune 500 company revenues from 1955 to 2005', 'Revenue (millions)')"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"def plot_with_std(x, y, ax, y_label):\n",
" ax.fill_between(x, y - stds, y + stds, alpha=0.2)\n",
" plot(x, y, ax, title, y_label)\n",
" fig, (ax1, ax2) = plt.subplots(ncols=2)\n",
" title = 'Increase in mean and std Fortune 500 company %s from 1955 to 2005'\n",
" stds1 = group_by_year.std().profit.as_matrix()\n",
" stds2 = group_by_year.std().revenue.as_matrix()\n",
" plot_with_std(x, y1.as_matrix(), stds1, ax1, title % 'profits', 'Profit (millions)')\n",
" plot_with_std(x, y2.as_matrix(), stds2, ax2, title % 'revenues', 'Revenue (millions)')\n",
" fig.set_size_inches(14, 4)\n",
" fig.tight_layout()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'stds' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-37-c04c643b7f99>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0my_label\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'Increase in mean and std Fortune 500 company %s from 1955 to 2005'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplot_with_std\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_label\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-36-61cdc59b4784>\u001b[0m in \u001b[0;36mplot_with_std\u001b[0;34m(x, y, ax, y_label)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mplot_with_std\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_label\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfill_between\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mstds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_label\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0max1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mncols\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mtitle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'Increase in mean and std Fortune 500 company %s from 1955 to 2005'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'stds' is not defined"
]
}
],
"source": [
"y_label = 'Increase in mean and std Fortune 500 company %s from 1955 to 2005'\n",
"plot_with_std(x, y, ax, y_label)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment