{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.20.3\n" ] } ], "source": [ "import pandas as pd\n", "import os\n", "import matplotlib\n", "\n", "%matplotlib inline\n", "\n", "print pd.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Axis parameter in Pandas (Vid-11)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000.0Asia
1Albania89132544.9Europe
2Algeria250140.7Africa
3Andorra24513831212.4Europe
4Angola21757455.9Africa
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "3 Andorra 245 138 312 \n", "4 Angola 217 57 45 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0.0 Asia \n", "1 4.9 Europe \n", "2 0.7 Africa \n", "3 12.4 Europe \n", "4 5.9 Africa " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reading table\n", "# making seperator as comma\n", "df = pd.read_table(\n", " 'http://bit.ly/drinksbycountry', \n", " sep=','\n", " )\n", "df.head(5)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcohol
0Afghanistan0000.0
1Albania89132544.9
2Algeria250140.7
3Andorra24513831212.4
4Angola21757455.9
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "3 Andorra 245 138 312 \n", "4 Angola 217 57 45 \n", "\n", " total_litres_of_pure_alcohol \n", "0 0.0 \n", "1 4.9 \n", "2 0.7 \n", "3 12.4 \n", "4 5.9 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# in-context with drop() method for column\n", "# since inplace=T/F not used. So it is not saved for now.\n", "df.drop('continent', axis=1).head(5)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000.0Asia
1Albania89132544.9Europe
2Algeria250140.7Africa
4Angola21757455.9Africa
5Antigua & Barbuda102128454.9North America
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "4 Angola 217 57 45 \n", "5 Antigua & Barbuda 102 128 45 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0.0 Asia \n", "1 4.9 Europe \n", "2 0.7 Africa \n", "4 5.9 Africa \n", "5 4.9 North America " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# in-context with drop() method for row\n", "# since inplace=T/F not used. So it is not saved for now.\n", "df.drop(3, axis=0).head(5)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "beer_servings True\n", "spirit_servings True\n", "wine_servings True\n", "total_litres_of_pure_alcohol True\n", "dtype: bool" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# mean() method bydefault takes axis=0, if not specified\n", "df.mean(axis=0) == df.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Takeaways\n", "\n", "1. axis=1 (Y-axis/Column) == axis='columns'\n", "2. axis=0 (X-axis/Row) == axis='index'\n", "\n", "# -----------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# String Method in Pandas (Vid-12)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000.0Asia
1Albania89132544.9Europe
2Algeria250140.7Africa
3Andorra24513831212.4Europe
4Angola21757455.9Africa
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "3 Andorra 245 138 312 \n", "4 Angola 217 57 45 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0.0 Asia \n", "1 4.9 Europe \n", "2 0.7 Africa \n", "3 12.4 Europe \n", "4 5.9 Africa " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reading table\n", "# making seperator as comma\n", "df = pd.read_table(\n", " 'http://bit.ly/drinksbycountry', \n", " sep=','\n", " )\n", "df.head(5)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# we would like to make continent to all small letters\n", "df['continent'] = df['continent'].str.lower()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000.0asia
12Bahrain426372.0asia
13Bangladesh0000.0asia
19Bhutan23000.4asia
24Brunei31210.6asia
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "12 Bahrain 42 63 7 \n", "13 Bangladesh 0 0 0 \n", "19 Bhutan 23 0 0 \n", "24 Brunei 31 2 1 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0.0 asia \n", "12 2.0 asia \n", "13 0.0 asia \n", "19 0.4 asia \n", "24 0.6 asia " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# we would now like to filter the table where continent is asia\n", "df[df.continent.str.contains('asia')].head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Takeaways\n", "\n", "1. To apply any of the string methods on pandas series, first typecast them as string by using .str then use the relevant method\n", "\n", "# -----------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data type change (Vid-13)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000.0Asia
1Albania89132544.9Europe
2Algeria250140.7Africa
3Andorra24513831212.4Europe
4Angola21757455.9Africa
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "3 Andorra 245 138 312 \n", "4 Angola 217 57 45 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0.0 Asia \n", "1 4.9 Europe \n", "2 0.7 Africa \n", "3 12.4 Europe \n", "4 5.9 Africa " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reading table\n", "# making seperator as comma\n", "df = pd.read_table(\n", " 'http://bit.ly/drinksbycountry', \n", " sep=','\n", " )\n", "df.head(5)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "country object\n", "beer_servings int64\n", "spirit_servings int64\n", "wine_servings int64\n", "total_litres_of_pure_alcohol float64\n", "continent object\n", "dtype: object" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# country and continent are strings, rest all are numeric\n", "df.dtypes" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df.total_litres_of_pure_alcohol = df.total_litres_of_pure_alcohol.astype('int64')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000Asia
1Albania89132544Europe
2Algeria250140Africa
3Andorra24513831212Europe
4Angola21757455Africa
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "3 Andorra 245 138 312 \n", "4 Angola 217 57 45 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0 Asia \n", "1 4 Europe \n", "2 0 Africa \n", "3 12 Europe \n", "4 5 Africa " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# notice the change under `total_litres_of_pure_alcohol` column name\n", "df.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Takeaways\n", "\n", "1. Sometimes while importing dataset, you numbers can be of object type. There you might want to changes the types for applying mathematical operations.\n", "\n", "# -----------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Using GroupBy (Vid-14)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinent
0Afghanistan0000.0Asia
1Albania89132544.9Europe
2Algeria250140.7Africa
3Andorra24513831212.4Europe
4Angola21757455.9Africa
\n", "
" ], "text/plain": [ " country beer_servings spirit_servings wine_servings \\\n", "0 Afghanistan 0 0 0 \n", "1 Albania 89 132 54 \n", "2 Algeria 25 0 14 \n", "3 Andorra 245 138 312 \n", "4 Angola 217 57 45 \n", "\n", " total_litres_of_pure_alcohol continent \n", "0 0.0 Asia \n", "1 4.9 Europe \n", "2 0.7 Africa \n", "3 12.4 Europe \n", "4 5.9 Africa " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reading table\n", "# making seperator as comma\n", "df = pd.read_table(\n", " 'http://bit.ly/drinksbycountry', \n", " sep=','\n", " )\n", "df.head(5)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "continent\n", "Africa 3.007547\n", "Asia 2.170455\n", "Europe 8.617778\n", "North America 5.995652\n", "Oceania 3.381250\n", "South America 6.308333\n", "Name: total_litres_of_pure_alcohol, dtype: float64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# we will group by each continent to get on average total_liters_of_pure_alcohol\n", "df.groupby('continent')['total_litres_of_pure_alcohol'].mean()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.170454545454545" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# for continent asia, what is the mean value of `total_litres_of_pure_alcohol`\n", "df[df.continent.str.contains('Asia')]['total_litres_of_pure_alcohol'].mean()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countminmaxmean
continent
Africa530.09.13.007547
Asia440.011.52.170455
Europe450.014.48.617778
North America232.211.95.995652
Oceania160.010.43.381250
South America123.88.36.308333
\n", "
" ], "text/plain": [ " count min max mean\n", "continent \n", "Africa 53 0.0 9.1 3.007547\n", "Asia 44 0.0 11.5 2.170455\n", "Europe 45 0.0 14.4 8.617778\n", "North America 23 2.2 11.9 5.995652\n", "Oceania 16 0.0 10.4 3.381250\n", "South America 12 3.8 8.3 6.308333" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# keeping eye to all necessary stats at once using `agg` method by passing list of necessary attributes\n", "df.groupby('continent')['total_litres_of_pure_alcohol'].agg(['count', 'min', 'max', 'mean'])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAFJCAYAAACLh9YgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XmYVdWd7vHvW0hExSEK0ipGSAdF\nDIMGiYoDQwa6TdRWNFE0QIzk3pgG7UwmaVuvl3gd0mqrN7nSEUWjMQ5R0eQmGoc4pWMKcWIwEIMG\nJwgqcQjK8Os/9i4ssIqazjn77MX7eZ566ux9pt+pRb2sWnvttRURmJlZ+TUUXYCZmVWGA93MLBEO\ndDOzRDjQzcwS4UA3M0uEA93MLBEOdDOzRDjQzcwS4UA3M0vEFrV8s169ekW/fv1q+ZZmZqU3Z86c\nv0RE77YeV9NA79evH42NjbV8SzOz0pP0XHse5yEXM7NEONDNzBLhQDczS0RNx9DNzDZl9erVLF26\nlFWrVhVdSiF69OhB37596d69e6ee70A3s7qxdOlStt12W/r164ekosupqYhgxYoVLF26lP79+3fq\nNTzkYmZ1Y9WqVey0006bXZgDSGKnnXbq0l8nDnQzqyubY5g36epnd6CbmSWiFGPo/c74eav3LTnv\n8BpWYma1tKnf/c6oh7y45JJLmDJlCltvvXXFX9s9dDOzGrrkkkt4++23q/LaDnQzs41cc801DBky\nhKFDh3LSSSexZMkSxowZw5AhQxg7dizPP/88AJMmTeLmm29e/7yePXsCcP/99zNq1CjGjx/PwIED\nmTBhAhHBpZdeyosvvsjo0aMZPXp0xesuxZCLmVmtzJs3j+nTp/PII4/Qq1cvXn31VSZOnLj+a+bM\nmUydOpXbbrttk68zd+5c5s2bx6677srIkSN5+OGHmTp1KhdddBH33XcfvXr1qnjt7qGbmTVz7733\ncuyxx64P3B133JHf/va3nHDCCQCcdNJJPPTQQ22+zogRI+jbty8NDQ0MGzaMJUuWVLNswIFuZtZp\nW2yxBevWrQNg3bp1vPvuu+vv23LLLdff7tatG2vWrKl6PQ50M7NmxowZw0033cSKFSsAePXVVzno\noIO44YYbALjuuus45JBDgGxJ8Dlz5gAwe/ZsVq9e3ebrb7vttrzxxhtVqd1j6GZWt4qYZrjPPvvw\n3e9+l8MOO4xu3bqx7777ctlllzF58mQuvPBCevfuzVVXXQXAKaecwpFHHsnQoUMZN24c22yzTZuv\nP2XKFMaNG8euu+7KfffdV9HaFREVfcFNGT58eHTmAheeh262eViwYAF777130WUUqqWfgaQ5ETG8\nree2q4cuaQnwBrAWWBMRwyXtCPwU6AcsAY6LiNc6VLmZmVVMR8bQR0fEsGb/S5wB3BMRA4B78m0z\nMytIVw6KHgnMym/PAo7qejlmZtZZ7Q30AO6SNEfSlHxfn4h4Kb/9MtCnpSdKmiKpUVLj8uXLu1iu\nmZm1pr2zXA6OiBck7QzcLWlh8zsjIiS1eHQ1ImYAMyA7KNqlas3MrFXt6qFHxAv592XArcAI4BVJ\nuwDk35dVq0gzM2tbmz10SdsADRHxRn77U8A5wGxgInBe/v32ahZqZpuhs7ev8OutrMjLzJ49m/nz\n53PGGfU1F6Q9Qy59gFvzK2lsAVwfEb+U9HvgRkknA88Bx1WvTDOz+nHEEUdwxBFHFF3G+7QZ6BHx\nLDC0hf0rgLHVKMrMrChLlixh3LhxHHDAATzyyCPsv//+TJ48mbPOOotly5Zx3XXXMX/+fBobG7n8\n8suZNGkS2223HY2Njbz88stccMEFjB8/vpDavZaLmdlGFi9ezNe+9jUWLlzIwoULuf7663nooYf4\n/ve/z7nnnvu+x7/00ks89NBD3HnnnYUOw3gtFzOzjfTv35/BgwcD2douY8eORRKDBw9ucRnco446\nioaGBgYNGsQrr7xS42rf4x66mdlGmi9929DQsH67oaGhxWVwmz++lutjbcyBbmaWCA+5mFn9qtA0\nw82FA93MrJl+/frx9NNPr9+++uqrW7xv0qRJ77sf4M0336x2ia3ykIuZWSIc6GZmiXCgm5klwoFu\nZpYIB7qZWSIc6GZmifC0RTOrW4NnDa7o6z018amKvl69cQ/dzCwR7qFbVfU74+et3rfkvMNrWIlZ\n+7Rn+VyAadOmsWrVKrbaaiuuuuoq9tprLy6++GKeeuopZs6cyVNPPcXxxx/Po48+ytZbb12T2t1D\nNzPbSFvL5w4cOJAHH3yQuXPncs455/Cd73wHyEJ+8eLF3HrrrUyePJkrrriiZmEO7qGbmb1PW8vn\nrly5kokTJ7Jo0SIksXr1aiBbjfHqq69myJAhfPnLX2bkyJE1rds9dDOzjbS1fO6ZZ57J6NGjefrp\np7njjjtYtWrV+scvWrSInj178uKLL9a8bvfQ64DHmc3KZeXKley2227AhotzrVy5kqlTp/LAAw/w\n1a9+lZtvvrmml6NzoJtZ3arXaYbf/OY3mThxItOnT+fww9/rdJ1++umceuqp7Lnnnlx55ZWMHj2a\nQw89lJ133rkmdTnQzcyaae/yuX/4wx/W758+fToAM2fOXL9v9913Z/HixVWudkMeQzczS4QD3cws\nEQ50M7NEONDNzBLhQDczS4QD3cwsEZ62aGZ1a8HAvSv6ensvXFDR16s37qGbmSXCgW5m1sySJUsY\nOHAgkyZNYs8992TChAn8+te/ZuTIkQwYMIBHH32Ut956iy9+8YuMGDGCfffdl9tvv339cw855BD2\n228/9ttvPx555BEA7r//fkaNGsX48eMZOHAgEyZMICIqXnu7h1wkdQMagRci4jOS+gM3ADsBc4CT\nIuLdildoZlZjixcv5qabbmLmzJnsv//+65fPnT17Nueeey6DBg1izJgxzJw5k9dff50RI0bwiU98\ngp133pm7776bHj16sGjRIo4//ngaGxsBmDt3LvPmzWPXXXdl5MiRPPzwwxx88MEVrbsjPfRpQPMB\nqPOBiyPiI8BrwMmVLMzMrChNy+c2NDS0uHzuXXfdxXnnncewYcMYNWoUq1at4vnnn2f16tWccsop\nDB48mGOPPZb58+evf80RI0bQt29fGhoaGDZsGEuWLKl43e3qoUvqCxwOfA/4F0kCxgAn5A+ZBZwN\n/LDiFZqZ1Vhby+d269aNW265hb322muD55199tn06dOHJ554gnXr1tGjR48WX7Nbt26sWbOm4nW3\nt4d+CfBNYF2+vRPwekQ0VbQU2K2lJ0qaIqlRUuPy5cu7VKyZWT349Kc/zWWXXbZ+HHzu3LlAtnzu\nLrvsQkNDA9deey1r166taV1t9tAlfQZYFhFzJI3q6BtExAxgBsDw4cMrfxTAzJJVr9MMzzzzTE47\n7TSGDBnCunXr6N+/P3feeSdf+cpXOOaYY7jmmmsYN24c22yzTU3ras+Qy0jgCEn/CPQAtgP+A9hB\n0hZ5L70v8EL1yjQzq432Lp97xRVXvO+5AwYM4Mknn1y/ff755wMwatQoRo0atX7/5ZdfXuGqM20O\nuUTEtyOib0T0Az4P3BsRE4D7gKZLcUwEbq9KhWZm1i5dmYf+LbIDpIvJxtSvrExJZmbWGR069T8i\n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\nWSL+G2b+AiobqZ6pAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.groupby('continent')['total_litres_of_pure_alcohol'].agg(['count', 'min', 'max', 'mean']).plot(kind='bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Takeaways\n", "\n", "1. \"agg\" method can be used to generate stats in one shot\n", "\n", "# -----------------------" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 1 }