{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Pandas Crosstab Explained\n", "\n", "Notebook that accompanies [article](http://pbpython.com/pandas-crosstab.html) on Practical Business Python" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import the data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Define the headers since the data does not have any\n", "headers = [\"symboling\", \"normalized_losses\", \"make\", \"fuel_type\", \"aspiration\",\n", " \"num_doors\", \"body_style\", \"drive_wheels\", \"engine_location\",\n", " \"wheel_base\", \"length\", \"width\", \"height\", \"curb_weight\",\n", " \"engine_type\", \"num_cylinders\", \"engine_size\", \"fuel_system\",\n", " \"bore\", \"stroke\", \"compression_ratio\", \"horsepower\", \"peak_rpm\",\n", " \"city_mpg\", \"highway_mpg\", \"price\"]" ] }, { "cell_type": "code", "execution_count": 4, "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", "
symbolingnormalized_lossesmakefuel_typeaspirationnum_doorsbody_styledrive_wheelsengine_locationwheel_base...engine_sizefuel_systemborestrokecompression_ratiohorsepowerpeak_rpmcity_mpghighway_mpgprice
03NaNalfa-romerogasstdtwoconvertiblerwdfront88.6...130mpfi3.472.689.0111.05000.0212713495.0
13NaNalfa-romerogasstdtwoconvertiblerwdfront88.6...130mpfi3.472.689.0111.05000.0212716500.0
21NaNalfa-romerogasstdtwohatchbackrwdfront94.5...152mpfi2.683.479.0154.05000.0192616500.0
32164.0audigasstdfoursedanfwdfront99.8...109mpfi3.193.4010.0102.05500.0243013950.0
42164.0audigasstdfoursedan4wdfront99.4...136mpfi3.193.408.0115.05500.0182217450.0
\n", "

5 rows × 26 columns

\n", "
" ], "text/plain": [ " symboling normalized_losses make fuel_type aspiration num_doors \\\n", "0 3 NaN alfa-romero gas std two \n", "1 3 NaN alfa-romero gas std two \n", "2 1 NaN alfa-romero gas std two \n", "3 2 164.0 audi gas std four \n", "4 2 164.0 audi gas std four \n", "\n", " body_style drive_wheels engine_location wheel_base ... engine_size \\\n", "0 convertible rwd front 88.6 ... 130 \n", "1 convertible rwd front 88.6 ... 130 \n", "2 hatchback rwd front 94.5 ... 152 \n", "3 sedan fwd front 99.8 ... 109 \n", "4 sedan 4wd front 99.4 ... 136 \n", "\n", " fuel_system bore stroke compression_ratio horsepower peak_rpm city_mpg \\\n", "0 mpfi 3.47 2.68 9.0 111.0 5000.0 21 \n", "1 mpfi 3.47 2.68 9.0 111.0 5000.0 21 \n", "2 mpfi 2.68 3.47 9.0 154.0 5000.0 19 \n", "3 mpfi 3.19 3.40 10.0 102.0 5500.0 24 \n", "4 mpfi 3.19 3.40 8.0 115.0 5500.0 18 \n", "\n", " highway_mpg price \n", "0 27 13495.0 \n", "1 27 16500.0 \n", "2 26 16500.0 \n", "3 30 13950.0 \n", "4 22 17450.0 \n", "\n", "[5 rows x 26 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Read in the CSV file and convert \"?\" to NaN\n", "df_raw = pd.read_csv(\"http://mlr.cs.umass.edu/ml/machine-learning-databases/autos/imports-85.data\",\n", " header=None, names=headers, na_values=\"?\" )\n", "df_raw.head()" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
symbolingnormalized_losseswheel_baselengthwidthheightcurb_weightengine_sizeborestrokecompression_ratiohorsepowerpeak_rpmcity_mpghighway_mpgprice
count205.000000164.000000205.000000205.000000205.000000205.000000205.000000205.000000201.000000201.000000205.000000203.000000203.000000205.000000205.000000201.000000
mean0.834146122.00000098.756585174.04926865.90780553.7248782555.565854126.9073173.3297513.25542310.142537104.2561585125.36945825.21951230.75122013207.129353
std1.24530735.4421686.02177612.3372892.1452042.443522520.68020441.6426930.2735390.3167173.97204039.714369479.3345606.5421426.8864437947.066342
min-2.00000065.00000086.600000141.10000060.30000047.8000001488.00000061.0000002.5400002.0700007.00000048.0000004150.00000013.00000016.0000005118.000000
25%0.00000094.00000094.500000166.30000064.10000052.0000002145.00000097.0000003.1500003.1100008.60000070.0000004800.00000019.00000025.0000007775.000000
50%1.000000115.00000097.000000173.20000065.50000054.1000002414.000000120.0000003.3100003.2900009.00000095.0000005200.00000024.00000030.00000010295.000000
75%2.000000150.000000102.400000183.10000066.90000055.5000002935.000000141.0000003.5900003.4100009.400000116.0000005500.00000030.00000034.00000016500.000000
max3.000000256.000000120.900000208.10000072.30000059.8000004066.000000326.0000003.9400004.17000023.000000288.0000006600.00000049.00000054.00000045400.000000
\n", "
" ], "text/plain": [ " symboling normalized_losses wheel_base length width \\\n", "count 205.000000 164.000000 205.000000 205.000000 205.000000 \n", "mean 0.834146 122.000000 98.756585 174.049268 65.907805 \n", "std 1.245307 35.442168 6.021776 12.337289 2.145204 \n", "min -2.000000 65.000000 86.600000 141.100000 60.300000 \n", "25% 0.000000 94.000000 94.500000 166.300000 64.100000 \n", "50% 1.000000 115.000000 97.000000 173.200000 65.500000 \n", "75% 2.000000 150.000000 102.400000 183.100000 66.900000 \n", "max 3.000000 256.000000 120.900000 208.100000 72.300000 \n", "\n", " height curb_weight engine_size bore stroke \\\n", "count 205.000000 205.000000 205.000000 201.000000 201.000000 \n", "mean 53.724878 2555.565854 126.907317 3.329751 3.255423 \n", "std 2.443522 520.680204 41.642693 0.273539 0.316717 \n", "min 47.800000 1488.000000 61.000000 2.540000 2.070000 \n", "25% 52.000000 2145.000000 97.000000 3.150000 3.110000 \n", "50% 54.100000 2414.000000 120.000000 3.310000 3.290000 \n", "75% 55.500000 2935.000000 141.000000 3.590000 3.410000 \n", "max 59.800000 4066.000000 326.000000 3.940000 4.170000 \n", "\n", " compression_ratio horsepower peak_rpm city_mpg highway_mpg \\\n", "count 205.000000 203.000000 203.000000 205.000000 205.000000 \n", "mean 10.142537 104.256158 5125.369458 25.219512 30.751220 \n", "std 3.972040 39.714369 479.334560 6.542142 6.886443 \n", "min 7.000000 48.000000 4150.000000 13.000000 16.000000 \n", "25% 8.600000 70.000000 4800.000000 19.000000 25.000000 \n", "50% 9.000000 95.000000 5200.000000 24.000000 30.000000 \n", "75% 9.400000 116.000000 5500.000000 30.000000 34.000000 \n", "max 23.000000 288.000000 6600.000000 49.000000 54.000000 \n", "\n", " price \n", "count 201.000000 \n", "mean 13207.129353 \n", "std 7947.066342 \n", "min 5118.000000 \n", "25% 7775.000000 \n", "50% 10295.000000 \n", "75% 16500.000000 \n", "max 45400.000000 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Take a quick look at all the values in the data\n", "df_raw.describe()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Filter out the top 8 manufacturers\n", "models = [\"toyota\",\"nissan\",\"mazda\", \"honda\", \"mitsubishi\", \"subaru\", \"volkswagen\", \"volvo\"]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df = df_raw[df_raw.make.isin(models)].copy()" ] }, { "cell_type": "code", "execution_count": 8, "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", "
symbolingnormalized_lossesmakefuel_typeaspirationnum_doorsbody_styledrive_wheelsengine_locationwheel_base...engine_sizefuel_systemborestrokecompression_ratiohorsepowerpeak_rpmcity_mpghighway_mpgprice
302137.0hondagasstdtwohatchbackfwdfront86.6...921bbl2.913.419.658.04800.049546479.0
312137.0hondagasstdtwohatchbackfwdfront86.6...921bbl2.913.419.276.06000.031386855.0
321101.0hondagasstdtwohatchbackfwdfront93.7...791bbl2.913.0710.160.05500.038425399.0
331101.0hondagasstdtwohatchbackfwdfront93.7...921bbl2.913.419.276.06000.030346529.0
341101.0hondagasstdtwohatchbackfwdfront93.7...921bbl2.913.419.276.06000.030347129.0
\n", "

5 rows × 26 columns

\n", "
" ], "text/plain": [ " symboling normalized_losses make fuel_type aspiration num_doors \\\n", "30 2 137.0 honda gas std two \n", "31 2 137.0 honda gas std two \n", "32 1 101.0 honda gas std two \n", "33 1 101.0 honda gas std two \n", "34 1 101.0 honda gas std two \n", "\n", " body_style drive_wheels engine_location wheel_base ... engine_size \\\n", "30 hatchback fwd front 86.6 ... 92 \n", "31 hatchback fwd front 86.6 ... 92 \n", "32 hatchback fwd front 93.7 ... 79 \n", "33 hatchback fwd front 93.7 ... 92 \n", "34 hatchback fwd front 93.7 ... 92 \n", "\n", " fuel_system bore stroke compression_ratio horsepower peak_rpm city_mpg \\\n", "30 1bbl 2.91 3.41 9.6 58.0 4800.0 49 \n", "31 1bbl 2.91 3.41 9.2 76.0 6000.0 31 \n", "32 1bbl 2.91 3.07 10.1 60.0 5500.0 38 \n", "33 1bbl 2.91 3.41 9.2 76.0 6000.0 30 \n", "34 1bbl 2.91 3.41 9.2 76.0 6000.0 30 \n", "\n", " highway_mpg price \n", "30 54 6479.0 \n", "31 38 6855.0 \n", "32 42 5399.0 \n", "33 34 6529.0 \n", "34 34 7129.0 \n", "\n", "[5 rows x 26 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "### Basic Crosstab functions" ] }, { "cell_type": "code", "execution_count": 10, "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", "
num_doorsfourtwo
make
honda58
mazda79
mitsubishi49
nissan99
subaru93
toyota1814
volkswagen84
volvo110
\n", "
" ], "text/plain": [ "num_doors four two\n", "make \n", "honda 5 8\n", "mazda 7 9\n", "mitsubishi 4 9\n", "nissan 9 9\n", "subaru 9 3\n", "toyota 18 14\n", "volkswagen 8 4\n", "volvo 11 0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a simple crosstab that counts the number of occurences of each combination\n", "pd.crosstab(df.make, df.num_doors)" ] }, { "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", "
num_doorsfourtwoTotal
make
honda5813
mazda7916
mitsubishi4913
nissan9918
subaru9312
toyota181432
volkswagen8412
volvo11011
Total7156127
\n", "
" ], "text/plain": [ "num_doors four two Total\n", "make \n", "honda 5 8 13\n", "mazda 7 9 16\n", "mitsubishi 4 9 13\n", "nissan 9 9 18\n", "subaru 9 3 12\n", "toyota 18 14 32\n", "volkswagen 8 4 12\n", "volvo 11 0 11\n", "Total 71 56 127" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Add a subtotal\n", "pd.crosstab(df.make, df.num_doors, margins=True, margins_name=\"Total\")" ] }, { "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", "
body_styleconvertiblehardtophatchbacksedanwagon
make
honda00751
mazda001070
mitsubishi00940
nissan01593
subaru00354
toyota1314104
volkswagen10191
volvo00083
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan wagon\n", "make \n", "honda 0 0 7 5 1\n", "mazda 0 0 10 7 0\n", "mitsubishi 0 0 9 4 0\n", "nissan 0 1 5 9 3\n", "subaru 0 0 3 5 4\n", "toyota 1 3 14 10 4\n", "volkswagen 1 0 1 9 1\n", "volvo 0 0 0 8 3" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Another example, this time of make and body_style\n", "pd.crosstab(df.make, df.body_style)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "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", "
Body Styleconvertiblehardtophatchbacksedanwagon
Auto Manufacturer
honda00751
mazda001070
mitsubishi00940
nissan01593
subaru00354
toyota1314104
volkswagen10191
volvo00083
\n", "
" ], "text/plain": [ "Body Style convertible hardtop hatchback sedan wagon\n", "Auto Manufacturer \n", "honda 0 0 7 5 1\n", "mazda 0 0 10 7 0\n", "mitsubishi 0 0 9 4 0\n", "nissan 0 1 5 9 3\n", "subaru 0 0 3 5 4\n", "toyota 1 3 14 10 4\n", "volkswagen 1 0 1 9 1\n", "volvo 0 0 0 8 3" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Add custom names for the rows and columns?\n", "pd.crosstab(df.make, df.body_style, rownames=['Auto Manufacturer'], colnames=['Body Style'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Normalizing Results" ] }, { "cell_type": "code", "execution_count": 14, "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", "
body_styleconvertiblehardtophatchbacksedanwagon
make
honda0.0000000.0000000.0546880.0390620.007812
mazda0.0000000.0000000.0781250.0546880.000000
mitsubishi0.0000000.0000000.0703120.0312500.000000
nissan0.0000000.0078120.0390620.0703120.023438
subaru0.0000000.0000000.0234380.0390620.031250
toyota0.0078120.0234380.1093750.0781250.031250
volkswagen0.0078120.0000000.0078120.0703120.007812
volvo0.0000000.0000000.0000000.0625000.023438
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan wagon\n", "make \n", "honda 0.000000 0.000000 0.054688 0.039062 0.007812\n", "mazda 0.000000 0.000000 0.078125 0.054688 0.000000\n", "mitsubishi 0.000000 0.000000 0.070312 0.031250 0.000000\n", "nissan 0.000000 0.007812 0.039062 0.070312 0.023438\n", "subaru 0.000000 0.000000 0.023438 0.039062 0.031250\n", "toyota 0.007812 0.023438 0.109375 0.078125 0.031250\n", "volkswagen 0.007812 0.000000 0.007812 0.070312 0.007812\n", "volvo 0.000000 0.000000 0.000000 0.062500 0.023438" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Convert the occurrences to percentages\n", "pd.crosstab(df.make, df.body_style, normalize=True)" ] }, { "cell_type": "code", "execution_count": 15, "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", "
body_styleconvertiblehardtophatchbacksedanwagon
make
honda0.0000000.0000000.5384620.3846150.076923
mazda0.0000000.0000000.5882350.4117650.000000
mitsubishi0.0000000.0000000.6923080.3076920.000000
nissan0.0000000.0555560.2777780.5000000.166667
subaru0.0000000.0000000.2500000.4166670.333333
toyota0.0312500.0937500.4375000.3125000.125000
volkswagen0.0833330.0000000.0833330.7500000.083333
volvo0.0000000.0000000.0000000.7272730.272727
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan wagon\n", "make \n", "honda 0.000000 0.000000 0.538462 0.384615 0.076923\n", "mazda 0.000000 0.000000 0.588235 0.411765 0.000000\n", "mitsubishi 0.000000 0.000000 0.692308 0.307692 0.000000\n", "nissan 0.000000 0.055556 0.277778 0.500000 0.166667\n", "subaru 0.000000 0.000000 0.250000 0.416667 0.333333\n", "toyota 0.031250 0.093750 0.437500 0.312500 0.125000\n", "volkswagen 0.083333 0.000000 0.083333 0.750000 0.083333\n", "volvo 0.000000 0.000000 0.000000 0.727273 0.272727" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Convert the occurrences to percentages for each row\n", "pd.crosstab(df.make, df.body_style, normalize='index')" ] }, { "cell_type": "code", "execution_count": 16, "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", "
body_styleconvertiblehardtophatchbacksedanwagon
make
honda0.00.000.1428570.0877190.0625
mazda0.00.000.2040820.1228070.0000
mitsubishi0.00.000.1836730.0701750.0000
nissan0.00.250.1020410.1578950.1875
subaru0.00.000.0612240.0877190.2500
toyota0.50.750.2857140.1754390.2500
volkswagen0.50.000.0204080.1578950.0625
volvo0.00.000.0000000.1403510.1875
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan wagon\n", "make \n", "honda 0.0 0.00 0.142857 0.087719 0.0625\n", "mazda 0.0 0.00 0.204082 0.122807 0.0000\n", "mitsubishi 0.0 0.00 0.183673 0.070175 0.0000\n", "nissan 0.0 0.25 0.102041 0.157895 0.1875\n", "subaru 0.0 0.00 0.061224 0.087719 0.2500\n", "toyota 0.5 0.75 0.285714 0.175439 0.2500\n", "volkswagen 0.5 0.00 0.020408 0.157895 0.0625\n", "volvo 0.0 0.00 0.000000 0.140351 0.1875" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Convert the occurrences to percentages for each column\n", "pd.crosstab(df.make, df.body_style, normalize='columns')" ] }, { "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", "
body_styleconvertiblehardtophatchbacksedanwagon
make
honda0.00.014.09.06.0
mazda0.00.020.012.00.0
mitsubishi0.00.018.07.00.0
nissan0.025.010.016.019.0
subaru0.00.06.09.025.0
toyota50.075.029.018.025.0
volkswagen50.00.02.016.06.0
volvo0.00.00.014.019.0
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan wagon\n", "make \n", "honda 0.0 0.0 14.0 9.0 6.0\n", "mazda 0.0 0.0 20.0 12.0 0.0\n", "mitsubishi 0.0 0.0 18.0 7.0 0.0\n", "nissan 0.0 25.0 10.0 16.0 19.0\n", "subaru 0.0 0.0 6.0 9.0 25.0\n", "toyota 50.0 75.0 29.0 18.0 25.0\n", "volkswagen 50.0 0.0 2.0 16.0 6.0\n", "volvo 0.0 0.0 0.0 14.0 19.0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# If you want to make the percentages a little easier to see, multiple all values by 100\n", "pd.crosstab(df.make, df.body_style, normalize='columns').mul(100).round(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Custom Aggregations and Grouping" ] }, { "cell_type": "code", "execution_count": 18, "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", "
body_styleconvertiblehardtophatchbacksedanwagon
make
hondaNaNNaN1970.02289.02024.0
mazdaNaNNaN2254.02361.0NaN
mitsubishiNaNNaN2377.02394.0NaN
nissanNaN2008.02740.02238.02452.0
subaruNaNNaN2137.02314.02454.0
toyota2975.02585.02370.02338.02708.0
volkswagen2254.0NaN2221.02342.02563.0
volvoNaNNaNNaN3023.03078.0
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan wagon\n", "make \n", "honda NaN NaN 1970.0 2289.0 2024.0\n", "mazda NaN NaN 2254.0 2361.0 NaN\n", "mitsubishi NaN NaN 2377.0 2394.0 NaN\n", "nissan NaN 2008.0 2740.0 2238.0 2452.0\n", "subaru NaN NaN 2137.0 2314.0 2454.0\n", "toyota 2975.0 2585.0 2370.0 2338.0 2708.0\n", "volkswagen 2254.0 NaN 2221.0 2342.0 2563.0\n", "volvo NaN NaN NaN 3023.0 3078.0" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Perform aggregation functions - not just a simple count\n", "pd.crosstab(df.make, df.body_style, values=df.curb_weight, aggfunc='mean').round(0)" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
body_styleconvertiblehardtophatchbacksedanwagon
drive_wheelsfwdrwdfwdrwd4wdfwdrwd4wdfwdrwd4wdfwdrwd
make
honda-----1970--2288.8--2024-
mazda-----2148.332411.25-2231.62685---
mitsubishi-----2376.56--2394----
nissan--2008--21763116.33-2237.89--2452.33-
subaru----22402085-2447.52225-25352372.5-
toyota-2975-2585-2177.252626.83-2258.572521.67270022803151
volkswagen2254----2221--2342.22--2563-
volvo---------3023--3077.67
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback \\\n", "drive_wheels fwd rwd fwd rwd 4wd fwd rwd \n", "make \n", "honda - - - - - 1970 - \n", "mazda - - - - - 2148.33 2411.25 \n", "mitsubishi - - - - - 2376.56 - \n", "nissan - - 2008 - - 2176 3116.33 \n", "subaru - - - - 2240 2085 - \n", "toyota - 2975 - 2585 - 2177.25 2626.83 \n", "volkswagen 2254 - - - - 2221 - \n", "volvo - - - - - - - \n", "\n", "body_style sedan wagon \n", "drive_wheels 4wd fwd rwd 4wd fwd rwd \n", "make \n", "honda - 2288.8 - - 2024 - \n", "mazda - 2231.6 2685 - - - \n", "mitsubishi - 2394 - - - - \n", "nissan - 2237.89 - - 2452.33 - \n", "subaru 2447.5 2225 - 2535 2372.5 - \n", "toyota - 2258.57 2521.67 2700 2280 3151 \n", "volkswagen - 2342.22 - - 2563 - \n", "volvo - - 3023 - - 3077.67 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(df.make, [df.body_style, df.drive_wheels], values=df.curb_weight, aggfunc='mean').fillna('-')" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
body_styleconvertiblehardtophatchbacksedanwagon
drive_wheelsfwdrwdfwdrwd4wdfwdrwd4wdfwdrwd4wdfwdrwd
make
honda0000070050010
mazda0000064052000
mitsubishi0000090040000
nissan0010023090030
subaru0000120230220
toyota0103086073211
volkswagen1000010090010
volvo0000000008003
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback sedan \\\n", "drive_wheels fwd rwd fwd rwd 4wd fwd rwd 4wd fwd rwd \n", "make \n", "honda 0 0 0 0 0 7 0 0 5 0 \n", "mazda 0 0 0 0 0 6 4 0 5 2 \n", "mitsubishi 0 0 0 0 0 9 0 0 4 0 \n", "nissan 0 0 1 0 0 2 3 0 9 0 \n", "subaru 0 0 0 0 1 2 0 2 3 0 \n", "toyota 0 1 0 3 0 8 6 0 7 3 \n", "volkswagen 1 0 0 0 0 1 0 0 9 0 \n", "volvo 0 0 0 0 0 0 0 0 0 8 \n", "\n", "body_style wagon \n", "drive_wheels 4wd fwd rwd \n", "make \n", "honda 0 1 0 \n", "mazda 0 0 0 \n", "mitsubishi 0 0 0 \n", "nissan 0 3 0 \n", "subaru 2 2 0 \n", "toyota 2 1 1 \n", "volkswagen 0 1 0 \n", "volvo 0 0 3 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Crosstab supports grouping as well. In this case, group the columns\n", "pd.crosstab(df.make, [df.body_style, df.drive_wheels])" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Body Styleconvertiblehardtophatchbacksedanwagon
Drive Type4wdfwdrwd4wdfwdrwd4wdfwdrwd4wdfwdrwd4wdfwdrwd
Auto ManufacturerDoors
hondafour000000000040010
two000000070010000
mazdafour000000010042000
two000000054000000
mitsubishifour000000000040000
two000000090000000
nissanfour000000010050030
two000010013040000
subarufour000000000230220
two000000120000000
toyotafour000000060071211
two001003026002000
volkswagenfour000000000070010
two010000010020000
volvofour000000000008003
two000000000000000
\n", "
" ], "text/plain": [ "Body Style convertible hardtop hatchback \\\n", "Drive Type 4wd fwd rwd 4wd fwd rwd 4wd fwd rwd \n", "Auto Manufacturer Doors \n", "honda four 0 0 0 0 0 0 0 0 0 \n", " two 0 0 0 0 0 0 0 7 0 \n", "mazda four 0 0 0 0 0 0 0 1 0 \n", " two 0 0 0 0 0 0 0 5 4 \n", "mitsubishi four 0 0 0 0 0 0 0 0 0 \n", " two 0 0 0 0 0 0 0 9 0 \n", "nissan four 0 0 0 0 0 0 0 1 0 \n", " two 0 0 0 0 1 0 0 1 3 \n", "subaru four 0 0 0 0 0 0 0 0 0 \n", " two 0 0 0 0 0 0 1 2 0 \n", "toyota four 0 0 0 0 0 0 0 6 0 \n", " two 0 0 1 0 0 3 0 2 6 \n", "volkswagen four 0 0 0 0 0 0 0 0 0 \n", " two 0 1 0 0 0 0 0 1 0 \n", "volvo four 0 0 0 0 0 0 0 0 0 \n", " two 0 0 0 0 0 0 0 0 0 \n", "\n", "Body Style sedan wagon \n", "Drive Type 4wd fwd rwd 4wd fwd rwd \n", "Auto Manufacturer Doors \n", "honda four 0 4 0 0 1 0 \n", " two 0 1 0 0 0 0 \n", "mazda four 0 4 2 0 0 0 \n", " two 0 0 0 0 0 0 \n", "mitsubishi four 0 4 0 0 0 0 \n", " two 0 0 0 0 0 0 \n", "nissan four 0 5 0 0 3 0 \n", " two 0 4 0 0 0 0 \n", "subaru four 2 3 0 2 2 0 \n", " two 0 0 0 0 0 0 \n", "toyota four 0 7 1 2 1 1 \n", " two 0 0 2 0 0 0 \n", "volkswagen four 0 7 0 0 1 0 \n", " two 0 2 0 0 0 0 \n", "volvo four 0 0 8 0 0 3 \n", " two 0 0 0 0 0 0 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# A more complex example showing the grouping of rows and columns\n", "pd.crosstab([df.make, df.num_doors], [df.body_style, df.drive_wheels], \n", " rownames=['Auto Manufacturer', \"Doors\"], \n", " colnames=['Body Style', \"Drive Type\"], \n", " dropna=False)" ] }, { "cell_type": "code", "execution_count": 22, "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", "
body_styleconvertiblehardtophatchbacksedanwagon
drive_wheelsfwdrwdfwdrwd4wdfwdrwd4wdfwdrwd4wdfwdrwd
make
honda-----1970--2288.8--2024-
mazda-----2148.332411.25-2231.62685---
mitsubishi-----2376.56--2394----
nissan--2008--21763116.33-2237.89--2452.33-
subaru----22402085-2447.52225-25352372.5-
toyota-2975-2585-2177.252626.83-2258.572521.67270022803151
volkswagen2254----2221--2342.22--2563-
volvo---------3023--3077.67
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback \\\n", "drive_wheels fwd rwd fwd rwd 4wd fwd rwd \n", "make \n", "honda - - - - - 1970 - \n", "mazda - - - - - 2148.33 2411.25 \n", "mitsubishi - - - - - 2376.56 - \n", "nissan - - 2008 - - 2176 3116.33 \n", "subaru - - - - 2240 2085 - \n", "toyota - 2975 - 2585 - 2177.25 2626.83 \n", "volkswagen 2254 - - - - 2221 - \n", "volvo - - - - - - - \n", "\n", "body_style sedan wagon \n", "drive_wheels 4wd fwd rwd 4wd fwd rwd \n", "make \n", "honda - 2288.8 - - 2024 - \n", "mazda - 2231.6 2685 - - - \n", "mitsubishi - 2394 - - - - \n", "nissan - 2237.89 - - 2452.33 - \n", "subaru 2447.5 2225 - 2535 2372.5 - \n", "toyota - 2258.57 2521.67 2700 2280 3151 \n", "volkswagen - 2342.22 - - 2563 - \n", "volvo - - 3023 - - 3077.67 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# You can also use agg functions when grouping\n", "pd.crosstab(df.make, [df.body_style, df.drive_wheels], values=df.curb_weight, aggfunc='mean').fillna('-')" ] }, { "cell_type": "code", "execution_count": 23, "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", "
body_styleconvertiblehardtophatchbacksedanwagonAverage
drive_wheelsfwdrwdfwdrwd4wdfwdrwd4wdfwdrwd4wdfwdrwd
make
honda-----1970--2288.8--2024-2097.0
mazda-----2148.332411.25-2231.62685---2298.0
mitsubishi-----2376.56--2394----2382.0
nissan--2008--21763116.33-2237.89--2452.33-2400.0
subaru----22402085-2447.52225-25352372.5-2316.0
toyota-2975-2585-2177.252626.83-2258.572521.672700228031512441.0
volkswagen2254----2221--2342.22--2563-2343.0
volvo---------3023--3077.673038.0
Average2254297520082585224021782673.462447.52282.952855.312617.52371.1230962406.0
\n", "
" ], "text/plain": [ "body_style convertible hardtop hatchback \\\n", "drive_wheels fwd rwd fwd rwd 4wd fwd rwd \n", "make \n", "honda - - - - - 1970 - \n", "mazda - - - - - 2148.33 2411.25 \n", "mitsubishi - - - - - 2376.56 - \n", "nissan - - 2008 - - 2176 3116.33 \n", "subaru - - - - 2240 2085 - \n", "toyota - 2975 - 2585 - 2177.25 2626.83 \n", "volkswagen 2254 - - - - 2221 - \n", "volvo - - - - - - - \n", "Average 2254 2975 2008 2585 2240 2178 2673.46 \n", "\n", "body_style sedan wagon Average \n", "drive_wheels 4wd fwd rwd 4wd fwd rwd \n", "make \n", "honda - 2288.8 - - 2024 - 2097.0 \n", "mazda - 2231.6 2685 - - - 2298.0 \n", "mitsubishi - 2394 - - - - 2382.0 \n", "nissan - 2237.89 - - 2452.33 - 2400.0 \n", "subaru 2447.5 2225 - 2535 2372.5 - 2316.0 \n", "toyota - 2258.57 2521.67 2700 2280 3151 2441.0 \n", "volkswagen - 2342.22 - - 2563 - 2343.0 \n", "volvo - - 3023 - - 3077.67 3038.0 \n", "Average 2447.5 2282.95 2855.31 2617.5 2371.12 3096 2406.0 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# You can also use margins when grouping\n", "pd.crosstab(df.make, [df.body_style, df.drive_wheels], \n", " values=df.curb_weight, aggfunc='mean', margins=True,\n", " margins_name='Average').fillna('-').round(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualizing results with Seaborn" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Seaborn's heatmap can visualize the final results of the crosstab\n", "sns.heatmap(pd.crosstab(df.drive_wheels, df.make))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# This is a more complex customization of a heatmap\n", "sns.heatmap(pd.crosstab([df.make, df.num_doors], [df.body_style, df.drive_wheels]), cmap=\"YlGnBu\", \n", " annot=True, cbar=False)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaUAAAELCAYAAAB5xJkwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzt3Xm8VXW9//HXWxzQUHBOkcIxc0BMnIerZo6VmhqWt7BBcsrsZl61Uqtr5bWf3iytjnNqkuBEaikqiBMgIKM4cB2uqGnkgGaQnPP5/bG+JxbHszf7wN7sdRbvJ4/1OGt/13et9V37cPZnf7/ru75fRQRmZmZFsFKzC2BmZtbOQcnMzArDQcnMzArDQcnMzArDQcnMzArDQcnMzArDQcnMzArDQcnMzArDQcnMzApj5WYXoOQ8XEY3sfKqfZtdhLr75sZ7N7sIDXH9G5ObXYSGmDvvGS3rMd6f+1zNnzmrrLfZMp+vEVxTMjOzwnBNycysLNpam12CZeagZGZWFq0Lm12CZeagZGZWEhFtzS7CMnNQMjMrizYHJTMzKwrXlMzMrDDc0cHMzArDNSUzMyuKKEHvu9I8PCupv6QZDTjuGEmD6n1cM7O6a2urfSko15TMzMqiBM13pakpJT0kXSFppqR7Ja0uaaCkcZKmSbpN0trwrxrQhZImSHpG0t4pfXVJw1L+PwCrtx9c0q8lTUzH/2GTrtHMrHNtrbUvVUjqmT4bp+Y/7yRtKmm8pGcl/UHSqil9tfR6dtreP3ess1P605IOWtIllC0obQlcFhHbAm8BRwG/A/4zIgYA04HzcvlXjohdgNNz6ScB76X8FwA75fJ/LyIGAQOAf5M0oKFXY2bWFdFW+1LdAmD/iNgBGAgcLGk34ELgkojYEngT+FrK/zXgzYjYArgk5UPSNsCxwLbAwcDlknpUO3HZgtLzETElrU8CNgf6RMSDKe06YJ9c/ltzefun9X2AGwAiYhowLZf/85ImA0+QvcnbdCyApKGpNjWxpaVl2a/IzKxWdbqnFJl308tV0hLA/sCIlH4dcERaPzy9Jm3/pCSl9GERsSAingdmA7tUO3fZ7iktyK23An1qzN/K4u/FB4Z/l7QpcAawc0S8KelaoGfHfBHRArRHI09dYWbLTx1736UazSRgC+Ay4H+BtyKi/SRzgPY5X/oCLwFExEJJbwPrpvRxucPm9+lU2WpKHb0NvNl+vwj4EvBglfwAY4HjACRtR9ZUB7AW8HfgbUkbAofUv7hmZksvorXmJd+qk5ahix8rWiNiILAJWe3m452dMv3sbG6mqJJeUdlqSp0ZAvxG0hrAc8BXlpD/18A1kqYBU4AJABExVdITwMx0nEcaV2Qzs6XQhd53HVp1quV7S9IYYDegj6SVU21pE+CVlG0O0A+YI2lloDfwRi69XX6fTpUmKEXEC8B2udc/z23erZP8++bW55LuKUXEP8huzHV2juPrUVYzs4ao0/NHktYH3k8BaXXgALLOC6OBo4FhZF/470i7jEyvH0vbH4iIkDQS+L2ki4GNyTqjTah27tIEJTOzFV79nlPaCLgu3VdaCbg5Iu6U9CQwTNJ/kXX4uirlvwq4XtJsshrSsQARMVPSzcCTwELglIio2h/dQcnMrCxa36/LYVLP4x07SX+OTnrPRcR84JgKx7qA7PGamjgomZmVRYGHD6qVg5KZWVmUYJghByUzs7JwTcnMzArDQcnMzIpiCR3bugUHJTOzsijBJH8OSmbA8Rvv3uwi1N0mbeX88z67zy789K2qz1+uuNx8Z2a2/M2d90yzi1BM7n1nZmaF4ZqSmZkVhmtKZmZWGK4pmZlZYbj3nZmZFYZrSmZmVhi+p2RmZoXhmpKZmRWGa0rlJ+la4M6IGNHsspiZVbXQHR3MzKwoIppdgmW2UrMLsKwk9Zf0lKQrJc2QdKOkAyQ9IulZSbuk5VFJT6SfH0v7XilpSlr+Kuk8ZX4l6UlJdwEb5M51rqTH03laJKlpF25m1lFbW+1LQXX7oJRsAfwCGABsDXwR2As4AzgHeArYJyJ2BM4FfgIQEV+PiIHA4cDfgGuBI4GPAdsDJwB75M7zq4jYOSK2A1YHPt3wKzMzq5WDUmE8HxHTI6INmAncHxEBTAf6A72B4ZJmAJcA27bvKKknMBw4NSJeBPYBboqI1oh4BXggd579JI2XNB3YP3+c3PGGSpooaWJLS0tDLtbMrFPRVvtSUGW5p7Qgt96We91Gdo0/BkZHxJGS+gNjcvl/A9waEffl0j7QMJuC1+XAoIh4SdL5QM+O+SKiBWiPRt2/gdfMuo8C14BqVZaa0pL0Bl5O68e3J0o6BVgzIn6WyzsWOFZSD0kbAful9PYANFdSL+DoxhbZzKyLWltrXwqqLDWlJflv4DpJ/8HizXFnAO9LmpJe/wb4LVnT3HTgGeBBgIh4S9IVKf0F4PHlU3QzsxqVoKbU7YNSRLwAbJd7fXyFbVvldvtB2r5phcOeWuFc3we+v9SFNTNrpALfK6pVtw9KZmaWibbufxvbQcnMrCzcfGdmZoXh5jszMyuMhcXtVVcrByUzs7IoQfPdivKckplZ+UXUvlQhqZ+k0ZJmSZop6VspfaCkcWm80ImSdknpknSppNmSpkn6RO5YQ9I4pM9KGrKkS3BNycysLOpXU1oIfCciJktaE5gkaRTZM58/jIg/STo0vd4XOATYMi27Ar8GdpW0DnAeMIhshJtJkkZGxJuVTuyakplZWbRF7UsVEfFqRExO6+8As4C+ZIFlrZStN/BKWj8c+F1kxgF90og4BwGjIuKNFIhGAQdXO7drSmbAwNYPDGPY7a3S/R9Zsa5qwPBBabzQHYHxwOnAPZJ+TlapaZ9FoS/wUm63OSmtUnpFrimZmZVEtLXVvORnNEjL0I7HS+N83gKcHhHzgJOAb0dEP+DbwFXtWTsrTpX0ilxTMjMriy6M6NBhRoMPkLQKWUC6MSJuTclDgG+l9eHAlWl9DtAvt/smZE17c8juOeXTx1Qrl2tKZmZlUaf5lNKs2lcBsyLi4tymV4B/S+v7A8+m9ZHAl1MvvN2AtyPiVeAe4EBJa0taGzgwpVXkmpKZWVnUb+y7PYEvAdNzsyicQzYb9y8krQzMB9qb/O4GDgVmA+8BXwGIiDck/ZhFsyr8KCLeqHZiByUzs7KoU5fwiHiYzu8HAezUSf4ATqlwrKuBq2s9t4OSmVlZFHjyvlo5KJmZlYWnrjAzs6KIEox956BkZlYWrimZmVlhlCAoFfY5JUmflXRWWj9C0jZLeZz+kmZU2HZlteNKGiNpUCfpgyRdujTlMTNrmDo9p9RMha0pRcRIsgeyAI4A7gSerPM5vr6U+00EJtazLGZmyyoWFjfY1KopNaVUe3kq1VRmSLpR0gGSHklzbuwi6XhJv5K0B/BZ4KI0h8fmkk6T9GSat2NYOub5ks7InWNGGkgQYGVJ16X8IyStkfKMSbWeHpKuTftMl/TtXHGPkTRB0jOS9k777SvpzuXxXpmZ1axOo4Q3UzOb77YAfgEMALYGvgjsBZxB9uQwABHxKFmN6bsRMTAi/hc4C9gxIgYAJ9Zwro8BLSn/PODkDtsHAn0jYruI2B64Jrdt5YjYhWx03POWdKL8IIctLRWHlTIzq7+2ttqXgmpm893zETEdQNJM4P6ICEnTgf5L2HcacKOk24HbazjXSxHxSFq/ATgN+Hlu+3PAZpJ+CdwF3Jvb1j4Q4aQaytVxkMPifh0xs/IpcA2oVs2sKS3IrbflXrex5GB5GHAZ2XAXk9I4TAtZ/HryE+R0/E0t9jpNPrUD2ei1p7Bo5Nt8OVtrKJeZWfO4+W65eQdYE0DSSkC/iBgNnAn0AXoBLwCfSHk+AWya2/8jknZP618AHs4fXNJ6wEoRcQvwg/bjmJl1J9HaVvNSVN3lm/8w4ApJpwHHAldJ6k02YOAlEfGWpFvIhk6fQjYi7TO5/WcBQyT9lmyo9V93OH5f4JoU8ADObuC1mJk1RoFrQLVSNrirNYjf3G7iV/3+vdlFqLsyT4f+jTk3NLsIjVBpVO6avf2VA2r+rfe+5r5lPl8jdJeakpmZLUkJakoOSmZmZVHcW0U1c1AyMyuJcE3JzMwKY6GDkpmZFYRrSmZmVhy+p2RmZkXhmpKtkNb60GbNLkLdvfy1pZquq/BOvmPVZheh7o5e0JM7PvzFZhej7g7/y++X/SCuKdmKpowBqazKGJCsuljY7BIsOwclM7OSKPCEsjVzUDIzKwsHJTMzKwrXlMzMrDAclMzMrDAclMzMrDCitZCzUXSJg5KZWUlEm4OSmZkVRBma71ZachYzM+sOIlTzUo2kfpJGS5olaaakb+W2fVPS0yn9v3PpZ0uanbYdlEs/OKXNlnTWkq6h1DUlST8CxkbEfc0ui5lZo9WxprQQ+E5ETJa0JjBJ0ihgQ+BwYEBELJC0AYCkbYBjgW2BjYH7JG2VjnUZ8ClgDvC4pJER8WSlE5c6KEXEuc0ug5nZ8lKve0oR8Srwalp/R9IsoC9wAvCziFiQtr2edjkcGJbSn5c0G9glbZsdEc8BSBqW8lYMSqVovpPUP1Uzr0hVynslrS7pWklHpzw/k/SkpGmSfp7SjpE0Q9JUSWNzx3pI0uS07JHS95U0RtIISU9JulFS97+raGal0daqmhdJQyVNzC1DOzumpP7AjsB4YCtgb0njJT0oaeeUrS/wUm63OSmtUnpFZaopbQl8ISJOkHQzcFT7BknrAEcCW0dESOqTNp0LHBQRL+fSXgc+FRHzJW0J3AQMStt2JKuevgI8AuwJPNzoCzMzq0VXakoR0QK0VMsjqRdwC3B6RMyTtDKwNrAbsDNws6TNgM5OHHRe8ak6v0YpakrJ8xExJa1PAvrnts0D5gNXSvoc8F5KfwS4VtIJQI+UtgpwhaTpwHAgP6fBhIiYExFtwJQO5wBY7NtHS0vV37eZWV1F1L4siaRVyALSjRFxa0qeA9wamQlko+2tl9L75XbfhOzLe6X0irpUU5L0oYj4e1f2WY4W5NZbgdXbX0TEQkm7AJ8kuxl3KrB/RJwoaVfgMGCKpIHAN4HXgB3Igvb8Kuf4wPvX4dtH959xy8y6jXrdU0q3Jq4CZkXExblNtwP7A2NSR4ZVgbnASOD3ki4m6+iwJTCBrAa1paRNgZfJPn+rToZVU1BK91WuBHoBH5G0A/CNiDi55qtsolQFXSMi7pY0Dpid0jePiPHAeEmfIYvovYE5EdEmaQiLalBmZoW2pK7eXbAn8CVguqT2FqhzgKuBqyXNAP4JDImIAGam2yZPkvXcOyUiWgEknQrcQ/ZZenVEzKx24lprSpcAB5FFQyJiqqR9unCBzbYmcIeknmSR+9sp/aJ030jA/cBU4HLgFknHAKOBotYMzcwW01qnYYYi4mE6v08E8O8V9rkAuKCT9LuBu2s9d83NdxHxUofOZq217ttoEfECsF3u9c87ybZLx4SI+Fwn+Z4FBuRen53yjgHG5PY9dakKa2bWIHWsKTVNrUHppdSEF5JWBU4DZjWuWGZm1lVlGPuu1t53JwKnkPUvnwMMTK/NzKwg6tn7rllqrSm1RcRx+YTUm+Jv9S+SmZktjRWppvRHSWu1v5D0ceCPjSmSmZktjbZQzUtR1RqUfkIWmHpJ2gkYQYUeGGZm1hxtbap5Kaqamu8i4q70dO+9ZN2rj4iIZxtaMjMz65Ii14BqVTUoSfoli49KsBbwHPBNSUTEaY0snJmZ1W5F6BI+scPrSY0qiJmZLZsi96qrVdWgFBHXLa+CmDXTgbeUb+CO/VdZa8mZrFRK33zXLg3F81OyEbN7tqdHxGYNKpcV1Ly/P9fsIjTE7n33a3YRzJbZitB81+4a4DyyMfD2A75C5XGRzMysCVpLEJRq7RK+ekTcDygiXoyI88mGLzczs4Iow3NKtdaU5ktaCXg2DUP+MrBB44plZmZdVYbmu1prSqcDa5ANxLoT2YOzX25UoczMrOvaurAUVa01pQCuBz5KNl04wBUsPsWDmZk1UZTgVn+tQelG4LvAdIodZM3MVlgLS9B8V2tQ+mtEjGxoSczMbJmsSDWl8yRdSTZl+IL2xIi4tSGlMjOzLitDM1atQekrwNZk95ParzuAbhGUJJ0PvFthmnQzs1JYkWpKO0TE9g0tSUFJEtnzWWX4EmJmJVaGD6lau4SPk7RNQ0vSRZI+JOkuSVMlzZA0WNILktZL2wdJGpPbZQdJD0h6VtIJKU8vSfdLmixpuqTDU3p/SbMkXQ5MBvpJejd37qMlXbvcLtbMrAYrUpfwvYAhkp4nu6ckICKimV3CDwZeiYjDACT1Bi6skn8AsBvwIeAJSXcBrwNHRsS8FMzGSWrv0PEx4CsRcXI6foMuw8ysPlpL8DlVa03pYGBL4EDgM8Cn089mmg4cIOlCSXtHxNtLyH9HRPwjIuYCo4FdyILrTyRNA+4D+gIbpvwvRsS4rhZK0lBJEyVNbGlp6eruZmZLrQ3VvBRVrTPPvtjognRVRDyTpmY/FPippHuBhSwKtD077tLJ6+OA9YGdIuJ9SS/k9us4l0F+/47HzperBWiPRiWY3cTMuosyfODUWlMqHEkbA+9FxA3Az4FPAC+QDYMEcFSHXQ6X1FPSusC+wONAb+D1FJD2IxuxopLXJH08jQF4ZP2uxMysPlake0pFtD1wkaQ24H3gJGB14CpJ5wDjO+SfANwFfAT4cUS8IulG4I+SJgJTgKeqnO8s4E7gJWAG0KueF2NmtqzaSnBPqdsGpYi4B7ink01bdZL3/ArHmAvsXuEU23XIOwIY0bVSmpktP2Vovuu2QcnMzBa3sPtXlByUzMzKosi96mrVbTs6mJnZ4qILSzWS+kkanQYRmCnpWx22nyEpcoMVSNKlkmZLmibpE7m8Q9KgBc9KGrKka3BNycysJNrqV1FaCHwnIiZLWhOYJGlURDwpqR/wKeD/cvkPIXuWdUtgV+DXwK6S1gHOAwaRxcJJkkZGxJuVTuyakplZSdSrS3hEvBoRk9P6O8AsssEFAC4BzmTxCtfhwO8iMw7oI2kj4CBgVES8kQLRKLLBGCpyTcnMrCRaG3BLSVJ/YEdgvKTPAi9HxNQOQ6/1JXtcpt2clFYpvSIHJTOzkujKQ7GShgJDc0ktaUSafJ5ewC3A6WRNet8jG27uA4frJC2qpFfkoGRmVhJdCUodhkT7AEmrkAWkGyPiVknbA5sC7bWkTYDJknYhqwH1y+2+CfBKSt+3Q/qYauVyUGqg+ROGN7sIdffK165odhEa4tgeVVsUuqV3owyPUn7Qvoe81uwiFFbUqfkuzSN3FTArIi4GiIjpwAa5PC8AgyJibppd4VRJw8g6OrwdEa9Kuods0Ou1024HAmdXO7eDkplZSdRxTLs9gS8B0yVNSWnnRMTdFfLfTTY49mzgPbLZyomINyT9mGysUYAfRcQb1U7soGRmVhL1CkoR8TCd3w/K5+mfWw/glAr5rgaurvXcDkpmZiXRiN53y5uDkplZSRR5SopaOSiZmZWEg5KZmRVGGfpbOiiZmZVEHce+axoHJTOzkmhtdgHqwEHJzKwk2krQgFeKUcIl9ZF0cp2POVDSofU8pplZI9VrlPBmKkVQAvoAdQ1KwECyJ5TNzLqFek3y10xlCUo/AzaXNEXSRWmZIWm6pMEAkq6XdHj7DpJulPRZST0lXZPyPiFpP0mrAj8CBqdjDpa0i6RHU55HJX2sSddqZtapMtSUynJP6Sxgu4gYKOko4ERgB2A94HFJY4ErgW8Dd0jqDewBDAG+BRAR20vaGrgX2Ao4l2ywwVMBJK0F7BMRCyUdAPwEOGp5XqSZWTVl6H1XlppS3l7ATRHRGhGvAQ8CO0fEg8AWkjYAvgDcEhELU/7rASLiKeBFsqDUUW9guKQZZDMvbtvZySUNlTRR0sSrbruv3tdmZlZRK1HzUlRlqSnlVfuucD1wHHAs8NUa8uf9GBgdEUemmRjHdJYpP0fJ/AnDi/ubN7PSKXKzXK3KUlN6B1gzrY8luxfUQ9L6wD7AhLTtWrIZFImImbn8xwFI2gr4CPB0h2NCVlN6Oa0f34iLMDNbFm1EzUtRlSIoRcTfgEdS09ruwDRgKvAAcGZE/CXlew2YBVyT2/1yoIek6cAfgOMjYgEwGtimvaMD8N/ATyU9AvRYTpdmZlazMvS+K03zXUR8sUPSdzvmkbQGsCVwU26/+XRS80kTUe3cITl/r+kHS1tWM7NGcPNdN5J6zD0F/DIi3m52eczM6q0MzXelqSktSUTcR3a/yMyslDz2nZmZFUYUuAZUKwclM7OSKMM9JQclM7OSKPK9olo5KJmZlUT3D0kOSmZmpbGwBGHJQcnMrCTc0cGqOvXzf2h2ERpgLc5Zc16zC1F3j+rdZheh7gbwoWYXoSFefWTVZhehIXrX4Rju6GArpM2m39vsItTfR49odgnMlplrSmZmVhiuKZmZWWG0hWtKZmZWEEWevK9WDkpmZiVRhntKK8wo4WZmZdfWhaUaSf0kjZY0S9JMSd9K6RdJekrSNEm3SeqT2+dsSbMlPS3poFz6wSlttqSzlnQNDkpmZiVRx6krFgLfiYiPA7sBp0jaBhgFbBcRA4BngLMB0rZjgW2Bg4HL0+zfPYDLgEOAbYAvpLwVufnOzKwk6tV8FxGvAq+m9XckzQL6RkT+eZBxwNFp/XBgWJq1+3lJs4Fd0rbZEfEcgKRhKe+Tlc7tmpKZWUnUq/kuT1J/YEdgfIdNXwX+lNb7Ai/lts1JaZXSK2p6UJLUX9KMtH68pF81u0xmZt1Ra7TVvEgaKmlibhna8XiSegG3AKdHxLxc+vfImvhubE/qpDhRJb0iN9+ZmZVEV2pAEdECtFTaLmkVsoB0Y0TcmksfAnwa+GTEvx6MmgP0y+2+CfBKWq+U3qmG1JQkXSjp5Nzr8yV9J/XcmCFpuqTBSzjGYZIek7SepGPSflMljU3b75Y0IK0/IenctP5jSV+X1EvS/ZImp/Mdnjv2D1IPklGSbpJ0RkrfXNKfJU2S9JCkrVP6tZIulfSopOckHf3BEpuZNVd04V81kgRcBcyKiItz6QcD/wl8NiLey+0yEjhW0mqSNgW2BCYAjwNbStpU0qpknSFGVjt3o2pKw4D/AS5Prz8PXEjWK2MHYD3g8fYA05GkI4H/AA6NiDdTwDkoIl7OdUEcC+wt6QWyauSeKX0v4AZgPnBkRMyTtB4wTtJIYCfgKLI20pWBycCktG8LcGJEPCtp11T+/dO2jdKxtyZ7U0cs7ZtjZtYIdZzkb0/gS8B0SVNS2jnApcBqwKgsbjEuIk6MiJmSbibrwLAQOCUiWgEknQrcA/QAro6ImdVO3JCgFBFPSNpA0sbA+sCbwEDgplTQ1yQ9COwMTOuw+37AIODAXBvmI8C16aLbq5EPAacBzwN3AZ+StAbQPyKeTlXPn0jah6xW2xfYkCyw3BER/wCQ9Mf0sxewBzA8vdmQvfntbo+INuBJSRtWuvbULjsUYM91dmTrNTer7U0zM1tGUadhhiLiYTq/H3R3lX0uAC7oJP3uavt11Mh7SiPIugt+mKzmtHmN+z0HbAZsBUwEiIgTU83lMGCKpIFk1cJBKf8ostrXCSyq9RxHFhB3ioj3U42qJ52/0ZA1Zb4VEQMrbF+QW690jMXaab/e/+ju/3i1mXUbZRhmqJG974aRtR8eTRagxgKD0wNV6wP7kLU5dvQi8Dngd5K2hexeT0SMj4hzgblAv4j4J1lXw8+T9Zd/CDgj/YRsepLXU0DaD/hoSn8Y+Iyknql2dBhAqpU9L+mYdE5J2qGO74eZWUPV8eHZpmlYUErthmsCL6cHsW4ja6qbCjwAnBkRf6mw79NkNZ3hkjYHLkqdFWaQBbepKetDwGvphttDZD072oPSjcAgSRPTsZ5Kx36c7J7QVLKmwInA22mf44CvSZoKzCR7yMvMrFuIiJqXolKRC9coknpFxLvpHtRYYGhETK73ecrafHflC+Xr4zG4hJP8lXXm2aNWe7PZRWiIrZ+5u+JtgVrtt8mnav7MGT1n1DKfrxFW1OeUWtL4Sz2B6xoRkMzMlrcyjBK+QgaliPhis8tgZlZvnuTPzMwKowy97xyUzMxKosi96mrloGRmVhJl6LjmoGRmVhKuKZmZWWG4952ZmRWGm+/MrLDOGHVSs4vQECuts3Gzi1BYrdGVGZWKaYUc0WE58ptrTbPgmYebXYSGKGtQWmW9zZZ5hIUdPrxHzZ85U//yqEd0MDOzxvE9JTMzKwyP6GBmZoXhmpKZmRVGGTo6OCiZmZWEm+/MzKww3HxnZmaF4ZqSmZkVhmtKZmZWGFGCjg4rNbsARSCpv6QZzS6HmdmyaI22mpeick3JzKwkyjB1RWlrSpIulHRy7vX5kr4j6SJJMyRNlzS4k/3GS9o293qMpJ0krSPpdknTJI2TNGB5XYuZWS0ioualqEoblIBhQD7ofB6YCwwEdgAOAC6StFEn+30eIG3bOCImAT8EnoiIAcA5wO86O6mkoZImSprY0tJSz+sxM6uqLaLmpahK23wXEU9I2kDSxsD6wJtkAemmiGgFXpP0ILAzMC23683AKOA8suA0PKXvBRyVjv2ApHUl9Y6ItzuctwVoj0bF/c2bWem4913xjQCOBj5MVgPafEk7RMTLkv6WmucGA99Imzob5r37/w8ws9IocrNcrcrcfAdZIDqWLDCNAMYCgyX1kLQ+sA8wocJ+ZwK9I2J6ShsLHAcgaV9gbkTMa2zxzcxqV4bed6UOShExE1gTeDkiXgVuI2uqmwo8AJwZEX/pZNcRZMHs5lza+cAgSdOAnwFDGlh0M7Muq9c9JUn9JI2WNEvSTEnfSunrSBol6dn0c+2ULkmXSpqdOoN9InesISn/s5KW+LnpmWcby2+uNY1nnu1e6jHz7Nq9tqj5M+fNd2dXPF/q5LVRREyWtCYwCTgCOB54IyJ+JuksYO2I+E9JhwLfBA4FdgV+ERG7SloHmAgMIvs8nATsFBFvVjp3qWtKZmYrkjai5qWaiHg1Iian9XeAWUBf4HDgupTtOrJARUr/XWTGAX1SYDsIGBURb6RANAoUBVGHAAALpUlEQVQ4uNq5y97RwcxshdGIli9J/YEdgfHAhulWCBHxqqQNUra+wEu53eaktErpFTkomZmVRFc6MEgaCgzNJbWkR1ryeXoBtwCnR8Q8qXKLXydpUSW9IgclM7OS6MpDsR2eqfwASauQBaQbI+LWlPyapI1SLWkj4PWUPgfol9t9E+CVlL5vh/Qx1crle0pmZiVRr2GGlFWJrgJmRcTFuU0jWdTzeAhwRy79y6kX3m7A26mZ7x7gQElrp556B6a0ilxTMjMriTqO6LAn8CVguqQpKe0cssdhbpb0NeD/gGPStrvJet7NBt4DvgIQEW9I+jHweMr3o4h4o9qJ3SW8sfzmWtO4S3j3Uo8u4auutknNnzn/XDBnmc/XCK4pmZmVRBkqGa4plYSkoR17znR3Zbwm8HV1J2W8pqJzR4fyGLrkLN1OGa8JfF3dSRmvqdAclMzMrDAclMzMrDAclMqjjO3eZbwm8HV1J2W8pkJzRwczMysM15TMzKwwHJRKTFIfSSfnXm8saURaP17Sryrs9+4ynre/pBnLcowOx3tB0nodr6cRulp2SUdI2mYJefaVdGeFbS9IWq+r5ezkOMv0O6vD+ev6O7cVl4NSSUnqAfQB/vUhHhGvRMTRzSvVkkmq9kD3YtdTEEcAVYOSmdXOQamBJH05TQ08VdL1kj4q6f6Udr+kj6R816aphB+V9Jyko1P6H9KMjuTyHSWph6SLJD2ejvWNtH3fNIXx74HpZONUbS5pSsrf8dtsP0l/lvS0pPMqXMN3c+f5YRcuv4ekK9JUyvdKWl3SCelYUyXdImmN3HVdLGk0cKGkddM+T0j6LYuGv+94PUo/Z0iaLmlw7n0YK+k2SU9K+o2krvxfr6nskvYAPgtclMq0uaQtJN2X8k2WtHk6Zi9JIyQ9JelGabE5AL4raUJatkjX8BlJ49N7cJ+kDVN6L0nXpOudJumoDr+v9SQ9JumwLlxvfv8PSborlX+GpMGSdpL0oKRJku5RNjo0KX2qpMeAU3LH6C/poXT9k9P71P57GVPlfag7SWdKOi2tXyLpgbT+SUk3SPq1pInpd/3D3H6HpjI+rOxv886Uvo6k29N7P07SgJR+vqSr0/U9135OWwpdGVXWS5dG4N0WeBpYL71eB/gjMCS9/ipwe1q/FhhO9iVhG2B2Sj8SuC6tr0o2WdbqZA/0fT+lr0Y23fCmZEPE/x3YNG3rD8zIlelfr8mmNX4VWDcdcwYwKG17N/08kKz3kVLZ7gT2qeHa+wMLgYHp9c3AvwPr5vL8F/DN3PXfCfRIry8Fzk3rh5GNIbheJ9dzFNlMlj2ADckGiNwovQ/zgc3StlHA0TX+3pam7Efnto0HjkzrPYE1UnneJhu2fyXgMWCvlOcF4Htp/cvAnWl9bRZ1RPo68P/S+oXA/+TOt3b77yy9B+OBTy3D/9ujgCtyr3sDjwLrp9eDgavT+jTg39L6Rbn/W2sAPdP6lsDEtF7xfWjg3+FuwPC0/hAwAVgFOA/4BrBO2taDbEqFAen39hKL/o5uyv1efgmcl9b3B6ak9fPT+7Qa2f/VvwGrNPLayrq4ptQ4+wMjImIuZKPlArsDv0/brwf2yuW/PSLaIuJJsg8XgD8B+0taDTgEGBsR/yALFl9WNnrveLLAsmXaZ0JEPF9jGUdFxN/SMW/tUB7SeQ4EngAmA1vnzrMkz0dE++jCk8g+7LdL36CnA8eRBe52wyOiNa3vA9wAEBF3AW9WOMdewE0R0RoRrwEPAjunbRMi4rl0zJs6ubZ6lh0ASWsCfSPitlT2+RHxXq48cyKiDZiSjtnuptzP3dP6JsA96XzfzZ3vAOCy9h0jm2Iasg/a+4EzI2JUF661o+nAAZIulLQ32Rw52wGj0v+37wObSOoN9ImIB9N+1+eOsQpwRSr7cBZv3qz2PjTCJGCn9LtZQBYIBwF7kwWpz0uaTPZ/fNtU1q2B53J/RzfljrcX6Voj4gFg3fReANwVEQvS3/zrLPo7ti7wgKyNI5Y8Snh++4IO+xIR8yWNIZvnfjCL/jhE9k19sXlJJO1LVlOqVcfydXwt4KcR8dsuHLNd/npayWpj1wJHRMRUScez+ORfHctdy7MK1Zp+lnRt1XS17LWUp+Mx83970cn6L4GLI2Jk+r2enztHZ9eykOwD+CCy4LxUIuIZSTuRTUPwU7Ja5syI2D2fT1KfCuUA+DbwGrADWY1ofm5btfeh7iLifUkvkE2l8ChZ7W4/YHPgH8AZwM4R8aaka8lqSdV+j9VmUl2u11ZWrik1zv1k38LWhawtmuyP4ti0/TiglrkFhpH9Qe3Nosmx7gFOUjYzJJK2kvShTvZ9B1izyrE/ldrIVye7Yf9Ih+33AF9VNiUykvpK2qCGMleyJvBqKvdxVfKNbd8u6RCypiz44PWMBQYru8e2PlkNa0LatoukTZXdSxpMbe/10pT9X2WKiHnAHElHpLKvpnTfbAkG534+ltZ7Ay+n9SG5vPcCp7a/UDZxGmQfjF8FtpZ0Vq0X1ZGkjYH3IuIG4OfArsD6knZP21eRtG1EvAW8Lam9Bpp/T3oDr6ba0JfImsaaaSxZ8BlLVjs6kayWthbZl6G30z27Q1L+p4DNJPVPrwd3OFb7/819gbnp92514kjeIBExU9IFwIOSWsmaB04Drpb0XeCvpImwluBe4HfAyIj4Z0q7kqzZY3K6UfxXsqDSsQx/k/SIss4NfyLX7JM8TNYUsQXw+4iY2GH/eyV9HHgs3Y9+l+z+yussnR+QNTe+SNZMVClg/hC4KTWrPEh2r6iz6zmTrLlrKtmH8pkR8RdJW5N9uP8M2J7sg+S2pSzzkso+jKyp6jTgaLIP4d9K+hHwPosmQatmNUnjyb4kfiGlnQ8Ml/QyMI7sniFk97MuS+9BK9l7dStARLRKOhb4o6R5EXH5Ulzn9mQdN9pS+U8iq4VdmpqpVgb+B5hJ9v/3aknvsfhsopcDt0g6BhhN12rvjfAQ8D3gsYj4u6T5wEOp1vsE2bU8R/pSFhH/UPbowZ8lzWXRFx3Ifi/XSJpGNpld/guD1YFHdLDSSd9gz4iITze7LNY9SeoVEe+mL32XAc9GxCXNLteKwM13ZmYfdELq2DGTrDlyae6r2lJwTcnMzArDNSUzMysMByUzMysMByUzMysMByUzMysMByWzRMsw/YKqTE+xFMcaqNxAvFXynS/pjHqc06woHJTMimcg2TA/ZiscByWzxa0s6bo0NcEIZVNUfFLZFBLT0/QEqwFIOrh9egPgcyltJUnPpmGP2l/PVoWJ/CQdo2yKiKnKpttYFfgR2fBJU5RNHbHE4ymbNuPPyqaXeCiNamHW7TgomS3uY0BLRAwA5gH/QTYY6+CI2J5smJ2TJPUErgA+QzYu4YcB0nhvN7BoLLgDgKnto8V34lzgoIjYAfhsGkrqXOAPETEwIv5Q4/FayAbp3YlsnLelGWLIrOkclMwW91JEtA9MewPwSbKpLJ5JadeRDfy6dUp/NrIn0G/IHeNqsrmRIBsk9Zoq53sEuFbSCVQeuLTq8dKAuXuQjZU3hWz0gY2qXqVZQXlAVrPFdWWIk07zRsRLkl6TtD/ZKNsVR0SPiBMl7Uo2meEUSQOX4ngrAW9FxAf2NetuXFMyW9xH2qdpIBux+z6gv9I05WSjgD9INr3Bplo03fkXFj8MV5LVnm7OTV74AZI2j4jxEXEuMJdsUr3OphypeLw0dcLzaVRulNmh5is2KxAHJbPFzQKGpKkJ1gEuIZuiYbiymVTbgN9ExHyyaenvSh0dXuxwnJFAL6o33UE2TcT01BV9LNk0HKOBbdo7OtR4vOOAr0maSjaI6OE1X7FZgXhAVrMGkDQIuCQi9i7i8cyKyveUzOoszfx6EtVn123a8cyKzDUls+VA0vf44Cy0wyPigmaUx6yoHJTMzKww3NHBzMwKw0HJzMwKw0HJzMwKw0HJzMwKw0HJzMwK4/8DuJ4zV80/k2UAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.heatmap(pd.crosstab(df.make, df.body_style, values=df.curb_weight, aggfunc='mean').round(0))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.heatmap(pd.crosstab(df.make, [df.body_style, df.drive_wheels], \n", " values=df.curb_weight, aggfunc='mean', margins=True, margins_name='Average'),\n", " cmap=\"YlGnBu\", annot=True, cbar=False, fmt='.0f')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }