"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Running this cell displays a button to toggle hidden code\n",
"#From: http://chris-said.io/2016/02/13/how-to-make-polished-jupyter-presentations-with-optional-code-visibility/\n",
"\n",
"from IPython.display import HTML\n",
"\n",
"display (HTML('''\n",
"'''))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#Colour Functions!\n",
"\n",
"def colour_green(value):\n",
" color = \"#7be840\"\n",
" return \"background-color: %s\" % color\n",
"def colour_blue(value):\n",
" color = \"#70aeff\"\n",
" return \"background-color: %s\" % color\n",
"def colour_grey(value):\n",
" color = \"#a5a5a5\"\n",
" return \"background-color: %s\" % color\n",
"def colour_yellow(value):\n",
" color = \"#fcff66\"\n",
" return \"background-color: %s\" % color\n",
"def colour_orange(value):\n",
" color = \"#ffa449\"\n",
" return \"background-color: %s\" % color"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Remove warnings from the tools below that will soon be outdated\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Recycling Contamination"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When people throw waste into the wrong bin, they cause that waste stream to be contaminated. \n",
" Contamination in each waste stream causes different problems:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Landfill:\n",
"> When **compostable waste** enters the Landfill, it releases methane (a powerful greenhouse gas) into the atmosphere, which contributes to global warming.\n",
"> When **recyclable waste** enters the Landfill, the resources used to make the recyclable items are lost and take up valuable space.\n",
"### Recycling:\n",
"> When **compostable waste** enters the Recycling stream, it ruins the recyclable items and causes them to be sent to Landfill.\n",
" When **landfill waste** enters the Recycling stream, it clogs up the machines used to sort recyclable waste and causes mechanical issues.\n",
"### Compost:\n",
"> When **recyclable** and **landfill waste** enter the Compost stream, they have to be sorted out by workers using their hands, or else they are ground up into tiny bits and left in the soil, harming ecosystems."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Below is a table showing typical contamination values for each waste stream.\n",
"\n",
"> The **bottom row** calculates how much contamination is in each stream by dividing the _number of contaminants_ by the _total number of items_ disposed in each stream.\n",
"\n",
"> Cells with the number of items disposed correctly in each stream are colour-coded, and contamination is highlighted yellow."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
"
\n",
"
\n",
"
\n",
"
Compost
\n",
"
Recycling
\n",
"
Landfill
\n",
"
\n",
"
\n",
"
Compost
\n",
"
8
\n",
"
2
\n",
"
6
\n",
"
\n",
"
Recycling
\n",
"
1
\n",
"
7
\n",
"
2
\n",
"
\n",
"
Landfill
\n",
"
1
\n",
"
1
\n",
"
2
\n",
"
\n",
"
% Contamination
\n",
"
20%
\n",
"
30%
\n",
"
80%
\n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Contamination Data Table\n",
"# Values are pre-set: qgrid allows them to be changed, but the % Contamination value does not automatically update.\n",
"\n",
"import pandas as pd\n",
"import qgrid\n",
"\n",
"streams = ['Compost', 'Recycling', 'Landfill']\n",
"contamination = [[8.0, 2.0, 6.0], \n",
" [1.0, 7.0, 2.0], \n",
" [1.0, 1.0, 2.0],\n",
" [20.0, 30.0, 80.0]] \n",
"rows = [\"Compost\" , \"Recycling\", \"Landfill\", \"% Contamination\"]\n",
"\n",
"conTable = pd.DataFrame(data = contamination, columns = streams , index = rows)\n",
"conTable.set_value(\"% Contamination\", \"Compost\", 0.2)\n",
"conTable.set_value(\"% Contamination\", \"Recycling\", 0.3)\n",
"conTable.set_value(\"% Contamination\", \"Landfill\", 0.8)\n",
"\n",
"display(conTable.style.applymap(colour_green, subset=(\"Compost\",\"Compost\"))\\\n",
" .applymap(colour_blue, subset=(\"Recycling\", \"Recycling\"))\\\n",
" .applymap(colour_grey, subset=(\"Landfill\", \"Landfill\"))\\\n",
" .applymap(colour_yellow, subset=(\"% Contamination\",\"Compost\"))\\\n",
" .applymap(colour_yellow, subset=(\"% Contamination\", \"Recycling\"))\\\n",
" .applymap(colour_yellow, subset=(\"% Contamination\", \"Landfill\"))\\\n",
" .format(\"{:.0%}\", subset = (\"% Contamination\",(\"Compost\", \"Recycling\", \"Landfill\"))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## How is % Contamination affected by waste disposal choices?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try changing the numbers in the first 3 rows of each column. As you change the \n",
" number of items in each stream, you'll notice that the % Contamination row automatically updates."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "faf44979f7fb47f3acf16db9e7c50e40",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"QgridWidget(grid_options={'fullWidthRows': True, 'syncColumnCellResize': True, 'forceFitColumns': True, 'defau…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Contamination Table with values that automatically update the % Contamination\n",
"# qgrid allows\n",
"\n",
"import qgrid\n",
"from IPython.display import clear_output\n",
"\n",
"\n",
"df = pd.DataFrame(data = contamination, columns=streams, index = rows)\n",
"\n",
"def handler1(event, qgrid_widgetCont):\n",
" df = qgrid_widgetCont.get_changed_df()\n",
" \n",
" # Updating the Compost column\n",
" compostPercent = round((df[\"Compost\"][\"Recycling\"]+df[\"Compost\"][\"Landfill\"])/(df[\"Compost\"][\"Compost\"]+df[\"Compost\"][\"Recycling\"]+df[\"Compost\"][\"Landfill\"])*100, 0)\n",
" df.set_value(\"% Contamination\", \"Compost\", compostPercent)\n",
" \n",
" # Updating the Recycling column\n",
" recyclingPercent = round((df[\"Recycling\"][\"Compost\"]+df[\"Recycling\"][\"Landfill\"])/(df[\"Recycling\"][\"Compost\"]+df[\"Recycling\"][\"Recycling\"]+df[\"Recycling\"][\"Landfill\"])*100 , 0)\n",
" df.set_value(\"% Contamination\", \"Recycling\", recyclingPercent)\n",
" \n",
" # Updating the Landfill column\n",
" landfillPercent = round((df[\"Landfill\"][\"Compost\"]+df[\"Landfill\"][\"Recycling\"])/(df[\"Landfill\"][\"Compost\"]+df[\"Landfill\"][\"Recycling\"]+df[\"Landfill\"][\"Landfill\"])*100, 0)\n",
" df.set_value(\"% Contamination\", \"Landfill\", landfillPercent)\n",
" \n",
" qgrid_widgetCont = qgrid.show_grid(df)\n",
" clear_output()\n",
" qgrid_widgetCont.on(names = 'cell_edited', handler = handler1)\n",
" display(qgrid_widgetCont)\n",
"\n",
"qgrid_widgetCont = qgrid.show_grid(df)\n",
"qgrid_widgetCont.on(names = 'cell_edited', handler = handler1)\n",
"qgrid_widgetCont"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data Communication\n",
"\n",
"Looking at a bunch of numbers in a table is tiring, and requires each reader to imagine what each value represents.\n",
"Instead, data analysts and scientists use graphs to \"visualize\" their data.\n",
"\n",
"**Pie charts** and **Stacked barplots** are two ways to visualize data that are percentages of a \"whole\".\n",
"> Look at the pie charts and stacked barplots below. Which graph is the easiest to understand?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pie Charts"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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UesVK1b4AKC8vNy1fPlyX/N+axRP+DdARESRwBFbIqIGwt2eJFJcLhfefvvtdTNnzuz25JNPpvt8viNbnRw4cMCdlZU1UAgh77///s3du3evWb58ediv3bdv38oRI0b03717t/fJJ5/8Ljk5Wd599907pk2b1iMzMzPb7XZj9uzZG5KSkuQrr7yS+sYbb3TweDwyLS2t+je/+c1Wv99fm5eXd6Bfv34DzznnnP2//vWvt0+cOLFvTk5O1sCBAyt69ep1uP579e7d+/CLL77YYebMmT169epVeddddx2zPUrnzp1rZs+eveGKK67oXVVVJQDgvvvu26J6Oxc6VqzbP8C/Af4NEBFFhjjdVB8ioni3bNmyDbm5ubtU54i0qVOn9pw8efL+GTNm7FWdpamWLVvWMTc3t6fqHE4Qr+0fsO/fANs/EVHzcCoyERERERER2RqnIhMRxaE333xzg+oMRCrxb4CIyFk4YktERERERES2xsKWiIiIiIiIbI2FLREREREREdkaC1siIiIiIiKyNS4eRUTUQCCIvEi+3hP5aHRfULfbndevX79DtbW1olu3bpWvv/76+o4dO9ZGMsfxVq1alTB58uR+a9asKTnVcxYsWJAya9Ysf1FR0drjH+vSpcugRYsWrczIyKiJZk6KLbb/o9j+iYjshSO2RESK+Xy+urKystI1a9aUtGvXrubRRx9NU52JKFbY/omIKBJY2BIRWciZZ555cMuWLQn1n//yl7/05+TkZGVmZmYHAoHO9fc/88wzHTIzM7P79++fPWXKlF579+51denSZVBlZaUAgD179hz5fMWKFb7Ro0dn9u/fPzs7OzurpKTE1/B7rlq1KiEvL69/dnZ2VnZ2dtb777/fqv6x8vJy9/nnn9+nT58+AwsKCrrX1p44kPbss8+mDho0KGvAgAHZBQUFPWpqOIhFzcP2T0REzcXClojIImpqalBUVJQyZcqUfQAwb968NmvXrk1cvnz5ypUrV5YuXbo0+d133229aNGixMceeyxj4cKFq1etWlU6e/bsje3bt68bNWpU+euvv94WAF588cXUSZMm7fX5fLKgoKDXTTfdtGPVqlWlixYtKuvevXt1w+/buXPnmk8++WR1aWnpyr///e/fBgKB7vWPFRcXt/r973+/adWqVSUbNmzwvfzyy+0bfu0333yTOHfu3NRFixaVlZWVlbpcLvncc891iMXvi+IL2z8REbUEr7ElIlKssrLSNWDAgOwtW7Yk5OTkVEyZMuV7AHjvvffafPzxx22ys7OzAaCiosJVVlaW+M0337guuuiivfXX9/n9/loAuOGGG3Y+8sgj6dOmTdv36quvdnz++ec37N2712UYRsI111yzDwCSk5MlANnw+1dVVYnrrruuR2lpaZLL5cJ33313ZERr0KBBB7Ozs6sA4LLLLtvzySeftJ4xY8be+sffe++9lBUrViTn5uZmAcDhw4ddnTp14pAVhY3tn4iIIoEjtkREitVfY7hhw4biqqoq8dvf/rYTAEgpcfvtt28rKysrLSsrK924ceOKQCCwS0oJIYQ8/nUmTJhwcPPmzb533nmndW1trRg+fPhhKU942gkeeughf6dOnapXrlxZWlxcXFpdXX2kbxBCHPPc4z+XUopLL710d33GDRs2rHj88ce3NvNXQQ7E9k9ERJHAwpaIyCI6dOhQ+9RTT238wx/+4K+srBQTJ078/pVXXum4f/9+FwCsX7/eu2XLFs8FF1zw/dtvv526fft2NwAYhuGuf40rrrhi94wZM3pfffXVuwAgNTW1Lj09veqVV15pBwCHDh0S5eXlxxz79+/f787IyKh2u9149tlnOzS8jrC4uLhVWVlZQm1tLebOnZs6duzY8oZfe8EFF3y/YMGC9lu2bPHUZ1m9enUCiJqI7Z+IiFqCU5GJiBoIZ3uSaDrrrLMOZWVlHXrhhRfa33LLLXtKSkoShw8fPgAAkpOT6/72t7+tHzZs2OE777xz29ixYwe4XC6Zk5NT8eabb24AgOuuu273I4880uW6667bU/+ar7766vrrr7++x4MPPtjZ6/XKN954Y53bfaQWwO23375j6tSpfd566632Y8aMKU9KSqqrf+yMM844cOedd3YtKytLGjlyZPm0adP2Ncybl5d3WNf1Leeee25mXV0dvF6vfOqppzZmZmZWRft3RZHH9s/2T0RkVyKcaTpERPFq2bJlG3Jzc3epzhEpf/nLX9r/4x//aPfWW2+tV52luZYtW9YxNze3p+ocTsD2bz1s/0REzcMRWyKiOHHttdd2KyoqartgwYI1qrMQxRrbPxGRs7GwJSKKEy+99NImAJtU5yBSge2fiMjZuHgUERERERER2RoLWyIiIiIiIrI1FrZERERERERkayxs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VkRERERERDJNha2IiIiIiIhkmgpbERERERERyTQVtiIiIiIiIpJpKmxFREREREQk01TYioiIiIiISKapsBUREREREZFMU2ErIiIiIiIimabCVkRERERERDJNha2IiIiIiIhkmgpbERERERERyTQVtiIiIiIiIpJpKmxFREREREQk01TYioiIiIiISKapsBUREREREZFMU2ErIiIiIiIimabCVkRERERERDJNha2IiIiIiIhkmgpbERERERERyTQVtiIiIiIiIpJpKmxFREREREQk01TYioiIiIiISKapsBUREREREZFMU2ErIiIiIiIimabCVkRERERERDJNha2IiIiIiIhkmgpbERERERERyTQVtiIiIiIiIpJpKmxFREREREQk01TYioiIiIiISKapsBUREREREZFMU2ErIiIiIiIimabCVkRERERERDJNha2IiIiIiIhkmgpbERERERERyTQVtiIiIiIiIpJpKmxFREREREQk01TYioiIiIiISKapsBUREREREZFMU2ErIiIiIiIimabCVkRERERERDJNha2IiIiIiIhkmgpbERERERERyTQVtiIiIiIiIpJpKmxFREREREQk0/4//wVfjV72NXYAAAAASUVORK5CYII=\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Science communication - putting data into graphs.\n",
"# Pie charts are often used to express different values as percentages of a whole.\n",
"\n",
"# Creating a pie plot \n",
"\n",
"\n",
"contaminationCost = [[8.0, 2.0, 6.0], \n",
" [1.0, 7.0, 2.0], \n",
" [1.0, 1.0, 2.0],\n",
" [20.0, 30.0, 80.0],\n",
" [8, 0, 32]] \n",
"# library\n",
"import pandas as pd\n",
" \n",
"# --- dataset 1: just 4 values for 4 groups:\n",
"dfCompost = pd.DataFrame([8,1,1], index=['a', 'b', 'c'], columns=['x'])\n",
" \n",
"# make the plot\n",
"#dfCompost.plot(kind='pie', subplots=True, figsize=(8, 8))\n",
"\n",
"# --- dataset 2: 3 columns and rownames\n",
"#dfContamination = pd.DataFrame({'Compost':[8,1,1], 'Recycling':[7,1,3], 'Landfill':[6,2,2]}, index=['Compostable', 'Recyclable', 'Landfill Only'] )\n",
"\n",
"# make the multiple plot\n",
"#dfContamination.plot(kind='pie', subplots=True, figsize=(24,8))\n",
"\n",
"\n",
"dfCompostRecycling = pd.DataFrame({'Compost':[8,1,1], 'Recycling':[2,7,1]}, index=['Compostable', 'Recyclable', 'Landfill Only'])\n",
"comrecPlot = dfCompostRecycling.plot(kind='pie', subplots=True, figsize=(16,8), colors=['#7be840', '#70aeff', '#a5a5a5'])\n",
"\n",
"dfLandfill = pd.DataFrame({'Landfill':[6,2,2]}, index=['Compostable', 'Recyclable', 'Landfill Only'])\n",
"landPlot = dfLandfill.plot(kind='pie', subplots=True, figsize=(7.5,8), colors=['#7be840', '#70aeff', '#a5a5a5'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pie charts are sometimes a misleading way to present data because humans cannot easily see the quantity in each section. \n",
"\n",
"#### Instead, data analysts prefer barplots, which present data along an axis to clearly display values.\n",
" * Because our contamination data are best represented as percentages, we create something called a \"Stacked Percent Barplot\".\n",
" * If we wanted to instead compare the quantities in each stream, we would create a stacked barplot with a metric such as kg along the y-axis."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Stacked Percent Barplot"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAe8AAAEKCAYAAAA7AN38AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xl8VOXZ//HPlQkEIsguIGETwxqkSERFqEtbKj5CQW1FKgrVUmqtRXGrbd3qU0Ww+qCPCnW34oKCCtZaq4gLv6pBISxhVQRkX2QLJCS5fn/MCU+AJAwkk8mB7/v1youZ+5w558ockm/OOffct7k7IiIiEh5JiS5AREREDo/CW0REJGQU3iIiIiGj8BYREQkZhbeIiEjIKLxFRERCRuEtIiISMgpvERGRkFF4i4iIhExyoguoiMaNG3ubNm0SXYaISKjMnj17k7s3SXQdcuRCHd5t2rQhKysr0WWIiISKmX2T6BqkYnTZXEREJGQU3iIiIiGj8BYREQmZUN/zFhGRyjF79uwTkpOTnwAy0IldohUB8wsKCq7u0aPHhtJWUHiLiAjJyclPNGvWrFOTJk22JiUleaLrOZYVFRXZxo0bO69bt+4JYEBp68Ttrysze8rMNpjZ/BJtDc3sXTNbGvzbIGg3MxtvZsvMLNvMTo1XXSIiUqqMJk2abFdwJ15SUpI3adJkG9GrIKWvE8f9PwOcf0DbrcB77p4OvBc8B+gHpAdfI4DH4liXiIgcLEnBXX0Ex6LMjI5beLv7h8CWA5p/AjwbPH4WGFii/TmP+g9Q38yax6s2ERGRMKvqTglN3X0tQPDvCUF7C2BVifVWB20iIpIAez2vG9Cjsr6C7ZVr5cqVyRdeeOFJLVu2zGjXrl2Xs88+++Ts7OyUSv/mDtOmTZsi99133yFHpFu8eHHN9PT0LqUt69mzZ4cPP/wwtbJqqi4d1qyUtlIv35jZCKKX1mnVqtUR77CwsJBIJHLEr5fYVfS91rGqOjpW4RHv97qGpST/cf25lba9e5rOKDdvioqKGDBgwMlDhgzZPH369K8AZs2aVXvNmjU1TjnllLxKK+QIbN68OfLkk0+ecOutt25MZB0lVXV4rzez5u6+NrgsXtwFfjXQssR6acCa0jbg7hOBiQCZmZlHfH8mEokwadKkI325HIYhQ4ZU6PU6VlVHxyo8Knqsqpvp06fXTU5O9ptvvnlfQPbq1Wt3UVERv/rVr9Lef//9embmN91009pf/vKXW6dPn173rrvuOrFJkyZ7Fy5cmHrBBRds7dq16+5HH320aV5enk2dOnV5ly5d8i6++OI2KSkpRYsXL669efPmGvfee++qyy67bFtubq5dccUVrbOzs1MjkQj333//qv79++/IysqqNXz48LZ79+61oqIiXnvtteW///3vW6xatSqlY8eOnc8+++zt999//5rzzz//5G3btkUKCgrs9ttvX3P55Zd/B1BQUMBFF13UZv78+aknnXTSnsmTJ6+oW7duUcnvdcqUKcfffffdJ+bn51vr1q3zXnrppRX16tUrOvA9KU9VXzZ/E7gyeHwl8EaJ9iuCXudnANuKL6+LiMjRLzs7u3a3bt1yD2x/7rnn6s+bN692Tk7Ogvfee2/J7bffnvbNN9/UAFi0aFHtxx57bFVOTs6CV199tdGSJUtqzZs3L2fo0KGbHnjggeLbsqxatSrls88+Wzxt2rSlo0aNap2bm2tjxow5AWDJkiULJ02a9NWIESPa5Obm2sMPP9zkmmuuWb9o0aKF2dnZOW3bts1/4IEHVrds2TJv0aJFCydMmLA6NTW16K233lq2cOHCnJkzZy657bbb0oqKotm7YsWKWiNHjty4ZMmShXXr1i0aO3bsfpfb165dm/yXv/yl+Ycffrhk4cKFOaeeemrun//856aH+37F7czbzF4EzgEam9lq4A7gPuAVM7sKWAn8NFj9H8AFwDIgFxger7pERCQ8Pvroo7o/+9nPtiQnJ9OyZcuC008/fefHH3+cWq9evaKuXbvuat269V6AVq1a5fXr128bQLdu3XbPnDmzbvE2Lr744i2RSISuXbvmtWzZMm/OnDm1Zs2aVee3v/3tBoDu3bvvOfHEE/PnzZtX68wzz9w1bty45qtXr645ePDgrV27dj3okn1RUZGNGjUq7T//+U+dpKQkNmzYUHP16tXJAM2aNcvv27fvLoChQ4duHj9+/AnA+uLXfvDBB8ctX768Vs+ePTsC7N2713r06LHzcN+XuIW3u19WxqIflLKuA7+JVy0iIlK9de3adffrr7/e4MD2aDyULiUlZd/CpKQkatWq5cWPCwsL9/WlMtu/W5WZlbndkSNHbunTp8+uqVOn1uvXr1/7Rx99dEWHDh32C/AJEyY03Lx5c/K8efNyUlJSvEWLFl13796dVNa+Dvx+evfuvX3atGlfl/mNxUBD4ImISML1799/R35+vj3wwAONi9tmzpyZ2qBBg4JXX321YUFBAWvWrEn+7LPP6vTp02fX4Wx7ypQpDQoLC1mwYEHKqlWrUrp167and+/eO//+9783BMjOzk5Zu3ZtzVNOOWXPwoULa3bq1Cnvj3/844a+fft+N2fOnNr16tUr3LVr17683LZtW6Rx48Z7U1JSfNq0aXXXrFlTs3jZ2rVra/773/8+DmDSpEkNe/Xqtd9Z9TnnnLMrKyurzvz581MAduzYkXQkPeqrS29zERGpRvZ6XsGheogf7vZqWNkZlZSUxJtvvrn8mmuuafnQQw81S0lJ8bS0tLyHH3541c6dOyOdOnXqYmZ+1113rW7VqlVBdnZ2zPs++eST83r27Nlh8+bNNR566KFvUlNT/eabb94wdOjQ1u3bt+8ciUSYMGHCitq1a/vzzz/fcPLkyY2Sk5O9SZMme++99941TZs2LezRo8fO9PT0Luedd962O++8c12/fv1OzsjI6NSlS5fctm3b7ine10knnbTnqaeeanTNNde0btu2bd6NN964Xw/1E088sWDChAkrBg8efFJ+fr4B3HHHHd8ebo96K++SRHWXmZnpWVlZR/x69YqtGpXRK1bHqmroWIVHRY6Vmc1298ySbXPnzl3RrVu3TRUurJq5+OKL21x44YXbhg8fvjXRtRyuuXPnNu7WrVub0pbpsrmIiEjI6LK5iIgctV577bUVia4hHnTmLSIiEjIKbxERkZBReIuIiISMwltERCRk1GFNREQOsreQbjUilZcRewspqBFhbnnrRCKRHunp6bsLCwutZcuWea+88srXjRs3LqysGmL52FjPnj07jBs3btX3v//9/cZZHz9+fKOsrKzjnnvuuZWVVU9FKLxFROQgNSIkXz+18rb34KBD501KSkrRokWLFgJcdNFFbcaOHdtkzJgx6yqviqOHLpuLiEi1c8YZZ+z69ttv9w07+qc//alpRkZGp/bt23e+/vrrTyxuf+SRRxq1b9++c4cOHToPHDiw7datW5NatGjRNS8vzwC2bNmy3/NiN954Y/OMjIxO6enpXS677LLWxbOCATzzzDONunfv3jE9Pb3LjBkzUg+sbc2aNck//vGP22VkZHTKyMjo9K9//eu4uLwJ5VB4i4hItVJQUMCMGTPqDhw48DuIzn+9bNmyWtnZ2Tk5OTkL58yZk/r222/XycrKqjVu3LjmM2fOXLJ48eKFEyZMWNmgQYOiM888c8crr7xSD+Cpp55qeMEFF2wtOYkJwE033bRh/vz5OUuXLl2we/fupJdeeqle8bLc3NykL7/8ctH48eO/GTFiRNsD6/vVr37V8oYbblg/f/78nKlTpy4fOXJkmzi/JQfRZXMREakW8vLykjp27Nj522+/rZmRkZE7cODA7QD//Oc/j//www+P79y5c2eIhuuiRYtqffHFF0n9+/ff2rx58wKApk2bFgKMGDFi45gxY5oNHTr0u7///e+N//a3v604cF9vv/123b/+9a/N9uzZk/Tdd98ld+7ceTewDWDIkCFbAPr167dz586dSZs2bYqUfO0nn3xy/NKlS2sXP9+5c2dk69atSQ0aNCiiiujMW0REqoXie94rVqyYl5+fb/fdd98JEJ1Gc9SoUWsXLVq0cNGiRQtXrlw5//rrr9/k7pjZQRN09O3bd9fq1atT3nrrrTqFhYV22mmn7Sm5PDc310aPHt16ypQpy5csWbLw8ssv37Rnz559eRjLtJ5ZWVk5xfVs2LAhuyqDG47hM++CgsJKmYRBDq2goJDk5MihVyzn9TpWVaOix0qkMjRq1Khw/PjxKy+55JKTb7rppo39+vXbfuedd544YsSILfXq1Sv6+uuva9SsWdPPP//87ZdccsnJt9122/pmzZoVrl+/PlJ89j148ODNw4cPP2n06NFrD9x+bm5uEkCzZs0Ktm3bljRt2rQG/fv339cD/cUXX2zQv3//He+8806dunXrFjZq1Gi/Hu+9e/fePmbMmBP+/Oc/rweYNWtW7V69eu2O77uyv2M2vJOTI1RmT0op24ODKhYGOlZVp6LHSo4eewspiKWH+OFsr8Zh/Pc666yzdnfq1Gn3E0880eA3v/nNlgULFtQ67bTTOgKkpqYWvfDCC19nZmbuGT169No+ffp0TEpK8oyMjNziscyvuuqqzWPGjGlx1VVXbTlw240bNy78+c9/vrFz585d0tLS8rt167bf/OANGjQo7N69e8edO3dGJk6c+PWBr584ceKqq6++ulX79u07FxYW2umnn76jV69eVfoRsmN6SlAFQtV4cFDFt6FjVTUq41hpStCq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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\n",
"# Science communication - putting data into graphs.\n",
"# Percent stacked barplot is something used to visually compare quantities next to each other, easier to read than a table\n",
"\n",
"#Source for a stacked percent barplot: \n",
"\n",
"# libraries\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rc\n",
"import pandas as pd\n",
" \n",
"# Data\n",
"r = [0,1,2]\n",
"raw_data = {'greenBars': [8.0, 2.0, 6.0], 'blueBars': [1.0, 7.0, 2.0],'greyBars': [1.0, 1.0, 2.0]} #same data as above\n",
"barplot_df = pd.DataFrame(raw_data)\n",
"\n",
"# From raw value to percentage\n",
"totals = [i+j+k for i,j,k in zip(barplot_df['greenBars'], barplot_df['blueBars'], barplot_df['greyBars'])]\n",
"greenBars = [i / j * 100 for i,j in zip(barplot_df['greenBars'], totals)]\n",
"blueBars = [i / j * 100 for i,j in zip(barplot_df['blueBars'], totals)]\n",
"greyBars = [i / j * 100 for i,j in zip(barplot_df['greyBars'], totals)]\n",
" \n",
"# plot\n",
"barWidth = 0.85\n",
"names = ('Compost','Recycling','Landfill')\n",
"\n",
"# Create green Bars\n",
"plt.bar(r, greenBars, color=\"#7be840\", edgecolor='white', width=barWidth, label=\"Compostable\")\n",
"# Create blue Bars\n",
"plt.bar(r, blueBars, bottom=greenBars, color=\"#70aeff\", edgecolor='white', width=barWidth, label=\"Recylable\")\n",
"# Create grey Bars\n",
"plt.bar(r, greyBars, bottom=[i+j for i,j in zip(greenBars, blueBars)], color=\"#a5a5a5\", edgecolor='white', width=barWidth, label=\"Landfill Only\")\n",
" \n",
"# Custom x axis\n",
"plt.xticks(r, names)\n",
"plt.xlabel(\"Stream\")\n",
"\n",
"# Custom y axis\n",
"plt.ylabel(\"% Contamination\")\n",
" \n",
"# Add a legend\n",
"plt.legend(loc='upper left', bbox_to_anchor=(1,1), ncol=1)\n",
" \n",
"# Show graphic\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This barplot shows all streams in one chart, compared to the three pie charts needed above.\n",
" More importantly, now each stream's percent contamination can be compared more easily!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Waste Disposal Costs\n",
"> Waste disposal and collection costs money. \n",
" In Squamish, the municipal government uses taxes to collect waste from your homes.\n",
" However, businesses must pay for their own waste collection. \n",
"\n",
">Often, payment is calculated using \"Tip Fees\" which are different depending on the waste stream being collected, or \"tipped\".\n",
" In Squamish, Tip Fees for different waste streams are:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Compost Tip Fee
\n",
"
Recycling Tip Fee
\n",
"
Landfill Tip Fee
\n",
"
\n",
" \n",
" \n",
"
\n",
"
$ / 100 kg
\n",
"
$8.00
\n",
"
$0 (free!)
\n",
"
$15.00 if no more than 20% contaminated
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
$32.00 if more than 20% contaminated
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Compost Tip Fee Recycling Tip Fee \\\n",
"$ / 100 kg $8.00 $0 (free!) \n",
" \n",
"\n",
" Landfill Tip Fee \n",
"$ / 100 kg $15.00 if no more than 20% contaminated \n",
" $32.00 if more than 20% contaminated "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"\n",
"types = ['Compost Tip Fee', 'Recycling Tip Fee', 'Landfill Tip Fee']\n",
"fees = [[\"$8.00\", \"$0 (free!)\", \"$15.00 if no more than 20% contaminated\"],\n",
" [\"\",\"\", \"$32.00 if more than 20% contaminated\"]]\n",
"rowsFees = [\"$ / 100 kg\",\"\"]\n",
"\n",
"tipFees = pd.DataFrame(data = fees, index = rowsFees, columns = types)\n",
"display(tipFees)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Total Costs\n",
"\n",
"> Let's say that each stream contains 100 kg of each type of waste. \n",
"> As above, the % Contamination is highlighted yellow, and the Cost is highlighted orange."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
"
\n",
"
\n",
"
\n",
"
Compost
\n",
"
Recycling
\n",
"
Landfill
\n",
"
\n",
"
\n",
"
Compost
\n",
"
8
\n",
"
2
\n",
"
6
\n",
"
\n",
"
Recycling
\n",
"
1
\n",
"
7
\n",
"
2
\n",
"
\n",
"
Landfill
\n",
"
1
\n",
"
1
\n",
"
2
\n",
"
\n",
"
% Contamination
\n",
"
20%
\n",
"
30%
\n",
"
80%
\n",
"
\n",
"
Cost ($)
\n",
"
8
\n",
"
0
\n",
"
32
\n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"streams = ['Compost', 'Recycling', 'Landfill']\n",
"contaminationCost = [[8.0, 2.0, 6.0], \n",
" [1.0, 7.0, 2.0], \n",
" [1.0, 1.0, 2.0],\n",
" [20.0, 30.0, 80.0],\n",
" [8, 0, 32]] \n",
"rowsCost = [\"Compost\" , \"Recycling\", \"Landfill\", \"% Contamination\", \"Cost ($)\"]\n",
"\n",
"conTableCost = pd.DataFrame(data = contaminationCost, columns = streams , index = rowsCost)\n",
"conTableCost.set_value(\"% Contamination\", \"Compost\", 0.2)\n",
"conTableCost.set_value(\"% Contamination\", \"Recycling\", 0.3)\n",
"conTableCost.set_value(\"% Contamination\", \"Landfill\", 0.8)\n",
"\n",
"display(conTableCost.style.applymap(colour_green, subset=(\"Compost\",\"Compost\"))\\\n",
" .applymap(colour_blue, subset=(\"Recycling\", \"Recycling\"))\\\n",
" .applymap(colour_grey, subset=(\"Landfill\", \"Landfill\"))\\\n",
" .applymap(colour_yellow, subset=(\"% Contamination\",\"Compost\"))\\\n",
" .applymap(colour_yellow, subset=(\"% Contamination\", \"Recycling\"))\\\n",
" .applymap(colour_yellow, subset=(\"% Contamination\", \"Landfill\"))\\\n",
" .applymap(colour_orange, subset=(\"Cost ($)\",\"Compost\"))\\\n",
" .applymap(colour_orange, subset=(\"Cost ($)\", \"Recycling\"))\\\n",
" .applymap(colour_orange, subset=(\"Cost ($)\", \"Landfill\"))\\\n",
" .format(\"{:.0%}\", subset = (\"% Contamination\",(\"Compost\", \"Recycling\", \"Landfill\"))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Higher Tip Fees for Contamination\n",
"> To encourage businesses to reduce and sort their waste, Squamish requires them to pay a higher Tip Fee if their Landfill waste is contaminated.\n",
"\n",
"> In the table below, change values in the Landfill stream to bring contamination **below 20%**. What happens to the Cost?"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6d79f12ff0524278821d7c650bcbfb8f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"QgridWidget(grid_options={'fullWidthRows': True, 'syncColumnCellResize': True, 'forceFitColumns': True, 'defau…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Your total waste management cost is: $ 40.0\n"
]
}
],
"source": [
"## import warnings\n",
"warnings.filterwarnings(\"ignore\")\n",
"\n",
"\n",
"df2 = pd.DataFrame(data = contaminationCost, columns=streams, index = rowsCost)\n",
"\n",
"def handler2(event, qgrid_widgetCost):\n",
" df2 = qgrid_widgetCost.get_changed_df()\n",
" \n",
" # Updating the Compost column\n",
" compostPercent2 = round((df2[\"Compost\"][\"Recycling\"]+df2[\"Compost\"][\"Landfill\"])/(df2[\"Compost\"][\"Compost\"]+df2[\"Compost\"][\"Recycling\"]+df2[\"Compost\"][\"Landfill\"])*100, 0)\n",
" df2.set_value(\"% Contamination\", \"Compost\", compostPercent2)\n",
" \n",
" compostCost = 8\n",
" df2.set_value(\"Cost ($)\", \"Compost\", round(compostCost, 2))\n",
" \n",
" # Updating the Recycling column\n",
" recyclingPercent2 = round((df2[\"Recycling\"][\"Compost\"]+df2[\"Recycling\"][\"Landfill\"])/(df2[\"Recycling\"][\"Compost\"]+df2[\"Recycling\"][\"Recycling\"]+df2[\"Recycling\"][\"Landfill\"])*100, 0)\n",
" df2.set_value(\"% Contamination\", \"Recycling\", recyclingPercent2)\n",
" \n",
" recyclingCost = 0\n",
" df2.set_value(\"Cost ($)\", \"Recycling\", recyclingCost)\n",
" \n",
" # Updating the Landfill column\n",
" landfillPercent2 = round((df2[\"Landfill\"][\"Compost\"]+df2[\"Landfill\"][\"Recycling\"])/(df2[\"Landfill\"][\"Compost\"]+df2[\"Landfill\"][\"Recycling\"]+df2[\"Landfill\"][\"Landfill\"])*100, 0)\n",
" df2.set_value(\"% Contamination\", \"Landfill\", landfillPercent2)\n",
" \n",
" if landfillPercent2 > 20:\n",
" landfillCost = 32.00\n",
" df2.set_value(\"Cost ($)\", \"Landfill\", round(landfillCost, 2))\n",
" else:\n",
" landfillCost = 15\n",
" df2.set_value(\"Cost ($)\", \"Landfill\", round(landfillCost, 2))\n",
" \n",
" #Update and display the grid\n",
" qgrid_widgetCost = qgrid.show_grid(df2)\n",
" clear_output()\n",
" qgrid_widgetCost.on(names = 'cell_edited', handler = handler2)\n",
" display(qgrid_widgetCost)\n",
" totalCost = df2.get_value(\"Cost ($)\",\"Compost\") + df2.get_value(\"Cost ($)\",\"Recycling\") + df2.get_value(\"Cost ($)\",\"Landfill\")\n",
" print (\"Your total waste management cost is: $\", totalCost)\n",
"\n",
"qgrid_widgetCost = qgrid.show_grid(df2)\n",
"qgrid_widgetCost.on(names = 'cell_edited', handler = handler2)\n",
"display(qgrid_widgetCost)\n",
"\n",
"totalCost = df2.get_value(\"Cost ($)\",\"Compost\") + df2.get_value(\"Cost ($)\",\"Recycling\") + df2.get_value(\"Cost ($)\",\"Landfill\")\n",
"print (\"Your total waste management cost is: $\", totalCost)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Waste Reduction, or Decontamination?\n",
"\n",
"> For the environment, waste reduction is always a top priority. But some businesses must continue producing waste to stay _in_ business! So, what should they try to do?\n",
"\n",
"> Think about the different weights and costs: \n",
"* If 100kg of contaminated Landfill waste costs \\$32,\n",
" **How much would it cost to throw out 50kg of Landfill waste?**\n",
"\n",
"> _Click the button below to show the answer._"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8e98dfdfd0d242419a898200193e790f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(button_style='info', description='Show', style=ButtonStyle(), tooltip='Click me')"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Create a button to show the table with the answer.\n",
"\n",
"#Tools\n",
"import ipywidgets as widgets\n",
"from IPython.display import clear_output\n",
"\n",
"#Make the button\n",
"showAnswer_button= widgets.Button(\n",
" description='Show',\n",
" disabled=False,\n",
" button_style='info', # 'success' (green), 'info' (blue), 'warning' (orange), 'danger' (red) or '' (white)\n",
" tooltip='Click me',\n",
" icon=''\n",
")\n",
"\n",
"#Make the table that shows the answer.\n",
"weight = [[\"100kg ( >20% contaminated)\", \"$32\"], \n",
" [\"50kg ( >20% contaminated)\", \"$16\"],\n",
" [\"100kg ( <20% contaminated)\",\"$15\"]]\n",
"colname = [\" \",\" \", \" \"]\n",
"rowname = [\"Weight\", \"Cost\"]\n",
"\n",
"zeroWaste = pd.DataFrame(data = weight, columns = rowname, index = colname)\n",
"\n",
"\n",
"#Define the button's function\n",
"def showAnswer(w):\n",
" clear_output()\n",
" display(showAnswer_button)\n",
" display(zeroWaste.style.applymap(colour_orange, subset=(\" \", \"Cost\"))\\\n",
" .applymap(colour_yellow, subset=(\" \", \"Cost\"))\\\n",
" .applymap(colour_green, subset=(\" \", \"Cost\")))\n",
" print (\"The cheapest option is to decontaminate the Landfill waste stream!\")\n",
"\n",
"#\"When you click the button, execute this function\" \n",
"showAnswer_button.on_click(showAnswer)\n",
"\n",
"display(showAnswer_button)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# In Conclusion:\n",
"\n",
"> * We can understand how different items contaminate waste streams using tables.\n",
"> * Recycling stream contamination is expressed in percentages.\n",
"> * Data can be shown clearly in stacked barplots.\n",
"> * Streamlining a waste management system is cheaper than reducing overall waste. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"![Callysto Banner](https://github.com/Ariel-VB/Central-Limit-Theorem/blob/master/Callysto_Notebook-Banners_Bottom_06.06.18.jpg?raw=true)"
]
}
],
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}