{
"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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" Asia | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4.9 | \n",
" Europe | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0.7 | \n",
" Africa | \n",
"
\n",
" \n",
" | 3 | \n",
" Andorra | \n",
" 245 | \n",
" 138 | \n",
" 312 | \n",
" 12.4 | \n",
" Europe | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5.9 | \n",
" Africa | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4.9 | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0.7 | \n",
"
\n",
" \n",
" | 3 | \n",
" Andorra | \n",
" 245 | \n",
" 138 | \n",
" 312 | \n",
" 12.4 | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5.9 | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" Asia | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4.9 | \n",
" Europe | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0.7 | \n",
" Africa | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5.9 | \n",
" Africa | \n",
"
\n",
" \n",
" | 5 | \n",
" Antigua & Barbuda | \n",
" 102 | \n",
" 128 | \n",
" 45 | \n",
" 4.9 | \n",
" North America | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" Asia | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4.9 | \n",
" Europe | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0.7 | \n",
" Africa | \n",
"
\n",
" \n",
" | 3 | \n",
" Andorra | \n",
" 245 | \n",
" 138 | \n",
" 312 | \n",
" 12.4 | \n",
" Europe | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5.9 | \n",
" Africa | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" asia | \n",
"
\n",
" \n",
" | 12 | \n",
" Bahrain | \n",
" 42 | \n",
" 63 | \n",
" 7 | \n",
" 2.0 | \n",
" asia | \n",
"
\n",
" \n",
" | 13 | \n",
" Bangladesh | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" asia | \n",
"
\n",
" \n",
" | 19 | \n",
" Bhutan | \n",
" 23 | \n",
" 0 | \n",
" 0 | \n",
" 0.4 | \n",
" asia | \n",
"
\n",
" \n",
" | 24 | \n",
" Brunei | \n",
" 31 | \n",
" 2 | \n",
" 1 | \n",
" 0.6 | \n",
" asia | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" Asia | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4.9 | \n",
" Europe | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0.7 | \n",
" Africa | \n",
"
\n",
" \n",
" | 3 | \n",
" Andorra | \n",
" 245 | \n",
" 138 | \n",
" 312 | \n",
" 12.4 | \n",
" Europe | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5.9 | \n",
" Africa | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" Asia | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4 | \n",
" Europe | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0 | \n",
" Africa | \n",
"
\n",
" \n",
" | 3 | \n",
" Andorra | \n",
" 245 | \n",
" 138 | \n",
" 312 | \n",
" 12 | \n",
" Europe | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5 | \n",
" Africa | \n",
"
\n",
" \n",
"
\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",
" country | \n",
" beer_servings | \n",
" spirit_servings | \n",
" wine_servings | \n",
" total_litres_of_pure_alcohol | \n",
" continent | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Afghanistan | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" Asia | \n",
"
\n",
" \n",
" | 1 | \n",
" Albania | \n",
" 89 | \n",
" 132 | \n",
" 54 | \n",
" 4.9 | \n",
" Europe | \n",
"
\n",
" \n",
" | 2 | \n",
" Algeria | \n",
" 25 | \n",
" 0 | \n",
" 14 | \n",
" 0.7 | \n",
" Africa | \n",
"
\n",
" \n",
" | 3 | \n",
" Andorra | \n",
" 245 | \n",
" 138 | \n",
" 312 | \n",
" 12.4 | \n",
" Europe | \n",
"
\n",
" \n",
" | 4 | \n",
" Angola | \n",
" 217 | \n",
" 57 | \n",
" 45 | \n",
" 5.9 | \n",
" Africa | \n",
"
\n",
" \n",
"
\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",
" count | \n",
" min | \n",
" max | \n",
" mean | \n",
"
\n",
" \n",
" | continent | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | Africa | \n",
" 53 | \n",
" 0.0 | \n",
" 9.1 | \n",
" 3.007547 | \n",
"
\n",
" \n",
" | Asia | \n",
" 44 | \n",
" 0.0 | \n",
" 11.5 | \n",
" 2.170455 | \n",
"
\n",
" \n",
" | Europe | \n",
" 45 | \n",
" 0.0 | \n",
" 14.4 | \n",
" 8.617778 | \n",
"
\n",
" \n",
" | North America | \n",
" 23 | \n",
" 2.2 | \n",
" 11.9 | \n",
" 5.995652 | \n",
"
\n",
" \n",
" | Oceania | \n",
" 16 | \n",
" 0.0 | \n",
" 10.4 | \n",
" 3.381250 | \n",
"
\n",
" \n",
" | South America | \n",
" 12 | \n",
" 3.8 | \n",
" 8.3 | \n",
" 6.308333 | \n",
"
\n",
" \n",
"
\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
}