{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction to `pandas`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [**Loading and exploring data files**](#Loading-and-exploring-data-files)\n", " * [Selecting rows and columns](#Selecting-rows-and-columns)\n", " * [Sorting](#Sorting)\n", " * [Duplicates](#Duplicates)\n", " * [Adding, renaming, and removing columns](#Adding,-renaming,-and-removing-columns)\n", " * [Replacing values](#Replacing-values)\n", " * [Changing data types](#Changing-data-types)\n", "* [**Summarising data**](#Summarising-data)\n", " * [Summary statistics](#Summary-statistics)\n", " * [Pivot tables](#Pivot-tables)\n", " * [Split-apply-combine](#Split-apply-combine)\n", "* [**Visualising data**](#Visualising-data)\n", " * [Histograms and density plots](#Histograms-and-density-plots)\n", " * [Scatter plots](#Scatter-plots)\n", " * [Bar plots](#Bar-plots)\n", " * [Box plots](#Box-plots)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start by importing some libraries:\n", "* `numpy` and `pandas` to load, explore, and summarise the data\n", "* `matplotlib` to visualise the data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Make sure plots are shown inside the notebook\n", "%matplotlib inline\n", "plt.rcParams['figure.figsize'] = (10, 6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading and exploring data files" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this introduction, we'll use data on student performance from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/Student+Performance)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "students = pd.read_csv('https://raw.githubusercontent.com/estimand/teaching-datasets/master/student-performance/student_performance.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note how `pandas` can read data from a local file or directly from a URL. You should also explore other `read_` methods such as `read_excel`.\n", "\n", "What's the type of the `students` variable we've just created?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(students)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`DataFrame`s are at the core of `pandas`. They're organised like Excel spreadsheets, with **rows representing observations** (people, items, etc.), and **columns representing variables** (measurements, attributes, etc.).\n", "\n", "The number of rows and columns in a `DataFrame` is known as its `shape`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(649, 31)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can have a quick look at the data using the functions `head` and `tail`, which return the first or last 5 rows (by default), respectively." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
0Gabriel PereiraF18Urban> 3FalseHigher educationHigher educationAt homeTeacher...FalseFalse434113411
1Gabriel PereiraF17Urban> 3TruePrimary educationPrimary educationAt homeOther...TrueFalse533113211
2Gabriel PereiraF15Urban<= 3TruePrimary educationPrimary educationAt homeOther...TrueFalse432233612
3Gabriel PereiraF15Urban> 3TrueHigher educationLower secondary educationHealthcareCivil service...TrueTrue322115014
4Gabriel PereiraF16Urban> 3TrueUpper secondary educationUpper secondary educationOtherOther...FalseFalse432125013
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "0 Gabriel Pereira F 18 Urban > 3 False \n", "1 Gabriel Pereira F 17 Urban > 3 True \n", "2 Gabriel Pereira F 15 Urban <= 3 True \n", "3 Gabriel Pereira F 15 Urban > 3 True \n", "4 Gabriel Pereira F 16 Urban > 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "0 Higher education Higher education At home \n", "1 Primary education Primary education At home \n", "2 Primary education Primary education At home \n", "3 Higher education Lower secondary education Healthcare \n", "4 Upper secondary education Upper secondary education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "0 Teacher ... False False \n", "1 Other ... True False \n", "2 Other ... True False \n", "3 Civil service ... True True \n", "4 Other ... False False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "0 4 3 4 1 \n", "1 5 3 3 1 \n", "2 4 3 2 2 \n", "3 3 2 2 1 \n", "4 4 3 2 1 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "0 1 3 4 11 \n", "1 1 3 2 11 \n", "2 3 3 6 12 \n", "3 1 5 0 14 \n", "4 2 5 0 13 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
644Mouzinho da SilveiraF19Rural> 3TrueLower secondary educationUpper secondary educationCivil serviceOther...TrueFalse542125410
645Mouzinho da SilveiraF18Urban<= 3TrueUpper secondary educationPrimary educationTeacherCivil service...TrueFalse434111416
646Mouzinho da SilveiraF18Urban> 3TruePrimary educationPrimary educationOtherOther...FalseFalse11111569
647Mouzinho da SilveiraM17Urban<= 3TrueUpper secondary educationPrimary educationCivil serviceCivil service...TrueFalse245342610
648Mouzinho da SilveiraM18Rural<= 3TrueUpper secondary educationLower secondary educationCivil serviceOther...TrueFalse441345411
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "644 Mouzinho da Silveira F 19 Rural > 3 True \n", "645 Mouzinho da Silveira F 18 Urban <= 3 True \n", "646 Mouzinho da Silveira F 18 Urban > 3 True \n", "647 Mouzinho da Silveira M 17 Urban <= 3 True \n", "648 Mouzinho da Silveira M 18 Rural <= 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "644 Lower secondary education Upper secondary education Civil service \n", "645 Upper secondary education Primary education Teacher \n", "646 Primary education Primary education Other \n", "647 Upper secondary education Primary education Civil service \n", "648 Upper secondary education Lower secondary education Civil service \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "644 Other ... True False \n", "645 Civil service ... True False \n", "646 Other ... False False \n", "647 Civil service ... True False \n", "648 Other ... True False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "644 5 4 2 1 \n", "645 4 3 4 1 \n", "646 1 1 1 1 \n", "647 2 4 5 3 \n", "648 4 4 1 3 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "644 2 5 4 10 \n", "645 1 1 4 16 \n", "646 1 5 6 9 \n", "647 4 2 6 10 \n", "648 4 5 4 11 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also specify the number of rows we want as an argument." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
0Gabriel PereiraF18Urban> 3FalseHigher educationHigher educationAt homeTeacher...FalseFalse434113411
1Gabriel PereiraF17Urban> 3TruePrimary educationPrimary educationAt homeOther...TrueFalse533113211
2Gabriel PereiraF15Urban<= 3TruePrimary educationPrimary educationAt homeOther...TrueFalse432233612
3Gabriel PereiraF15Urban> 3TrueHigher educationLower secondary educationHealthcareCivil service...TrueTrue322115014
4Gabriel PereiraF16Urban> 3TrueUpper secondary educationUpper secondary educationOtherOther...FalseFalse432125013
5Gabriel PereiraM16Urban<= 3TrueHigher educationUpper secondary educationCivil serviceOther...TrueFalse542125613
6Gabriel PereiraM16Urban<= 3TrueLower secondary educationLower secondary educationOtherOther...TrueFalse444113013
7Gabriel PereiraF17Urban> 3FalseHigher educationHigher educationOtherTeacher...FalseFalse414111213
8Gabriel PereiraM15Urban<= 3FalseUpper secondary educationLower secondary educationCivil serviceOther...TrueFalse422111017
9Gabriel PereiraM15Urban> 3TrueUpper secondary educationHigher educationOtherOther...TrueFalse551115013
\n", "

10 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "0 Gabriel Pereira F 18 Urban > 3 False \n", "1 Gabriel Pereira F 17 Urban > 3 True \n", "2 Gabriel Pereira F 15 Urban <= 3 True \n", "3 Gabriel Pereira F 15 Urban > 3 True \n", "4 Gabriel Pereira F 16 Urban > 3 True \n", "5 Gabriel Pereira M 16 Urban <= 3 True \n", "6 Gabriel Pereira M 16 Urban <= 3 True \n", "7 Gabriel Pereira F 17 Urban > 3 False \n", "8 Gabriel Pereira M 15 Urban <= 3 False \n", "9 Gabriel Pereira M 15 Urban > 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "0 Higher education Higher education At home \n", "1 Primary education Primary education At home \n", "2 Primary education Primary education At home \n", "3 Higher education Lower secondary education Healthcare \n", "4 Upper secondary education Upper secondary education Other \n", "5 Higher education Upper secondary education Civil service \n", "6 Lower secondary education Lower secondary education Other \n", "7 Higher education Higher education Other \n", "8 Upper secondary education Lower secondary education Civil service \n", "9 Upper secondary education Higher education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "0 Teacher ... False False \n", "1 Other ... True False \n", "2 Other ... True False \n", "3 Civil service ... True True \n", "4 Other ... False False \n", "5 Other ... True False \n", "6 Other ... True False \n", "7 Teacher ... False False \n", "8 Other ... True False \n", "9 Other ... True False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "0 4 3 4 1 \n", "1 5 3 3 1 \n", "2 4 3 2 2 \n", "3 3 2 2 1 \n", "4 4 3 2 1 \n", "5 5 4 2 1 \n", "6 4 4 4 1 \n", "7 4 1 4 1 \n", "8 4 2 2 1 \n", "9 5 5 1 1 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "0 1 3 4 11 \n", "1 1 3 2 11 \n", "2 3 3 6 12 \n", "3 1 5 0 14 \n", "4 2 5 0 13 \n", "5 2 5 6 13 \n", "6 1 3 0 13 \n", "7 1 1 2 13 \n", "8 1 1 0 17 \n", "9 1 5 0 13 \n", "\n", "[10 rows x 31 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The full set of columns in a `DataFrame` is stored in the attribute `columns`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['school', 'sex', 'age', 'home_area', 'family_size', 'parents_cohabit',\n", " 'education_mother', 'education_father', 'occupation_mother',\n", " 'occupation_father', 'reason', 'guardian', 'travel_time', 'study_time',\n", " 'failures', 'extra_school_support', 'family_support', 'extra_tutoring',\n", " 'extracurricular_activities', 'nursery', 'higher_education',\n", " 'internet_access', 'romantic_relationship',\n", " 'family_relationships_quality', 'free_time', 'going_out',\n", " 'alcohol_weekdays', 'alcohol_weekend', 'health_status', 'absences',\n", " 'final_grade'],\n", " dtype='object')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each column has an associated data type (e.g. `int` or `float`). These are stored in the attribute `dtypes`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "school object\n", "sex object\n", "age int64\n", "home_area object\n", "family_size object\n", "parents_cohabit bool\n", "education_mother object\n", "education_father object\n", "occupation_mother object\n", "occupation_father object\n", "reason object\n", "guardian object\n", "travel_time object\n", "study_time object\n", "failures object\n", "extra_school_support bool\n", "family_support bool\n", "extra_tutoring bool\n", "extracurricular_activities bool\n", "nursery bool\n", "higher_education bool\n", "internet_access bool\n", "romantic_relationship bool\n", "family_relationships_quality int64\n", "free_time int64\n", "going_out int64\n", "alcohol_weekdays int64\n", "alcohol_weekend int64\n", "health_status int64\n", "absences int64\n", "final_grade int64\n", "dtype: object" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note how `pandas` stores `str`ings as `object`s.\n", "\n", "Type-specific methods can be accessed using attributes such as `str` (for `str`ings) and `dt` (for `datetime` objects representing dates and times)." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 True\n", "1 True\n", "2 True\n", "3 True\n", "4 True\n", "5 True\n", "6 True\n", "7 True\n", "8 True\n", "9 True\n", "10 True\n", "11 True\n", "12 True\n", "13 True\n", "14 True\n", "15 True\n", "16 True\n", "17 True\n", "18 True\n", "19 True\n", "20 True\n", "21 True\n", "22 True\n", "23 True\n", "24 True\n", "25 True\n", "26 True\n", "27 True\n", "28 True\n", "29 True\n", " ... \n", "619 False\n", "620 False\n", "621 False\n", "622 False\n", "623 False\n", "624 False\n", "625 False\n", "626 False\n", "627 False\n", "628 False\n", "629 False\n", "630 False\n", "631 False\n", "632 False\n", "633 False\n", "634 False\n", "635 False\n", "636 False\n", "637 False\n", "638 False\n", "639 False\n", "640 False\n", "641 False\n", "642 False\n", "643 False\n", "644 False\n", "645 False\n", "646 False\n", "647 False\n", "648 False\n", "Name: school, Length: 649, dtype: bool" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['school'].str.contains('Pereira')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Selecting rows and columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Boolean filtering\n", "\n", "Using `[]` and a `bool`ean condition, we can **select rows** that satisfy certain conditions." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
0Gabriel PereiraF18Urban> 3FalseHigher educationHigher educationAt homeTeacher...FalseFalse434113411
1Gabriel PereiraF17Urban> 3TruePrimary educationPrimary educationAt homeOther...TrueFalse533113211
2Gabriel PereiraF15Urban<= 3TruePrimary educationPrimary educationAt homeOther...TrueFalse432233612
3Gabriel PereiraF15Urban> 3TrueHigher educationLower secondary educationHealthcareCivil service...TrueTrue322115014
4Gabriel PereiraF16Urban> 3TrueUpper secondary educationUpper secondary educationOtherOther...FalseFalse432125013
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "0 Gabriel Pereira F 18 Urban > 3 False \n", "1 Gabriel Pereira F 17 Urban > 3 True \n", "2 Gabriel Pereira F 15 Urban <= 3 True \n", "3 Gabriel Pereira F 15 Urban > 3 True \n", "4 Gabriel Pereira F 16 Urban > 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "0 Higher education Higher education At home \n", "1 Primary education Primary education At home \n", "2 Primary education Primary education At home \n", "3 Higher education Lower secondary education Healthcare \n", "4 Upper secondary education Upper secondary education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "0 Teacher ... False False \n", "1 Other ... True False \n", "2 Other ... True False \n", "3 Civil service ... True True \n", "4 Other ... False False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "0 4 3 4 1 \n", "1 5 3 3 1 \n", "2 4 3 2 2 \n", "3 3 2 2 1 \n", "4 4 3 2 1 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "0 1 3 4 11 \n", "1 1 3 2 11 \n", "2 3 3 6 12 \n", "3 1 5 0 14 \n", "4 2 5 0 13 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students[students['age'] <= 18].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the result of this operation is another `DataFrame`, meaning that we can call methods such as `head`.\n", "\n", "We can also combine multiple conditions." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
3Gabriel PereiraF15Urban> 3TrueHigher educationLower secondary educationHealthcareCivil service...TrueTrue322115014
14Gabriel PereiraM15Urban> 3FalseLower secondary educationLower secondary educationOtherOther...TrueTrue452113015
29Gabriel PereiraM16Urban> 3TrueHigher educationHigher educationTeacherTeacher...TrueTrue445555412
32Gabriel PereiraM15Rural> 3TrueHigher educationUpper secondary educationTeacherAt home...TrueTrue452115015
37Gabriel PereiraM16Rural> 3FalseHigher educationHigher educationOtherTeacher...TrueTrue243115413
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "3 Gabriel Pereira F 15 Urban > 3 True \n", "14 Gabriel Pereira M 15 Urban > 3 False \n", "29 Gabriel Pereira M 16 Urban > 3 True \n", "32 Gabriel Pereira M 15 Rural > 3 True \n", "37 Gabriel Pereira M 16 Rural > 3 False \n", "\n", " education_mother education_father occupation_mother \\\n", "3 Higher education Lower secondary education Healthcare \n", "14 Lower secondary education Lower secondary education Other \n", "29 Higher education Higher education Teacher \n", "32 Higher education Upper secondary education Teacher \n", "37 Higher education Higher education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "3 Civil service ... True True \n", "14 Other ... True True \n", "29 Teacher ... True True \n", "32 At home ... True True \n", "37 Teacher ... True True \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "3 3 2 2 1 \n", "14 4 5 2 1 \n", "29 4 4 5 5 \n", "32 4 5 2 1 \n", "37 2 4 3 1 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "3 1 5 0 14 \n", "14 1 3 0 15 \n", "29 5 5 4 12 \n", "32 1 5 0 15 \n", "37 1 5 4 13 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students[(students['age'] <= 18) & (students['romantic_relationship'])].head()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
2Gabriel PereiraF15Urban<= 3TruePrimary educationPrimary educationAt homeOther...TrueFalse432233612
3Gabriel PereiraF15Urban> 3TrueHigher educationLower secondary educationHealthcareCivil service...TrueTrue322115014
4Gabriel PereiraF16Urban> 3TrueUpper secondary educationUpper secondary educationOtherOther...FalseFalse432125013
5Gabriel PereiraM16Urban<= 3TrueHigher educationUpper secondary educationCivil serviceOther...TrueFalse542125613
6Gabriel PereiraM16Urban<= 3TrueLower secondary educationLower secondary educationOtherOther...TrueFalse444113013
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "2 Gabriel Pereira F 15 Urban <= 3 True \n", "3 Gabriel Pereira F 15 Urban > 3 True \n", "4 Gabriel Pereira F 16 Urban > 3 True \n", "5 Gabriel Pereira M 16 Urban <= 3 True \n", "6 Gabriel Pereira M 16 Urban <= 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "2 Primary education Primary education At home \n", "3 Higher education Lower secondary education Healthcare \n", "4 Upper secondary education Upper secondary education Other \n", "5 Higher education Upper secondary education Civil service \n", "6 Lower secondary education Lower secondary education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "2 Other ... True False \n", "3 Civil service ... True True \n", "4 Other ... False False \n", "5 Other ... True False \n", "6 Other ... True False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "2 4 3 2 2 \n", "3 3 2 2 1 \n", "4 4 3 2 1 \n", "5 5 4 2 1 \n", "6 4 4 4 1 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "2 3 3 6 12 \n", "3 1 5 0 14 \n", "4 2 5 0 13 \n", "5 2 5 6 13 \n", "6 1 3 0 13 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students[(students['age'] <= 16) | (students['age'] >= 21)].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Slicing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using `[]` and a single `str`ing, we can **select specific columns**." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Gabriel Pereira\n", "1 Gabriel Pereira\n", "2 Gabriel Pereira\n", "3 Gabriel Pereira\n", "4 Gabriel Pereira\n", "5 Gabriel Pereira\n", "6 Gabriel Pereira\n", "7 Gabriel Pereira\n", "8 Gabriel Pereira\n", "9 Gabriel Pereira\n", "10 Gabriel Pereira\n", "11 Gabriel Pereira\n", "12 Gabriel Pereira\n", "13 Gabriel Pereira\n", "14 Gabriel Pereira\n", "15 Gabriel Pereira\n", "16 Gabriel Pereira\n", "17 Gabriel Pereira\n", "18 Gabriel Pereira\n", "19 Gabriel Pereira\n", "20 Gabriel Pereira\n", "21 Gabriel Pereira\n", "22 Gabriel Pereira\n", "23 Gabriel Pereira\n", "24 Gabriel Pereira\n", "25 Gabriel Pereira\n", "26 Gabriel Pereira\n", "27 Gabriel Pereira\n", "28 Gabriel Pereira\n", "29 Gabriel Pereira\n", " ... \n", "619 Mouzinho da Silveira\n", "620 Mouzinho da Silveira\n", "621 Mouzinho da Silveira\n", "622 Mouzinho da Silveira\n", "623 Mouzinho da Silveira\n", "624 Mouzinho da Silveira\n", "625 Mouzinho da Silveira\n", "626 Mouzinho da Silveira\n", "627 Mouzinho da Silveira\n", "628 Mouzinho da Silveira\n", "629 Mouzinho da Silveira\n", "630 Mouzinho da Silveira\n", "631 Mouzinho da Silveira\n", "632 Mouzinho da Silveira\n", "633 Mouzinho da Silveira\n", "634 Mouzinho da Silveira\n", "635 Mouzinho da Silveira\n", "636 Mouzinho da Silveira\n", "637 Mouzinho da Silveira\n", "638 Mouzinho da Silveira\n", "639 Mouzinho da Silveira\n", "640 Mouzinho da Silveira\n", "641 Mouzinho da Silveira\n", "642 Mouzinho da Silveira\n", "643 Mouzinho da Silveira\n", "644 Mouzinho da Silveira\n", "645 Mouzinho da Silveira\n", "646 Mouzinho da Silveira\n", "647 Mouzinho da Silveira\n", "648 Mouzinho da Silveira\n", "Name: school, Length: 649, dtype: object" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['school']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, we can access columns using the `.` notation." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Gabriel Pereira\n", "1 Gabriel Pereira\n", "2 Gabriel Pereira\n", "3 Gabriel Pereira\n", "4 Gabriel Pereira\n", "5 Gabriel Pereira\n", "6 Gabriel Pereira\n", "7 Gabriel Pereira\n", "8 Gabriel Pereira\n", "9 Gabriel Pereira\n", "10 Gabriel Pereira\n", "11 Gabriel Pereira\n", "12 Gabriel Pereira\n", "13 Gabriel Pereira\n", "14 Gabriel Pereira\n", "15 Gabriel Pereira\n", "16 Gabriel Pereira\n", "17 Gabriel Pereira\n", "18 Gabriel Pereira\n", "19 Gabriel Pereira\n", "20 Gabriel Pereira\n", "21 Gabriel Pereira\n", "22 Gabriel Pereira\n", "23 Gabriel Pereira\n", "24 Gabriel Pereira\n", "25 Gabriel Pereira\n", "26 Gabriel Pereira\n", "27 Gabriel Pereira\n", "28 Gabriel Pereira\n", "29 Gabriel Pereira\n", " ... \n", "619 Mouzinho da Silveira\n", "620 Mouzinho da Silveira\n", "621 Mouzinho da Silveira\n", "622 Mouzinho da Silveira\n", "623 Mouzinho da Silveira\n", "624 Mouzinho da Silveira\n", "625 Mouzinho da Silveira\n", "626 Mouzinho da Silveira\n", "627 Mouzinho da Silveira\n", "628 Mouzinho da Silveira\n", "629 Mouzinho da Silveira\n", "630 Mouzinho da Silveira\n", "631 Mouzinho da Silveira\n", "632 Mouzinho da Silveira\n", "633 Mouzinho da Silveira\n", "634 Mouzinho da Silveira\n", "635 Mouzinho da Silveira\n", "636 Mouzinho da Silveira\n", "637 Mouzinho da Silveira\n", "638 Mouzinho da Silveira\n", "639 Mouzinho da Silveira\n", "640 Mouzinho da Silveira\n", "641 Mouzinho da Silveira\n", "642 Mouzinho da Silveira\n", "643 Mouzinho da Silveira\n", "644 Mouzinho da Silveira\n", "645 Mouzinho da Silveira\n", "646 Mouzinho da Silveira\n", "647 Mouzinho da Silveira\n", "648 Mouzinho da Silveira\n", "Name: school, Length: 649, dtype: object" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.school" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since everything in Python is an object, what's the type of the column we've just selected?" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.series.Series" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(students['school'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using `[]` and a `list` of `str`ings, we can also **select multiple columns** at the same time." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sexage
0F18
1F17
2F15
3F15
4F16
5M16
6M16
7F17
8M15
9M15
10F15
11F15
12M15
13M15
14M15
15F16
16F16
17F16
18M17
19M16
20M15
21M15
22M16
23M16
24F15
25F16
26M15
27M15
28M16
29M16
.........
619F18
620F17
621F17
622M18
623M18
624F17
625F18
626F18
627M18
628F17
629F17
630F18
631F18
632F19
633F18
634F18
635F17
636M18
637M18
638M17
639M19
640M18
641F18
642F17
643F18
644F19
645F18
646F18
647M17
648M18
\n", "

649 rows × 2 columns

\n", "
" ], "text/plain": [ " sex age\n", "0 F 18\n", "1 F 17\n", "2 F 15\n", "3 F 15\n", "4 F 16\n", "5 M 16\n", "6 M 16\n", "7 F 17\n", "8 M 15\n", "9 M 15\n", "10 F 15\n", "11 F 15\n", "12 M 15\n", "13 M 15\n", "14 M 15\n", "15 F 16\n", "16 F 16\n", "17 F 16\n", "18 M 17\n", "19 M 16\n", "20 M 15\n", "21 M 15\n", "22 M 16\n", "23 M 16\n", "24 F 15\n", "25 F 16\n", "26 M 15\n", "27 M 15\n", "28 M 16\n", "29 M 16\n", ".. .. ...\n", "619 F 18\n", "620 F 17\n", "621 F 17\n", "622 M 18\n", "623 M 18\n", "624 F 17\n", "625 F 18\n", "626 F 18\n", "627 M 18\n", "628 F 17\n", "629 F 17\n", "630 F 18\n", "631 F 18\n", "632 F 19\n", "633 F 18\n", "634 F 18\n", "635 F 17\n", "636 M 18\n", "637 M 18\n", "638 M 17\n", "639 M 19\n", "640 M 18\n", "641 F 18\n", "642 F 17\n", "643 F 18\n", "644 F 19\n", "645 F 18\n", "646 F 18\n", "647 M 17\n", "648 M 18\n", "\n", "[649 rows x 2 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students[['sex', 'age']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `loc`, `iloc`, and `ix`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These three methods can be used to **simultaneously select rows and columns** of a `DataFrame`.\n", "\n", "`loc` selects rows or columns by **name**" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 18\n", "1 17\n", "2 15\n", "3 15\n", "4 16\n", "5 16\n", "6 16\n", "7 17\n", "8 15\n", "9 15\n", "10 15\n", "11 15\n", "12 15\n", "13 15\n", "14 15\n", "15 16\n", "16 16\n", "17 16\n", "18 17\n", "19 16\n", "20 15\n", "21 15\n", "22 16\n", "23 16\n", "24 15\n", "25 16\n", "26 15\n", "27 15\n", "28 16\n", "29 16\n", " ..\n", "619 18\n", "620 17\n", "621 17\n", "622 18\n", "623 18\n", "624 17\n", "625 18\n", "626 18\n", "627 18\n", "628 17\n", "629 17\n", "630 18\n", "631 18\n", "632 19\n", "633 18\n", "634 18\n", "635 17\n", "636 18\n", "637 18\n", "638 17\n", "639 19\n", "640 18\n", "641 18\n", "642 17\n", "643 18\n", "644 19\n", "645 18\n", "646 18\n", "647 17\n", "648 18\n", "Name: age, Length: 649, dtype: int64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.loc[:,'age'] # All rows, column 'age'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`iloc` selects rows and columns by **position**" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
0Gabriel PereiraF18Urban> 3FalseHigher educationHigher educationAt homeTeacher...FalseFalse434113411
1Gabriel PereiraF17Urban> 3TruePrimary educationPrimary educationAt homeOther...TrueFalse533113211
2Gabriel PereiraF15Urban<= 3TruePrimary educationPrimary educationAt homeOther...TrueFalse432233612
3Gabriel PereiraF15Urban> 3TrueHigher educationLower secondary educationHealthcareCivil service...TrueTrue322115014
4Gabriel PereiraF16Urban> 3TrueUpper secondary educationUpper secondary educationOtherOther...FalseFalse432125013
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "0 Gabriel Pereira F 18 Urban > 3 False \n", "1 Gabriel Pereira F 17 Urban > 3 True \n", "2 Gabriel Pereira F 15 Urban <= 3 True \n", "3 Gabriel Pereira F 15 Urban > 3 True \n", "4 Gabriel Pereira F 16 Urban > 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "0 Higher education Higher education At home \n", "1 Primary education Primary education At home \n", "2 Primary education Primary education At home \n", "3 Higher education Lower secondary education Healthcare \n", "4 Upper secondary education Upper secondary education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "0 Teacher ... False False \n", "1 Other ... True False \n", "2 Other ... True False \n", "3 Civil service ... True True \n", "4 Other ... False False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "0 4 3 4 1 \n", "1 5 3 3 1 \n", "2 4 3 2 2 \n", "3 3 2 2 1 \n", "4 4 3 2 1 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "0 1 3 4 11 \n", "1 1 3 2 11 \n", "2 3 3 6 12 \n", "3 1 5 0 14 \n", "4 2 5 0 13 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.iloc[0:5,:] # First five rows, all columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ix` selects rows or columns by **name** (same as `loc`), but falls back to **position** (like `iloc`) if needed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sorting\n", "\n", "It may be desirable to sort a `DataFrame` by some column(s), for example to identify unusual observations." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
197Gabriel PereiraF17Urban<= 3TrueUpper secondary educationUpper secondary educationOtherOther...TrueTrue5332313214
212Gabriel PereiraF17Urban> 3TrueHigher educationHigher educationCivil serviceTeacher...TrueFalse4242323016
256Gabriel PereiraM18Urban> 3TrueLower secondary educationLower secondary educationOtherAt home...TrueTrue443221268
150Gabriel PereiraF15Urban> 3FalseUpper secondary educationUpper secondary educationCivil serviceCivil service...FalseTrue132231249
325Gabriel PereiraM17Urban<= 3FalseHigher educationPrimary educationCivil serviceOther...TrueTrue4542452210
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "197 Gabriel Pereira F 17 Urban <= 3 True \n", "212 Gabriel Pereira F 17 Urban > 3 True \n", "256 Gabriel Pereira M 18 Urban > 3 True \n", "150 Gabriel Pereira F 15 Urban > 3 False \n", "325 Gabriel Pereira M 17 Urban <= 3 False \n", "\n", " education_mother education_father occupation_mother \\\n", "197 Upper secondary education Upper secondary education Other \n", "212 Higher education Higher education Civil service \n", "256 Lower secondary education Lower secondary education Other \n", "150 Upper secondary education Upper secondary education Civil service \n", "325 Higher education Primary education Civil service \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "197 Other ... True True \n", "212 Teacher ... True False \n", "256 At home ... True True \n", "150 Civil service ... False True \n", "325 Other ... True True \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "197 5 3 3 2 \n", "212 4 2 4 2 \n", "256 4 4 3 2 \n", "150 1 3 2 2 \n", "325 4 5 4 2 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "197 3 1 32 14 \n", "212 3 2 30 16 \n", "256 2 1 26 8 \n", "150 3 1 24 9 \n", "325 4 5 22 10 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.sort_values('absences', ascending=False).head()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schoolsexagehome_areafamily_sizeparents_cohabiteducation_mothereducation_fatheroccupation_motheroccupation_father...internet_accessromantic_relationshipfamily_relationships_qualityfree_timegoing_outalcohol_weekdaysalcohol_weekendhealth_statusabsencesfinal_grade
29Gabriel PereiraM16Urban> 3TrueHigher educationHigher educationTeacherTeacher...TrueTrue445555412
61Gabriel PereiraF16Urban> 3TruePrimary educationPrimary educationCivil serviceCivil service...TrueTrue555555016
66Gabriel PereiraM15Urban> 3FalseHigher educationHigher educationOtherCivil service...TrueTrue133553012
100Gabriel PereiraM16Urban> 3TrueHigher educationHigher educationCivil serviceCivil service...TrueFalse455554128
237Gabriel PereiraM18Urban> 3TrueLower secondary educationLower secondary educationOtherOther...TrueFalse333554910
\n", "

5 rows × 31 columns

\n", "
" ], "text/plain": [ " school sex age home_area family_size parents_cohabit \\\n", "29 Gabriel Pereira M 16 Urban > 3 True \n", "61 Gabriel Pereira F 16 Urban > 3 True \n", "66 Gabriel Pereira M 15 Urban > 3 False \n", "100 Gabriel Pereira M 16 Urban > 3 True \n", "237 Gabriel Pereira M 18 Urban > 3 True \n", "\n", " education_mother education_father occupation_mother \\\n", "29 Higher education Higher education Teacher \n", "61 Primary education Primary education Civil service \n", "66 Higher education Higher education Other \n", "100 Higher education Higher education Civil service \n", "237 Lower secondary education Lower secondary education Other \n", "\n", " occupation_father ... internet_access romantic_relationship \\\n", "29 Teacher ... True True \n", "61 Civil service ... True True \n", "66 Civil service ... True True \n", "100 Civil service ... True False \n", "237 Other ... True False \n", "\n", " family_relationships_quality free_time going_out alcohol_weekdays \\\n", "29 4 4 5 5 \n", "61 5 5 5 5 \n", "66 1 3 3 5 \n", "100 4 5 5 5 \n", "237 3 3 3 5 \n", "\n", " alcohol_weekend health_status absences final_grade \n", "29 5 5 4 12 \n", "61 5 5 0 16 \n", "66 5 3 0 12 \n", "100 5 4 12 8 \n", "237 5 4 9 10 \n", "\n", "[5 rows x 31 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.sort_values(['alcohol_weekdays', 'alcohol_weekend'], ascending=False).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Duplicates\n", "\n", "Duplicate rows can be identified using `duplicated`, which returns `True` if a row (possibly limited to a subset of columns) has been seen previously. We can count the number of duplicate rows by combining `duplicated` with `sum`.\n", "\n", "Duplicate rows can be removed using Boolean filtering, or directly using `drop_duplicates`." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.duplicated().sum()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "647" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['school'].duplicated().sum()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "647" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.duplicated(['school', 'sex', 'age']).duplicated().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding, renaming, and removing columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `[]` notation can also be used to create new columns, for example based on existing information." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "students['minor'] = students['age'] < 18" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True 468\n", "False 181\n", "Name: minor, dtype: int64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['minor'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Columns can be renamed using `rename`, which takes a `dict`ionary mapping old names to new names." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "students.rename(columns={\n", " 'minor': 'is_minor'\n", "}, inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rows and columns can be removed using `drop`, with `axis` set to 0 for rows, and to 1 for columns." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "students.drop('is_minor', axis=1, inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Replacing values\n", "\n", "Values in a `Series` can be replaced using `replace`, which takes a `dict`ionary mapping old values to new values." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 549\n", "1 70\n", "2 16\n", ">= 3 14\n", "Name: failures, dtype: int64" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.failures.value_counts()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "students['failures'].replace({\n", " '>= 3': '3'\n", "}, inplace=True)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 549\n", "1 70\n", "2 16\n", "3 14\n", "Name: failures, dtype: int64" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.failures.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Changing data types\n", "\n", "Data types can be converted using `astype`." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('O')" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['failures'].dtype" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "students['failures'] = students['failures'].astype('int')" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('int64')" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['failures'].dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summarising data\n", "\n", "### Summary statistics\n", "\n", "A number of summary statistics can be computed using methods such as `mean` and `median`, which can be called on `Series` or `DataFrame`s." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "16.7442218798151" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['age'].mean()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "17.0" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['age'].median()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition, `describe` provides an easy way to compute a number of summary statistics in one go." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 649.000000\n", "mean 16.744222\n", "std 1.218138\n", "min 15.000000\n", "25% 16.000000\n", "50% 17.000000\n", "75% 18.000000\n", "max 22.000000\n", "Name: age, dtype: float64" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['age'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Tabulation and cross-tabulation\n", "\n", "When dealing with categorical variables, it's often useful to:\n", "* Count the number of unique values (using `nunique`)\n", "* Retrieve the set of unique values (using `unique`)\n", "* Tabulate, i.e. count the number of occurrences of each value (using `value_counts`)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['sex'].nunique()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['F', 'M'], dtype=object)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['sex'].unique()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "F 383\n", "M 266\n", "Name: sex, dtype: int64" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['sex'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default, the output of `value_counts` is in decreasing order. If desired, we may sort by value using `sort_index`." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 451\n", "2 121\n", "3 43\n", "4 17\n", "5 17\n", "Name: alcohol_weekdays, dtype: int64" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students['alcohol_weekdays'].value_counts().sort_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given two `Series`, we can also cross-tabulate." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "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", "
alcohol_weekend12345
alcohol_weekdays
124111364285
233443347
31192012
411456
5110015
\n", "
" ], "text/plain": [ "alcohol_weekend 1 2 3 4 5\n", "alcohol_weekdays \n", "1 241 113 64 28 5\n", "2 3 34 43 34 7\n", "3 1 1 9 20 12\n", "4 1 1 4 5 6\n", "5 1 1 0 0 15" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(students['alcohol_weekdays'], students['alcohol_weekend'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Pivot tables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the method `pivot_table`, we can generate tables of summary statistics (`mean`s by default)." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "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", "
age
schoolsex
Gabriel PereiraF16.738397
M16.575269
Mouzinho da SilveiraF16.869863
M16.925000
\n", "
" ], "text/plain": [ " age\n", "school sex \n", "Gabriel Pereira F 16.738397\n", " M 16.575269\n", "Mouzinho da Silveira F 16.869863\n", " M 16.925000" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.pivot_table(values='age', index=['school', 'sex'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the call to `pivot_table`, variables used to define rows are specified in `index`, and columns in `columns`. A different statistic can be computed by specifying `aggfunc`." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "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", "
sexFM
school
Gabriel Pereira1716
Mouzinho da Silveira1717
\n", "
" ], "text/plain": [ "sex F M\n", "school \n", "Gabriel Pereira 17 16\n", "Mouzinho da Silveira 17 17" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.pivot_table(values='age', index='school', columns='sex', aggfunc='median')" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "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", "
sexFM
schoolhome_area
Gabriel PereiraRural1.2926831.810811
Urban1.2908161.671141
Mouzinho da SilveiraRural1.3037972.150000
Urban1.2388062.025000
\n", "
" ], "text/plain": [ "sex F M\n", "school home_area \n", "Gabriel Pereira Rural 1.292683 1.810811\n", " Urban 1.290816 1.671141\n", "Mouzinho da Silveira Rural 1.303797 2.150000\n", " Urban 1.238806 2.025000" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.pivot_table(values='alcohol_weekdays', index=['school', 'home_area'], columns='sex')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split-apply-combine\n", "\n", "[Split-apply-combine](http://pandas.pydata.org/pandas-docs/stable/groupby.html) involves:\n", "* Splitting the data into groups based on some criteria\n", "* Applying a function (e.g. `mean`) to each group independently\n", "* Combining the results back into a `DataFrame`\n", "\n", "![Split-apply-combine](http://i.imgur.com/yjNkiwL.png)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "school\n", "Gabriel Pereira 16.666667\n", "Mouzinho da Silveira 16.889381\n", "Name: age, dtype: float64" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.groupby('school')['age'].mean()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "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", "
countmeanstdmin25%50%75%max
school
Gabriel Pereira423.016.6666671.24489515.016.017.018.022.0
Mouzinho da Silveira226.016.8893811.15515215.016.017.018.020.0
\n", "
" ], "text/plain": [ " count mean std min 25% 50% 75% max\n", "school \n", "Gabriel Pereira 423.0 16.666667 1.244895 15.0 16.0 17.0 18.0 22.0\n", "Mouzinho da Silveira 226.0 16.889381 1.155152 15.0 16.0 17.0 18.0 20.0" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.groupby('school')['age'].describe()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "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", "
medianminmax
school
Gabriel Pereira171522
Mouzinho da Silveira171520
\n", "
" ], "text/plain": [ " median min max\n", "school \n", "Gabriel Pereira 17 15 22\n", "Mouzinho da Silveira 17 15 20" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "students.groupby('school')['age'].agg(['median', 'min', 'max']) # Customisable" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualising data\n", "\n", "### Histograms and density plots\n", "\n", "Histograms and density plots show the distribution of a numerical variable." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAD8CAYAAABthzNFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAFUNJREFUeJzt3X+QJ3V95/HnS8AoygmEhWyAdYAi3KEVVzLHcUfwSDCGH56IdRooSwlyrlygTupyVa56pdRVWYWJaOLlDrMeFOARAoggd+Apcp5UqgK4rMsCAWUhqy67t7sBi8XgQRbe98e3R78OPTvf2Z3+9rDzfFR9a7o//enp9/Z8Z17bn+7+dqoKSZKme0XfBUiSFiYDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSq737LmB3HHTQQTUxMdF3GZL0snLffff9XVUtma3fyzogJiYmWL16dd9lSNLLSpIfjNLPISZJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1KqzgEhyeJJvJXk4yUNJPty0H5jkjiSPNl8PaNqT5PNJ1idZl+S4rmqTJM2uyyOIHcAfVtU/AU4ALkxyLLASuLOqjgbubOYBTgOObl4rgMs7rE2SNIvOAqKqNlfVmmb6GeBh4FDgTODqptvVwDub6TOBa2rgbmD/JEu7qk+StHNjuZM6yQTwZuAe4JCq2gyDEElycNPtUOBHQ6ttbNo2j6NGab5NrLytl+1uuPSMXrarPU/nJ6mTvBa4Cbi4qrbvrGtLW7V8vxVJVidZvW3btvkqU5I0TacBkWQfBuFwbVV9pWneMjV01Hzd2rRvBA4fWv0wYNP071lVq6pqsqomlyyZ9bOmJEm7qMurmAJcATxcVZ8dWnQrcG4zfS7w1aH29zdXM50APD01FCVJGr8uz0GcCLwPeCDJ2qbtY8ClwA1Jzgd+CLy7WXY7cDqwHngWOK/D2iRJs+gsIKrqr2g/rwBwSkv/Ai7sqh5J0tx4J7UkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKlVl8+kvjLJ1iQPDrVdn2Rt89ow9SjSJBNJfjq07Atd1SVJGk2Xz6S+Cvgz4Jqphqr6vanpJJcBTw/1f6yqlndYjyRpDrp8JvVdSSbaliUJ8B7gt7vaviRp9/R1DuIkYEtVPTrUdkSS7yb5dpKTeqpLktTocohpZ84Brhua3wwsq6onk/wGcEuSN1TV9ukrJlkBrABYtmzZWIqVpMVo7EcQSfYG3gVcP9VWVc9V1ZPN9H3AY8Cvta1fVauqarKqJpcsWTKOkiVpUepjiOmtwCNVtXGqIcmSJHs100cCRwOP91CbJKnR5WWu1wF/DRyTZGOS85tFZ/OLw0sAbwHWJbkf+DJwQVU91VVtkqTZdXkV0zkztP9+S9tNwE1d1SJJmjvvpJYktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUqrMHBknqx8TK23rb9oZLz+ht25p/XT5y9MokW5M8ONR2SZInkqxtXqcPLftokvVJvpfkd7uqS5I0mi6HmK4CTm1p/1xVLW9etwMkOZbBs6rf0KzzX5Ps1WFtkqRZdBYQVXUX8NSI3c8E/rKqnquqvwXWA8d3VZskaXZ9nKS+KMm6ZgjqgKbtUOBHQ302Nm0vkWRFktVJVm/btq3rWiVp0Rp3QFwOHAUsBzYDlzXtaelbbd+gqlZV1WRVTS5ZsqSbKiVJ4w2IqtpSVS9U1YvAF/n5MNJG4PChrocBm8ZZmyTpF401IJIsHZo9C5i6wulW4Owkv5TkCOBo4N5x1iZJ+kWd3QeR5DrgZOCgJBuBTwInJ1nOYPhoA/AhgKp6KMkNwN8AO4ALq+qFrmqTJM2us4CoqnNamq/YSf9PAZ/qqh5J0tz4URuSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWo0UEEneONdvnOTKJFuTPDjU9sdJHkmyLsnNSfZv2ieS/DTJ2ub1hbluT5I0v0Y9gvhCknuT/MHUH/URXAWcOq3tDuCNVfXrwPeBjw4te6yqljevC0bchiSpIyMFRFX9JvBe4HBgdZK/SPI7s6xzF/DUtLZvVNWOZvZu4LC5lyxJGoeRz0FU1aPAfwQ+AvxL4PPNcNG7dnHbHwC+NjR/RJLvJvl2kpN28XtKkubJ3qN0SvLrwHnAGQyGif5VVa1J8qvAXwNfmctGk3wc2AFc2zRtBpZV1ZNJfgO4Jckbqmp7y7orgBUAy5Ytm8tmJUlzMOoRxJ8Ba4A3VdWFVbUGoKo2MTiqGFmSc4G3A++tqmq+z3NV9WQzfR/wGPBrbetX1aqqmqyqySVLlsxl05KkORjpCAI4HfhpVb0AkOQVwKuq6tmq+tKoG0tyKs0QVVU9O9S+BHiqql5IciRwNPD4qN9XkjT/Rj2C+Cbw6qH5fZu2GSW5jsHw0zFJNiY5n8GRyH7AHdMuZ30LsC7J/cCXgQuq6qnWbyxJGotRjyBeVVU/mZqpqp8k2XdnK1TVOS3NV8zQ9ybgphFrkSSNwahHEH+f5LipmeZE8k+7KUmStBCMegRxMXBjkk3N/FLg97opSZK0EIwUEFX1nST/GDgGCPBIVf1Dp5VJkno16hEEwD8FJpp13pyEqrqmk6okSb0b9Ua5LwFHAWuBF5rmAgwISdpDjXoEMQkcO3VjmyRpzzfqVUwPAr/SZSGSpIVl1COIg4C/SXIv8NxUY1W9o5OqJEm9GzUgLumyCEl7homVt/Wy3Q2XntHLdvd0o17m+u0krweOrqpvNndR79VtaZKkPo36yNEPMviMpD9vmg4FbumqKElS/0Y9SX0hcCKwHX728KCDuypKktS/UQPiuap6fmomyd4M7oOQJO2hRg2Ibyf5GPDq5lnUNwL/o7uyJEl9GzUgVgLbgAeADwG3M8cnyUmSXl5GvYrpReCLzUuStAiM+llMf0vLOYeqOnLeK5IkLQhz+SymKa8C3g0cONtKSa4E3g5srao3Nm0HAtcz+GTYDcB7qurHSQL8KYPnXz8L/H5VrRmxPknSPBvpHERVPTn0eqKq/gT47RFWvQo4dVrbSuDOqjoauLOZBzgNOLp5rQAuH6U2SVI3Rh1iOm5o9hUMjij2m229qrorycS05jOBk5vpq4H/A3ykab+m+cTYu5Psn2RpVW0epUZJ0vwadYjpsqHpHTRDQ7u4zUOm/uhX1eYkUzfcHQr8aKjfxqbNgJCkHox6FdNvdV0Ig0eZvmTTL+mUrGAwBMWyZcu6rkmSFq1Rh5j+/c6WV9Vn57DNLVNDR0mWAlub9o3A4UP9DgM2tWxrFbAKYHJy0ru5Jakjo94oNwn8WwZDPocCFwDHMjgPMeu5iGluBc5tps8FvjrU/v4MnAA87fkHSerPXB4YdFxVPQOQ5BLgxqr6NztbKcl1DE5IH5RkI/BJ4FLghiTnAz9kcMksDO7OPh1Yz+Ay1/Pm9C+RJM2rUQNiGfD80PzzDO5j2KmqOmeGRae09C0GnxorSVoARg2ILwH3JrmZwYnjs4BrOqtKktS7Ua9i+lSSrwEnNU3nVdV3uytLktS3UU9SA+wLbK+qPwU2Jjmio5okSQvAqI8c/SSDu50/2jTtA/z3roqSJPVv1COIs4B3AH8PUFWbmPvlrZKkl5FRA+L55iqjAkjymu5KkiQtBKMGxA1J/hzYP8kHgW/iw4MkaY826lVMn2meRb0dOAb4RFXd0WllkqRezRoQSfYCvl5VbwUMBUlaJGYdYqqqF4Bnk7xuDPVIkhaIUe+k/n/AA0nuoLmSCaCq/l0nVUmSejdqQNzWvCRJi8ROAyLJsqr6YVVdPa6CJEkLw2znIG6ZmkhyU8e1SJIWkNkCYvgxoEd2WYgkaWGZLSBqhmlJ0h5utpPUb0qyncGRxKubaZr5qqp/1Gl1kqTe7DQgqmqv+d5gkmOA64eajgQ+AewPfBDY1rR/rKpun+/tS5JGM+plrvOmqr4HLIef3aX9BHAzg2dQf66qPjPumiRJLzWXBwZ14RTgsar6Qc91SJKm6TsgzgauG5q/KMm6JFcmOaCvoiRJPQZEklcyeAjRjU3T5cBRDIafNgOXzbDeiiSrk6zetm1bWxdJ0jzo8wjiNGBNVW0BqKotVfVCVb3I4FkTx7etVFWrqmqyqiaXLFkyxnIlaXHpMyDOYWh4KcnSoWVnAQ+OvSJJ0s+M/SomgCT7Ar8DfGio+Y+SLGdwQ96GacskSWPWS0BU1bPAL09re18ftUiS2vUSENK4TKz0U+qlXdX3Za6SpAXKgJAktTIgJEmtDAhJUitPUkt62evrYoQNl57Ry3bHxSMISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLXq7bOYkmwAngFeAHZU1WSSA4HrgQkGjx19T1X9uK8aJWkx6/sI4reqanlVTTbzK4E7q+po4M5mXpLUg74DYrozgaub6auBd/ZYiyQtan0GRAHfSHJfkhVN2yFVtRmg+Xrw9JWSrEiyOsnqbdu2jbFcSVpc+nwexIlVtSnJwcAdSR4ZZaWqWgWsApicnKwuC5Skxay3I4iq2tR83QrcDBwPbEmyFKD5urWv+iRpseslIJK8Jsl+U9PA24AHgVuBc5tu5wJf7aM+SVJ/Q0yHADcnmarhL6rqfyX5DnBDkvOBHwLv7qk+SVr0egmIqnoceFNL+5PAKeOvSJI03UK7zFWStEAYEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJajX2gEhyeJJvJXk4yUNJPty0X5LkiSRrm9fp465NkvRzfTxRbgfwh1W1pnku9X1J7miWfa6qPtNDTZKkacYeEFW1GdjcTD+T5GHg0HHXIUnauV7PQSSZAN4M3NM0XZRkXZIrkxzQW2GSpP4CIslrgZuAi6tqO3A5cBSwnMERxmUzrLciyeokq7dt2za2eiVpseklIJLswyAcrq2qrwBU1ZaqeqGqXgS+CBzftm5VraqqyaqaXLJkyfiKlqRFpo+rmAJcATxcVZ8dal861O0s4MFx1yZJ+rk+rmI6EXgf8ECStU3bx4BzkiwHCtgAfKiH2iRJjT6uYvorIC2Lbh93LZKkmXkntSSplQEhSWplQEiSWvVxklqS9ggTK2/rbdsbLj2j820s6oDo64c7jh+sJO0uh5gkSa0MCElSq0U9xKTx6XOsVtKu8QhCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1GrBBUSSU5N8L8n6JCv7rkeSFqsFFRBJ9gL+C3AacCyD51Qf229VkrQ4LaiAAI4H1lfV41X1PPCXwJk91yRJi9JC+7C+Q4EfDc1vBP5ZT7XscfzAPElzsdACIi1t9QsdkhXAimb2J0m+txvbOwj4u91Yf5fk0yN37aW+ObC+3WN9u2dR1zeHvyNtXj9Kp4UWEBuBw4fmDwM2DXeoqlXAqvnYWJLVVTU5H9+rC9a3e6xv91jf7lno9Y1ioZ2D+A5wdJIjkrwSOBu4teeaJGlRWlBHEFW1I8lFwNeBvYArq+qhnsuSpEVpQQUEQFXdDtw+ps3Ny1BVh6xv91jf7rG+3bPQ65tVqmr2XpKkRWehnYOQJC0Qe3xAzPbRHUl+Kcn1zfJ7kkyMsbbDk3wrycNJHkry4ZY+Jyd5Osna5vWJcdU3VMOGJA8021/dsjxJPt/sw3VJjhtTXccM7Ze1SbYnuXhan7HvvyRXJtma5MGhtgOT3JHk0ebrATOse27T59Ek546xvj9O8kjz87s5yf4zrLvT90KH9V2S5Imhn+PpM6zb+Uf1zFDf9UO1bUiydoZ1O99/86qq9tgXgxPdjwFHAq8E7geOndbnD4AvNNNnA9ePsb6lwHHN9H7A91vqOxn4nz3vxw3AQTtZfjrwNQb3sZwA3NPTz/r/Aq/ve/8BbwGOAx4cavsjYGUzvRL4dMt6BwKPN18PaKYPGFN9bwP2bqY/3VbfKO+FDuu7BPgPI7wHdvr73lV905ZfBnyir/03n689/QhilI/uOBO4upn+MnBKkrYb9uZdVW2uqjXN9DPAwwzuJn+5ORO4pgbuBvZPsnTMNZwCPFZVPxjzdl+iqu4CnprWPPw+uxp4Z8uqvwvcUVVPVdWPgTuAU8dRX1V9o6p2NLN3M7gHqRcz7L9RjOWjenZWX/O34z3AdfO93T7s6QHR9tEd0/8A/6xP8wvyNPDLY6luSDO09WbgnpbF/zzJ/Um+luQNYy1soIBvJLmvuZN9ulH2c9fOZuZfyr73H8AhVbUZBv8xAA5u6bMQ9iPABxgcEbaZ7b3QpYuaIbArZxiiWwj77yRgS1U9OsPyPvffnO3pATHrR3eM2KdTSV4L3ARcXFXbpy1ew2DY5E3AfwZuGWdtjROr6jgGn7J7YZK3TFve6z5sbqp8B3Bjy+KFsP9GtRDeix8HdgDXztBltvdCVy4HjgKWA5sZDONM1/v+A85h50cPfe2/XbKnB8SsH90x3CfJ3sDr2LXD212SZB8G4XBtVX1l+vKq2l5VP2mmbwf2SXLQuOprtrup+boVuJnBofywUfZzl04D1lTVlukLFsL+a2yZGnZrvm5t6dPrfmxOir8deG81A+bTjfBe6ERVbamqF6rqReCLM2y37/23N/Au4PqZ+vS1/3bVnh4Qo3x0x63A1NUi/xr43zP9csy3ZrzyCuDhqvrsDH1+ZeqcSJLjGfzMnhxHfc02X5Nkv6lpBiczH5zW7Vbg/c3VTCcAT08Np4zJjP9r63v/DRl+n50LfLWlz9eBtyU5oBlCeVvT1rkkpwIfAd5RVc/O0GeU90JX9Q2f0zprhu32/VE9bwUeqaqNbQv73H+7rO+z5F2/GFxh830GVzd8vGn7Twx+EQBexWBoYj1wL3DkGGv7TQaHwOuAtc3rdOAC4IKmz0XAQwyuyLgb+Bdj3n9HNtu+v6ljah8O1xgGD3p6DHgAmBxjffsy+IP/uqG2Xvcfg7DaDPwDg//Vns/gvNadwKPN1wObvpPAfxta9wPNe3E9cN4Y61vPYPx+6n04dWXfrwK37+y9MKb6vtS8t9Yx+KO/dHp9zfxLft/HUV/TftXU+26o79j333y+vJNaktRqTx9ikiTtIgNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrf4/SGphZSC3IWoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students['final_grade'].plot.hist() # 10 bins by default" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also specify the number of bins as an argument." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students['final_grade'].plot.hist(20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now compare these with the corresponding density plot ('smooth' version of a histogram)." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students['final_grade'].plot.density()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Grouped histograms\n", "\n", "We can also create histograms grouped by some variable, e.g. `school`." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students.hist(column='final_grade', by='school')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition, we can ensure that the x-axis and y-axis are shared." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students.hist(column='final_grade', by='school', sharex=True, sharey=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scatter plots\n", "\n", "Scatter plots show the relationship between two (or pairs of) numerical variables." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students.plot.scatter(x='absences', y='final_grade')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When points overlap, it can be useful to add some transparency." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students.plot.scatter(x='absences', y='final_grade', alpha=0.3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using `scatter_matrix`, we can generate all pairwise scatter plots for a (small) set of numerical variables." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[,\n", " ,\n", " ],\n", " [,\n", " ,\n", " ],\n", " [,\n", " ,\n", " ]],\n", " dtype=object)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pd.plotting.scatter_matrix(students[['age', 'absences', 'final_grade']], figsize=(10, 8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bar plots\n", "\n", "Bar plots show a numerical comparison across categories." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students['alcohol_weekend'].value_counts().sort_index().plot.bar()" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAF+CAYAAAB5z1o2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XucVXW9//HXW0SJvCVgpYjgNVHuYKihJkcxsdRzsFLyeoqO5bFjWWHltYulnnwclF+FKV5P4lEs85ImaIRpCoooogc1LMojN0UtMMHP74+1Ztozbpg9M3tYs768n48HD/Zea82eD3uG93y/n1nruxQRmJlZWjYrugAzM6s/h7uZWYIc7mZmCXK4m5klyOFuZpYgh7uZWYIc7mZmCXK4m5klyOFuZpagzYv6xD179oy+ffsW9enNzEpp7ty5yyOiV0vHFRbuffv2Zc6cOUV9ejOzUpL0Ui3HuS1jZpYgh7uZWYIc7mZmCSqs517N22+/zZIlS1izZk3RpdhG1K1bN3r37k3Xrl2LLsUsGZ0q3JcsWcLWW29N3759kVR0ObYRRAQrVqxgyZIl9OvXr+hyzJLRqdoya9asoUePHg72TYgkevTo4dmaWZ11qnAHHOybIH/Nzeqv04W7mZm1X6fquTfXd+JddX29xd8fW9fXM7OEXLBtB7zmqvq/Zo08cq9R3759Wb58eas/7pRTTuHWW2+t+fjFixez7777tvrztMdWW23V4jGt/XeYWbEc7mZmCXK4V3HMMccwbNgw9tlnH6ZMmfKu/ddffz0DBw5k0KBBnHjiiQC89NJLjB49moEDBzJ69Gj++Mc/Nh4/a9YsDjjgAHbdddfG0W9E8NWvfpV9992XAQMGMG3atJpqO/LII5k/fz4AQ4YM4aKLLgLg3HPP5ac//SkAl156KSNGjGDgwIGcf/75jR974403st9++zF48GA+//nPs27duiavvXz5cvbff3/uuusuIoIzzjiD/v37M3bsWJYuXdp43EUXXcSIESPYd999mTBhAhHBCy+8wNChQxuPWbRoEcOGDQNg4sSJ9O/fn4EDB3L22WfX9O80s/ZpMdwldZP0qKQnJS2QdGGVY7aUNE3S85J+L6lvRxS7sVxzzTXMnTuXOXPmMGnSJFasWNG4b8GCBXz3u99l5syZPPnkk/zXf/0XAGeccQYnnXQS8+fPZ/z48Zx55pmNH/Pyyy8ze/Zs7rzzTiZOnAjA9OnTmTdvHk8++ST3338/X/3qV3n55ZdbrO2ggw7it7/9La+//jqbb745Dz30EACzZ89m1KhR3HfffSxatIhHH32UefPmMXfuXGbNmsXChQuZNm0aDz30EPPmzaNLly7cdNNNja/7yiuvMHbsWC666CLGjh3L7bffznPPPcdTTz3FVVddxe9+97vGY8844wwee+wxnn76aVavXs2dd97Jbrvtxrbbbsu8efMAmDp1KqeccgorV67k9ttvZ8GCBcyfP59vfetb7fjKmFmtahm5vwUcGhGDgMHAEZJGNjvmX4FXI2J34HLgB/Utc+OaNGkSgwYNYuTIkfzpT39i0aJFjftmzpzJuHHj6NmzJwDbb789AA8//DAnnHACACeeeCKzZ89u/JhjjjmGzTbbjP79+/PKK68AWRgff/zxdOnShfe///0cfPDBPPbYYy3WNmrUKGbNmsXs2bMZO3Ysb775Jn/7299YvHgxe+21F/fddx/33XcfQ4YMYejQoTz77LMsWrSIGTNmMHfuXEaMGMHgwYOZMWMGL774IpBdGTx69GguueQSDjvsMCCbbTTUt+OOO3LooYc21vDAAw/w4Q9/mAEDBjBz5kwWLFgAwGc/+1mmTp3KunXrmDZtGieccALbbLMN3bp147Of/SzTp0+ne/fubf66mFntWjxbJiICeDN/2jX/E80OOxq4IH98K3ClJOUfWyoPPvgg999/Pw8//DDdu3fnkEMOaXKBTUTUdF525TFbbrllk4+v/Lu1RowYwZw5c9h111057LDDWL58OVdddVVjCyQiOOecc/j85z/f5OOuuOIKTj75ZC6++OJ3vebmm2/OsGHDuPfeezn44IOr/hsarFmzhi984QvMmTOHnXfemQsuuKDx/fmXf/kXLrzwQg499FCGDRtGjx49AHj00UeZMWMGN998M1deeSUzZ85s07/dzGpX06mQkroAc4HdgckR8ftmh+wE/AkgItZKWgX0AJY3e50JwASAPn36tPh5izh1cdWqVbzvfe+je/fuPPvsszzyyCNN9o8ePZpjjz2Ws846ix49erBy5Uq23357DjjgAG6++WZOPPFEbrrpJj7ykY9s8PMcdNBB/OQnP+Hkk09m5cqVzJo1i0svvbTFKzW32GILdt55Z2655RbOPfdcli1bxtlnn93Yyx4zZgznnnsu48ePZ6uttuLPf/4zXbt2ZfTo0Rx99NGcddZZ7LDDDqxcuZI33niDXXbZBUlcc801HHfccXz/+99n4sSJjfWddNJJLF26lAceeIATTjihsb6ePXvy5ptvcuuttzJu3DggWyNmzJgxnH766Vx99dUAjTOLI488kpEjR7L77ru36etiZq1TU7hHxDpgsKTtgNsl7RsRT1ccUm0o+66haURMAaYADB8+vFOO6o844gh+/OMfM3DgQPbaay9Gjmzagdpnn3345je/ycEHH0yXLl0YMmQI1157LZMmTeK0007j0ksvpVevXkydOnWDn+fYY4/l4YcfZtCgQUjikksu4QMf+ACLFy9uscZRo0YxY8YMunfvzqhRo1iyZAmjRo0C4PDDD2fhwoXsv//+QHaa44033kj//v35zne+w+GHH84777xD165dmTx5MrvssgsAXbp04eabb+bjH/8422yzDaeffjozZ85kwIAB7Lnnno0j+u22247Pfe5zDBgwgL59+zJixIgmtY0fP57p06dz+OGHA/DGG29w9NFHs2bNGiKCyy+/vOUvgpm1m1rbHpB0PvDXiLisYtu9wAUR8bCkzYH/A3ptqC0zfPjwaH4npoULF7L33nu3qh7rXC677DJWrVrFt7/97VZ9nL/2VriSXMQkaW5EDG/puBZH7pJ6AW9HxGuS3gP8E+/+hekdwMnAw8A4YGYZ++3WPsceeywvvPCCe+pmnUAtbZkPAtflfffNgFsi4k5JFwFzIuIO4GrgBknPAyuBT3dYxZuIe++9l69//etNtvXr14/bb7+9oIpa1plrM9vU1HK2zHxgSJXt51U8XgMcV9/SNm1jxoxhzJgxRZdhZiXlK1TNzBLkcDczS5DD3cwsQZ16Pfe6n5pU4NrKZmYbk0fuNdrU13NvrSL+HWb2Dw53M7MEOdyr8Hrud633dRYvXszee+/N5z73OfbZZx8OP/xwVq9eDcDcuXMZNGgQ+++/P5MnT67p32NmHcPhXoXXcx+73teB7EYcX/ziF1mwYAHbbbcdt912GwCnnnoqkyZN4uGHH27nV8DM2qtz/0K1IJMmTWq82rI167lPnz4dyNZz/9rXvtb4Ma1Zz33gwIEbrG3UqFFMmjSJfv36MXbsWH796183Wc/9qquualzPHbJVGRctWsT8+fMb13MHWL16NTvssAPwj/XcJ0+e3LhAWOW68JWv06dPH/r168fgwYMBGDZsGIsXL2bVqlW89tprjR9/4okncs8997Tp/Tez9nO4N+P13A/e4OssXry4yb+nS5curF69uub3xcw2js7dlrlgVX3/1KCW9dxvueWWxlbNypUrARrXcwdqXs992rRprFu3jmXLljFr1iz222+/FuurXM995MiRjBo1issuu6xxyd8xY8ZwzTXX8Oab2f1V/vznP7N06VJGjx7Nrbfe2ngv1JUrV/LSSy8BNK7n/uyzz/L9739/g6+zPttttx3bbrtt4x2oKls+ZrbxeeTejNdzz9Zz/8IXvlD1dbp06bLeuqZOncppp51G9+7dvS6OWcFavZ57vXg9d6vkr70VLrH13Dt3W8bMzNrEbZlOqozruZtZ59Hpwt1nXWQ2pfXcfdMus/rrVG2Zbt26sWLFCv9n34REBCtWrKBbt25Fl2KWlE41cu/duzdLlixh2bJlRZdiG1G3bt3o3bt30WWYJaVThXvXrl3p169f0WWYmZVepwp32wSU5HQzs7LrVD13MzOrD4e7mVmCHO5mZglyuJuZJajFcJe0s6QHJC2UtEDSl6occ4ikVZLm5X/O65hyzcysFrWcLbMW+EpEPC5pa2CupF9HxDPNjvttRBxV/xLNzKy1Why5R8TLEfF4/vgNYCGwU0cXZmZmbdeqnrukvsAQ4PdVdu8v6UlJ90japw61mZlZG9V8EZOkrYDbgP+IiNeb7X4c2CUi3pR0JPBzYI8qrzEBmADQp0+fNhdtZmYbVtPIXVJXsmC/KSKmN98fEa9HxJv547uBrpJ6VjluSkQMj4jhvXr1amfpZma2PrWcLSPgamBhRPxwPcd8ID8OSfvlr7uinoWamVntamnLHAicCDwlaV6+7RtAH4CI+DEwDjhd0lpgNfDp8Lq9ZmaFaTHcI2I2sMG7Z0TElcCV9SrKzMzax1eompklyOFuZpYgh7uZWYIc7mZmCXK4m5klyOFuZpYgh7uZWYIc7mZmCXK4m5klyOFuZpYgh7uZWYIc7mZmCXK4m5klyOFuZpYgh7uZWYIc7mZmCXK4m5klyOFuZpYgh7uZWYIc7mZmCXK4m5klyOFuZpagzYsuwMystfpOvKvur7m4W91fslAeuZuZJcjhbmaWoBbDXdLOkh6QtFDSAklfqnKMJE2S9Lyk+ZKGdky5ZmZWi1p67muBr0TE45K2BuZK+nVEPFNxzMeAPfI/HwZ+lP9tZmYFaHHkHhEvR8Tj+eM3gIXATs0OOxq4PjKPANtJ+mDdqzUzs5q0qucuqS8wBPh9s107AX+qeL6Ed/8AQNIESXMkzVm2bFnrKjUzs5rVfCqkpK2A24D/iIjXm++u8iHxrg0RU4ApAMOHD3/X/k7pgm074DVX1f81zcwq1DRyl9SVLNhviojpVQ5ZAuxc8bw38Jf2l2dmZm1Ry9kyAq4GFkbED9dz2B3ASflZMyOBVRHxch3rNDOzVqilLXMgcCLwlKR5+bZvAH0AIuLHwN3AkcDzwN+AU+tfqpmZ1arFcI+I2VTvqVceE8AX61WUmZm1j69QNTNLkMPdzCxBDnczswR5yV+zsvI1GLYBHrmbmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliAvP2Dr1XfiXXV/zcXd6v6SZlaFR+5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglqMdwlXSNpqaSn17P/EEmrJM3L/5xX/zLNzKw1all+4FrgSuD6DRzz24g4qi4VmZlZu7U4co+IWcDKjVCLmZnVSb167vtLelLSPZL2Wd9BkiZImiNpzrJly+r0qc3MrLl6hPvjwC4RMQi4Avj5+g6MiCkRMTwihvfq1asOn9rMzKppd7hHxOsR8Wb++G6gq6Se7a7MzMzarN3hLukDkpQ/3i9/zRXtfV0zM2u7Fs+WkfQz4BCgp6QlwPlAV4CI+DEwDjhd0lpgNfDpiIgOq9jMzFrUYrhHxPEt7L+S7FRJMzPrJHyFqplZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mlqBa1nMvjb4T76r7ay7uVveXNDPrcEmFu1lnVu/BhwcetiFuy5iZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWoBbDXdI1kpZKeno9+yVpkqTnJc2XNLT+ZZqZWWvUMnK/FjhiA/s/BuyR/5kA/Kj9ZZmZWXu0GO4RMQtYuYFDjgauj8wjwHaSPlivAs3MrPXq0XPfCfhTxfMl+TYzMytIPcJdVbZF1QOlCZLmSJqzbNmyOnxqMzOrph7hvgTYueJ5b+Av1Q6MiCkRMTwihvfq1asOn9rMzKqpR7jfAZyUnzUzElgVES/X4XXNzKyNNm/pAEk/Aw4BekpaApwPdAWIiB8DdwNHAs8DfwNO7ahizcysNi2Ge0Qc38L+AL5Yt4rMzKzdfIWqmVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCagp3SUdIek7S85ImVtl/iqRlkublfz5b/1LNzKxWm7d0gKQuwGTgMGAJ8JikOyLimWaHTouIMzqgRjMza6VaRu77Ac9HxIsR8XfgZuDoji3LzMzao5Zw3wn4U8XzJfm25v5F0nxJt0raudoLSZogaY6kOcuWLWtDuWZmVotawl1VtkWz578E+kbEQOB+4LpqLxQRUyJieEQM79WrV+sqNTOzmtUS7kuAypF4b+AvlQdExIqIeCt/ehUwrD7lmZlZW9QS7o8Be0jqJ2kL4NPAHZUHSPpgxdNPAAvrV6KZmbVWi2fLRMRaSWcA9wJdgGsiYoGki4A5EXEHcKakTwBrgZXAKR1Ys5mZtaDFcAeIiLuBu5ttO6/i8TnAOfUtzczM2spXqJqZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZgmqKdwlHSHpOUnPS5pYZf+Wkqbl+38vqW+9CzUzs9q1GO6SugCTgY8B/YHjJfVvdti/Aq9GxO7A5cAP6l2omZnVrpaR+37A8xHxYkT8HbgZOLrZMUcD1+WPbwVGS1L9yjQzs9aoJdx3Av5U8XxJvq3qMRGxFlgF9KhHgWZm1nqb13BMtRF4tOEYJE0AJuRP35T0XA2fv1CCnsDyur7ohZvupMbvZ/34vayvEr2fu9RyUC3hvgTYueJ5b+Av6zlmiaTNgW2Blc1fKCKmAFNqKayzkDQnIoYXXUcq/H7Wj9/L+krt/aylLfMYsIekfpK2AD4N3NHsmDuAk/PH44CZEfGukbuZmW0cLY7cI2KtpDOAe4EuwDURsUDSRcCciLgDuBq4QdLzZCP2T3dk0WZmtmG1tGWIiLuBu5ttO6/i8RrguPqW1mmUqo1UAn4/68fvZX0l9X7K3RMzs/R4+QEzswQ53M3MElRTz93MLEWSdgAOBHYEVgNPk50o8k6hhdWBe+7NSOoGHAWMoukX/K6IWFBkbWUkaTjvfi/vj4h3XQdhLfP7WR+SPgpMBLYHngCWAt2APYHdyJZR+c+IeL2wItvJ4V5B0gXAx4EHgbk0/YJ/NH/8lYiYX1CJpSHpFOBM4A+8+708kCyUzo2IPxZVY5n4/awvSZcCV1R7v/ILMY8CukTEbRu9uDpxW6apxyLigvXs+2E+heuzEesps/cCB0bE6mo7JQ0G9gAcRrXx+1lHEfHVDexbC/x8I5bTITxyryBp8/wLa2YJk/TlDe2PiB9urFo6ikfuTT0KDAWQdEVE/HvB9ZSWpEkb2h8RZ26sWlIg6b6IODx/fE5EXFx0TSV3GTAPuAd4i+qLH5aaw72pyi/wgYVVkYZ/I+sD30K20Fxy/3k2sl4Vj48DHO7tM5RsmZSxZL/D+BkwI6U1sRzuTSXzhe0EPkgWQp8C1gLTgNsi4tVCqyovf2/WUUTMIxu5T5R0AHA8cIWkr+frZZWee+4VJP0NeJ5slLlb/pj8eUTEwKJqKzNJO5H95/ky8PWIuKHgkkpH0mvALLLvxVH540YR8Yki6io7Sb2AT5INRN4mO+PokWKrqg+P3Jvau+gCUiNpKFmwH0bW35xbbEWlVXlry8sKqyIRkk4lm1V2Izun/ZMRsbTYqurLI3frEJIuJDtXeCHZfXd/5TORrLOQ9A7wFP84dbRJEKYwE3K4W4fI//O8SHYVJfzjP49bXFY4SQdvaH9E/GZj1dJRHO7WISRt8D6PEfHSxqrFbFPkcDczS5CX/K2BpOsk/UjSvkXXYlZJ0vckfV1Sj6Jrsc7F4V6bK4H7gROLLsSsmUfJriO4vOhCrHNxW8bMLCfpe8Aq4KcRsaLoetrD4V5FfmHD14H+ZOfBAhARhxZWVCIkXQf8DZgcEU8XXU/Z5Pcb+FdgH5p+b55WWFEJkXQM2QWMgyLipKLraQ+3Zaq7iez87H7AhcBi4LEiC0qIW1ztcwPwAWAM8BugN/BGoRUlJCJ+HhH/WfZgB4/cq5I0NyKGSZrfcD62pN9ExAbPjTXraJKeiIghDd+bkroC93pW2TYpz4S8/EB1b+d/vyxpLNmqhr0LrKe03OKqu4bvzdfys7f+D+hbXDmldwPwLNlM6CJgPNmsvfTclqnuO5K2Bb4CnA38FDir2JJKyy2u+poi6X3At4A7gGeAHxRbUqntHhHnAn+NiOvIlgAeUHBNdeGRezOSugB7RMSdZL81/2jBJZVdj4i4WtKX8ku6fyOp9Jd2F0HSZsDr+bLJs4BdCy4pBcnOhDxybyYi1gGlXzSoE2nS4pI0BLe42iQi3gHOKLqOxCQ7E/IvVKuQ9F1gW7IbTPy1YXtEPF5YUSUl6Sjgt8DOwBXANsCFqdwQYWOTdC7ZYmzNvzdXFlZUSeUzoXERcUvRtXQEh3sVkh6osjn8S8DWyVtcZ0aEr56sE0l/qLI5IsItmjaQNCsiDiq6jo7gcLcOJemBiPDvLaxTSnkm5HCvIOkzEXGjpC9X2x8RP9zYNZWdW1z1IenQiJgp6Z+r7Y+I6Ru7phSkPBPy2TJNvTf/e+tCq0jLAfnfF1VsC8AtrtY5GJgJfLzKvgAc7m0QEf2KrqGjeORuZpucTWEm5JF7FZL2BH4EvD8i9pU0EPhERHyn4NJKwy2ujiHp/cD3gB0j4mOS+gP7R8TVBZdWNsnPhDxyryK/yOarwE8iYki+7emI8M06aiTp8xHxE0nnV9sfERdu7JpSIOkeYCrwzYgYJGlz4ImISOKqSqsfj9yr6x4Rj0qq3La2qGLKKCJ+kv/tEK+vnhFxi6RzACJiraR1RRdVVinPhHyFanXLJe1GNj1D0jjg5WJLKidJe0qaIenp/PlASd8quq4S+2t+S72G782RZMtkWNtcC9wL7Jg//1/gPwqrpo4c7tV9EfgJ8CFJfyb7Yv9bsSWV1lXAOeTLEETEfODThVZUbl8hu0x+N0kPAdcD/15sSaXWM79C9R3IZkJAEjMht2WayS9JHh4R/yTpvcBmEeGbIbSdW1x1FBFzJR0M7AUIeC4i3m7hw2z9kp0JeeTeTOXiTBHxVwd7u7nFVUeSngS+BqyJiKcd7O2W7EzIZ8tUkfIlyRubpF2BKWQXM70K/AEYHxEvFVpYSUnaBfhU/ucdsu/RWyLij4UWVmL5GUfJzYQc7lWkfEnyxlS56p5bXPUnaQ/gXLIfll2KrqeM8pnQNGBaRLxQdD315HC3DpXyqntFkdQX+CTZ6H0dWTD9Z5E1lVXKMyGHexWSugNfBvpExIR8hLRXfncmawW3uOpL0u+BrsD/kIX6iwWXlIzUZkIO9yokTQPmAiflyw+8B3g4IgYXXFrpuMVVX5I+FBHPFl1HSlKdCTncq5A0JyKGS3qiYvmBJyNiUNG12aZpfWv0NPBaPW2T8kzI57lX9/d8tN5w+t5uwFvFllRObnHVjZeh7hgnpzoT8si9CkmHA98E+gP3AQcCp0TEg0XWVUZucVlntCnMhDxyryIi7pM0FxhJdu7rlyJiecFlldVuEfEpSccDRMRqNbtc1Vom6WsRcYmkK8hnlJUi4swCyiqz5GdCDvcKknYAvgHsDjwFXBwRrxdbVem5xVUfC/O/5xRaRSI2hdVK3ZapIOlXZC2EWcBRwNYRcUqhRZWcW1wdR9L7gNfC/4lbbVOYCXnk3tQHIuKb+eN7Jfkmzu3kFld9SDqP7OKaZyVtCdwDDAbWSjohIu4vtsLSSX4m5HBvSvloqKEn3KXyuS+8qZ1bXHX3KeDb+eOTyb4newF7AtcBDvdWiIhf5n9f17AttZmQV4VsaluytkzDn22Ax/PHyf6E7yDXk12RegWwFTCp2HJK7+8VoTMGuDki1kXEQjxIazVJ50n6UP54S0kzgReAVyT9U7HV1Ye/KSpERN+ia0iIW1z19ZakfYFXgI8CZ1fs615MSaWW/EzI4W4dxS2u+voScCtZAF0eEX8AkHQk8ESRhZVU1ZkQsDBfArj0fLaMdQhJi8lW2at2TrvXlrFCSXoE+CzZTOg5YFjFD8xnI+JDRdZXD0n8hLLOxy0u6+SSnwl55F5B0vYb2u9WgpmVhcO9Qr48beBWgpmVnMPdrGTys2b6A90atkXE9cVVZJ2Rw72KfGGr8UC/iPi2pD5kp/Y9WnBppeEWV8eQdD5wCFm43w18DJgdEeOKrMs6H4d7FZJ+RHamx6ERsXd+Ct99ETGi4NJKwy2ujiHpKWAQ8EREDJL0fuCnEfHxgksrrVRnQj5bproPR8RQSU8ARMSrkrYouqgyiYh+RdeQqNUR8Y6ktZK2AZYC/kHZRuubCZFdYV1qXn6gurcldeEfy9T2IhvJWysp85n8RtlI6iNpv6LrKrE5krYDriJbFuNxwO3CthsHjAb+LyJOJZsVbVlsSfXhtkwVksaTXZ48lOxS5HHAtyLifwotrITc4uo4+Y2dt4mI+QWXUlqSHo2I/fKVSz8KvAE8HRH7FFxau7ktU0VE3JR/sUeT9YyPyRdostZzi6sOJA3d0L6I8No9bdN8JvQmicyEPHKvIGmbiHh9fWd6+AyP1svvLn8A8Fge8r3IRu5DCi6tVCQ9kD/sBgwHniQbeAwEfh8RHymqtlSkNhPyyL2p/ya7A9Ncmt6dRflz/+Kq9SYBtwM7SPoueYur2JLKJyI+CiDpZmBCRDyVP9+XpitEWg02hZn9N1jCAAAKbUlEQVSQR+7N5Oe47xwRfyy6llTk62Y3tLhmuMXVdpLmRcTglrbZhm0KMyGHexWS5kbEsKLrKDO3uDqGpJ+R3QTlRrLZ5GeArSLi+EILK6l8JvTd5jOhFO6d7HCvQtJk4NqIeKzoWspK0p0RcVTFxUyNu/BFTG0mqRtwOnBQvmkW8KOIWFNcVeWV8kzI4V6FpGfI7sjyEtkoqSGQBhZaWMm4xWWdXcozIYd7FZJ2qbY9Il7a2LWUnVtc1pmlPBNyuK9H/tv0j5D9NH8ohd+eF8EtLrNiONyrkHQecBwwPd90DPA/EfGd4qoqJ7e4OoakrcnexzeLrsU6J4d7FZIWAkMapmaS3gM8HhF7F1tZ+bjFVV+SBpAtarU92Q/KZcDJEfF0oYVZp+OFw6pbTMXyn2QLCb1QTCnllod4D+Bo4BNADwd7u/wE+HJE7BIRfYCvAFMKrqn0JG0taaui66gnX6FaQdIVZD32t4AFkn6dPz+MbBlQa6UqLa6pktziarv3RkTDBThExIOS3ltkQWXWfCYkKZmZkNsyFSSdvKH9EXHdxqolFW5x1Zek28mW+b0h3/QZYHhEHFNcVeUl6XfANxt+YEo6BPheRBxQaGF14JF7BYd3h1hM1uJqOLXMLa72OQ24kGwmJLJT904ttKJyS3Ym5HCvQtIewMW8+9ZbvqqyRm5xdYyIeBU4s+g6EvJifiOZypnQHwqsp24c7tVNBc4HLidbwP9Uqt8L1NZvTv73XLJVIRs8uPFLSYekPclWgexLxf/fiDi0qJpKLtmZkHvuVTRcVSnpqYgYkG/7bUSMKro227RJehL4MdkPzXUN2yNibmFFWafkkXt1ayRtBiySdAbwZ2CHgmsqJbe46m5tRPyo6CJSkfJMyCP3KiSNABYC2wHfBrYFLomIRwotrIQkzeYfLa6Pk7e4IuL8QgsrmYqlk88ElpK1ut5q2O8llNsm5ZmQw906lFtc9VGxdHK13/14CeU2SnlhO7dlKkj6CLBrRFyfP7+V7OIGgO9ExMzCiisvt7jqICL6FV1DSipmQr+U9AUSnAl55F5B0gzg3yPimfz5U8ApwHuBb0TEEQWWV0pucdWfpAN4d4/4+sIKKqFNYSbkcK8g6bGIGFHxfHpE/HP++KGIOLC46sxA0g3AbsA8/tEjjojwue/WhNsyTW1X+aQh2HPv38i1lJpbXB1mONA/PCqrm1RnQg73pp6VNDYi7qrcKOko4LmCaiqrC4F/r3i+FxUtLsDh3jZPAx8AXi66kBSsbyZEtphYqTncmzoLuEvSOLLFmQCGAQcARxVWVTlt0/C7i9yihtPLJF1cUE0p6Ak8I+lRmv4C8BPFlVRqyc6EHO4VIuJ5SQOB8cA++eZZwL+lcE/Fjcwtro5xQdEFJCbZmZDDvYIkRcRbwDUtHJPcT/kO4BZXB4iI3xRdQ2KSnQn5bJkKkh4EbgN+ERF/rNi+BdnNsk8GHoiIawspsEQk7Q7cBfyOKi2uiPjfomorI0mzI+Ijkt4g6wk37iI7W2abgkorNUkHV9uewg9Rh3sFSd3IVokbD/QDXgPeQ3Y7wvuAyRExr7gKy0XSljRtcS0A/tstLrOO53BfD0ldyaZsqyPitaLrKZta2lducbWepKuBKyoHGZIuiIgLiquqfDaFmZDD3TqEW1wdQ9ISYDlwecOdwyQ9HhFDi63MOpvNii7AknUE2XnDP5P0F0nP5Jd8LwKOJwuna4sssKSWAgcB4yRNlrQ5vpFMm0m6WtLgZtsuKKicuvLI3TqcW1z1I+mJiBiSP76A7LaFH0xhLZQipDwT8sjdOlxEvB0RLzvY6+KOhgd5n/1ispuQW9skOxPyyN3MNlkpz4R8EZNZiTQ7u2MLoCvwZkRsW1xVpdZkJiRpDvDlAuupG4/czUpM0jHAfhHxjaJrsc7F4W5WcpIeiYiRRddRRinPhNyWMSsRSZULsG1GtqqhR2htFBFbVz5vmAkVVE5deeRuViKSplY8XUt2psxVEbG0mIrSk8pMyCN3sxKJiFOLriElKc+EHO5mJSKpN3AFcCBZCM0GvhQRSwotrLw+XvG4YSZ0dDGl1JfbMmYlIunXwH8DN+SbPgOMj4jDiqvKOiNfoWpWLr0iYmpErM3/XAv0KrqospLUW9LtkpZKekXSbfnsqPQc7mblslzSZyR1yf98BlhRdFElNpXsQqYdgZ2AX+bbSs9tGbMSkdQHuBLYn6zn/juynvtLhRZWUpLmRUTzVSHfta2M/AtVsxLJ18Yv/f09O5Hl+eznZ/nz40lkJuSRu1kJSJq0of0RcebGqiUlKc+EHO5mJSDp78DTwC3AX2i2LG3DWuRmDRzuZiUgqQdwHPApsvOxpwG3RcSrhRZWUpvCTMjhblYyknYi6w1/Gfh6RNzQwodYM5vCTMi/UDUrEUlDyYL9MOAeYG6xFZXWB0l8JuSRu1kJSLoQOApYCNwM/Coi1hZbVRpSnQk53M1KQNI7wIvA6nxTw39cARERAwsprOSazYTmAv8ZEc8UW1V9ONzNSkDSLhvan8KpexvTpjATcriblYAkRQv/WWs5xjKbwkzIv1A1K4cHJN0G/CK/ShUASVsAHwFOBh4Ari2mvNLpV3QBHc0jd7MSkNQNOA0YTxZMrwHdgC7AfcDkiJhXXIXlsinMhBzuZiUjqSvQE1gdEa8VXU8ZSXoQaHEmlC+pXEoOdzPb5GwKMyGHu5lt0lKdCTnczcwS5DsxmZklyOFuZpYgh7slSdIpkq6s02stltSzHq9ltrE43M3MEuRwt1KR9F5Jd0l6UtLTkj4laYSk3+XbHpW0dX74jpJ+JWmRpEsqXuN4SU/lH/+Dlravp44ukq7Nj31K0ln59t3yzzlX0m8lfSjf/gtJJ+WPPy/pprq/OWYVvPyAlc0RwF8iYiyApG2BJ4BPRcRjkrbhH+uFDAaGAG8Bz0m6AlgH/AAYBrwK3CfpGODRatsj4ufrqWMwsFNE7JvXsV2+fQrwbxGxSNKHgf8HHApMAB6S9AfgK8DI+rwdZtU53K1sngIuy0fWd5JdfPJyRDwGEBGvA0gCmBERq/LnzwC7AD2AByNiWb79JuAgsoWjqm1fX7i/COya/8C4i+yHwVbAAcD/5J8fYMu8rlcknUe2/suxEbGyPm+HWXUOdyuViPhfScOAI4GLya4mXN/FGm9VPF5H9v2u9Ry7vu3rq+NVSYOAMcAXgU8C/wG8FhGD1/NhA4AVwI6t+VxmbeGeu5WKpB2Bv0XEjcBlZO2NHSWNyPdvLWlDg5bfAwdL6impC9mNGn6zge3NP/8MSTvlZ89sFhG3AecCQ/NZwx8kHZcfq/wHAJL2Az5G1iY6W1LyqxJasTxyt7IZAFyar8f9NnA62aj7CknvIeu3/9P6PjgiXpZ0Dll7RMDdEfELgPVtbyBpM2B3YCWwJzA13wZwTv73eOBHkr4FdAVulvQscBVwakT8RdJXgGskHVrmVQetc/PyA2Y1krQvcFpEfLnoWsxa4nA3M0uQe+5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWoP8Ph51jEbCiy2YAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students.groupby(['school', 'sex'])[['alcohol_weekdays', 'alcohol_weekend']].mean().plot.bar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Box plots\n", "\n", "Box plots show quartiles (and outliers) for numerical variables (possibly across categories)." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students['age'].plot.box()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also include multiple variables and group by some variable, e.g. `sex`." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "students.boxplot(column=['alcohol_weekdays', 'alcohol_weekend'], by='sex')" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }