{ "cells": [ { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import scipy as sp\n", "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "from matplotlib.pyplot import title,subplot,figure\n", "import os\n", "import sys\n", "import seaborn as sns\n", "import tak.tak as tw" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline \n", "mpl.rcParams['figure.figsize'] = (8,6)\n", "mpl.rcParams['font.weight'] = 'bold'\n", "mpl.rcParams['font.size'] = 44.0\n", "\n", "mpl.rcParams['figure.edgecolor'] = 'black' # <- noeffect\n", "mpl.rcParams['axes.labelsize']=24.0\n", "mpl.rcParams['axes.titlesize']=24.0\n", "mpl.rcParams['axes.titleweight'] = 'bold'\n", "mpl.rcParams['legend.fontsize'] = 18\n", "mpl.rcParams['xtick.labelsize'] = 14\n", "mpl.rcParams['ytick.labelsize'] = 14\n", "\n", "# see below for the properties that we can modify\n", "#mpl.rcParams\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "tips = sns.load_dataset(\"tips\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure()\n", "sns.stripplot(x=\"day\", y=\"total_bill\", data=tips)\n", "title('stripplot')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# nested categorical variable with the \"hue\" parameter\n", "figure()\n", "sns.stripplot(x=\"day\", y=\"total_bill\", hue=\"time\", data=tips);\n", "title('nested categorical variable with the \"hue\" parameter')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Snippets begins here" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 244 entries, 0 to 243\n", "Data columns (total 7 columns):\n", "total_bill 244 non-null float64\n", "tip 244 non-null float64\n", "sex 244 non-null category\n", "smoker 244 non-null category\n", "day 244 non-null category\n", "time 244 non-null category\n", "size 244 non-null int64\n", "dtypes: category(4), float64(2), int64(1)\n", "memory usage: 8.7 KB\n", "None\n" ] } ], "source": [ "#** AWESOME!!! MEMORY USAGE ALSO PRINTED OUT!!!\n", "print tips.info()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsize
count87.00000087.00000087.000000
mean18.0568972.8334482.459770
std8.0092091.1594950.937644
min3.0700001.0000001.000000
25%12.7500002.0000002.000000
50%16.4000002.7500002.000000
75%21.5200003.5000003.000000
max44.3000006.5000006.000000
\n", "
" ], "text/plain": [ " total_bill tip size\n", "count 87.000000 87.000000 87.000000\n", "mean 18.056897 2.833448 2.459770\n", "std 8.009209 1.159495 0.937644\n", "min 3.070000 1.000000 1.000000\n", "25% 12.750000 2.000000 2.000000\n", "50% 16.400000 2.750000 2.000000\n", "75% 21.520000 3.500000 3.000000\n", "max 44.300000 6.500000 6.000000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# pandas: different ways of boolean selection\n", "tips[ tips['sex'].isin(['Female'])].describe() \n", "tips[ tips['sex'] == 'Female' ].describe()\n", "tips.query('sex == \"Female\"').describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# More practice with query" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
total_bill8718.0568978.0092093.0712.7516.4021.5244.3
tip872.8334481.1594951.002.002.753.506.5
size872.4597700.9376441.002.002.003.006.0
\n", "
" ], "text/plain": [ " count mean std min 25% 50% 75% max\n", "total_bill 87 18.056897 8.009209 3.07 12.75 16.40 21.52 44.3\n", "tip 87 2.833448 1.159495 1.00 2.00 2.75 3.50 6.5\n", "size 87 2.459770 0.937644 1.00 2.00 2.00 3.00 6.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# query will do the column selection for you! (so won't return boolean DF)\n", "tips.query('sex == \"Male\"').describe().T\n", "tips.query('sex != \"Male\"').describe().T" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsexsmokerdaytimesize
673.071.00FemaleYesSatDinner1
7226.863.14FemaleYesSatDinner2
7325.285.00FemaleYesSatDinner2
925.751.00FemaleYesFriDinner2
9316.324.30FemaleYesFriDinner2
10011.352.50FemaleYesFriDinner2
10115.383.00FemaleYesFriDinner2
10244.302.50FemaleYesSatDinner3
10322.423.48FemaleYesSatDinner2
10914.314.00FemaleYesSatDinner2
16417.513.00FemaleYesSunDinner2
16810.591.61FemaleYesSatDinner2
16910.632.00FemaleYesSatDinner2
1789.604.00FemaleYesSunDinner2
18620.903.50FemaleYesSunDinner3
18818.153.50FemaleYesSunDinner3
19119.814.19FemaleYesThurLunch2
19743.115.00FemaleYesThurLunch4
19813.002.00FemaleYesThurLunch2
20112.742.01FemaleYesThurLunch2
20213.002.00FemaleYesThurLunch2
20316.402.50FemaleYesThurLunch2
20516.473.23FemaleYesThurLunch3
20912.762.23FemaleYesSatDinner2
21313.272.50FemaleYesSatDinner2
21428.176.50FemaleYesSatDinner3
21512.901.10FemaleYesSatDinner2
21930.143.09FemaleYesSatDinner4
22113.423.48FemaleYesFriLunch2
22516.272.50FemaleYesFriLunch2
22610.092.00FemaleYesFriLunch2
22922.122.88FemaleYesSatDinner2
24027.182.00FemaleYesSatDinner2
\n", "
" ], "text/plain": [ " total_bill tip sex smoker day time size\n", "67 3.07 1.00 Female Yes Sat Dinner 1\n", "72 26.86 3.14 Female Yes Sat Dinner 2\n", "73 25.28 5.00 Female Yes Sat Dinner 2\n", "92 5.75 1.00 Female Yes Fri Dinner 2\n", "93 16.32 4.30 Female Yes Fri Dinner 2\n", "100 11.35 2.50 Female Yes Fri Dinner 2\n", "101 15.38 3.00 Female Yes Fri Dinner 2\n", "102 44.30 2.50 Female Yes Sat Dinner 3\n", "103 22.42 3.48 Female Yes Sat Dinner 2\n", "109 14.31 4.00 Female Yes Sat Dinner 2\n", "164 17.51 3.00 Female Yes Sun Dinner 2\n", "168 10.59 1.61 Female Yes Sat Dinner 2\n", "169 10.63 2.00 Female Yes Sat Dinner 2\n", "178 9.60 4.00 Female Yes Sun Dinner 2\n", "186 20.90 3.50 Female Yes Sun Dinner 3\n", "188 18.15 3.50 Female Yes Sun Dinner 3\n", "191 19.81 4.19 Female Yes Thur Lunch 2\n", "197 43.11 5.00 Female Yes Thur Lunch 4\n", "198 13.00 2.00 Female Yes Thur Lunch 2\n", "201 12.74 2.01 Female Yes Thur Lunch 2\n", "202 13.00 2.00 Female Yes Thur Lunch 2\n", "203 16.40 2.50 Female Yes Thur Lunch 2\n", "205 16.47 3.23 Female Yes Thur Lunch 3\n", "209 12.76 2.23 Female Yes Sat Dinner 2\n", "213 13.27 2.50 Female Yes Sat Dinner 2\n", "214 28.17 6.50 Female Yes Sat Dinner 3\n", "215 12.90 1.10 Female Yes Sat Dinner 2\n", "219 30.14 3.09 Female Yes Sat Dinner 4\n", "221 13.42 3.48 Female Yes Fri Lunch 2\n", "225 16.27 2.50 Female Yes Fri Lunch 2\n", "226 10.09 2.00 Female Yes Fri Lunch 2\n", "229 22.12 2.88 Female Yes Sat Dinner 2\n", "240 27.18 2.00 Female Yes Sat Dinner 2" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get all rows where columns \"a\" and \"b\" have overlapping values\n", "tips.query('sex in smoker') # <- concise and readable\n", "tips[tips.sex.isin(tips.smoker)] # equivalent pythonic syntax...\n", "\n", "tips.query('sex not in smoker')\n", "tips[~tips.sex.isin(tips.smoker)] # equivalent pythonic syntax...\n", "\n", "tips.query('sex == \"Female\" and tip < 3.5')\n", "tips.query('sex == \"Female\" and smoker == \"Yes\"')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsexsmokerdaytimesize
7727.204.00MaleNoThurLunch4
7822.763.00MaleNoThurLunch2
7917.292.71MaleNoThurLunch2
8019.443.00MaleYesThurLunch2
8116.663.40MaleNoThurLunch2
8332.685.00MaleYesThurLunch2
8415.982.03MaleNoThurLunch2
8613.032.00MaleNoThurLunch2
8718.284.00MaleNoThurLunch2
8824.715.85MaleNoThurLunch2
8921.163.00MaleNoThurLunch2
9028.973.00MaleYesFriDinner2
9122.493.50MaleNoFriDinner2
9540.174.73MaleYesFriDinner4
9627.284.00MaleYesFriDinner2
9712.031.50MaleYesFriDinner2
9821.013.00MaleYesFriDinner2
9912.461.50MaleNoFriDinner2
12011.692.31MaleNoThurLunch2
12214.262.50MaleNoThurLunch2
12315.952.00MaleNoThurLunch2
1268.521.48MaleNoThurLunch2
12922.822.18MaleNoThurLunch3
13019.081.50MaleNoThurLunch2
13816.002.00MaleYesThurLunch2
14134.306.70MaleNoThurLunch6
14241.195.00MaleNoThurLunch5
1489.781.73MaleNoThurLunch2
1497.512.00MaleNoThurLunch2
19228.442.56MaleYesThurLunch2
19315.482.02MaleYesThurLunch2
19416.584.00MaleYesThurLunch2
1957.561.44MaleNoThurLunch2
19610.342.00MaleYesThurLunch2
19913.512.00MaleYesThurLunch2
20018.714.00MaleYesThurLunch3
20420.534.00MaleYesThurLunch4
22012.162.20MaleYesFriLunch2
2228.581.92MaleYesFriLunch1
22413.421.58MaleYesFriLunch2
\n", "
" ], "text/plain": [ " total_bill tip sex smoker day time size\n", "77 27.20 4.00 Male No Thur Lunch 4\n", "78 22.76 3.00 Male No Thur Lunch 2\n", "79 17.29 2.71 Male No Thur Lunch 2\n", "80 19.44 3.00 Male Yes Thur Lunch 2\n", "81 16.66 3.40 Male No Thur Lunch 2\n", "83 32.68 5.00 Male Yes Thur Lunch 2\n", "84 15.98 2.03 Male No Thur Lunch 2\n", "86 13.03 2.00 Male No Thur Lunch 2\n", "87 18.28 4.00 Male No Thur Lunch 2\n", "88 24.71 5.85 Male No Thur Lunch 2\n", "89 21.16 3.00 Male No Thur Lunch 2\n", "90 28.97 3.00 Male Yes Fri Dinner 2\n", "91 22.49 3.50 Male No Fri Dinner 2\n", "95 40.17 4.73 Male Yes Fri Dinner 4\n", "96 27.28 4.00 Male Yes Fri Dinner 2\n", "97 12.03 1.50 Male Yes Fri Dinner 2\n", "98 21.01 3.00 Male Yes Fri Dinner 2\n", "99 12.46 1.50 Male No Fri Dinner 2\n", "120 11.69 2.31 Male No Thur Lunch 2\n", "122 14.26 2.50 Male No Thur Lunch 2\n", "123 15.95 2.00 Male No Thur Lunch 2\n", "126 8.52 1.48 Male No Thur Lunch 2\n", "129 22.82 2.18 Male No Thur Lunch 3\n", "130 19.08 1.50 Male No Thur Lunch 2\n", "138 16.00 2.00 Male Yes Thur Lunch 2\n", "141 34.30 6.70 Male No Thur Lunch 6\n", "142 41.19 5.00 Male No Thur Lunch 5\n", "148 9.78 1.73 Male No Thur Lunch 2\n", "149 7.51 2.00 Male No Thur Lunch 2\n", "192 28.44 2.56 Male Yes Thur Lunch 2\n", "193 15.48 2.02 Male Yes Thur Lunch 2\n", "194 16.58 4.00 Male Yes Thur Lunch 2\n", "195 7.56 1.44 Male No Thur Lunch 2\n", "196 10.34 2.00 Male Yes Thur Lunch 2\n", "199 13.51 2.00 Male Yes Thur Lunch 2\n", "200 18.71 4.00 Male Yes Thur Lunch 3\n", "204 20.53 4.00 Male Yes Thur Lunch 4\n", "220 12.16 2.20 Male Yes Fri Lunch 2\n", "222 8.58 1.92 Male Yes Fri Lunch 1\n", "224 13.42 1.58 Male Yes Fri Lunch 2" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# list-expressions also works in query\n", "tips.query('sex == \"Male\" and day in [\"Sun\",\"Sat\"]')\n", "tips.query('sex in \"Male\" and day == [\"Sun\",\"Sat\"]')\n", "tips.query('sex == \"Male\" and day not in [\"Sun\",\"Sat\"]')\n", "tips.query('sex == \"Male\" and day != [\"Sun\",\"Sat\"]')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Multi-indexing" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
\n", "
" ], "text/plain": [ " total_bill tip sex smoker day time size\n", "0 16.99 1.01 Female No Sun Dinner 2\n", "1 10.34 1.66 Male No Sun Dinner 3\n", "2 21.01 3.50 Male No Sun Dinner 3" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# original structure\n", "tips.head(3)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsmokerdaytimesize
sex
0Female16.991.01NoSunDinner2
1Male10.341.66NoSunDinner3
2Male21.013.50NoSunDinner3
\n", "
" ], "text/plain": [ " total_bill tip smoker day time size\n", " sex \n", "0 Female 16.99 1.01 No Sun Dinner 2\n", "1 Male 10.34 1.66 No Sun Dinner 3\n", "2 Male 21.01 3.50 No Sun Dinner 3" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make gender an outer level index\n", "tips_multi_index = tips.set_index('sex', append=True)\n", "tips_multi_index.head(3)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsmokerdaytimesize
idsex
0Female16.991.01NoSunDinner2
1Male10.341.66NoSunDinner3
2Male21.013.50NoSunDinner3
\n", "
" ], "text/plain": [ " total_bill tip smoker day time size\n", "id sex \n", "0 Female 16.99 1.01 No Sun Dinner 2\n", "1 Male 10.34 1.66 No Sun Dinner 3\n", "2 Male 21.01 3.50 No Sun Dinner 3" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# name the original index as \"id\"\n", "tips_multi_index.index.rename(['id','sex'], inplace=True)\n", "tips_multi_index.head(3)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "we got false above since reset_index will plug the index into the 1st column (ie, order not preserved)\n" ] } ], "source": [ "#==============================================================================\n", "# Note: really weird, but to make index into column, use reset_index\n", "# http://stackoverflow.com/questions/20110170/turn-pandas-multi-index-into-column\n", "#==============================================================================\n", "print tips.equals( tips_multi_index.reset_index('sex',col_level = 3))\n", "print (\"we got false above since reset_index will plug the index into the 1st \"\n", " \"column (ie, order not preserved)\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsize
sex
Male9.2464691.4891020.955997
Female8.0092091.1594950.937644
\n", "
" ], "text/plain": [ " total_bill tip size\n", "sex \n", "Male 9.246469 1.489102 0.955997\n", "Female 8.009209 1.159495 0.937644" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#==============================================================================\n", "# Here's where multi-index shines IMO...summary stats based on groups!\n", "#....(but wtf, methods like \"describe()\" and \"quantile\" doesn't have \"level\" arg\n", "#==============================================================================\n", "# using \n", "tips_multi_index.std(level='sex')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Some sorting by level" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " total_bill tip smoker day time size\n", "id sex \n", "1 Male 10.34 1.66 No Sun Dinner 3\n", "2 Male 21.01 3.50 No Sun Dinner 3\n", "3 Male 23.68 3.31 No Sun Dinner 2\n", "5 Male 25.29 4.71 No Sun Dinner 4\n", "6 Male 8.77 2.00 No Sun Dinner 2\n", " total_bill tip smoker day time size\n", "id sex \n", "226 Female 10.09 2.00 Yes Fri Lunch 2\n", "229 Female 22.12 2.88 Yes Sat Dinner 2\n", "238 Female 35.83 4.67 No Sat Dinner 3\n", "240 Female 27.18 2.00 Yes Sat Dinner 2\n", "243 Female 18.78 3.00 No Thur Dinner 2\n" ] } ], "source": [ "# name index as \"subject\" \n", "tips_multi_index.index.name = 'subject'\n", "\n", "#%% sort/group by gender\n", "print tips_multi_index.sortlevel('sex').head()\n", "print tips_multi_index.sortlevel('sex').tail()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "tips_multi_index_gender_sorted = tips_multi_index.sortlevel('sex')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsmokerdaytimesize
sexid
Female016.991.01NoSunDinner2
Male110.341.66NoSunDinner3
221.013.50NoSunDinner3
\n", "
" ], "text/plain": [ " total_bill tip smoker day time size\n", "sex id \n", "Female 0 16.99 1.01 No Sun Dinner 2\n", "Male 1 10.34 1.66 No Sun Dinner 3\n", " 2 21.01 3.50 No Sun Dinner 3" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reorder so gender is the outer level (hate how you can't do this in set_index()\n", "tips_multi_index.reorder_levels([1,0]).head(10)\n", "tips_multi_index = tips_multi_index.reorder_levels(['sex','id'])\n", "tips_multi_index.head(3)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#%% where vs boolean...\n", "idx1 = tips['sex'].where(tips['sex'] == 'Female') # <- returns a NAN\n", "idx2 = tips['sex'] == 'Female' # <- returns True/False" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# A bit on \"groupby\" " ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsize
countmeanstdlenvarcountmeanstdlenvarcountmeanstdlenvar
sex
Male15720.7440769.24646915785.4971851573.0896181.4891021572.2174241572.6305730.9559971570.913931
Female8718.0568978.0092098764.147429872.8334481.159495871.344428872.4597700.937644870.879177
\n", "
" ], "text/plain": [ " total_bill tip \\\n", " count mean std len var count mean \n", "sex \n", "Male 157 20.744076 9.246469 157 85.497185 157 3.089618 \n", "Female 87 18.056897 8.009209 87 64.147429 87 2.833448 \n", "\n", " size \n", " std len var count mean std len var \n", "sex \n", "Male 1.489102 157 2.217424 157 2.630573 0.955997 157 0.913931 \n", "Female 1.159495 87 1.344428 87 2.459770 0.937644 87 0.879177 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips.groupby('sex').agg(['count','mean','std',len,np.var])" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsize
countmeanstdlenvarcountmeanstdlenvarcountmeanstdlenvar
024419.7859438.90241224479.2529392442.9982791.3836382441.9144552442.5696720.95112440.904591
\n", "
" ], "text/plain": [ " total_bill tip \\\n", " count mean std len var count mean std \n", "0 244 19.785943 8.902412 244 79.252939 244 2.998279 1.383638 \n", "\n", " size \n", " len var count mean std len var \n", "0 244 1.914455 244 2.569672 0.9511 244 0.904591 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips.groupby(lambda idx: 0).agg(['count','mean','std',len,np.var])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Index([u'total_bill', u'tip', u'sex', u'smoker', u'day', u'time', u'size'], dtype='object')" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }