{ "cells": [ { "cell_type": "markdown", "source": [ "# Case Study 1: Diamonds" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "In this lesson, we're going to do some basic data analyses on a set of diamond characteristics and prices. " ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [ "import os\n", "my_dir = os.getcwd() # get current working directory\n", "my_dir" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "You should see something like `'/home/user/work/DIBS_materials/python'`. Make sure it ends with `/DIBS_materials/python`." ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [ "!mkdir data # make directory called \"data\"\n", "target_dir = os.path.join(my_dir, 'data/')\n", "!wget -P \"$target_dir\" \"https://people.duke.edu/~jmp33/dibs/minerals.csv\" # download csv to data folder\n", "\n", "# if this doesn't work, manually download `minerals.csv` from https://people.duke.edu/~jmp33/dibs/ \n", "# to your local machine, and upload it to `data` folder" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "If you open the file in a text editor, you will see that it consists of a bunch of lines, each with a bunch of commas. This is a csv or \"comma-separated value\" file. Every row represents a record (like a row in a spreadsheet), with each cell separated by a comma. The first row has the same format, but the entries are the names of the columns." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "# Loading the data" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "We would like to load this data into Python. But to do so, we will need to tell Python that we want to get some tools ready. These tools are located in a library (the Python term is \"module\") called Pandas. So we do this:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 1, "source": [ "import pandas as pd" ], "outputs": [], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "This tells Python to load the `pandas` module and nickname it `pd`. Then, whenever we want to use functionality from `pandas`, we do so by giving the address of the function we want. In this case, we want to load data from a csv file, so we call the function `read_csv`:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 2, "source": [ "# we can include comments like this\n", "\n", "# note that for the following to work, you will need to be running the notebook from a folder\n", "# with a subdirectory called data that has the minerals.csv file inside\n", "data = pd.read_csv('data/minerals.csv')" ], "outputs": [], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Let's read from the left:\n", "\n", "`data =` \n", "\n", "tells Python that we want to do something (on the right hand side of the equation) and assign its output to a variable called `data`. We could have called it `duck` or `shotput` or `harmony`, but we want to give our variables meaningful names, and in cases where we are only going to be exploring a single dataset, it's convenient to name it the obvious thing.\n", "\n", "On the right hand side, we're doing several things:\n", "- We're telling Python to look in the `pandas` module (nicknamed `pd`)\n", "- We telling Python to call a function named `read_csv` that's found there (we will find that looking up functions in modules is a lot like looking up files in directories)\n", "- We're giving the function the (local) path to the file in quotes\n", "\n", "We will see this pattern repeatedly in Python. We use names like `read_csv` to tell Python to perform actions. In parentheses, we will supply variables or pieces of information needed as inputs by Python to perform those actions. The actions are called functions (related to the idea of functions in math, which are objects that take inputs and produce an output), and the pieces of information inside parentheses are called \"arguments.\" Much more on all of this later." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "# Examining the data" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "So what did we accomplish?\n", "\n", "The easiest way to see is by asking Python to print the variable to the screen. We can do this with" ], "metadata": {} }, { "cell_type": "code", "execution_count": 3, "source": [ "print(data)" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "0 1 PS 0.28 F F SI2 VG G 61.6 50.0 \n", "1 2 PS 0.23 G F SI1 VG G 67.5 51.0 \n", "2 3 EC 0.34 G I VS2 VG VG 71.6 65.0 \n", "3 4 MQ 0.34 G J VS1 G G 68.2 55.0 \n", "4 5 PS 0.23 G D SI1 VG VG 55.0 58.0 \n", "5 6 MQ 0.23 F G VS2 VG G 71.6 55.0 \n", "6 7 RA 0.37 F I SI2 G G 79.0 76.0 \n", "7 8 EC 0.24 VG E SI1 VG VG 68.6 65.0 \n", "8 9 RD 0.24 I G SI2 VG VG 62.0 59.0 \n", "9 10 MQ 0.33 G H SI2 G G 66.7 61.0 \n", "10 11 RD 0.23 VG E SI2 G VG 59.7 59.0 \n", "11 12 PS 0.35 F H SI2 G G 50.0 55.0 \n", "12 13 PS 0.23 VG D SI1 EX VG 65.8 61.0 \n", "13 14 RD 0.25 I H SI2 VG EX 61.2 58.0 \n", "14 15 RD 0.25 VG D SI2 VG VG 62.4 59.0 \n", "15 16 RA 0.33 G J VVS1 VG VG 59.9 69.0 \n", "16 17 RD 0.27 I H SI2 VG VG 61.7 56.0 \n", "17 18 CU 0.23 G D VS2 VG VG 56.3 66.0 \n", "18 19 RA 0.23 VG F VS1 EX VG 65.2 71.0 \n", "19 20 RA 0.23 VG F VS2 VG G 68.6 74.0 \n", "20 21 PS 0.39 G J VS1 G G 54.2 66.0 \n", "21 22 OV 0.23 F F VS1 EX G 51.4 65.0 \n", "22 23 OV 0.33 F I SI2 VG VG 52.4 53.0 \n", "23 24 RA 0.23 G G VVS2 VG VG 59.4 71.0 \n", "24 25 EC 0.32 VG I SI1 EX EX 67.8 60.0 \n", "25 26 CU 0.32 VG I VS2 EX VG 63.8 61.0 \n", "26 27 MQ 0.36 VG G SI2 G G 64.9 60.0 \n", "27 28 EC 0.23 G G VVS1 VG VG 68.8 73.0 \n", "28 29 EC 0.31 VG F SI2 VG VG 65.9 69.0 \n", "29 30 EC 0.31 VG D SI2 VG VG 68.2 68.0 \n", "... ... ... ... .. ... ... ... ... ... ... \n", "65346 65347 RD 6.08 I F VVS2 EX EX 62.0 56.0 \n", "65347 65348 EC 5.00 VG D IF VG G 67.3 60.0 \n", "65348 65349 EC 8.01 VG F VVS2 G G 68.7 61.0 \n", "65349 65350 PS 16.34 G G VVS2 VG G 54.1 62.0 \n", "65350 65351 RD 12.33 I J VS1 EX EX 60.4 58.0 \n", "65351 65352 OV 5.27 VG D IF EX EX 60.8 61.0 \n", "65352 65353 RD 8.75 I G VS1 EX EX 62.1 57.0 \n", "65353 65354 PS 6.22 G D IF VG VG 56.0 54.0 \n", "65354 65355 EC 11.11 VG H VVS2 EX G 60.9 64.0 \n", "65355 65356 RA 11.16 VG D VS2 G G 66.2 68.0 \n", "65356 65357 RD 5.24 I E IF EX EX 59.7 59.0 \n", "65357 65358 RD 5.27 I D VVS1 EX EX 61.8 56.0 \n", "65358 65359 RD 6.02 VG D VVS1 VG G 61.1 59.0 \n", "65359 65360 RD 4.83 I D IF EX EX 61.9 55.0 \n", "65360 65361 RD 7.53 I F VVS2 EX EX 62.7 54.0 \n", "65361 65362 EC 13.11 VG H VVS2 EX EX 62.5 63.0 \n", "65362 65363 OV 11.15 G F VS2 VG VG 65.3 58.0 \n", "65363 65364 RD 5.24 I D IF VG VG 62.6 54.0 \n", "65364 65365 EC 7.25 F D IF VG VG 69.4 53.0 \n", "65365 65366 RD 5.34 I D IF EX EX 61.6 57.0 \n", "65366 65367 RD 5.47 I D IF EX EX 62.4 54.0 \n", "65367 65368 RD 6.02 I D FL EX EX 62.8 57.0 \n", "65368 65369 RD 6.54 VG D VVS1 VG VG 58.0 64.0 \n", "65369 65370 RD 9.56 I F FL EX EX 60.3 60.0 \n", "65370 65371 CU 8.40 G D IF VG G 57.9 59.0 \n", "65371 65372 RD 10.13 I F IF EX EX 60.3 58.0 \n", "65372 65373 RD 20.13 I J VS1 EX EX 59.2 59.0 \n", "65373 65374 RD 12.35 I G IF EX EX 59.8 60.0 \n", "65374 65375 RD 9.19 I E IF EX EX 60.9 60.0 \n", "65375 65376 RD 10.13 I D FL EX EX 62.5 57.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "0 Faint 864 None 1.65 \n", "1 None 1057 None 1.46 \n", "2 Faint 812 None 1.40 \n", "3 Faint 818 None 1.52 \n", "4 None 1235 None 1.42 \n", "5 None 1248 None 1.95 \n", "6 None 781 None 1.03 \n", "7 Faint 1204 None 1.34 \n", "8 None 1204 None 1.01 \n", "9 Medium 888 None 2.02 \n", "10 None 1278 None 1.01 \n", "11 None 860 Small 1.35 \n", "12 None 1322 None 1.52 \n", "13 None 1216 None 1.00 \n", "14 None 1280 None 1.01 \n", "15 None 976 None 1.11 \n", "16 None 1193 None 1.01 \n", "17 Faint 1426 None 1.08 \n", "18 None 1443 None 1.13 \n", "19 None 1452 None 1.15 \n", "20 None 859 Slightly Large 1.37 \n", "21 None 1461 None 1.35 \n", "22 Faint 1018 None 1.41 \n", "23 None 1474 None 1.09 \n", "24 None 1059 None 1.45 \n", "25 None 1059 None 1.10 \n", "26 None 944 Small 1.96 \n", "27 None 1496 None 1.30 \n", "28 None 1110 None 1.44 \n", "29 None 1113 None 1.35 \n", "... ... ... ... ... \n", "65346 None 101250 None 1.00 \n", "65347 None 123700 Small 1.47 \n", "65348 None 77715 Small 1.49 \n", "65349 None 38295 None 1.59 \n", "65350 Faint 51862 None 1.01 \n", "65351 None 121968 None 1.47 \n", "65352 None 74829 Very Small 1.01 \n", "65353 None 105450 None 1.51 \n", "65354 None 59629 Very Small 1.13 \n", "65355 Medium Blue 61372 None 1.17 \n", "65356 None 133488 None 1.01 \n", "65357 None 132894 None 1.01 \n", "65358 Strong 122082 Very Small 1.01 \n", "65359 None 155322 None 1.00 \n", "65360 None 104247 None 1.01 \n", "65361 Faint 60384 Small 1.21 \n", "65362 Faint 80420 Very Small 1.37 \n", "65363 None 173186 None 1.01 \n", "65364 None 133200 Medium 1.33 \n", "65365 None 185328 None 1.00 \n", "65366 None 183475 None 1.00 \n", "65367 Faint 168340 None 1.01 \n", "65368 None 169873 Very Small 1.01 \n", "65369 None 120336 Very Small 1.01 \n", "65370 None 144300 Slightly Large 1.20 \n", "65371 None 130112 Very Small 1.01 \n", "65372 None 66420 None 1.01 \n", "65373 Faint 110662 None 1.01 \n", "65374 None 150621 None 1.00 \n", "65375 None 256150 None 1.00 \n", "\n", " delivery date price \n", "0 \\r\\nJul 8\\r\\n 242.0 \n", "1 \\r\\nJul 8\\r\\n 243.0 \n", "2 \\r\\nJul 12\\r\\n 276.0 \n", "3 \\r\\nJul 8\\r\\n 278.0 \n", "4 \\r\\nJul 14\\r\\n 284.0 \n", "5 \\r\\nJul 8\\r\\n 287.0 \n", "6 \\r\\nJul 8\\r\\n 289.0 \n", "7 \\r\\nJul 8\\r\\n 289.0 \n", "8 \\r\\nJul 8\\r\\n 289.0 \n", "9 \\r\\nJul 8\\r\\n 293.0 \n", "10 \\r\\nJul 14\\r\\n 294.0 \n", "11 \\r\\nJul 8\\r\\n 301.0 \n", "12 \\r\\nJul 14\\r\\n 304.0 \n", "13 \\r\\nJul 14\\r\\n 304.0 \n", "14 \\r\\nJul 14\\r\\n 320.0 \n", "15 \\r\\nJul 8\\r\\n 322.0 \n", "16 \\r\\nJul 14\\r\\n 322.0 \n", "17 \\r\\nJul 8\\r\\n 328.0 \n", "18 \\r\\nJul 8\\r\\n 332.0 \n", "19 \\r\\nJul 8\\r\\n 334.0 \n", "20 \\r\\nJul 8\\r\\n 335.0 \n", "21 \\r\\nJul 8\\r\\n 336.0 \n", "22 \\r\\nJul 8\\r\\n 336.0 \n", "23 \\r\\nJul 8\\r\\n 339.0 \n", "24 \\r\\nJul 8\\r\\n 339.0 \n", "25 \\r\\nJul 8\\r\\n 339.0 \n", "26 \\r\\nJul 8\\r\\n 340.0 \n", "27 \\r\\nJul 8\\r\\n 344.0 \n", "28 \\r\\nJul 8\\r\\n 344.0 \n", "29 \\r\\nJul 8\\r\\n 345.0 \n", "... ... ... \n", "65346 \\r\\nJul 8\\r\\n 615600.0 \n", "65347 \\r\\nJul 12\\r\\n 618498.0 \n", "65348 \\r\\nJul 12\\r\\n 622495.0 \n", "65349 \\r\\nJul 14\\r\\n 625741.0 \n", "65350 \\r\\nJul 13\\r\\n 639454.0 \n", "65351 \\r\\nJul 12\\r\\n 642772.0 \n", "65352 \\r\\nJul 8\\r\\n 654753.0 \n", "65353 \\r\\nJul 8\\r\\n 655899.0 \n", "65354 \\r\\nJul 8\\r\\n 662481.0 \n", "65355 \\r\\nJul 8\\r\\n 684911.0 \n", "65356 \\r\\nJul 8\\r\\n 699478.0 \n", "65357 \\r\\nJul 8\\r\\n 700352.0 \n", "65358 \\r\\nJul 12\\r\\n 734935.0 \n", "65359 \\r\\nJul 18\\r\\n 750205.0 \n", "65360 \\r\\nJul 12\\r\\n 784980.0 \n", "65361 \\r\\nJul 8\\r\\n 791635.0 \n", "65362 \\r\\nJul 8\\r\\n 896678.0 \n", "65363 \\r\\nJul 8\\r\\n 907494.0 \n", "65364 \\r\\nJul 8\\r\\n 965700.0 \n", "65365 \\r\\nJul 8\\r\\n 989652.0 \n", "65366 \\r\\nJul 12\\r\\n 1003607.0 \n", "65367 \\r\\nJul 12\\r\\n 1013405.0 \n", "65368 \\r\\nJul 13\\r\\n 1110971.0 \n", "65369 \\r\\nJul 8\\r\\n 1150413.0 \n", "65370 \\r\\nJul 8\\r\\n 1212120.0 \n", "65371 \\r\\nJul 8\\r\\n 1318034.0 \n", "65372 \\r\\nJul 14\\r\\n 1337035.0 \n", "65373 \\r\\nJul 12\\r\\n 1366679.0 \n", "65374 \\r\\nJul 13\\r\\n 1384207.0 \n", "65375 \\r\\nJul 12\\r\\n 2594800.0 \n", "\n", "[65376 rows x 16 columns]\n" ] } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "You should be able to see that the data consists of a bunch of rows and columns, and that, at some point in the middle, Python puts a bunch of ...'s, indicating it's not printing all the information. That's good in this case, since the data are pretty big." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "So how big are the data? We can find this out by typing" ], "metadata": {} }, { "cell_type": "code", "execution_count": 4, "source": [ "data.shape" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(65376, 16)" ] }, "metadata": {}, "execution_count": 4 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "We could have gotten the same answer by typing\n", "\n", "```python\n", "print(data.shape)\n", "```\n", "but when we just type the variable name, Python assumes we mean `print`." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "So what does this answer mean? It means that our data have something like 65,000 rows and 16 columns. Here, the convention is (rows, columns)." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Notice also that the way we got this piece of information was by typing the variable, followed by `.`, followed by the name of a property (called an \"attribute\"). Again, you can think of this variable as an object having both pieces of information (attributes) and pieces of behavior (functions or methods) tucked inside of it like a file system. The way we access those is by giving a path, except with `.` instead of `/`." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "But there's an even friendlier way to look at our data that's special to the notebook. To look at the first few rows of our data, we can type" ], "metadata": {} }, { "cell_type": "code", "execution_count": 5, "source": [ "data.head()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "0 1 PS 0.28 F F SI2 VG G 61.6 50.0 \n", "1 2 PS 0.23 G F SI1 VG G 67.5 51.0 \n", "2 3 EC 0.34 G I VS2 VG VG 71.6 65.0 \n", "3 4 MQ 0.34 G J VS1 G G 68.2 55.0 \n", "4 5 PS 0.23 G D SI1 VG VG 55.0 58.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "0 Faint 864 None 1.65 \n", "1 None 1057 None 1.46 \n", "2 Faint 812 None 1.40 \n", "3 Faint 818 None 1.52 \n", "4 None 1235 None 1.42 \n", "\n", " delivery date price \n", "0 \\r\\nJul 8\\r\\n 242.0 \n", "1 \\r\\nJul 8\\r\\n 243.0 \n", "2 \\r\\nJul 12\\r\\n 276.0 \n", "3 \\r\\nJul 8\\r\\n 278.0 \n", "4 \\r\\nJul 14\\r\\n 284.0 " ], "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", "
itemshapecaratcutcolorclaritypolishsymmetrydepthtablefluorescenceprice per caratculetlength to width ratiodelivery dateprice
01PS0.28FFSI2VGG61.650.0Faint864None1.65\\r\\nJul 8\\r\\n242.0
12PS0.23GFSI1VGG67.551.0None1057None1.46\\r\\nJul 8\\r\\n243.0
23EC0.34GIVS2VGVG71.665.0Faint812None1.40\\r\\nJul 12\\r\\n276.0
34MQ0.34GJVS1GG68.255.0Faint818None1.52\\r\\nJul 8\\r\\n278.0
45PS0.23GDSI1VGVG55.058.0None1235None1.42\\r\\nJul 14\\r\\n284.0
\n", "
" ] }, "metadata": {}, "execution_count": 5 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "This gives 5 rows by default (**note that counting starts at 0!**), but we can easily ask Python for 10:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 6, "source": [ "data.head(10)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "0 1 PS 0.28 F F SI2 VG G 61.6 50.0 \n", "1 2 PS 0.23 G F SI1 VG G 67.5 51.0 \n", "2 3 EC 0.34 G I VS2 VG VG 71.6 65.0 \n", "3 4 MQ 0.34 G J VS1 G G 68.2 55.0 \n", "4 5 PS 0.23 G D SI1 VG VG 55.0 58.0 \n", "5 6 MQ 0.23 F G VS2 VG G 71.6 55.0 \n", "6 7 RA 0.37 F I SI2 G G 79.0 76.0 \n", "7 8 EC 0.24 VG E SI1 VG VG 68.6 65.0 \n", "8 9 RD 0.24 I G SI2 VG VG 62.0 59.0 \n", "9 10 MQ 0.33 G H SI2 G G 66.7 61.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "0 Faint 864 None 1.65 \n", "1 None 1057 None 1.46 \n", "2 Faint 812 None 1.40 \n", "3 Faint 818 None 1.52 \n", "4 None 1235 None 1.42 \n", "5 None 1248 None 1.95 \n", "6 None 781 None 1.03 \n", "7 Faint 1204 None 1.34 \n", "8 None 1204 None 1.01 \n", "9 Medium 888 None 2.02 \n", "\n", " delivery date price \n", "0 \\r\\nJul 8\\r\\n 242.0 \n", "1 \\r\\nJul 8\\r\\n 243.0 \n", "2 \\r\\nJul 12\\r\\n 276.0 \n", "3 \\r\\nJul 8\\r\\n 278.0 \n", "4 \\r\\nJul 14\\r\\n 284.0 \n", "5 \\r\\nJul 8\\r\\n 287.0 \n", "6 \\r\\nJul 8\\r\\n 289.0 \n", "7 \\r\\nJul 8\\r\\n 289.0 \n", "8 \\r\\nJul 8\\r\\n 289.0 \n", "9 \\r\\nJul 8\\r\\n 293.0 " ], "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", "
itemshapecaratcutcolorclaritypolishsymmetrydepthtablefluorescenceprice per caratculetlength to width ratiodelivery dateprice
01PS0.28FFSI2VGG61.650.0Faint864None1.65\\r\\nJul 8\\r\\n242.0
12PS0.23GFSI1VGG67.551.0None1057None1.46\\r\\nJul 8\\r\\n243.0
23EC0.34GIVS2VGVG71.665.0Faint812None1.40\\r\\nJul 12\\r\\n276.0
34MQ0.34GJVS1GG68.255.0Faint818None1.52\\r\\nJul 8\\r\\n278.0
45PS0.23GDSI1VGVG55.058.0None1235None1.42\\r\\nJul 14\\r\\n284.0
56MQ0.23FGVS2VGG71.655.0None1248None1.95\\r\\nJul 8\\r\\n287.0
67RA0.37FISI2GG79.076.0None781None1.03\\r\\nJul 8\\r\\n289.0
78EC0.24VGESI1VGVG68.665.0Faint1204None1.34\\r\\nJul 8\\r\\n289.0
89RD0.24IGSI2VGVG62.059.0None1204None1.01\\r\\nJul 8\\r\\n289.0
910MQ0.33GHSI2GG66.761.0Medium888None2.02\\r\\nJul 8\\r\\n293.0
\n", "
" ] }, "metadata": {}, "execution_count": 6 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Here, `head` is a method of the variable `data` (meaning it's a function stored in the data object). In the second case, we explicitly told `head` how many rows we wanted, while in the first, the number defaulted to 5. " ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Likewise, we can ask for the last few rows of the dataset with `tail`:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 7, "source": [ "data.tail(7)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "65369 65370 RD 9.56 I F FL EX EX 60.3 60.0 \n", "65370 65371 CU 8.40 G D IF VG G 57.9 59.0 \n", "65371 65372 RD 10.13 I F IF EX EX 60.3 58.0 \n", "65372 65373 RD 20.13 I J VS1 EX EX 59.2 59.0 \n", "65373 65374 RD 12.35 I G IF EX EX 59.8 60.0 \n", "65374 65375 RD 9.19 I E IF EX EX 60.9 60.0 \n", "65375 65376 RD 10.13 I D FL EX EX 62.5 57.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "65369 None 120336 Very Small 1.01 \n", "65370 None 144300 Slightly Large 1.20 \n", "65371 None 130112 Very Small 1.01 \n", "65372 None 66420 None 1.01 \n", "65373 Faint 110662 None 1.01 \n", "65374 None 150621 None 1.00 \n", "65375 None 256150 None 1.00 \n", "\n", " delivery date price \n", "65369 \\r\\nJul 8\\r\\n 1150413.0 \n", "65370 \\r\\nJul 8\\r\\n 1212120.0 \n", "65371 \\r\\nJul 8\\r\\n 1318034.0 \n", "65372 \\r\\nJul 14\\r\\n 1337035.0 \n", "65373 \\r\\nJul 12\\r\\n 1366679.0 \n", "65374 \\r\\nJul 13\\r\\n 1384207.0 \n", "65375 \\r\\nJul 12\\r\\n 2594800.0 " ], "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", "
itemshapecaratcutcolorclaritypolishsymmetrydepthtablefluorescenceprice per caratculetlength to width ratiodelivery dateprice
6536965370RD9.56IFFLEXEX60.360.0None120336Very Small1.01\\r\\nJul 8\\r\\n1150413.0
6537065371CU8.40GDIFVGG57.959.0None144300Slightly Large1.20\\r\\nJul 8\\r\\n1212120.0
6537165372RD10.13IFIFEXEX60.358.0None130112Very Small1.01\\r\\nJul 8\\r\\n1318034.0
6537265373RD20.13IJVS1EXEX59.259.0None66420None1.01\\r\\nJul 14\\r\\n1337035.0
6537365374RD12.35IGIFEXEX59.860.0Faint110662None1.01\\r\\nJul 12\\r\\n1366679.0
6537465375RD9.19IEIFEXEX60.960.0None150621None1.00\\r\\nJul 13\\r\\n1384207.0
6537565376RD10.13IDFLEXEX62.557.0None256150None1.00\\r\\nJul 12\\r\\n2594800.0
\n", "
" ] }, "metadata": {}, "execution_count": 7 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "If you look carefully, you might notice that the rows seem to be sorted by the last item, price. The odd characters under delivery data are a result of the process used to download these data from the internet." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Finally, as a first, pass, we might just want to know some simple summary statistics of our data:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 8, "source": [ "data.describe()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item carat depth table \\\n", "count 65376.000000 65376.000000 65376.000000 65376.000000 \n", "mean 32688.500000 0.878652 63.245745 59.397770 \n", "std 18872.569936 0.783895 3.861799 4.868447 \n", "min 1.000000 0.230000 6.700000 6.000000 \n", "25% 16344.750000 0.400000 61.200000 57.000000 \n", "50% 32688.500000 0.700000 62.200000 58.000000 \n", "75% 49032.250000 1.020000 64.400000 61.000000 \n", "max 65376.000000 20.130000 80.000000 555.000000 \n", "\n", " price per carat length to width ratio price \n", "count 65376.000000 65376.000000 6.537600e+04 \n", "mean 6282.785365 1.111838 9.495346e+03 \n", "std 7198.173546 0.212317 3.394968e+04 \n", "min 781.000000 0.770000 2.420000e+02 \n", "25% 2967.000000 1.010000 1.121000e+03 \n", "50% 4150.000000 1.010000 2.899000e+03 \n", "75% 6769.000000 1.110000 6.752250e+03 \n", "max 256150.000000 3.120000 2.594800e+06 " ], "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", "
itemcaratdepthtableprice per caratlength to width ratioprice
count65376.00000065376.00000065376.00000065376.00000065376.00000065376.0000006.537600e+04
mean32688.5000000.87865263.24574559.3977706282.7853651.1118389.495346e+03
std18872.5699360.7838953.8617994.8684477198.1735460.2123173.394968e+04
min1.0000000.2300006.7000006.000000781.0000000.7700002.420000e+02
25%16344.7500000.40000061.20000057.0000002967.0000001.0100001.121000e+03
50%32688.5000000.70000062.20000058.0000004150.0000001.0100002.899000e+03
75%49032.2500001.02000064.40000061.0000006769.0000001.1100006.752250e+03
max65376.00000020.13000080.000000555.000000256150.0000003.1200002.594800e+06
\n", "
" ] }, "metadata": {}, "execution_count": 8 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# The fine art of looking things up" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "The Python ecosystem is *huge*. Nobody knows all the functions for all the libraries. This means that when you start analyzing data in earnest, you will need to learn the parts important for solving your particular problem. Initially, this will be difficult; everything will be new to you. Eventually, though, you develop a conceptual base that will be easy to add to." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "So what should you do in this case? How do we learn more about the functions we've used so far?\n", "\n", "First off, let's figure out what type of object `data` is. Every variable in Python is an object (meaning it has both information and behavior stored inside of it), and every object has a type. We can find this by using the `type` function:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 9, "source": [ "type(1)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "int" ] }, "metadata": {}, "execution_count": 9 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Here, `int` means integer, a number with no decimal part." ], "metadata": {} }, { "cell_type": "code", "execution_count": 10, "source": [ "type(1.5)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "float" ] }, "metadata": {}, "execution_count": 10 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Float is anything with a decimal point. Be aware that the precision of `float` variables is limited, and there is the potential for roundoff errors in calculations if you ever start to do serious data crunching (though most of the time you'll be fine)." ], "metadata": {} }, { "cell_type": "code", "execution_count": 11, "source": [ "type(data)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "metadata": {}, "execution_count": 11 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "So what in the world is this?\n", "\n", "Read it like so: the type of object `data` is is defined in the `pandas` module, in the `core` submodule, in the `frame` sub-submodule, and it is `DataFrame`. Again, using our filesystem analogy, the `data` variable has type `DataFrame`, and Python gives us the full path to its definition. As we will see, dataframes are a very convenient type of object in which to store our data, since this type of object carries with it very powerful behaviors (methods) that can be used to clean and analyze data. " ], "metadata": {} }, { "cell_type": "markdown", "source": [ "So if `type` tells us the type of object, how do we find out what's in it?\n", "\n", "We can do that with the `dir` command. `dir` is short for \"directory,\" and tells us the name of all the attributes (information) and methods (behaviors) associated with an object:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 12, "source": [ "dir(data)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['T',\n", " '_AXIS_ALIASES',\n", " '_AXIS_IALIASES',\n", " '_AXIS_LEN',\n", " '_AXIS_NAMES',\n", " '_AXIS_NUMBERS',\n", " '_AXIS_ORDERS',\n", " '_AXIS_REVERSED',\n", " '_AXIS_SLICEMAP',\n", " '__abs__',\n", " '__add__',\n", " '__and__',\n", " '__array__',\n", " '__array_wrap__',\n", " '__bool__',\n", " '__bytes__',\n", " '__class__',\n", " '__contains__',\n", " '__delattr__',\n", " '__delitem__',\n", " '__dict__',\n", " '__dir__',\n", " '__div__',\n", " '__doc__',\n", " '__eq__',\n", " '__finalize__',\n", " '__floordiv__',\n", " '__format__',\n", " '__ge__',\n", " '__getattr__',\n", " '__getattribute__',\n", " '__getitem__',\n", " '__getstate__',\n", " '__gt__',\n", " '__hash__',\n", " '__iadd__',\n", " '__imul__',\n", " '__init__',\n", " '__invert__',\n", " '__ipow__',\n", " '__isub__',\n", " '__iter__',\n", " '__itruediv__',\n", " '__le__',\n", " '__len__',\n", " '__lt__',\n", " '__mod__',\n", " '__module__',\n", " '__mul__',\n", " '__ne__',\n", " '__neg__',\n", " '__new__',\n", " '__nonzero__',\n", " '__or__',\n", " '__pow__',\n", " '__radd__',\n", " '__rand__',\n", " '__rdiv__',\n", " '__reduce__',\n", " '__reduce_ex__',\n", " '__repr__',\n", " '__rfloordiv__',\n", " '__rmod__',\n", " '__rmul__',\n", " '__ror__',\n", " '__round__',\n", " '__rpow__',\n", " '__rsub__',\n", " '__rtruediv__',\n", " '__rxor__',\n", " '__setattr__',\n", " '__setitem__',\n", " '__setstate__',\n", " '__sizeof__',\n", " '__str__',\n", " '__sub__',\n", " '__subclasshook__',\n", " '__truediv__',\n", " '__unicode__',\n", " '__weakref__',\n", " '__xor__',\n", " '_accessors',\n", " '_add_numeric_operations',\n", " '_add_series_only_operations',\n", " '_add_series_or_dataframe_operations',\n", " '_agg_by_level',\n", " '_align_frame',\n", " '_align_series',\n", " '_apply_broadcast',\n", " '_apply_empty_result',\n", " '_apply_raw',\n", " '_apply_standard',\n", " '_at',\n", " '_box_col_values',\n", " '_box_item_values',\n", " '_check_inplace_setting',\n", " '_check_is_chained_assignment_possible',\n", " '_check_percentile',\n", " '_check_setitem_copy',\n", " '_clear_item_cache',\n", " '_combine_const',\n", " '_combine_frame',\n", " '_combine_match_columns',\n", " '_combine_match_index',\n", " '_combine_series',\n", " '_combine_series_infer',\n", " '_compare_frame',\n", " '_compare_frame_evaluate',\n", " '_consolidate_inplace',\n", " '_construct_axes_dict',\n", " '_construct_axes_dict_for_slice',\n", " '_construct_axes_dict_from',\n", " '_construct_axes_from_arguments',\n", " '_constructor',\n", " '_constructor_expanddim',\n", " '_constructor_sliced',\n", " '_convert',\n", " '_count_level',\n", " '_create_indexer',\n", " '_dir_additions',\n", " '_dir_deletions',\n", " '_ensure_valid_index',\n", " '_expand_axes',\n", " '_flex_compare_frame',\n", " '_from_arrays',\n", " '_from_axes',\n", " '_get_agg_axis',\n", " '_get_axis',\n", " '_get_axis_name',\n", " '_get_axis_number',\n", " '_get_axis_resolvers',\n", " '_get_block_manager_axis',\n", " '_get_bool_data',\n", " '_get_cacher',\n", " '_get_index_resolvers',\n", " '_get_item_cache',\n", " '_get_numeric_data',\n", " '_get_values',\n", " '_getitem_array',\n", " '_getitem_column',\n", " '_getitem_frame',\n", " '_getitem_multilevel',\n", " '_getitem_slice',\n", " '_iat',\n", " '_iget_item_cache',\n", " '_iloc',\n", " '_indexed_same',\n", " '_info_axis',\n", " '_info_axis_name',\n", " '_info_axis_number',\n", " '_info_repr',\n", " '_init_dict',\n", " '_init_mgr',\n", " '_init_ndarray',\n", " '_internal_names',\n", " '_internal_names_set',\n", " '_is_cached',\n", " '_is_datelike_mixed_type',\n", " '_is_mixed_type',\n", " '_is_numeric_mixed_type',\n", " '_is_view',\n", " '_ix',\n", " '_ixs',\n", " '_join_compat',\n", " '_loc',\n", " '_maybe_cache_changed',\n", " '_maybe_update_cacher',\n", " '_metadata',\n", " '_needs_reindex_multi',\n", " '_nsorted',\n", " '_protect_consolidate',\n", " '_reduce',\n", " '_reindex_axes',\n", " '_reindex_axis',\n", " '_reindex_columns',\n", " '_reindex_index',\n", " '_reindex_multi',\n", " '_reindex_with_indexers',\n", " '_repr_fits_horizontal_',\n", " '_repr_fits_vertical_',\n", " '_repr_html_',\n", " '_repr_latex_',\n", " '_reset_cache',\n", " '_reset_cacher',\n", " '_sanitize_column',\n", " '_series',\n", " '_set_as_cached',\n", " '_set_axis',\n", " '_set_axis_name',\n", " '_set_is_copy',\n", " '_set_item',\n", " '_setitem_array',\n", " '_setitem_frame',\n", " '_setitem_slice',\n", " '_setup_axes',\n", " '_slice',\n", " '_stat_axis',\n", " '_stat_axis_name',\n", " '_stat_axis_number',\n", " '_typ',\n", " '_unpickle_frame_compat',\n", " '_unpickle_matrix_compat',\n", " '_update_inplace',\n", " '_validate_dtype',\n", " '_values',\n", " '_xs',\n", " 'abs',\n", " 'add',\n", " 'add_prefix',\n", " 'add_suffix',\n", " 'align',\n", " 'all',\n", " 'any',\n", " 'append',\n", " 'apply',\n", " 'applymap',\n", " 'as_blocks',\n", " 'as_matrix',\n", " 'asfreq',\n", " 'assign',\n", " 'astype',\n", " 'at',\n", " 'at_time',\n", " 'axes',\n", " 'between_time',\n", " 'bfill',\n", " 'blocks',\n", " 'bool',\n", " 'boxplot',\n", " 'carat',\n", " 'clarity',\n", " 'clip',\n", " 'clip_lower',\n", " 'clip_upper',\n", " 'color',\n", " 'columns',\n", " 'combine',\n", " 'combineAdd',\n", " 'combineMult',\n", " 'combine_first',\n", " 'compound',\n", " 'consolidate',\n", " 'convert_objects',\n", " 'copy',\n", " 'corr',\n", " 'corrwith',\n", " 'count',\n", " 'cov',\n", " 'culet',\n", " 'cummax',\n", " 'cummin',\n", " 'cumprod',\n", " 'cumsum',\n", " 'cut',\n", " 'depth',\n", " 'describe',\n", " 'diff',\n", " 'div',\n", " 'divide',\n", " 'dot',\n", " 'drop',\n", " 'drop_duplicates',\n", " 'dropna',\n", " 'dtypes',\n", " 'duplicated',\n", " 'empty',\n", " 'eq',\n", " 'equals',\n", " 'eval',\n", " 'ewm',\n", " 'expanding',\n", " 'ffill',\n", " 'fillna',\n", " 'filter',\n", " 'first',\n", " 'first_valid_index',\n", " 'floordiv',\n", " 'fluorescence',\n", " 'from_csv',\n", " 'from_dict',\n", " 'from_items',\n", " 'from_records',\n", " 'ftypes',\n", " 'ge',\n", " 'get',\n", " 'get_dtype_counts',\n", " 'get_ftype_counts',\n", " 'get_value',\n", " 'get_values',\n", " 'groupby',\n", " 'gt',\n", " 'head',\n", " 'hist',\n", " 'iat',\n", " 'icol',\n", " 'idxmax',\n", " 'idxmin',\n", " 'iget_value',\n", " 'iloc',\n", " 'index',\n", " 'info',\n", " 'insert',\n", " 'interpolate',\n", " 'irow',\n", " 'is_copy',\n", " 'isin',\n", " 'isnull',\n", " 'item',\n", " 'items',\n", " 'iteritems',\n", " 'iterkv',\n", " 'iterrows',\n", " 'itertuples',\n", " 'ix',\n", " 'join',\n", " 'keys',\n", " 'kurt',\n", " 'kurtosis',\n", " 'last',\n", " 'last_valid_index',\n", " 'le',\n", " 'loc',\n", " 'lookup',\n", " 'lt',\n", " 'mad',\n", " 'mask',\n", " 'max',\n", " 'mean',\n", " 'median',\n", " 'memory_usage',\n", " 'merge',\n", " 'min',\n", " 'mod',\n", " 'mode',\n", " 'mul',\n", " 'multiply',\n", " 'ndim',\n", " 'ne',\n", " 'nlargest',\n", " 'notnull',\n", " 'nsmallest',\n", " 'pct_change',\n", " 'pipe',\n", " 'pivot',\n", " 'pivot_table',\n", " 'plot',\n", " 'polish',\n", " 'pop',\n", " 'pow',\n", " 'price',\n", " 'prod',\n", " 'product',\n", " 'quantile',\n", " 'query',\n", " 'radd',\n", " 'rank',\n", " 'rdiv',\n", " 'reindex',\n", " 'reindex_axis',\n", " 'reindex_like',\n", " 'rename',\n", " 'rename_axis',\n", " 'reorder_levels',\n", " 'replace',\n", " 'resample',\n", " 'reset_index',\n", " 'rfloordiv',\n", " 'rmod',\n", " 'rmul',\n", " 'rolling',\n", " 'round',\n", " 'rpow',\n", " 'rsub',\n", " 'rtruediv',\n", " 'sample',\n", " 'select',\n", " 'select_dtypes',\n", " 'sem',\n", " 'set_axis',\n", " 'set_index',\n", " 'set_value',\n", " 'shape',\n", " 'shift',\n", " 'size',\n", " 'skew',\n", " 'slice_shift',\n", " 'sort',\n", " 'sort_index',\n", " 'sort_values',\n", " 'sortlevel',\n", " 'squeeze',\n", " 'stack',\n", " 'std',\n", " 'style',\n", " 'sub',\n", " 'subtract',\n", " 'sum',\n", " 'swapaxes',\n", " 'swaplevel',\n", " 'symmetry',\n", " 'table',\n", " 'tail',\n", " 'take',\n", " 'to_clipboard',\n", " 'to_csv',\n", " 'to_dense',\n", " 'to_dict',\n", " 'to_excel',\n", " 'to_gbq',\n", " 'to_hdf',\n", " 'to_html',\n", " 'to_json',\n", " 'to_latex',\n", " 'to_msgpack',\n", " 'to_panel',\n", " 'to_period',\n", " 'to_pickle',\n", " 'to_records',\n", " 'to_sparse',\n", " 'to_sql',\n", " 'to_stata',\n", " 'to_string',\n", " 'to_timestamp',\n", " 'to_wide',\n", " 'to_xarray',\n", " 'transpose',\n", " 'truediv',\n", " 'truncate',\n", " 'tshift',\n", " 'tz_convert',\n", " 'tz_localize',\n", " 'unstack',\n", " 'update',\n", " 'values',\n", " 'var',\n", " 'where',\n", " 'xs']" ] }, "metadata": {}, "execution_count": 12 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Whoa!\n", "\n", "Okay, keep in mind a few things:\n", "- One of the sayings in the Python credo is \"We're all adults here.\" Python trusts you as a programmer. Sometimes too much. This means that, in a case like this, you might get more info than you really need or can handle.\n", "- Any name in that list (and the output of this function is indeed a type of object called a list) that begins with `_` or `__` is a private variable (like files beginning with `.` in the shell). You can safely ignore these until you are much more experienced.\n", "- I don't know what half of these do, either. If I need to know, I look them up." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "How do we do that?\n", "\n", "First, IPython has some pretty spiffy things that can help us right from the shell or notebook. For instance, if I want to learn about the `sort` item in the list, I can type" ], "metadata": {} }, { "cell_type": "code", "execution_count": 13, "source": [ "data.sort?" ], "outputs": [], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "And IPython will pop up a handy (or cryptic, as you might feel at first) documentation window for the function. At the very least, we are told at the top of the page that the type of `data.sort` is an instancemethod, meaning that it's a behavior and not a piece of information. The help then goes on to tell us what inputs the function takes and what outputs it gives." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "More realistically, I would Google\n", "\n", "`DataFrame.sort python`\n", "\n", "(Remember, DataFrame is the type of the data object, and the internet doesn't know that `data` is a variable name for us. So I ask for the type.method and throw in the keyword \"python\" so Google knows what I'm talking about.)\n", "\n", "The first result that pops up should be [this](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html).\n", "\n", "Good news!\n", "- This page is much easier to read.\n", "- This page is located on the website for Pandas, the library we're using. Even if we don't understand this particular help page, there's probably a tutorial somewhere nearby that will get us started." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "As a result of this, if we look carefully, we might be able to puzzle out that if we want to sort the dataset by price per carat, we can do" ], "metadata": {} }, { "cell_type": "code", "execution_count": 14, "source": [ "data_sorted = data.sort_values(by='price per carat')" ], "outputs": [], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Notice that we have to save the output of the sort here, since the `sort` function doesn't touch the `data` variable. Instead, it returns a new data frame that we need to assign to a new variable name. In other words," ], "metadata": {} }, { "cell_type": "code", "execution_count": 15, "source": [ "data.head(10)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "0 1 PS 0.28 F F SI2 VG G 61.6 50.0 \n", "1 2 PS 0.23 G F SI1 VG G 67.5 51.0 \n", "2 3 EC 0.34 G I VS2 VG VG 71.6 65.0 \n", "3 4 MQ 0.34 G J VS1 G G 68.2 55.0 \n", "4 5 PS 0.23 G D SI1 VG VG 55.0 58.0 \n", "5 6 MQ 0.23 F G VS2 VG G 71.6 55.0 \n", "6 7 RA 0.37 F I SI2 G G 79.0 76.0 \n", "7 8 EC 0.24 VG E SI1 VG VG 68.6 65.0 \n", "8 9 RD 0.24 I G SI2 VG VG 62.0 59.0 \n", "9 10 MQ 0.33 G H SI2 G G 66.7 61.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "0 Faint 864 None 1.65 \n", "1 None 1057 None 1.46 \n", "2 Faint 812 None 1.40 \n", "3 Faint 818 None 1.52 \n", "4 None 1235 None 1.42 \n", "5 None 1248 None 1.95 \n", "6 None 781 None 1.03 \n", "7 Faint 1204 None 1.34 \n", "8 None 1204 None 1.01 \n", "9 Medium 888 None 2.02 \n", "\n", " delivery date price \n", "0 \\r\\nJul 8\\r\\n 242.0 \n", "1 \\r\\nJul 8\\r\\n 243.0 \n", "2 \\r\\nJul 12\\r\\n 276.0 \n", "3 \\r\\nJul 8\\r\\n 278.0 \n", "4 \\r\\nJul 14\\r\\n 284.0 \n", "5 \\r\\nJul 8\\r\\n 287.0 \n", "6 \\r\\nJul 8\\r\\n 289.0 \n", "7 \\r\\nJul 8\\r\\n 289.0 \n", "8 \\r\\nJul 8\\r\\n 289.0 \n", "9 \\r\\nJul 8\\r\\n 293.0 " ], "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", "
itemshapecaratcutcolorclaritypolishsymmetrydepthtablefluorescenceprice per caratculetlength to width ratiodelivery dateprice
01PS0.28FFSI2VGG61.650.0Faint864None1.65\\r\\nJul 8\\r\\n242.0
12PS0.23GFSI1VGG67.551.0None1057None1.46\\r\\nJul 8\\r\\n243.0
23EC0.34GIVS2VGVG71.665.0Faint812None1.40\\r\\nJul 12\\r\\n276.0
34MQ0.34GJVS1GG68.255.0Faint818None1.52\\r\\nJul 8\\r\\n278.0
45PS0.23GDSI1VGVG55.058.0None1235None1.42\\r\\nJul 14\\r\\n284.0
56MQ0.23FGVS2VGG71.655.0None1248None1.95\\r\\nJul 8\\r\\n287.0
67RA0.37FISI2GG79.076.0None781None1.03\\r\\nJul 8\\r\\n289.0
78EC0.24VGESI1VGVG68.665.0Faint1204None1.34\\r\\nJul 8\\r\\n289.0
89RD0.24IGSI2VGVG62.059.0None1204None1.01\\r\\nJul 8\\r\\n289.0
910MQ0.33GHSI2GG66.761.0Medium888None2.02\\r\\nJul 8\\r\\n293.0
\n", "
" ] }, "metadata": {}, "execution_count": 15 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "looks the same as before, while" ], "metadata": {} }, { "cell_type": "code", "execution_count": 16, "source": [ "data_sorted.head(10)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "6 7 RA 0.37 F I SI2 G G 79.0 76.0 \n", "2 3 EC 0.34 G I VS2 VG VG 71.6 65.0 \n", "3 4 MQ 0.34 G J VS1 G G 68.2 55.0 \n", "20 21 PS 0.39 G J VS1 G G 54.2 66.0 \n", "11 12 PS 0.35 F H SI2 G G 50.0 55.0 \n", "0 1 PS 0.28 F F SI2 VG G 61.6 50.0 \n", "9 10 MQ 0.33 G H SI2 G G 66.7 61.0 \n", "49 50 MQ 0.39 VG I SI1 G G 64.9 61.0 \n", "48 49 PS 0.39 F G SI2 G G 57.0 68.0 \n", "26 27 MQ 0.36 VG G SI2 G G 64.9 60.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "6 None 781 None 1.03 \n", "2 Faint 812 None 1.40 \n", "3 Faint 818 None 1.52 \n", "20 None 859 Slightly Large 1.37 \n", "11 None 860 Small 1.35 \n", "0 Faint 864 None 1.65 \n", "9 Medium 888 None 2.02 \n", "49 Faint 938 None 1.73 \n", "48 Faint 938 None 1.37 \n", "26 None 944 Small 1.96 \n", "\n", " delivery date price \n", "6 \\r\\nJul 8\\r\\n 289.0 \n", "2 \\r\\nJul 12\\r\\n 276.0 \n", "3 \\r\\nJul 8\\r\\n 278.0 \n", "20 \\r\\nJul 8\\r\\n 335.0 \n", "11 \\r\\nJul 8\\r\\n 301.0 \n", "0 \\r\\nJul 8\\r\\n 242.0 \n", "9 \\r\\nJul 8\\r\\n 293.0 \n", "49 \\r\\nJul 8\\r\\n 366.0 \n", "48 \\r\\nJul 8\\r\\n 366.0 \n", "26 \\r\\nJul 8\\r\\n 340.0 " ], "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", "
itemshapecaratcutcolorclaritypolishsymmetrydepthtablefluorescenceprice per caratculetlength to width ratiodelivery dateprice
67RA0.37FISI2GG79.076.0None781None1.03\\r\\nJul 8\\r\\n289.0
23EC0.34GIVS2VGVG71.665.0Faint812None1.40\\r\\nJul 12\\r\\n276.0
34MQ0.34GJVS1GG68.255.0Faint818None1.52\\r\\nJul 8\\r\\n278.0
2021PS0.39GJVS1GG54.266.0None859Slightly Large1.37\\r\\nJul 8\\r\\n335.0
1112PS0.35FHSI2GG50.055.0None860Small1.35\\r\\nJul 8\\r\\n301.0
01PS0.28FFSI2VGG61.650.0Faint864None1.65\\r\\nJul 8\\r\\n242.0
910MQ0.33GHSI2GG66.761.0Medium888None2.02\\r\\nJul 8\\r\\n293.0
4950MQ0.39VGISI1GG64.961.0Faint938None1.73\\r\\nJul 8\\r\\n366.0
4849PS0.39FGSI2GG57.068.0Faint938None1.37\\r\\nJul 8\\r\\n366.0
2627MQ0.36VGGSI2GG64.960.0None944Small1.96\\r\\nJul 8\\r\\n340.0
\n", "
" ] }, "metadata": {}, "execution_count": 16 } ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 17, "source": [ "data_sorted.tail(10)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " item shape carat cut color clarity polish symmetry depth table \\\n", "65315 65316 RD 3.01 I D FL EX EX 61.8 58.0 \n", "65370 65371 CU 8.40 G D IF VG G 57.9 59.0 \n", "65374 65375 RD 9.19 I E IF EX EX 60.9 60.0 \n", "65359 65360 RD 4.83 I D IF EX EX 61.9 55.0 \n", "65367 65368 RD 6.02 I D FL EX EX 62.8 57.0 \n", "65368 65369 RD 6.54 VG D VVS1 VG VG 58.0 64.0 \n", "65363 65364 RD 5.24 I D IF VG VG 62.6 54.0 \n", "65366 65367 RD 5.47 I D IF EX EX 62.4 54.0 \n", "65365 65366 RD 5.34 I D IF EX EX 61.6 57.0 \n", "65375 65376 RD 10.13 I D FL EX EX 62.5 57.0 \n", "\n", " fluorescence price per carat culet length to width ratio \\\n", "65315 None 143063 None 1.00 \n", "65370 None 144300 Slightly Large 1.20 \n", "65374 None 150621 None 1.00 \n", "65359 None 155322 None 1.00 \n", "65367 Faint 168340 None 1.01 \n", "65368 None 169873 Very Small 1.01 \n", "65363 None 173186 None 1.01 \n", "65366 None 183475 None 1.00 \n", "65365 None 185328 None 1.00 \n", "65375 None 256150 None 1.00 \n", "\n", " delivery date price \n", "65315 \\r\\nJul 15\\r\\n 430619.0 \n", "65370 \\r\\nJul 8\\r\\n 1212120.0 \n", "65374 \\r\\nJul 13\\r\\n 1384207.0 \n", "65359 \\r\\nJul 18\\r\\n 750205.0 \n", "65367 \\r\\nJul 12\\r\\n 1013405.0 \n", "65368 \\r\\nJul 13\\r\\n 1110971.0 \n", "65363 \\r\\nJul 8\\r\\n 907494.0 \n", "65366 \\r\\nJul 12\\r\\n 1003607.0 \n", "65365 \\r\\nJul 8\\r\\n 989652.0 \n", "65375 \\r\\nJul 12\\r\\n 2594800.0 " ], "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", "
itemshapecaratcutcolorclaritypolishsymmetrydepthtablefluorescenceprice per caratculetlength to width ratiodelivery dateprice
6531565316RD3.01IDFLEXEX61.858.0None143063None1.00\\r\\nJul 15\\r\\n430619.0
6537065371CU8.40GDIFVGG57.959.0None144300Slightly Large1.20\\r\\nJul 8\\r\\n1212120.0
6537465375RD9.19IEIFEXEX60.960.0None150621None1.00\\r\\nJul 13\\r\\n1384207.0
6535965360RD4.83IDIFEXEX61.955.0None155322None1.00\\r\\nJul 18\\r\\n750205.0
6536765368RD6.02IDFLEXEX62.857.0Faint168340None1.01\\r\\nJul 12\\r\\n1013405.0
6536865369RD6.54VGDVVS1VGVG58.064.0None169873Very Small1.01\\r\\nJul 13\\r\\n1110971.0
6536365364RD5.24IDIFVGVG62.654.0None173186None1.01\\r\\nJul 8\\r\\n907494.0
6536665367RD5.47IDIFEXEX62.454.0None183475None1.00\\r\\nJul 12\\r\\n1003607.0
6536565366RD5.34IDIFEXEX61.657.0None185328None1.00\\r\\nJul 8\\r\\n989652.0
6537565376RD10.13IDFLEXEX62.557.0None256150None1.00\\r\\nJul 12\\r\\n2594800.0
\n", "
" ] }, "metadata": {}, "execution_count": 17 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Looks like it worked!" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "# Exercises" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 1\n", "By default, the sort function sorts in ascending order (lowest to highest). Use Google-fu to figure out how to sort the data in descending order by carat." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 2\n", "What happens if we sort by shape instead? What sort order is used?\n" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "# Making the most of data frames" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "So let's get down to some real data analysis.\n", "\n", "If we want to know what the columns in our data frame are (if, for instance, there are too many to fit onscreen, or we need the list of them to manipulate), we can do" ], "metadata": {} }, { "cell_type": "code", "execution_count": 18, "source": [ "data.columns" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['item', 'shape', 'carat', 'cut', 'color', 'clarity', 'polish',\n", " 'symmetry', 'depth', 'table', 'fluorescence', 'price per carat',\n", " 'culet', 'length to width ratio', 'delivery date', 'price'],\n", " dtype='object')" ] }, "metadata": {}, "execution_count": 18 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "So we see columns is an attribute, not a method (the giveaway in this case is that we did not have to use parentheses afterward, as we would with a function/method).\n", "\n", "What type of object is this?" ], "metadata": {} }, { "cell_type": "code", "execution_count": 19, "source": [ "type(data.columns)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "pandas.indexes.base.Index" ] }, "metadata": {}, "execution_count": 19 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "And what can we do with an Index?" ], "metadata": {} }, { "cell_type": "code", "execution_count": 20, "source": [ "dir(data.columns)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['T',\n", " '__abs__',\n", " '__add__',\n", " '__and__',\n", " '__array__',\n", " '__array_priority__',\n", " '__array_wrap__',\n", " '__bool__',\n", " '__bytes__',\n", " '__class__',\n", " '__contains__',\n", " '__copy__',\n", " '__deepcopy__',\n", " '__delattr__',\n", " '__dict__',\n", " '__dir__',\n", " '__doc__',\n", " '__eq__',\n", " '__floordiv__',\n", " '__format__',\n", " '__ge__',\n", " '__getattribute__',\n", " '__getitem__',\n", " '__gt__',\n", " '__hash__',\n", " '__iadd__',\n", " '__init__',\n", " '__inv__',\n", " '__iter__',\n", " '__le__',\n", " '__len__',\n", " '__lt__',\n", " '__module__',\n", " '__mul__',\n", " '__ne__',\n", " '__neg__',\n", " '__new__',\n", " '__nonzero__',\n", " '__or__',\n", " '__pos__',\n", " '__pow__',\n", " '__radd__',\n", " '__reduce__',\n", " '__reduce_ex__',\n", " '__repr__',\n", " '__rfloordiv__',\n", " '__rmul__',\n", " '__rpow__',\n", " '__rtruediv__',\n", " '__setattr__',\n", " '__setitem__',\n", " '__setstate__',\n", " '__sizeof__',\n", " '__str__',\n", " '__sub__',\n", " '__subclasshook__',\n", " '__truediv__',\n", " '__unicode__',\n", " '__weakref__',\n", " '__xor__',\n", " '_add_comparison_methods',\n", " '_add_logical_methods',\n", " '_add_logical_methods_disabled',\n", " '_add_numeric_methods',\n", " '_add_numeric_methods_binary',\n", " '_add_numeric_methods_disabled',\n", " '_add_numeric_methods_unary',\n", " '_add_numericlike_set_methods_disabled',\n", " '_allow_datetime_index_ops',\n", " '_allow_index_ops',\n", " '_allow_period_index_ops',\n", " '_arrmap',\n", " '_assert_can_do_op',\n", " '_assert_can_do_setop',\n", " '_assert_take_fillable',\n", " '_attributes',\n", " '_box_scalars',\n", " '_can_hold_na',\n", " '_can_reindex',\n", " '_cleanup',\n", " '_coerce_scalar_to_index',\n", " '_coerce_to_ndarray',\n", " '_comparables',\n", " '_constructor',\n", " '_convert_can_do_setop',\n", " '_convert_for_op',\n", " '_convert_list_indexer',\n", " '_convert_scalar_indexer',\n", " '_convert_slice_indexer',\n", " '_convert_tolerance',\n", " '_data',\n", " '_dir_additions',\n", " '_dir_deletions',\n", " '_engine',\n", " '_engine_type',\n", " '_ensure_compat_append',\n", " '_ensure_compat_concat',\n", " '_evaluate_with_datetime_like',\n", " '_evaluate_with_timedelta_like',\n", " '_evalute_compare',\n", " '_filter_indexer_tolerance',\n", " '_format_attrs',\n", " '_format_data',\n", " '_format_native_types',\n", " '_format_space',\n", " '_format_with_header',\n", " '_formatter_func',\n", " '_get_attributes_dict',\n", " '_get_consensus_name',\n", " '_get_duplicates',\n", " '_get_fill_indexer',\n", " '_get_fill_indexer_searchsorted',\n", " '_get_level_number',\n", " '_get_names',\n", " '_get_nearest_indexer',\n", " '_groupby',\n", " '_has_complex_internals',\n", " '_id',\n", " '_infer_as_myclass',\n", " '_inner_indexer',\n", " '_invalid_indexer',\n", " '_is_numeric_dtype',\n", " '_isnan',\n", " '_join_level',\n", " '_join_monotonic',\n", " '_join_multi',\n", " '_join_non_unique',\n", " '_join_precedence',\n", " '_left_indexer',\n", " '_left_indexer_unique',\n", " '_make_str_accessor',\n", " '_maybe_cast_indexer',\n", " '_maybe_cast_slice_bound',\n", " '_maybe_update_attributes',\n", " '_mpl_repr',\n", " '_na_value',\n", " '_nan_idxs',\n", " '_outer_indexer',\n", " '_possibly_promote',\n", " '_reduce',\n", " '_reindex_non_unique',\n", " '_reset_cache',\n", " '_reset_identity',\n", " '_scalar_data_error',\n", " '_searchsorted_monotonic',\n", " '_set_names',\n", " '_shallow_copy',\n", " '_shallow_copy_with_infer',\n", " '_simple_new',\n", " '_string_data_error',\n", " '_to_embed',\n", " '_to_safe_for_reshape',\n", " '_typ',\n", " '_unpickle_compat',\n", " '_update_inplace',\n", " '_validate_for_numeric_binop',\n", " '_validate_for_numeric_unaryop',\n", " '_validate_index_level',\n", " '_validate_indexer',\n", " '_values',\n", " '_wrap_joined_index',\n", " '_wrap_union_result',\n", " 'all',\n", " 'any',\n", " 'append',\n", " 'argmax',\n", " 'argmin',\n", " 'argsort',\n", " 'asi8',\n", " 'asof',\n", " 'asof_locs',\n", " 'astype',\n", " 'base',\n", " 'copy',\n", " 'data',\n", " 'delete',\n", " 'diff',\n", " 'difference',\n", " 'drop',\n", " 'drop_duplicates',\n", " 'dtype',\n", " 'dtype_str',\n", " 'duplicated',\n", " 'equals',\n", " 'factorize',\n", " 'fillna',\n", " 'flags',\n", " 'format',\n", " 'get_duplicates',\n", " 'get_indexer',\n", " 'get_indexer_for',\n", " 'get_indexer_non_unique',\n", " 'get_level_values',\n", " 'get_loc',\n", " 'get_slice_bound',\n", " 'get_value',\n", " 'get_values',\n", " 'groupby',\n", " 'has_duplicates',\n", " 'hasnans',\n", " 'holds_integer',\n", " 'identical',\n", " 'inferred_type',\n", " 'insert',\n", " 'intersection',\n", " 'is_',\n", " 'is_all_dates',\n", " 'is_boolean',\n", " 'is_categorical',\n", " 'is_floating',\n", " 'is_integer',\n", " 'is_lexsorted_for_tuple',\n", " 'is_mixed',\n", " 'is_monotonic',\n", " 'is_monotonic_decreasing',\n", " 'is_monotonic_increasing',\n", " 'is_numeric',\n", " 'is_object',\n", " 'is_type_compatible',\n", " 'is_unique',\n", " 'isin',\n", " 'item',\n", " 'itemsize',\n", " 'join',\n", " 'map',\n", " 'max',\n", " 'memory_usage',\n", " 'min',\n", " 'name',\n", " 'names',\n", " 'nbytes',\n", " 'ndim',\n", " 'nlevels',\n", " 'nunique',\n", " 'order',\n", " 'putmask',\n", " 'ravel',\n", " 'reindex',\n", " 'rename',\n", " 'repeat',\n", " 'searchsorted',\n", " 'set_names',\n", " 'set_value',\n", " 'shape',\n", " 'shift',\n", " 'size',\n", " 'slice_indexer',\n", " 'slice_locs',\n", " 'sort',\n", " 'sort_values',\n", " 'sortlevel',\n", " 'str',\n", " 'strides',\n", " 'summary',\n", " 'sym_diff',\n", " 'symmetric_difference',\n", " 'take',\n", " 'to_datetime',\n", " 'to_native_types',\n", " 'to_series',\n", " 'tolist',\n", " 'transpose',\n", " 'union',\n", " 'unique',\n", " 'value_counts',\n", " 'values',\n", " 'view']" ] }, "metadata": {}, "execution_count": 20 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Oh, a lot.\n", "\n", "What will often be very useful to us is to get a single column out of the data frame. We can do this like so:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 21, "source": [ "data.price" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 242.0\n", "1 243.0\n", "2 276.0\n", "3 278.0\n", "4 284.0\n", "5 287.0\n", "6 289.0\n", "7 289.0\n", "8 289.0\n", "9 293.0\n", "10 294.0\n", "11 301.0\n", "12 304.0\n", "13 304.0\n", "14 320.0\n", "15 322.0\n", "16 322.0\n", "17 328.0\n", "18 332.0\n", "19 334.0\n", "20 335.0\n", "21 336.0\n", "22 336.0\n", "23 339.0\n", "24 339.0\n", "25 339.0\n", "26 340.0\n", "27 344.0\n", "28 344.0\n", "29 345.0\n", " ... \n", "65346 615600.0\n", "65347 618498.0\n", "65348 622495.0\n", "65349 625741.0\n", "65350 639454.0\n", "65351 642772.0\n", "65352 654753.0\n", "65353 655899.0\n", "65354 662481.0\n", "65355 684911.0\n", "65356 699478.0\n", "65357 700352.0\n", "65358 734935.0\n", "65359 750205.0\n", "65360 784980.0\n", "65361 791635.0\n", "65362 896678.0\n", "65363 907494.0\n", "65364 965700.0\n", "65365 989652.0\n", "65366 1003607.0\n", "65367 1013405.0\n", "65368 1110971.0\n", "65369 1150413.0\n", "65370 1212120.0\n", "65371 1318034.0\n", "65372 1337035.0\n", "65373 1366679.0\n", "65374 1384207.0\n", "65375 2594800.0\n", "Name: price, dtype: float64" ] }, "metadata": {}, "execution_count": 21 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "or" ], "metadata": {} }, { "cell_type": "code", "execution_count": 22, "source": [ "data['price']" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 242.0\n", "1 243.0\n", "2 276.0\n", "3 278.0\n", "4 284.0\n", "5 287.0\n", "6 289.0\n", "7 289.0\n", "8 289.0\n", "9 293.0\n", "10 294.0\n", "11 301.0\n", "12 304.0\n", "13 304.0\n", "14 320.0\n", "15 322.0\n", "16 322.0\n", "17 328.0\n", "18 332.0\n", "19 334.0\n", "20 335.0\n", "21 336.0\n", "22 336.0\n", "23 339.0\n", "24 339.0\n", "25 339.0\n", "26 340.0\n", "27 344.0\n", "28 344.0\n", "29 345.0\n", " ... \n", "65346 615600.0\n", "65347 618498.0\n", "65348 622495.0\n", "65349 625741.0\n", "65350 639454.0\n", "65351 642772.0\n", "65352 654753.0\n", "65353 655899.0\n", "65354 662481.0\n", "65355 684911.0\n", "65356 699478.0\n", "65357 700352.0\n", "65358 734935.0\n", "65359 750205.0\n", "65360 784980.0\n", "65361 791635.0\n", "65362 896678.0\n", "65363 907494.0\n", "65364 965700.0\n", "65365 989652.0\n", "65366 1003607.0\n", "65367 1013405.0\n", "65368 1110971.0\n", "65369 1150413.0\n", "65370 1212120.0\n", "65371 1318034.0\n", "65372 1337035.0\n", "65373 1366679.0\n", "65374 1384207.0\n", "65375 2594800.0\n", "Name: price, dtype: float64" ] }, "metadata": {}, "execution_count": 22 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "The second method (but not the first) also works when the column name has spaces:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 23, "source": [ "data['length to width ratio']" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 1.65\n", "1 1.46\n", "2 1.40\n", "3 1.52\n", "4 1.42\n", "5 1.95\n", "6 1.03\n", "7 1.34\n", "8 1.01\n", "9 2.02\n", "10 1.01\n", "11 1.35\n", "12 1.52\n", "13 1.00\n", "14 1.01\n", "15 1.11\n", "16 1.01\n", "17 1.08\n", "18 1.13\n", "19 1.15\n", "20 1.37\n", "21 1.35\n", "22 1.41\n", "23 1.09\n", "24 1.45\n", "25 1.10\n", "26 1.96\n", "27 1.30\n", "28 1.44\n", "29 1.35\n", " ... \n", "65346 1.00\n", "65347 1.47\n", "65348 1.49\n", "65349 1.59\n", "65350 1.01\n", "65351 1.47\n", "65352 1.01\n", "65353 1.51\n", "65354 1.13\n", "65355 1.17\n", "65356 1.01\n", "65357 1.01\n", "65358 1.01\n", "65359 1.00\n", "65360 1.01\n", "65361 1.21\n", "65362 1.37\n", "65363 1.01\n", "65364 1.33\n", "65365 1.00\n", "65366 1.00\n", "65367 1.01\n", "65368 1.01\n", "65369 1.01\n", "65370 1.20\n", "65371 1.01\n", "65372 1.01\n", "65373 1.01\n", "65374 1.00\n", "65375 1.00\n", "Name: length to width ratio, dtype: float64" ] }, "metadata": {}, "execution_count": 23 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Note that the result of this operation doesn't return a 1-column data frame, but a Series:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 24, "source": [ "type(data['length to width ratio'])" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "pandas.core.series.Series" ] }, "metadata": {}, "execution_count": 24 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "What you might be able to guess here is that a DataFrame is an object that (more or less) contains a bunch of Series objects named in an Index." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Finally, we can get multiple columns at once:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 25, "source": [ "data[['price', 'price per carat']]" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " price price per carat\n", "0 242.0 864\n", "1 243.0 1057\n", "2 276.0 812\n", "3 278.0 818\n", "4 284.0 1235\n", "5 287.0 1248\n", "6 289.0 781\n", "7 289.0 1204\n", "8 289.0 1204\n", "9 293.0 888\n", "10 294.0 1278\n", "11 301.0 860\n", "12 304.0 1322\n", "13 304.0 1216\n", "14 320.0 1280\n", "15 322.0 976\n", "16 322.0 1193\n", "17 328.0 1426\n", "18 332.0 1443\n", "19 334.0 1452\n", "20 335.0 859\n", "21 336.0 1461\n", "22 336.0 1018\n", "23 339.0 1474\n", "24 339.0 1059\n", "25 339.0 1059\n", "26 340.0 944\n", "27 344.0 1496\n", "28 344.0 1110\n", "29 345.0 1113\n", "... ... ...\n", "65346 615600.0 101250\n", "65347 618498.0 123700\n", "65348 622495.0 77715\n", "65349 625741.0 38295\n", "65350 639454.0 51862\n", "65351 642772.0 121968\n", "65352 654753.0 74829\n", "65353 655899.0 105450\n", "65354 662481.0 59629\n", "65355 684911.0 61372\n", "65356 699478.0 133488\n", "65357 700352.0 132894\n", "65358 734935.0 122082\n", "65359 750205.0 155322\n", "65360 784980.0 104247\n", "65361 791635.0 60384\n", "65362 896678.0 80420\n", "65363 907494.0 173186\n", "65364 965700.0 133200\n", "65365 989652.0 185328\n", "65366 1003607.0 183475\n", "65367 1013405.0 168340\n", "65368 1110971.0 169873\n", "65369 1150413.0 120336\n", "65370 1212120.0 144300\n", "65371 1318034.0 130112\n", "65372 1337035.0 66420\n", "65373 1366679.0 110662\n", "65374 1384207.0 150621\n", "65375 2594800.0 256150\n", "\n", "[65376 rows x 2 columns]" ], "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", "
priceprice per carat
0242.0864
1243.01057
2276.0812
3278.0818
4284.01235
5287.01248
6289.0781
7289.01204
8289.01204
9293.0888
10294.01278
11301.0860
12304.01322
13304.01216
14320.01280
15322.0976
16322.01193
17328.01426
18332.01443
19334.01452
20335.0859
21336.01461
22336.01018
23339.01474
24339.01059
25339.01059
26340.0944
27344.01496
28344.01110
29345.01113
.........
65346615600.0101250
65347618498.0123700
65348622495.077715
65349625741.038295
65350639454.051862
65351642772.0121968
65352654753.074829
65353655899.0105450
65354662481.059629
65355684911.061372
65356699478.0133488
65357700352.0132894
65358734935.0122082
65359750205.0155322
65360784980.0104247
65361791635.060384
65362896678.080420
65363907494.0173186
65364965700.0133200
65365989652.0185328
653661003607.0183475
653671013405.0168340
653681110971.0169873
653691150413.0120336
653701212120.0144300
653711318034.0130112
653721337035.066420
653731366679.0110662
653741384207.0150621
653752594800.0256150
\n", "

65376 rows × 2 columns

\n", "
" ] }, "metadata": {}, "execution_count": 25 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "This actually does return a data frame. Note that the expression we put between the brackets in this case was a comma-separated list of strings (things in quotes), also enclosed in brackets. This is a type of object called a list in Python:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 26, "source": [ "mylist = [1, 'a string', 'another string', 6.7, True]\n", "type(mylist)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "list" ] }, "metadata": {}, "execution_count": 26 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Clearly, lists are pretty useful for holding, well, lists. And the items in the list don't have to be of the same type. You can learn about Python lists in any basic Python intro, and we'll do more with them, but the key idea is that Python has several data types like this that we can use as *collections of other objects*. As we meet the other types, including tuples and dictionaries, we will discuss when it's best to use one or another. " ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Handily, `pandas` has some functions we can use to calculate basic statistics of our data:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 27, "source": [ "# here, let's save these outputs to variable names to make the code cleaner\n", "ppc_mean = data['price per carat'].mean()\n", "ppc_std = data['price per carat'].std()\n", "\n", "# we can concatenate strings by using +, but first we have to use the str function to convert the numbers to strings\n", "print(\"The average price per carat is \" + str(ppc_mean))\n", "print(\"The standard deviation of price per carat is \" + str(ppc_std))\n", "print(\"The coefficient of variation (std / mean) is thus \" + str(ppc_mean / ppc_std))" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "The average price per carat is 6282.785364659814\n", "The standard deviation of price per carat is 7198.173546249848\n", "The coefficient of variation (std / mean) is thus 0.8728304929426245\n" ] } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "In fact, these functions will work column-by-column where appropriate:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 28, "source": [ "data.max()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "item 65376\n", "shape RD\n", "carat 20.13\n", "cut VG\n", "color J\n", "clarity VVS2\n", "polish VG\n", "symmetry VG\n", "depth 80\n", "table 555\n", "fluorescence Very Strong Blue\n", "price per carat 256150\n", "culet Very Small\n", "length to width ratio 3.12\n", "delivery date \\r\\nJul 8\\r\\n\n", "price 2.5948e+06\n", "dtype: object" ] }, "metadata": {}, "execution_count": 28 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Finally, we might eventually want to take select subsets of our data, for which there are lots of methods described [here](http://pandas.pydata.org/pandas-docs/stable/indexing.html). \n", "\n", "For example, say we wanted to look only at diamonds between 1 and 2 carats. One of the nicest methods to select these data is to use the `query` method:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 29, "source": [ "subset = data.query('(carat >= 1) & (carat <= 2)')\n", "print(\"The mean for the whole dataset is \" + str(data['price'].mean()))\n", "print(\"The mean for the subset is \" + str(subset['price'].mean()))" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "The mean for the whole dataset is 9495.346426823298\n", "The mean for the subset is 11344.487346603253\n" ] } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Exercises" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 1:\n", "Extract the subset of data with less than 1 carat and cut equal to Very Good (VG). (Hint: the double equals `==` operator tests for equality. The normal equals sign is only for assigning values to variables.)" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 2:\n", "Extract the subset of data with color other than J. (Hint, if you have a query that would return all the rows you *don't* want, you can negate that query by putting `~` in front of it.)" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "# Plotting" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Plotting is just fun. It is also, far and away, the best method for exploring your data." ], "metadata": {} }, { "cell_type": "code", "execution_count": 30, "source": [ "# this magic makes sure our plots appear in the browser\n", "%matplotlib inline" ], "outputs": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 31, "source": [ "# let's look at some distributions of variables\n", "data['price'].plot(kind='hist')" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 31 }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Hmm. Let's fix two things:\n", "1. Let's plot the logarithm of price. That will make the scale more meaningful.\n", "2. Let's suppress the matplotlib.axes business (it's reflecting the object our plot command returns). We can do this by ending the line with a semicolon." ], "metadata": {} }, { "cell_type": "code", "execution_count": 32, "source": [ "#first, import numpy, which has the logarithm function. We'll also give it a nickname.\n", "import numpy as np\n", "\n", "# the apply method applies a function to every element of a data frame (or series in this case)\n", "# we will use this to create a new column in the data frame called log_price\n", "data['log_price'] = data['price'].apply(np.log10)\n", "data['log_price'].plot(kind='hist');" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "But we can do so much better!" ], "metadata": {} }, { "cell_type": "code", "execution_count": 33, "source": [ "#let's pull out the big guns\n", "import matplotlib.pyplot as plt\n", "\n", "data['log_price'].plot(kind='hist', bins=100)\n", "plt.xlabel('Log_10 price (dollars)')\n", "plt.ylabel('Count');" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEQCAYAAABxzUkqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAG+BJREFUeJzt3X+0XWV95/H3J0QCCEL8QS6TUILFaLBqwBKK0HL8AYIzA+iyGFsbVOxyCRRGZnWZsLqa2Dp1mKkdsBY7/iRxQASmSNAIgYZT244k4ZeJJJLMsgkki1xo5TfoEPOdP/Zzczc359xz7r73nL3POZ/XWmflOc/e5+zvfXLu+d7n2c9+tiICMzOzIqaVHYCZmfUuJxEzMyvMScTMzApzEjEzs8KcRMzMrDAnETMzK6yjSUTSDEnrJD0gaZOkZal+pqQ1kh6WdIekw3OvWSppm6Qtks7M1Z8oaaOkrZKu6mTcZmbWno4mkYj4JfDOiDgBWACcLWkhsAS4KyLeCKwFlgJIOh44H5gPnA1cI0np7b4MXBgR84B5kt7bydjNzKy1jg9nRcQLqTgDmA4EcC6wItWvAM5L5XOAGyJiT0RsB7YBCyUNAYdFxIa038rca8zMrCQdTyKSpkl6ANgN3JkSwayIGAaIiN3AkWn32cCjuZfvSnWzgZ25+p2pzszMStSNnsjeNJw1h6xX8Way3sjLdut0HGZmNvWmd+tAEfGMpDpwFjAsaVZEDKehqsfTbruAo3Mvm5PqmtXvR5ITkplZARGh1nu9XKdnZ712ZOaVpIOBM4AtwCrgo2m3C4BbU3kVsEjSgZKOBY4D1qchr6clLUwn2hfnXrOfiKjUY9myZaXH4Jj6Ky7H5Jim+lFUp3siRwErJE0jS1jfiYjVku4BbpT0cWAH2YwsImKzpBuBzcBLwEUx+tNdDFwLHASsjojbOxy7mZm10NEkEhGbgBMb1P8ceE+T13we+HyD+vuAt0x1jGZmVpyvWO+CWq1Wdgj7cUztq2Jcjqk9jqnzNJmxsCqSFP32M5mZdZokomon1q06hobmIglJDA3NLTscM+sT7okMiGxS20i7aFKzMcys/7gnYmZmXeckYmZmhTmJmJlZYU4iZmZWmJOImZkV5iRiZmaFOYmYmVlhTiJmZlaYk4iZmRXmJDKQZngJFDObEl72ZECMXfbES6CYWZ6XPTEzs65zEjEzs8KcRMzMrDAnETMzK8xJxMzMCnMS6WP5uxmamXWCp/j2sfGm9XqKr5nleYqvmZl1nZOImZkV5iRiZmaFOYmYmVlhTiIDz4sxmllxnp3Vx9qdneWZWmZWydlZkuZIWivpIUmbJP1Rql8maaek+9PjrNxrlkraJmmLpDNz9SdK2ihpq6SrOhm3mZm1p6M9EUlDwFBEPCjpUOA+4FzgQ8CzEfFXY/afD1wPnATMAe4C3hARIWkdcElEbJC0Grg6Iu5ocEz3RBL3RMysXZXsiUTE7oh4MJWfA7YAs9PmRsGeC9wQEXsiYjuwDViYktFhEbEh7bcSOK+TsZuZWWtdO7EuaS6wAFiXqi6R9KCkr0k6PNXNBh7NvWxXqpsN7MzV72Q0GZmZWUm6kkTSUNbNwGWpR3IN8PqIWADsBr7QjTjMzGxqTe/0ASRNJ0sg34qIWwEi4oncLl8FbkvlXcDRuW1zUl2z+oaWL1++r1yr1ajVaoXjNzPrR/V6nXq9Pun36fgUX0krgX+NiMtzdUMRsTuVPw2cFBG/J+l44DrgZLLhqjsZPbF+D3ApsAH4PvDFiLi9wfF8Yj3xiXUza1fRE+sd7YlIOhX4fWCTpAfIvq2uAH5P0gJgL7Ad+CRARGyWdCOwGXgJuCiXES4GrgUOAlY3SiBmZtZdvtiwj7knYmbtquQUXzMz629OImZmVpiTiJmZFeYkYmZmhTmJmJlZYU4iZmZWmJOImZkV5iRiZmaFOYmYmVlhTiJmZlaYk4iZmRXmJGJmZoU5iZiZWWFOIlYpQ0NzkYQkhobmlh2OmbXgpeD7WC8uBT825rLjMRsUXgrezMy6zknEzMwKcxIxM7PCnETMzKwwJxEzMyvMScQqbIan+5pVnKf49rF+mOJbpdjM+pmn+JqZWdc5iZiZWWFOIpbjcxBmNjFOIn0mv/bUxP2S7BxEMDy8Y4ojM7N+5CTSZ7Iv/2D0hHT1TS7xmVmZPDurzxSZkVX2bKh2Yx7k/1ezTvPsLDMz67qOJhFJcyStlfSQpE2SLk31MyWtkfSwpDskHZ57zVJJ2yRtkXRmrv5ESRslbZV0VSfjNjOz9nS6J7IHuDwi3gycAlws6U3AEuCuiHgjsBZYCiDpeOB8YD5wNnCNRgfKvwxcGBHzgHmS3tvh2M3MrIWOJpGI2B0RD6byc8AWYA5wLrAi7bYCOC+VzwFuiIg9EbEd2AYslDQEHBYRG9J+K3OvMTOzknTtnIikucAC4B5gVkQMQ5ZogCPTbrOBR3Mv25XqZgM7c/U7U52ZmZVoejcOIulQ4Gbgsoh4TtLYaTZTOu1m+fLl+8q1Wo1arTaVb29m1vPq9Tr1en3S79PxKb6SpgPfA34QEVenui1ALSKG01DV3RExX9ISICLiyrTf7cAyYMfIPql+EXB6RHyqwfE8xbcvp/geRHYxJMyadQy7d2/vSmxmg6LKU3y/AWweSSDJKuCjqXwBcGuufpGkAyUdCxwHrE9DXk9LWphOtC/OvcYGgq+mN6uijvZEJJ0K/BDYxOhl1FcA64EbgaPJehnnR8RT6TVLgQuBl8iGv9ak+rcD15L9Sbo6Ii5rckz3RPqyJ+ILD806qWhPxFes9xknETMrosrDWWZm1qecRMzMrDAnETMzK8xJxMzMCnMSMTOzwpxEzMysMCcRMzMrzEnEetCMfbfTHRqaW3YwZgPNFxv2mUG52NAXHppNLV9saGZmXeckYmZmhTmJmJlZYU4iZmZWmJOImZkV5iRiZmaFOYlYE529FmNoaO6+9zez3uXrRPrMVF4n0slrMXrxehazfubrRMzMrOucRMzMrDAnETMzK6ytJCLp1HbqzMxssLTbE/nrNuvMzGyATB9vo6RTgHcAr5N0eW7Tq4ADOhmYmZlV37hJBDgQODTtd1iu/hngg50KyszMekNb14lIOiYidnQhnknzdSK+TsTMJq7odSKteiIjZkj6CjA3/5qIeNdED2hmZv2j3SRyE/C3wNeAX3UuHKumGfuWJ5k27RD27n0BgFmzjmH37u0lxgX52KoRj9lgaXc4676IeHsX4pk0D2d1ZjhrKoaShobmMjycHxWt/rCb2aDo9LInt0m6SNJRkl498mgjqK9LGpa0MVe3TNJOSfenx1m5bUslbZO0RdKZufoTJW2UtFXSVRP6Ca0ysgQSjH7pm1mva7cn8i8NqiMiXt/idacBzwErI+KtqW4Z8GxE/NWYfecD1wMnAXOAu4A3RERIWgdcEhEbJK0Gro6IO5oc0z2RivZEuhHbIP/fm01GR0+sR8SxEw8JIuKfJB3TYFOjQM8FboiIPcB2SduAhZJ2AIdFxIa030rgPKBhErFB5vMjZt3WVhKRtLhRfUSsLHjcSyT9AXAv8J8j4mlgNvCj3D67Ut0eYGeufmeqNxvjl4z0SoaHfZ8Ss25od3bWSbnyQcC7gfvJegUTdQ3wZ2mY6nPAF4BPFHifppYvX76vXKvVqNVqU/n2lbP/CWszs/HV63Xq9fqk36fQTakkHUE29HRWG/seA9w2ck6k2TZJS8jOs1yZtt0OLAN2AHdHxPxUvwg4PSI+1eR4A3dOpNvnQap8TsTnR8yK6fZNqZ4H2j1PInLnQCQN5bZ9APhJKq8CFkk6UNKxwHHA+ojYDTwtaaGyb6HFwK0F4zYzsynU7jmR2xj9E+8AYD5wYxuvux6oAa+R9AhZz+KdkhYAe4HtwCcBImKzpBuBzcBLwEW5LsXFwLVkQ2mrI+L2duK28nmozay/tTvF9/Tc0z3AjojY2Wz/Mnk4q1pDRlWOzcxGdXQ4KyL+Afgp2Uq+M4H/N9EDmZlZ/2n3zobnA+uB3wXOB9ZJ8lLwZmYDrt3hrB8DZ0TE4+n564C7IuJtHY5vwjycVa0hoyrHZmajOj07a9pIAkn+bQKvtb6VXSEuiaGhuWUHY2YlaPdiw9sl3QF8Oz3/ELC6MyFZ7/AV4maDrtU91o8DZkXEH0v6AHBa2vQj4LpOB2dWnNfRMuuGcc+JSPoesDQiNo2pfwvwFxHxHzsc34T5nEi1zkFUOTYzG9WpcyKzxiYQgFQ3d6IHMzOz/tIqiRwxzraDpzIQMzPrPa2SyL2S/nBspaRPAPd1JiQzM+sVrc6JzAJuIbtCfSRp/CZwIPD+tDhipficSLXOO1Q5NjMbVfScSLsXG74T+I309KGIWDvRA3WLk0j5X9T7L7pYndjMrLGOJpFe4iRS/hd1VeJxEjFrX7fvJ2IlGxqau+9qcTOzsrgn0qOq/Nd+lWMzs8bcEzEzs65zEjEzs8KcRGwAeLVhs05pdxVfsx7m1YbNOsU9ETMzK8w9EZsiMzzd2GwAuSdiU2RkyMhTac0GiZOImZkV5iRiZmaFOYmYmVlhTiJmZlaYk4iZmRXmJGJmZoV1NIlI+rqkYUkbc3UzJa2R9LCkOyQdntu2VNI2SVsknZmrP1HSRklbJV3VyZit33kJFLOp1OmeyDeB946pWwLcFRFvBNYCSwEkHQ+cD8wHzgau0ejVa18GLoyIecA8SWPf06xNo9ezvPzui2ZWREeTSET8E/DkmOpzgRWpvAI4L5XPAW6IiD0RsR3YBiyUNAQcFhEb0n4rc68xM7MSlXFO5MiIGAaIiN3Akal+NvBobr9dqW42sDNXvzPVmZlZyaqwdtaUr5OxfPnyfeVarUatVpvqQ5iZ9bR6vU69Xp/0+3T89riSjgFui4i3pudbgFpEDKehqrsjYr6kJUBExJVpv9uBZcCOkX1S/SLg9Ij4VJPj+fa4LrddHoTPilk7qnx7XKXHiFXAR1P5AuDWXP0iSQdKOhY4DlifhryelrQwnWhfnHuN2SR4ppbZZHV0OEvS9UANeI2kR8h6Fv8VuEnSx8l6GecDRMRmSTcCm4GXgItyXYqLgWuBg4DVEXF7J+O2QeGbVZlNVseHs7rNw1kuFy0PwufGrJkqD2eZmVmfchIxM7PCnETMzKwwJxEzMyvMScQM8HRfs2KqcMW6WQV4uq9ZEe6JmI1jaGiueyhm43ASMdvP6NBWtlz85JeOdzKyfuUk0kPyX0TWSaP3HGmmnaSQ32eqkpFZ1fiK9R7iq9TLL498tsb+X4zUDw3NHZMkfHW89QZfsW5WAfkeR3OeCWb9w7OzzLrOM8Gsf7gnYta2GR04J+VeifU290TM2jbag3j5LXKm5j3dK7Fe5J6ImZkV5p6I2aTN8LRrG1juiZhNWuvrSsz6lZOImZkV5iRiZmaFOYmYmVlhTiJmZlaYk4iZmRXmJGJmZoU5iZhVhpdAsd7jiw3NKsNLoFjvcU/EzMwKcxIxM7PCnETMzKyw0pKIpO2SfizpAUnrU91MSWskPSzpDkmH5/ZfKmmbpC2SziwrbrPu8El26w1l9kT2ArWIOCEiFqa6JcBdEfFGYC2wFEDS8cD5wHzgbOAaedlU62ujizq+/J7tZtVSZhJRg+OfC6xI5RXAeal8DnBDROyJiO3ANmAhZmZWqjKTSAB3Stog6ROpblZEDANExG7gyFQ/G3g099pdqc7MzEpU5nUip0bEY5JeB6yR9DD735DBN2gwM6uw0pJIRDyW/n1C0nfJhqeGJc2KiGFJQ8DjafddwNG5l89JdQ0tX758X7lWq1Gr1aY2eDOzHlev16nX65N+H0V0/499SYcA0yLiOUmvBNYAnwXeDfw8Iq6U9BlgZkQsSSfWrwNOJhvGuhN4QzQIXlKj6r6QzSUY+dlcHqRyv36mrTokERETnrBUVk9kFnCLpEgxXBcRayTdC9wo6ePADrIZWUTEZkk3ApuBl4CL+jZTmJn1kFJ6Ip3knojL/Vju18+0VUfRnoivWDerPF94aNXlVXzNKs+r+1p1uSdiZmaFOYlU3NDQ3H1DGWZmVeMkUnHZukmBr7u0jM+PWLX4nIhZT/H5EasW90TMepZ7JVY+90TMepZ7JVY+90TMzKwwJxEzMyvMScTMzApzEjEzs8KcRMz6gmdqWTk8O8usL3imlpXDPREzMyvMScSs74wObR1wwCs9zGUd5eEss74zOrS1d+/oza08zGWd4J6ImZkV5iRiNjA8g8umnpNIBfkeItYZI8NcwfDwbicUmxKK6K/7VEiKXv+ZsuQx8jO47HLny73+O2OTJ4mImPBfru6JmA28xrO5PLPL2uHZWWYDr/FsLs/ssna4J2JmZoU5iZhZGzyzyxpzEqkIz8iyavPMLmvMSaQihod3MPJLalZtTig2yknEzCahcULxzK7B0VNJRNJZkn4qaaukz5Qdj5nljSaUvXtfYCLJJT+c66TTW3omiUiaBnwJeC/wZuDDkt5UblTtqdfrDevLPQ9SL+GYrdTLDqCJetkBNFAvO4AJaJ1c8sO5U9mjafa7V6YqxjQZPZNEgIXAtojYEREvATcA55YcU1uafWjKPQ9SL+GYrdTLDqCJetkBNFAvO4ApMJpcmtU3Szrt9mKq+IVdxZgmo5eSyGzg0dzznamu8v7yL69q+JeVmU1E4/Mv4/ViPvvZz3rorMN6KYlUzuOPP77vwyiJQw99XcMP5/PPP02jv6zMrKh2ezHLaDfptJNo8vWePJDpmQUYJf0WsDwizkrPlwAREVeO2a83fiAzs4opsgBjLyWRA4CHgXcDjwHrgQ9HxJZSAzMzG2A9swBjRPxK0iXAGrJhuK87gZiZlatneiJmZlY9PXdiXdIcSWslPSRpk6RLm+z3RUnbJD0oaUEV4pJ0uqSnJN2fHn/S4ZhmSFon6YEU07Im+3WtrdqJqdvtlDvutHS8VU22d/Uz1SqmEttpu6Qfp//D9U326fbv37gxldFWkg6XdJOkLel74eQG+3S7ncaNqVA7RURPPYAhYEEqH0p2nuRNY/Y5G/h+Kp8M3FORuE4HVnW5vQ5J/x4A3AMsrEBbtYqp6+2Ujvtp4H81OnYZ7dRGTGW108+AmeNsL+Mz1SqmMn73rgU+lsrTgVdVoJ1axTThduq5nkhE7I6IB1P5OWAL+18vci6wMu2zDjhc0qwKxAXZfUm7JiJeSMUZZB+aseOXZbRVq5igy+0kaQ7wPuBrTXbpeju1ERN0uZ1yxxzvu6PrbdVGTCP7dIWkVwG/HRHfBIiIPRHxzJjdutpObcYEE2ynnksieZLmAguAdWM2jb0wcRddvDBxnLgATkld1+9LOr4LsUyT9ACwG7gzIjaM2aXrbdVGTNDldgL+B/DHNL+Ap4zPVKuYoPvtRIrnTkkbJP1hg+1ltFWrmKC7bXUs8K+SvpmGhb4i6eAx+3S7ndqJCSbYTj2bRCQdCtwMXJb+8q+EFnHdB/xaRCwgWwfsu52OJyL2RsQJwBzg5C5+0Uwmpq62k6R/DwynnqQo56/7l2kzpq5/npJTI+JEsl7SxZJO69Jxx9Mqpm631XTgROBvUlwvAEs6fMxW2olpwu3Uk0lE0nSyL+pvRcStDXbZBRydez4n1ZUaV0Q8NzKUExE/AF4h6dWdjisd7xngbuCsMZtKaavxYiqhnU4FzpH0M+DbwDslrRyzT7fbqWVMZX2eIuKx9O8TwC1k69rldf0z1SqmEtpqJ/BoRNybnt9M9gWe1+12ahlTkXbqySQCfAPYHBFXN9m+ClgM+650fyoihsuOKz/eKWkh2RTrn3cqGEmvlXR4Kh8MnAH8dMxuXW2rdmLqdjtFxBUR8WsR8XpgEbA2IhaP2a2r7dROTN1up3ScQ1JvG0mvBM4EfjJmt25/plrGVMJnahh4VNK8VPVuYPOY3br9mWoZU5F26pmLDUdIOhX4fWBTGlcP4ArgGLJlUL4SEaslvU/S/wWeBz5WhbiAD0r6FPAS8CLwoQ6HdRSwQtky+tOA76S2+STltVXLmOh+OzVUcju1jIly2mkWcIuy5YWmA9dFxJqS26plTJTTVpcC10l6BdnssY9V4DM1bkwUaCdfbGhmZoX16nCWmZlVgJOImZkV5iRiZmaFOYmYmVlhTiJmZlaYk4iZmRXmJGJmZoU5iVglSXq2g+/9A0lPasw9OiTNlXSPpK2Svp2WsZnMcb6nbOXUSZG0QNJXm2z7l1bLUoy0paRjJG2abDzpvb4t6den4r2stzmJWFV18irY/wZ8pEH9lcAXImIe8BRwYdEDSFJE/IcmS21P1BXAF5tsa6edokl5XJIOGGfzl4HPtPte1r+cRKxnpL+k/z4tU32nsvttIOn1kn6k7M52f96qFxMRdwONVn5+F/C/U3kF8P4GMVwg6buS7pb0sKQ/zcX2U0kr0l/7R+d7CZIWa/TOeytS3Wsl3azsTo/rJL2jwfEOBd4SEZvS81dLukPZXSG/Sm51X0mXp/qNki5roy1/KOne9PitVH96qr8VeCitS/W9FPdGSb+b3uIfgfek5WtskLW6a5UffpTxAJ5pULcK+Egqfwy4JZVvA85P5U82em2D93rZHdyA1wBbc8/nABsbvO4CspVWjwAOAjaRrYR6DLAHOCm378+AVwPHky0yOTPVH5H+vQ54RyofTbZ459jj1YCbcs+vBv4kld8H/Cod40TgxymmV5ItQPi2fFumGDem8sHAgal8HLAh1y7Pki0HDvAB4H/mjn9YrnwHcELZnxU/yn34rwjrJaeQLYsO8C2y5dJH6m9O5eu7EMedEfFURPwC+Dtg5N4VO6LxDbbeRZYIngSIiKdS/XuAL6UFO1cBh0o6ZMxrjwKeyD3/HbLb5RIRq4EnU/1pZEn1FxHxfIrrt9O2RvcieQXwNUkbgZuA+blt6yPikVTeBJwh6fOSTouIfC/vCeDfNXhvGyA9t4qvDbR2xvML3VAqIv5N0hGSpkXEXsa/t8PYOEaePz/BuAScHBEvjfO6F8l6F82O3c7P26jdPg3sjoi3pnMfL+a27fs5ImKbpJGbPX1O0t9HxJ+nzQeNeZ0NIPdErKoafTn+H+DDqfwRsnF5gB8BH0zlRRN4/7HHuBsYGfO/AGh0wzPI/jI/Qtn9UM4D/rlJzCPP15ItsT1yfmRmql8D7Dt3IeltDY61BXhD7vkPyW45gKSzyYbVIGuL8yQdpOyeGu9P+zaKC+Bw4LFUXgw0PIku6SjgxYi4HvjvwAm5zfPY/14iNmCcRKyqDpb0iKRH07//CfgjsvsfPEj2RTryBfxp4PJU/+vA0+O9saQfAt8B3pXe+4y0aUl6n61k5xm+3uQt1pMNFz1INkx1f6pv2EOJiM3AfwH+IQ1dfSFtvwz4zXTC/Sdk53Ne/gYRDwOvSokB4M+A30kn788DHkn7PQBcC2wgS6pfiYiNTeICuAb4aIpnHs17UW8B1qf9/hT4HICkI4EXIuLxJq+zAeH7iVjPk3RwRLyYyh8CFkXEfjOrpuhYFwBvj4hLO/H+TY55GfBsRHyjW8dsJSX1pyPim2XHYuXyORHrB2+X9CWyYZsngY+XHM9U+1tGh+uq4kmyyQ024NwTsb4k6TfIvuRGPuACfhERp5QXlVn/cRIxM7PCfGLdzMwKcxIxM7PCnETMzKwwJxEzMyvMScTMzAr7/76izV7eLLwOAAAAAElFTkSuQmCC" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "What about other types of plots?" ], "metadata": {} }, { "cell_type": "code", "execution_count": 34, "source": [ "# the value_counts() method counts the number of times each value occurs in the data['color'] series\n", "data['color'].value_counts().plot(kind='bar');" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "That's a bit ugly. Let's change plot styles." ], "metadata": {} }, { "cell_type": "code", "execution_count": 35, "source": [ "plt.style.use('ggplot')" ], "outputs": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 36, "source": [ "# scatter plot the relationship between carat and price\n", "data.plot(kind='scatter', x='carat', y='price');\n", "\n", "# do the same thing, but plot y on a log scale\n", "data.plot(kind='scatter', x='carat', y='price', logy=True);" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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fX199Pb2Aql3Rd9//70t+u3idZ2bbrqJpqYmAJqamizdhxfHZrfrbvPmzYRCIRYuXJh+zU79N1h8mfahLUuZbNq0iV9++QXDMKisrGTZsmXpeUsrO3ToEFu3bsU0Terq6mx1G297ezsvvvgihmGQSCSYPXu25eNrbGykpaWFaDRKeXk5DQ0N1NbW8vLLL9PZ2UllZSUrV64cdDF6tBsstsOHD9vmujty5Ahr167liiuuwDAMDMNg6dKlVFdX26L/LhXf3r17M+pDWyYQEREZebacwhIRkZGnBCIiIllRAhERkawogYiISFaUQEREJCtKICIikhUlEBERyYoSiMgo1dTUxDPPPJPvZohckhKISB4kk8khfZ/Vi/WJvelJdJEshMNhtm7dypEjRzBNk1mzZrFo0SLeeOMNjh07hmEYTJ8+nUceeSRdDnvFihXccccd7N27lxMnTrBt2zZ27NjB7t276enpYezYsdx7773MnDmT48ePs2rVKpLJJC6XC6fTydatW/MctchASiAiGUomk6xevZpp06axZMkSHA4HP//8M36/n/b2dqZOncqZM2fYsGEDV111FQ888ACQSiClpaWsXr0an8+Hy+Vi//791NTU4Pf7+fbbb3n99dd57bXX8Pv9NDU1sWfPHp577rk8RywyOE1hiWSotbWVrq4u7rvvPtxuN0VFRVx33XWMHz+eadOm4XQ68fl8LFq0iJaWlgHn1tfXEwwGcblcANxyyy3pYnW33norVVVVttsoTOzLsvuBiORLOBxm7NixOBwD3391d3enp7V6e3tJJpOUlpYO+J4Ld5UE+Prrr9m5cycdHR1AqpR9NBod2QBEhokSiEiGKioq6OzsJJlMDkgiH374IQ6Hg40bN+L1emlubmbLli0Dzr1wUbyzs5M333yTtWvXMmXKFABWrVqV3mNDC+gy2mkKSyRD1dXVBAIBPvjgA/r6+ojH4/z000/09vbi8XjweDxEIhF27Njxtz+nt7cXwzDw+Xwkk0n27NnDr7/+mv56eXk54XCY/v7+kQ5JJCsagYhkyOFwsHr1arZs2cKjjz6KYRjcdtttLF68mE2bNvHQQw8xYcIEZs+ezc6dO9PnXTyiCIVC3H333axZswaHw8GcOXMGbOF7ww03EAqFWLZsGQ6Hg7feeitnMYoMhe7CEhGRrGgKS0REsqIEIiIiWVECERGRrCiBiIhIVpRAREQkK0ogIiKSFSUQERHJihKIiIhk5f+e78jw6rAh5QAAAABJRU5ErkJggg==" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 37, "source": [ "data.boxplot(column='log_price', by='color');\n", "data.boxplot(column='log_price', by='cut');" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEhCAYAAACXwKDgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9YVHW+B/D3MDgzgmM4mLqCLqCsP6ZVYQkR81dCumVZkbTtjcTcdi+RrWWm9dxSKzMh7WpqdTVFu2VR9th2s7qkW/kjymQwGySw1FVRxMEBbfghzLl/IOfOOIMzyMA5M+f9eh6f55wzhzOf+Trzme98z/eHShAEAUREpChBUgdARERdj8mfiEiBmPyJiBSIyZ+ISIGY/ImIFIjJn4hIgZj8yWfUajXi4+MxatQoJCQkoLCw0OfPodfrr/r48ePHsXXrVp8/b2fbvHkz5syZ43J8yZIlWLlyZZfEcPDgQXz66add8lwkPSZ/8pnQ0FAUFRWhuLgYL774IhYuXOjz51CpVFd9/OjRo3jnnXc69Bx2u71Df3+tPL22zlZcXIwdO3ZIGgN1HSZ/8hnH8YI1NTUwGAzi/vz58/H73/8eI0eORH5+PgBg+/btSElJAQCcPn0aQ4YMwdmzZ7F582bceeedmDRpEoYMGYLnnnvO7fM5XvP9998HADz11FPYs2cP4uPjsWrVKpf4Hn74YQwfPhxTpkzBbbfdhg8//BAAEB0djYULFyIhIQEffPABDh48iDFjxmDUqFFIS0tDTU0NAGDSpEkoKioCAFgsFkRHRwPAVWN+++23MXr0aMTHxyMrK0ssp02bNmHIkCFISkrC3r172yzX4uJiJCcnY8iQIXjzzTcBADNnzsQ//vEP8Zz7778fH3/8scvfLl++HCNGjEBcXByefvrpNl9DU1MTnn32WeTn5yM+Pl4sTwpgApGPqNVqIS4uThg6dKgQFhYmFBUVCYIgCNu2bRNuueUWQRAEobKyUhg4cKBw5swZQRAEISMjQ1izZo0wbdo04b333hMEQRDy8vKE/v37C+fPnxfq6uqEG264QThw4IAgCIKg1+sFQRCEDz74wO01v/zyS+H22293G98HH3wg3HbbbYIgCMKZM2eEXr16Cdu2bRMEQRCioqKE3Nxc8dwRI0YIu3fvFgRBEJ599lnhscceEwRBECZOnCjGcu7cOSE6OvqqMR8+fFi4/fbbhaamJkEQBOHhhx8W3nrrLeH06dPCwIEDBYvFIly6dEkYO3asMGfOHJeYFy9eLIwaNUpoaGgQzp07JwwYMEA4ffq08NVXXwl33nmnIAiCUFNTI8TExAjNzc1Of/vpp58KY8eOFerr6wVBEITz5897fA3uYqDAxJo/+UxISAiKiopw+PBhfPrpp8jIyAAA7NmzB/fddx8AoE+fPpg4cSL2798PAFi9ejWWLVsGnU6H9PR08VqpqakICwuDTqfD3XffjT179jg91969e9u8Zlv27NmDGTNmAAD69u2LSZMmOT1+7733AgBqa2tRU1ODm266CUBLLfvrr7/2+PodY05LS8OePXuwc+dOHDhwADfeeCPi4uKwa9cu/PLLL/j2228xadIkGAwGBAcHi8/tzvTp06HRaBAeHo6bb74Z3333HcaPH48jR47AYrFg69atSEtLQ1CQ88f5iy++wKxZs6DVagEAYWFhHl8DKUew1AFQYEpKSsK5c+dw7tw5l8cEh+ahEydOICgoCJWVlU7nXNn+7ak9XPDBFFWhoaEezwkODhbvCdTX1zs95hijIAjifmZmJpYuXep07kcffeR1zG1d94EHHsBbb72Fd999F3l5eV5dy9NrIOVgzZ98xjGZlZaWwm63Izw8HOPGjcN7770Hu92Oqqoq7N69G4mJiWhqasLs2bPx7rvvYtiwYVixYoX49wUFBbBarairq8P27dvFWnjrc7R1Tb1ejwsXLriNb+zYsdi2bRsEQUBlZSW+/PJLt+f17NkTvXr1Etvh33rrLUyYMAEAEBUVhe+//x4AXNrFr4x57NixuPnmm/HBBx+gqqoKAHD+/Hn861//wujRo/H111/j/PnzuHTp0lXb2D/66CM0NjbCYrHgq6++wo033gig5RfJf/7nf0KlUmHo0KEuf5eamopNmzahrq5OfG6g5f6Gu9eg1+tRW1vbZhwUWFjzJ5+pr69HfHy8mKC3bNkClUqFu+66C4WFhRg5ciSCgoKQm5uLPn364Pnnn8f48eORnJyMESNGIDExEdOmTQMAJCYm4u6778apU6eQkZGBuLg4AC214FmzZuHUqVOIi4tzuabBYEBQUBDi4uKQmZmJv//972J8aWlp2LVrF4xGIwYMGIA//OEPuO6668TrOtq8eTP+9re/oa6uDjExMdi0aRMA4IknnkB6ejrWr1+P2267zelvrow5Pj4eS5YsQW1tLW655RbY7XZoNBqsXbsWiYmJWLx4MZKSktCr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" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "## Challenge Question:\n", "You can see from the above above that color and cut don't seem to matter much to price. Can you think of a reason why this might be?" ], "metadata": {} }, { "cell_type": "code", "execution_count": 38, "source": [ "data.boxplot(column='carat', by='color');\n", "plt.ylim(0, 3);\n", "data.boxplot(column='carat', by='cut');\n", "plt.ylim(0, 3);" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 39, "source": [ "from pandas.plotting import scatter_matrix\n", "\n", "column_list = ['carat', 'price per carat', 'log_price']\n", "scatter_matrix(data[column_list]);" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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70/6HyiF4yYeMwzjOK/qbOJEwoUCgUBwMpQ7ppQV/pJlGUUJM1uxWIzR0VEMwyCdTp9Uo8bGxvjOd77Dxz/+8dK1ADZt2kRnZycXXnghuVwOgFwuh2maGIZR8kSKbQGQJuzqV/x6Yn7nZBP1i40E0Jic71YIBILFQrnSRGUZlba2Np5++mle/epXc/7553P77bej6/pJJcF93+fOO+/k6quvpqqqikKhgKZpyLLM3r17aW1tZenSpXR1deH7Prt27aK9vZ1IJILjOOTzebq6umhubgYgHo+XjFrRu2ltbWXfvn20tLRgWdYkD6fIhg0b2LBhw6RjmUym7L9DcGaxGCcEAsFCpqzqr2w2SxAExONxbNvmZz/7GZZlsXnzZmpra8u60W9+8xu++93vlozCu9/9bu655x4Mw6ChoYEbbrgBSZJ49NFH2bFjB7FYjI985CMYhsGuXbvYvn07uq5z4403kkqlOHz4MNu2bUOSJN73vvfR2tpKOp3mq1/9Ko7j8I53vKO0EPJEiGThwqWY7NX6evB7Dp/wfHlJM86S5jlomeBEiET9wmamRP0JjYrv+3z961/n+uuvR9MWlrBZuYiOvXApDkzy//4C59/uOuH56v+9huCSK+agZYITIYzKwuaUq79kWWbnzp2TchgCgUAgEExHWdVfmzdv5t///d9xXffEJwsEAoHgrKWsRP1//dd/MTw8zIMPPkhVVdWkn91114lDDgKBQCA4OyjLqPzN3/zNbLdDIBAIBIuAsozK+vXrZ7sdAoFAIFgElL2dcGdnJ3v27CGTyUwSlLzyyitnpWECgUAgWHiUZVQeeugh7r33Xs477zyeeeYZXvGKV7Bz504uvPDCsm80nUrxAw88wJNPPkl9fT033ngjsiyflkrx0NAQd955J47jcOWVV3Luueee2qciEAgEglOirOqvn/70p3z605/mk5/8JLqu88lPfpKPf/zjJemWciiqFN98882MjIywe/dudu/ezec//3laWlp44oknJqkU/+mf/im/+tWvAEoqxVdddRU/+clPAEoqxR/96Ee57777APiP//gP3vWud/GZz3yGH//4xyf7WQgEAoHgNCnLqIyOjrJu3Tog1NnyfZ8LLriAp556quwbTVUp7urqKuVqilv/VkKleM2aNUQiEQzDOKtVigUCgWA+KCv8lUwm6evro6GhgaVL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or8ef/xxDMNg5syZ+Hw+4vE477//PoqicPHFF2e0r9tuu43rr7+el156ibVr13L44Yfz8ccfU1RUxFe/+tWM9mVZFv/+97/ZsGEDsVgMn8/H1KlTOeqoozL2Y+mld6AAeOedd9IPwNy5c5GkzCV0HOycPvzwQ0zTzOg93LJlC88++yzxeBzbtpEkCa/Xy3nnnUdVVdV+tblu3TpWrFiB1+vF6/USj8eJx+OcffbZzJo1KyvazAUZ+/Pggw9i2zaaptHZ2UlhYSE+n4/Ozk4uv/zyA26/l5tuuin9e+4dJhsbG6msrGTJksym4B+psWLJkiXcfPPNPPbYY7hcLmbMmMHmzZupq6vju9/9bmY6sccYN9100yfafiDccsst6bZN00xvv+GGGzLe19KlS+0XXnjBrqurs7dv327X19fbL7zwgn3fffdlvK/e83rqqafshx56yF6zZo39zDPP2MuXL89oP4Od0yWXXDLg/gdyD2+88UY7HA732dbe3m7feOON+93mDTfcYCcSiT7b4vH4Ad3/TLeZCzL2Z/f7/N3vfjf9ufd3mSl+//vf2/fff7+9bt269Lbbbrsto330MlJjxQ9/+MM+//fvPxOMOfNXdXU1Dz30ELNmzUq/Ra1du5bJkydnvK+mpibuv/9+mpubMQwDl8up9aHresb7am1t5aqrruqzbfLkydx0000Z76uXjz/+OP3Gduihh5LpdbSDndNLL700LPfQHmDSPtC2oaJpGg0NDUydOjW9bcuWLWja/mdTznSbuSBjfyzLSn/+yle+kv58IPdqIM444wwMw+C1117jlVdeYd68eRltf3dGaqw48cQT+b//+z+KiopYunQp06dPZ8uWLVRXV2esjzFn/gLYtGkTGzduJBqNpk0qw6FUWltb058LCgpQVZVEIsGHH37IYYcdltG+XnzxRdavX8/06dPx+XzEYrH032eeeWZG+7rooouorKxk69atLF26FL/fj2VZXHfdddxxxx0Z62dv5zRz5syM3sPGxkZ+9atfEY1GsSwLSZIIBAIsXLiQysrK/Wqzo6OD3/3ud2zZsgXLspBlmaqqKs4880wKCwuzos1ckLE/jY2NlJeXI8u74owMw+Ddd9/lyCOPPOD2B8I0TVauXMm2bdv42te+lvH2R3KsCIfDvPfee3R2dqafnUmTJmWs/TGpVA5Wurq6qKur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n7/yyis599xzmT9//qDH/Pd//zcLFy7kyCOP5PXXXx+zSmWwNPvTpk3jrLPO2q8233zzTV555ZU9nP+f+9znOP7447OizVyQMRvYunUr11xzDU899dRen8EHHniAoqKirAtKGEnETCUHaG9vp7i4eI8fc2dnZ9oklkgksCyLQCDQZ5/+i83+/ve/89JLL6XrNyQSiawMSxxpzjzzTObPn09dXR319fWUlpayYMGCA0rlPxzO/0y3mQsyjhb//ve/Ofzww0kkEjz11FMcccQRB+VixUwjlEoOUFRURFtb2x7O9meeeQZZlrnnnnvw+XysXr2aRx99tM+xuzsF29raeOihh7j55pvToYr//d//nbYxj1UnPeyqEb5t2zY2btxIMBjkj3/84wHVCB8O5380GsXv91NRUcE777zD+vXrKS0tZe7cuft1/3JBxtHir3/9Kw888ACKojBt2jQuvfRSAL73ve/1cdz3pvfPRlPUaCCUSg5QU1NDQUEBTz/9NOeeey6yLFNfX08ikcDn8+HxeAiHw7z44ot7bSeRSCBJEsFgEMuy+Pvf/05jY2P6+7y8PNrb29OZgccShmEAztvpzTffjCzLnHLKKQdUH2Y4nP933XUXN998M08//TTRaJSjjjqKjz76iDVr1rB48eKDUsbR4gc/+MGA2+++++5BjxnOksO5gpjL5QCyLPP973+f7du3s3jxYq644gpWrVrFggULqK+v5+KLL+aOO+7g6KOP7nNc/7fCiooKzjjjDK6//nouu+wyGhsb04u0wFlfUFFRwWWXXZZ+Kxsr9K8R3suB1AhvbW3lrLPOorq6mrKyMiZPnsyZZ575icJTB+Pjjz9m0aJFHHrooZx//vm0tLQctDIKcgvhqBcIGJ4a4YM5/6dPn86ZZ565X21edNFFVFZWsnXrVpYuXYrf78eyLK677rp0gEY2yFhVVUVTU1NGZBTkFkKpCATDSFdXF3V1dUSjUXw+HzU1NbS0tBxQAEB/kskkjY2N+93m+vXraWpqwu/34/V6qampobm5ecDqnkNly5Yt6ezEvTI2NDSkfXmCgxdh/hIIhoneaLzZs2dz7LHHcuihhxIIBHjmmWcOqM3+/zRN2+82n3zySV599VVqa2t54403qKmpIRQK8fTTT++3jE8++SQvvPACL774Ij/5yU/o6urC7XYf0HkLcoex5Y0VCEaQr3/96wO+7Tc0NGRNm3V1del1SQ0NDdxzzz1ceOGF+y3fcLUpyB2EUhEIhony8nKuvfbadNqcXm699dasadOyrHS0X1VVFddccw3Lli2jqalpv2UcjjYFuYPwqQgEw0RHRwfBYHCP8GzTNPd7DUim26ytraWkpIS8vLz0NsuyWLVqFccdd9x+yTgcbQpyB6FUBAKBQJAxhKNeIBAIBBlDKBWBQCAQZAyhVAQCgUCQMYRSEQj2wkcffcR3vvOd0RZDIMgZhKNeIBDsN0uWLOH444/npJNOGm1RBFmCmKkIBINgWdZoi7BPhlPGXDh/QfYhZiqCMcWVV17J5z//eVauXMnOnTs56qijWLRoEaqqsn79epYtW8app57KSy+9xKxZszjppJNYtmwZDz74IOAUTOstjGbbNscddxzf/OY3AXjttdf4/e9/T2dnJzU1NVx22WUUFxfvIUNrayvf+ta3WLRoEc899xwAZ5xxBv/1X/8FOPU5XnjhBV599VVisRgzZ85k0aJF+P3+9LGXX345v/nNbxg3bhy33HLLHn2sXr2a5557jubmZvLy8rjkkkuYPXs2r7/+Oi+88ALhcJhQKMRZZ53FySefDDDg+V988cUsW7aM2tpaLMti6tSpXHbZZRQWFvLss8/yu9/9DlVVURSFE088MX0tBGMYWyAYQyxevNj+3ve+Z7e3t9vd3d32DTfcYD/77LO2bdv2Bx98YJ9//vn2U089Zeu6bqdSKfuDDz6w/9//+3+2bdu2aZr2NddcYz/xxBN2Mpm0dV23P/roI9u2bfvf//63ffXVV9tbt261TdO0V6xYYd9www0DytDS0mIvXLjQvu++++xkMmk3NDTYl1xyib127Vrbtm37pZdesq+//no7HA7buq7bDz30kH3vvff2Ofb++++3k8mknUql9mh/48aN9je+8Y10e+Fw2N66datt27b9n//8x25ubrZt27bXr19vX3DBBfamTZsGPf9IJGL/61//slOplB2Px+177rnH/ulPf5ru65ZbbrFfffXVA7ongoMLYf4SjDlOPfVUCgsL8fv9nHPOOfzjH/9IfyfLMgsXLkRVVTRN63NcbW0tO3fu5IILLsDlcqGqKp/61KcAp0rgl770JSZMmIAsy3zpS19i8+bNe61Lcu655+JyuaisrGT+/Pm8+eabALzyyiucf/756RT8CxYs4K233upjjlq4cCEul2sPGcGZMZ100knMmDEDcFL5T5gwAYDDDjuMcePGATBt2jRmzZrFhx9+OOj5BwIB5syZg6ZpeDwezj777D77CwT9Ebm/BGOOoqKi9OeSkhI6OjrSf4dCoUGrXra3t1NcXDxgnfLW1lYef/xxnnzyyT7bw+HwgCawgeTorcLZ1tbGXXfd1afImqqqdHZ2DnjsQHIefvjhA363Zs0afvOb37B9+3Zs2yaVSlFVVZX+vv/5p1IpHn/8cd577z2i0Si2bZNIJNIldAWC/gilIhhztLe3pz+3trZSUFAwpOOKiopoa2vDsqw9FEtxcTHnnHPOJyon29bWlp5BtLW1peUoLi7miiuuGLD2yO7FxPYmZ3Nz8x7bDcPgnnvu4aqrruLII49ElmXuvPNO7L24VX//+9+zfft2fvzjHxMKhdi8eTPf//73hVIRDIowfwnGHH/+858Jh8N0d3fz/PPPc+yxxw7puJqaGgoKCnj66adJJpPous7HH38MwMknn8zzzz+fzsQbi8V466239treihUrSKVSNDY28vrrr6eTLZ588sk888wzadNZV1cXb7/99pDP76STTuJvf/sb69atw7ZtwuEw27ZtwzAMDMMgGAwiyzJr1qzh/fff32tb8Xgcl8uF1+ulu7s7HVjQS15enigTLOiDmKkIxhzHHXccP/rRj+jo6OCoo47inHPOGdJxsizz/e9/n0cffZTFixcjSRLz5s3jU5/6FHPmzCGZTHLvvffS1taGz+dj1qxZzJ07d9D2pk+fzlVXXQXAmWeeycyZMwE47bTTANIy5uXlceyxx3LkkUcOSc6amhoWL17ME088QUtLC/n5+VxyySVMmDCBiy++mHvuuQfDMDjiiCP22ebpp5/O0qVLueSSSygsLOSMM87oo+BOO+00li9fzl/+8hdOOOEELrrooiHJKDh4ESHFgjHFlVdeyRVXXJF2Yo8GvWHBzzzzzID+GYEglxG/aIFAIBBkDKFUBGMK4VwWCIYXYf4SCAQCQcYQMxWBQCAQZAyhVAQCgUCQMYRSEQgEAkHGEEpFIBAIBBlDKBWBQCAQZAyhVAQCgUCQMf4/SMBmSHXfd8YAAAAASUVORK5CYII=" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Final thoughts:" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "There are lots and lots and lots of plotting libraries out there. \n", "- [Matplotlib](http://matplotlib.org/) is the standard (and most full-featured), but it's built to look and work like Matlab, which is not known for the prettiness of its plots. \n", "- There is an unofficial port of the excellent [ggplot2](https://ggplot2.tidyverse.org/) library from R to [Python](https://yhat.github.io/ggpy/). It lacks some features, but does follow ggplot's unique \"grammar of graphics\" approach.\n", "- [Seaborn](http://stanford.edu/~mwaskom/software/seaborn/) is what the cool kids seem to be using right now. ggplot-quality results, but with a more Python-y syntax. Focus on good-looking defaults relative to Matplotlib with less typing and swap-in stylesheets to give plots a consistent look and feel.\n", "- [Bokeh](http://bokeh.pydata.org/en/latest/) has a focus on web output and large or streaming datasets.\n", "- [plot.ly](https://plot.ly) has a focus on data sharing and collaboration. May not be best for quick and dirty data exploration, but nice for showing to colleagues.\n", "\n", "## Very important:\n", "Plotting is lots of fun to play around with, but almost no plot is going to be of publication quality without some tweaking. Once you pick a package, you will want to spend time learning how to get labels, spacing, tick marks, etc. right. All of the packages above are very powerful, but inevitably, you will want to do something that seems simple and turns out to be hard.\n", "\n", "Why not just take the plot that's easy to make and pretty it up in Adobe Illustrator? **Any plot that winds up in a paper will be revised many times in the course of revision and peer review. Learn to let the program do the hard work.** You want code that will get you 90 - 95% of the way to publication quality.\n", "\n", "Thankfully, it's very, very easy to learn how to do this. Because plotting routines present such nice visual feedback, there are lots and lots of examples on line with code that will show you how to make gorgeous plots. Here again, documentation and StackOverflow are your friends!" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "# Case Study 2: Time allocation" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Now let's practice some of what we learned by analyzing data from a very simple survey.\n", "\n", "I asked members of CCN and Neurobiology to answer the following question:\n", "![survey image](qualtrics.png)" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [ "!wget -P \"$target_dir\" \"https://people.duke.edu/~jmp33/dibs/time_alloc.csv\" # download csv to data folder\n", "\n", "# if this doesn't work, manually download `time_alloc.csv` from https://people.duke.edu/~jmp33/dibs/ \n", "# to your local machine, and upload it to `data` folder" ], "outputs": [], "metadata": {} }, { "cell_type": "code", "execution_count": 40, "source": [ "dat = pd.read_csv('data/time_alloc.csv')" ], "outputs": [], "metadata": { "collapsed": true } }, { "cell_type": "code", "execution_count": 41, "source": [ "dat.head()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Start Date End Date Progress Duration (in seconds) Finished \\\n", "0 8/30/16 10:41 8/30/16 10:43 100 82 True \n", "1 8/30/16 8:42 8/30/16 8:44 100 99 True \n", "2 8/30/16 4:47 8/30/16 4:51 100 252 True \n", "3 8/29/16 19:23 8/29/16 19:26 100 161 True \n", "4 8/29/16 18:13 8/29/16 18:15 100 105 True \n", "\n", " Recorded Date Response ID Recipient Last Name \\\n", "0 8/30/16 10:43 R_1kO0775KprWgA91 NaN \n", "1 8/30/16 8:44 R_2P4C0IepjotM86v NaN \n", "2 8/30/16 4:51 R_6gGZesX5RTFq0Mh NaN \n", "3 8/29/16 19:26 R_3iCkovXNWsaIlmc NaN \n", "4 8/29/16 18:15 R_1I5jOg0c96ZUMsH NaN \n", "\n", " Recipient First Name Recipient Email External Reference \\\n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN \n", "\n", " LocationLatitude - Location Latitude \\\n", "0 35.995407 \n", "1 52.516693 \n", "2 52.516693 \n", "3 35.946594 \n", "4 35.995407 \n", "\n", " LocationLongitude - Location Longitude \\\n", "0 -78.901901 \n", "1 13.399994 \n", "2 13.399994 \n", "3 -78.797699 \n", "4 -78.901901 \n", "\n", " DistributionChannel - Distribution Channel Q1_1 - Experimental design \\\n", "0 anonymous 5 \n", "1 anonymous 12 \n", "2 anonymous 11 \n", "3 anonymous 20 \n", "4 anonymous 40 \n", "\n", " Q1_2 - Piloting Q1_3 - Data collection Q1_4 - Data analysis \\\n", "0 5 40 30 \n", "1 4 24 38 \n", "2 10 7 59 \n", "3 10 20 20 \n", "4 25 10 10 \n", "\n", " Q1_5 - Writing results Q1_6 - Review process \n", "0 10 10 \n", "1 16 6 \n", "2 10 3 \n", "3 20 10 \n", "4 10 5 " ], "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", "
Start DateEnd DateProgressDuration (in seconds)FinishedRecorded DateResponse IDRecipient Last NameRecipient First NameRecipient EmailExternal ReferenceLocationLatitude - Location LatitudeLocationLongitude - Location LongitudeDistributionChannel - Distribution ChannelQ1_1 - Experimental designQ1_2 - PilotingQ1_3 - Data collectionQ1_4 - Data analysisQ1_5 - Writing resultsQ1_6 - Review process
08/30/16 10:418/30/16 10:4310082True8/30/16 10:43R_1kO0775KprWgA91NaNNaNNaNNaN35.995407-78.901901anonymous5540301010
18/30/16 8:428/30/16 8:4410099True8/30/16 8:44R_2P4C0IepjotM86vNaNNaNNaNNaN52.51669313.399994anonymous1242438166
28/30/16 4:478/30/16 4:51100252True8/30/16 4:51R_6gGZesX5RTFq0MhNaNNaNNaNNaN52.51669313.399994anonymous1110759103
38/29/16 19:238/29/16 19:26100161True8/29/16 19:26R_3iCkovXNWsaIlmcNaNNaNNaNNaN35.946594-78.797699anonymous201020202010
48/29/16 18:138/29/16 18:15100105True8/29/16 18:15R_1I5jOg0c96ZUMsHNaNNaNNaNNaN35.995407-78.901901anonymous40251010105
\n", "
" ] }, "metadata": {}, "execution_count": 41 } ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 42, "source": [ "dat.columns" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['Start Date', 'End Date', 'Progress', 'Duration (in seconds)',\n", " 'Finished', 'Recorded Date', 'Response ID', 'Recipient Last Name',\n", " 'Recipient First Name', 'Recipient Email', 'External Reference',\n", " 'LocationLatitude - Location Latitude',\n", " 'LocationLongitude - Location Longitude',\n", " 'DistributionChannel - Distribution Channel',\n", " 'Q1_1 - Experimental design', 'Q1_2 - Piloting',\n", " 'Q1_3 - Data collection', 'Q1_4 - Data analysis',\n", " 'Q1_5 - Writing results', 'Q1_6 - Review process'],\n", " dtype='object')" ] }, "metadata": {}, "execution_count": 42 } ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 43, "source": [ "dat.shape" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(96, 20)" ] }, "metadata": {}, "execution_count": 43 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Let's just pull out the data we care about, the columns that start with ```'Q1_'```:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 44, "source": [ "cols_to_extract = [c for c in dat.columns if 'Q1_' in c]\n", "print(cols_to_extract)" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "['Q1_1 - Experimental design', 'Q1_2 - Piloting', 'Q1_3 - Data collection', 'Q1_4 - Data analysis', 'Q1_5 - Writing results', 'Q1_6 - Review process']\n" ] } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Now we want to shorten the column names to just the descriptive part:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 45, "source": [ "col_names = [n.split(' - ')[-1] for n in cols_to_extract]\n", "print(col_names)" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "['Experimental design', 'Piloting', 'Data collection', 'Data analysis', 'Writing results', 'Review process']\n" ] } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Finally, make a reduced dataset in which we drop the first row and get the columns we want. Set the column name to the \n", "description we extracted:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 46, "source": [ "dat_red = dat[cols_to_extract]\n", "dat_red.columns = col_names\n", "dat_red.head()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Experimental design Piloting Data collection Data analysis \\\n", "0 5 5 40 30 \n", "1 12 4 24 38 \n", "2 11 10 7 59 \n", "3 20 10 20 20 \n", "4 40 25 10 10 \n", "\n", " Writing results Review process \n", "0 10 10 \n", "1 16 6 \n", "2 10 3 \n", "3 20 10 \n", "4 10 5 " ], "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", "
Experimental designPilotingData collectionData analysisWriting resultsReview process
05540301010
11242438166
21110759103
3201020202010
440251010105
\n", "
" ] }, "metadata": {}, "execution_count": 46 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Now, we can figure out the average percent time allocated to each aspect of a project:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 47, "source": [ "dat_red.mean()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Experimental design 14.500000\n", "Piloting 10.729167\n", "Data collection 25.239583\n", "Data analysis 26.135417\n", "Writing results 14.197917\n", "Review process 9.197917\n", "dtype: float64" ] }, "metadata": {}, "execution_count": 47 } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "And we can visualize this with a box plot:" ], "metadata": {} }, { "cell_type": "code", "execution_count": 48, "source": [ "import seaborn as sns" ], "outputs": [], "metadata": { "collapsed": true } }, { "cell_type": "code", "execution_count": 49, "source": [ "plt.figure(figsize=(10, 5))\n", "sns.boxplot(data=dat_red)" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 49 }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "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2lVa4//93//pxRdfVE5OjkJCQvTiiy8qPDxcP/74o2bMmKH09HT5+flp0aJFF9UZFRWlFStWaOnSpcrMzNS0adN04sQJBQcHa/bs2erSpYvH99e6fg8efvhhnT59WgUFBZowYYLGjRsnqeRzMWHCBO3atUtBQUH6+9//rtDQUH300UdVti0Oh0MjR47Utm3b5Ofnp+zsbI0aNUrbtm3TypUr9d5778nf318RERH661//qsTERNdnaPPmzfr73/8uPz8/tWjRQu+8806dbdfevXu72ttvvvlGXbp0UWpqqrKystSsWTN9++236tatm/bv369FixapZcuW+u6777RlyxZXm1HV/lTVfvPqq69q48aNCgsLU7t27XT11VfrvvvuK1df6XEkKSlJffv2VVxcnObMmaNjx46pqKhIkydP1qBBg3Ts2DHFx8erqKhITqdTixcvlp+fnx544AFt3LhRkrRixQrl5ORo8uTJruW/8847+vnnnzVhwgSFhITojTfeqLBNrwu9evVytb+StHz5cm3evFmFhYW67bbbNHnyZP31r39Vu3btNH58yWzmS5Yskc1mU3R0tOu1OZ1OvfTSSzpw4IAKCgo0fvx4xcTEaPbs2brppps0cOBAPfzww2rdurWef/55rVmzRidOnNCUKVPK1VPZMf6ee+5RVFSUDh48qDvuuEO33XZbhW1TWlqaZsyYoRMnTsjHx0czZ85Ur169LunY+fbbb1/02XCb8YCoqCgzevRoM2rUKDN69Gjz4YcfGmOM+eyzz8xdd91lNm3aZP70pz+5Hh8ZGWk++OADY4wxS5YsMXPmzDHGGHPvvfeaH374wRhjzJdffmkmTJhgjDHmqaeeMpMmTXI9f+3ata7nPPXUU+bxxx83xhizfft206dPH/PNN98YY4yx2+0mKSnJpKenm/Hjx5vc3FxjjDEJCQnm1VdfNcYYM3DgQPPuu+8aY4xZuXKleeaZZ4wxxixevNisWLHCtc7z58+7bq9evdq8+OKLF9VS1pw5c1zr2LVrl+natavJyMgwx44dM5MmTTJFRUXGGGNmzpxp1q1bZw4fPmzuu+8+1/OzsrJcr2/r1q0mPz/f3HzzzSYlJcUYY8zjjz/u2iaLFy82v//9701hYaFJT0831157rWv5dalXr17GGGMKCwvNgw8+aFatWmWMMaZ3797GGGNOnjxp7rjjDmOMMStWrDDTpk0zxhhz/Phxc8stt5j8/PyLtt+F7+2jjz5qjDHm2LFj5rbbbjPGGLN582YTGxtrjDEmNTXV9OvXz2zdurWuX67bSrdHWf369TNpaWkmLy/P5OfnG2OM+f77782YMWOMMcbs27ev3D5f2ePK+uabb8yQIUPMuXPnjDHGZGZmGmOMmTRpklm3bp0xxpj333/fPPTQQ8aY8vt46X5WWFh4BDzqAAANb0lEQVRo7rrrLpOenm6MMWbTpk0mPj7eGGPMuHHjzPbt240xxuTn55u8vLyL6iz795w5c8ySJUuMMcb861//MqNGjXKtt7731/p6D4z5Zbvn5eWZO+64w/V+REZGml27dhljjJk/f7557bXXjDE1a1vi4+Nd2/69994z8+bNM8YYc+ONN5qCggJjzC9tRtnn3XHHHebMmTPl/r8uDR482Jw6dcqsWrXKrFq1yixatMjs3r3bfP7552b8+PHGmJLt2qtXL1dbZswv709V+1Nl+82XX35pRo8ebQoKCkx2draJjo4u13aXuvA48vLLL5sNGzYYY0reg+joaJObm2vmzJljNm7caIwpadvy8/PLtWXGGLN8+XKzePFi13JL25+BAwe63u/K2nSrlLa/RUVFJi4uznzyySfGGGP27Nljpk+fbowxxul0mkmTJpkDBw6YI0eOmLvvvtv1/GHDhpnTp0+Xe23vvfeea7/Mz883Y8aMMSdPnjSbNm0y8+fPN8YYM3bsWHPXXXe5XvuePXsuqq2yY/zdd99tZs2a5XpcZW3TlClTzFtvveV6DVlZWZd87Kzos+Euj/RY/epXv1JiYuJF9w8YMECbN2/WrFmzXElfKplwdOjQoZKkkSNHKi4uTjk5OTp06JAeffRRV+9OUVGR6zm33357pesfOHCgJKlLly4KDw9XRESEJOm3v/2tUlJSdPr0aR07dkx/+MMfZIxRUVGRevfu7Xr+bbfdJqmk23n79u0VruPUqVOaMmWKfv75ZxUVFaljx45VbpN///vfrlMNN998s1q2bClJ2rt3r44cOaKxY8fKGKP8/HyFhYVp4MCBOnnypJ577jndfPPNuvHGG8st79tvv1WnTp3061//WpI0fPhwrV692vX/t9xyi/z9/RUSEqLw8HCdPXtWbdu2rbLG2srPz5fdbpck9e3bV3feeWelj/38889d3y6vvPJKdejQQd9//32167j11lslSVdddZXS0tIkSQcPHnTtD+Hh4erfv39tXoZHlO7jhYWFmj17tpKSkuTn56cffvihwsfX5HF79+7V7bffrlatWkmSa5/74osv9Oqrr0qSRo0apZdeeqnSur777jt98803rsmAnU6nLrvsMjkcDp05c8Z1xYXAwMBqX+Pnn3+uxYsXS5Kuu+46ZWZmyuFwSPLM/nqhungPpJLTQaXtyOnTp/XDDz+oR48eCgwM1M033yxJ+t3vfucaO1mTtmXs2LFavny5Bg8erLVr17rGHXXt2lVTp07Vrbfe6vqslNW3b1899dRTGjp0qKudq0u9e/fWwYMHdejQId133306ffq0Dh48qBYtWpQ7DdijRw9XW3YpKtpvDh06pMGDBysgIEABAQGu40FFyh5H9uzZo507d7ou1VZYWKiffvpJvXr10tKlS3Xq1ClFR0fr8ssvv6QaS/erTp06Vdmm11Zp+3v69GlFRETohhtucL2uTz/9VHa7XcYY5ebm6ocfftCdd96p9PR0paamKi0tTa1atVLbtm2VkpLiWuaePXv09ddfa8uWLZJKzjz98MMP6tu3r9566y0dP35cEREROn/+vFJTU/XFF1+UG0dXqqJjfKlhw4a5blfWNu3du1fz58+XVHI6vHnz5lq/fv0lHTur+2xcCq+6CLMxRsePH1dwcLDOnTunyy67rMLH+fj4yOl0qmXLlhUGNEkKDg6udD2ljbyvr2+5Bt/X11fFxcXy9fXVDTfcUGlXYNnnlw1zZc2ZM0cTJ07ULbfcov3791c7PqOysRHGGNntdj322GMX/d/69eu1Z88erVq1Slu2bLmkQZsVve66VlmgrglTw3lsy76umj7H2504cUJ+fn4KDQ3VkiVLFB4ero0bN6q4uFg9e/as8DlvvvlmjR5XkUsZp2OM0W9/+1utWrWq3P0Oh8PtcYIV8cT+WlZdvQf79+/X3r179b//+78KDAzUPffc4xrM7O//S/Ps5+fnamtq0rb06dNHs2fP1v79++V0Ol1XvkhISNCBAwe0c+dOLV269KIxYTNnztRXX32lXbt2acyYMUpMTHQF77pQGqy+/vprdenSRe3atdMbb7yhFi1aaMyYMa7HBQUFubX82u43Fx5HFi9erCuuuKLcfVdeeaV69uypXbt2KTY2VrNnz9YVV1whp9Pp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" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 50, "source": [ "plt.figure(figsize=(10, 5))\n", "sns.violinplot(data=dat_red)\n", "plt.ylim([0, 100])" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(0, 100)" ] }, "metadata": {}, "execution_count": 50 }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAE7CAYAAAAfJ88GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Wl0XNWdLvznDDWrNJasyTYGG7AxNoMBY0PCFEITmrfj7pVe6/3SA9wmrHVvp9OddN8bbt+k02+H5CY07SRNYjshIaEJhME2YAaDzRiDGYzxLNmWNc+zqlRz1Xk/nDqlkpCsGk7VUZ16fl+QSqo620Kqeuq//3tvQVEUBURERESUM9HoARARERGZBYMVERERkU4YrIiIiIh0wmBFREREpBMGKyIiIiKdMFgRERER6WTBYPXAAw9g8+bNuPvuu5O3TUxM4J577sEdd9yBe++9F16vN/m17du344tf/CLuvPNO/OEPf8jPqImIiIgWoQWD1Z/+6Z/i0UcfnXHbjh07sGnTJuzduxcbN27E9u3bAQBnz57FK6+8gpdffhm/+MUv8N3vfhfcJouIiIhKxYLB6pprrkF5efmM2/bv348tW7YAALZs2YJ9+/YBAN544w186UtfgizLWLp0KS644AIcPXo0D8MmIiIiWnyy6rEaHR2Fx+MBANTW1mJ0dBQAMDAwgIaGhuT31dXVYWBgQIdhEhERES1+ujSvC4Kgx8MQERERFbWsglVNTQ2Gh4cBAENDQ6iurgagVqj6+vqS39ff34+6uroFHy8ajWUzDEP95je/wd133427774b7e3tRg+HiIiIFgE5nW+a3YB+6623YufOnbjvvvuwa9cu3Hbbbcnbv/nNb+Kv/uqvMDAwgM7OTqxfv37Bxx8b82cxdGP5/eHkx2NjU3C5vOf5biIiIjKL2lr3vF9bMFh94xvfwAcffIDx8XHcfPPN+Nu//Vvcd999+Lu/+zs899xzaGpqwtatWwEAq1atwp133om77roLsizjO9/5jmmnCVP/WYLA7cCIiIgIEJRFsB/C0FDxVXt27nwae/bsBgD827/9CI2NTQaPiIiIiArhfBUrllqyJIrTPzqzVuWIiIgoMwxWWUoNVqLIYEVEREQMVllLDVaSlNYaACIiIjI5BqsszaxY8cdIREREDFZZE0Up+bEkSef5TiIiIioVDFZZSg1TDFZEREQEMFhlTZYZrIiIiGgmBqsspTasp04LEhERUelisMpSapVKlrkqkIiIiBissjazYsUfIxERETFYZS21x4o7rxMRERHAYJU1NqwTERHRbAxWWWKwIiIiotkYrLLEY2yIiIhoNgarLHElIBEREc3GYJUlrgQkIiKi2ZgOssQeKyIiIpqNwSpLDFZEREQ0G4NVlniMDREREc3GYJUl9lgRERHRbEwHWWKwIiIiotmYDrLEYEVERESzMR1kicGKiIiIZmM6yBKDFREREc3GdJAlQRCMHgIREREtMgxWWWKwIiIiotkYrIiIiIh0wmBFREREpBMGqywpimL0EIiIiGiRYbAiIiIi0gmDVZbYvE5ERESzMVgRERER6YTBioiIiEgnDFZEREREOmGwIiIiItIJgxURERGRThisssZVgURERDQTgxURERGRThisiIiIiHTCYEVERESkEwYrIiIiIp0wWGWJJ9oQERHRbAxWRERERDphsMqSohg9AiIiIlpsGKyIiIiIdMJgRURERKQTBisiIiIinci53Pmxxx7Ds88+C0EQcMkll+D73/8+AoEA/v7v/x49PT1YunQptm7dCrfbrdd4iYiIiBatrCtWAwMDePzxx7Fz5068+OKLiMVieOmll7Bjxw5s2rQJe/fuxcaNG7F9+3Y9x0tERES0aOU0FRiPxxEIBBCNRhEMBlFXV4f9+/djy5YtAIAtW7Zg3759ugyUiIiIaLHLeiqwrq4Of/3Xf42bb74ZDocDN9xwAzZv3oyRkRF4PB4AQG1tLUZHR3UbLBEREdFilnXFanJyEvv378ebb76Jd999F4FAAC+88AKEWVuSz/6ciIiIyKyyrli99957WLZsGSorKwEAX/jCF3D48GHU1NRgeHgYHo8HQ0NDqK6uXvCxqqqckGUp26EYQhTDyY9ra9mcT0RERDkEq8bGRhw5cgShUAhWqxUHDx7EunXr4HQ6sXPnTtx3333YtWsXbrvttgUfa2zMn+0wDDM2NpX8eGjIa+BIiIiIqJDOV1DJOlitX78ed9xxB7785S9DlmVcdtll+PM//3NMTU3h61//Op577jk0NTVh69at2V6CiIiIqKgIimL8qXfFWPEZGxvDN77x3wEAv/rV7wweDRERERXK+SpW3HmdiIiISCcMVkREREQ6YbAiIiIi0gmDFREREZFOGKyIiIiIdMJgRUTnFQj4cfp0MxbBAmIiokWPwYqIzuuxx36JH/zgX9HcfNLooRARLXoMVkR0Xh99dBAAMDg4YPBIiIgWPwYrIkoLpwKJiBbGYEVERESkEwYrIiIiIp0wWBERERHphMGKiIiISCcMVkREREQ6YbAiIiIi0gmDFRGlJRaLGT0EIqJFj8GKiNISi0WNHgIR0aLHYEVEaYlEGKyIiBbCYEVEaYlEwkYPgYho0WOwIqK0RKOsWBERLYTBiojSEolEjB4CEdGix2BFRGnhVCAR0cIYrIhoXoqiJD8OhxmsiIgWwmBFRPNK3bsqFAoZOBIiouLAYEVE8wqFgsmPw2EGKyKihTBYEdG8UqtUrFgRES2MwYqI5jUzWAXP852kN25vQVScGKyIaF6pYYoVq8J56aUX8D/++39DX1+P0UMhogwxWBHRvFLDVDDIilWhPPfcUwhHwmhpaTZ6KESUIQYrIppXIBBIfsxgRUS0MAYrIppXapgKhYIz9rUiIqLPYrAionkFg9MVK0VRWLUqMEEQjB4CEWWIwYqI5hUI+AEAFqgv8AxWhcUKIVHxYbAionlpPVYuUUx87jdyOEREix6DFRHNS5sKdCeDVeB8305EVPIYrIhoXlqQKmPFiogoLQxWRDQvv18NUmWiBIDBqtAUJW70EIgoQwxWWWNTKZmfFqTKOBVoiGg0ZvQQiChDDFZENC+/3w+LIMCWWPavVbCoMKLRiNFDIKIMMVhljfvLkPkFAn5YBQE2gT1WRmDFiqj4MFgR0bz8/ilYIcDKipUhYrGo0UMgogwxWGWNPVZkboqiIBAIwCqkBqspg0dVWiIRTgUSFRsGKyKaUzgcQjwehy2lx4rN64XFYEVUfBisiGhO2rQfK1bGYfM6UfFhsCKiOU0HKxFCIlyxYlVY0Sh7rIiKDYMVEc1JWwFoE9VqlVUQWLEqgHh8elPQcDhs4EiIKBsMVkQ0p9SpQO2/Aa4KzLvUvir2WBEVn5yCldfrxde+9jXceeeduOuuu3DkyBFMTEzgnnvuwR133IF7770XXq9Xr7ESUQHNGayCASgKV8TmUyQSnvNjIioOOQWr733ve7jpppvwyiuv4Pnnn8dFF12EHTt2YNOmTdi7dy82btyI7du36zVWIiogbSpQC1Y2QYCiKAgGg0YOy/RSp/84FUhUfLIOVj6fDx9//DH+7M/+DAAgyzLcbjf279+PLVu2AAC2bNmCffv26TPSRYbv2snskj1WiV3Xrdx9vSBYsSIqbnK2d+zu7kZVVRW+9a1vobm5GZdffjkeeOABjIyMwOPxAABqa2sxOjqq22CJqHBmV6ys3MuqIMLhyJwfE1FxyDpYRaNRnDx5Et/+9rexbt06PPjgg9ixYwcEYeYZerM/n0tVlROyLGU7FEPE49Pv2mtr3QaOhCg/FEVd6j87WNls/J3Pp5GR6efCWCzCnzVRkck6WNXX16O+vh7r1q0DAHzxi1/EL37xC9TU1GB4eBgejwdDQ0Oorq5e8LHGxopvamF4eLopf2iIDfpkPmNjkwBSglXi4PHe3mF4PPydz5fBwfHkx35/gM8vRIvQ+d7wZN1j5fF40NDQgLa2NgDAwYMHsWrVKtx6663YuXMnAGDXrl247bbbsr3EoqYo8YW/iaiIJacCMXsqsPjeCBWTUCiY8nHIwJEQUTayrlgBwD//8z/jm9/8JqLRKJYtW4bvf//7iMVi+PrXv47nnnsOTU1N2Lp1q15jXVRiMQYrMjetl8rCHquCCganw1Q4HIKiKGm1VBDR4pBTsFq9ejWee+65z9z+2GOP5fKwRSEejxk9BKK8CgQCsAgCxM8EK1as8ikYnA6uiqIgHA7BZrMbOCIiygR3Xs9SLMZgReYWDAaSYQqY3m6B+1jll/bzFfjzLqj9+/fiG9/4HxgY6Dd6KFTkGKyyFI0yWJG5BQL+ZH8VMD0lyKnA/NIqVjaLC8D0DviUX0888RuMjY3i1KkTRg+FihyDVZZiMZ46T+amTQVqtOpV6lQV6S95lJBVDVaceiUqLgxWWeJUIJlZJBJBNBqdNRXIYFUIfv8UAMBudc/4nIiKA4NVllixIjPTwlNqxYpTgYUxNeUDMB2sfD6fkcMpOdxKh3LFYJWlSITBisxLC0+pFSsJ6hMGK1b55fN5IQgCbImpQAarwopEeIwQ5San7RZKWTTKPz4yL20lmkUQ8F5iKmqz0wWLIHCVWp5NTk5CluywyA4AgNc7afCISgt/vylXrFhlKRqdrljF4ywdk7mkTgWei4RwLqJuWmkVBE4F5tnk5AQssh0W2Z78nAqHu91TrhisspRaLma/FZmN9q49dbsFALBA4FRgHgUCAYRCIVgtDlgTFauJifEF7kV64u835YrBKkupwYpz8mQ2qVOBqbSpQEVRjBiW6Y2PjwEALLITkmSFKEgYGxszeFTml/r7zKlAyhWDVZZSw1Q4HDZwJET6m2tVIKBOBcbjcfYY5sno6AgAwGZxQhAEWC3O5G2UP6lhittbUK4YrLIUiYRTPuaLDJlLKJSYCpyjYgXwXX2+aCFK2xzUZnXB653km7c8S92EdWqKwYpyw2CVJU4Fkpmdbyow9eukr6GhQQDTe1jZrGUAgOHhIcPGVApSwxR3uqdcMVhlKfUdZGr1isgMGKyMoQUrLVBpAUu7nfIjdfqPFSvKFYNVllLDFJfnktloU4HzByuunMqHgYF+iIIEm8UJYDpYDQz0Gzks09N2u1c/ZrCi3DBYZWlmxYpTgWQu2psFyxzbLaR+nfSjKAr6+/tgs7ohCOpTs91WDgDo7+81cmimlxqmIpEwn9MpJwxWWUqtWLGxlMxmoalAraJF+hkfH0cwGIAjEaaA1GDVZ9SwSoLWVyWK6u+3388+K8oeg1WWUsNUOMx372QuC08FMljprbe3GwDgsFcmb5NEGTZrGXp6uowaVknQglSF25r4nOczUvYYrLLEqUAys2AwCAHqwcupGKzyp6dHDVZOe8WM2522Sni9Xh5tk0dasHKXqcGKv9+UCwarLHFVIJlZMBiERRAgsGJVMN3dnQAAp71qxu1OR1Xi66xa5Yu2GKPMaQEAnodJOWGwyhJ7rMjMgsHAZ6YBgdTmdQYrvXV1dUIQxGRflUYLWl1dHUYMqyRoizFciWDFxRmFMTw8hAMH3kE0aq7zdmWjB1CsuEEomVkoFPzMikAgtXmdLzx6ikaj6OnpgtNeBVGY+X7X5agGAHR2Mljli9Yn67CrL4n8/S6MHTsewdmzp2G3O7Bhw7VGD0c3rFhlKTVhM1iR2WhTgbNxH6v86OvrRTQahSsx7dfe+zHaez8GoO5lJYoyOjraDRyhuWnP4Tar2lXIszAL4+zZ0wAAr3fS4JHoi8EqS2xeJ7OKxWKIRCJzBisre6zyor39HADA5agBAIxOdGB0Qq1QCYIAl70KfX09rKTkSSwWAwBYZPUl0WxTU1RYDFZZ4lQgmZVWjZp9ADMwXbFic6++OjvbAUxP+83mctRAURT2WeVJLBaDIEzvY6UocYNHVFpiMXMFWQarLEUiEUBQ5+NZNiYz0ULTXMFKBiCAU4F6a2s7l6hMzR2sypxqJau9va2QwyIqCLNVYhmsshSNRiFIcvJjIrM4X8VKEARYBYEVKx1Fo1F0drbDaauCKM7eOUylTRG2tbUWcmglQxRFKErqLZ/93af8MdvzCYNVFuLxOOLxGCCqS3M5FUhmom2WOFePFYBEsOKRH3rp6elWG9cTVam5OGwVkERLsheL9CVJaqCNxeIzPqfCMFsFnMEqC1qjo5CYCtQ+JzIDLVjZzhOseJaafrQqVJnDM+/3CIIAl6Ma/f19/NnngZSYfQiF1WAly9yJKN+UlBIhK1aUnPoTRC1YcSqQzEOrRtmEuZ8ebIKAYDCAeJwNvnpIBqvzVKzUr3ugKAo6OthnpTerNXGUTSia+Nxm5HBKQuoZu2Z7s8BglYVkhUrUeqxYsSLz8PnUA2jnq1hpgcvvnyrYmMysre0cRFGCM+Xw5bmUOT2J72efld60YOUPRGd8Tvnj909XqczWWsBglYV4PDEVmGg01T4nMoOpqYWClXq7FsAoe6FQED09XXDZqyHMUyHUaFOFDFb6s9vtAACfPzLjc8qf1DDFqUCarlglngjZY0Vm4vN5AQD2eV7oHYnbte+j7HV0tENRFJQ5axf8XqvFCYtsR1sbG9j1Zrc7AAC+qfCMzyl/UsMUK1Y0K1gJDFZkKl6vGpgc4twVK3vidu37KHvp9lcBagN7mcOD0dERjI+P5XtoJcXhcAIAJn1qsHI6nUYOpySkrgQ020kODFZZmG7aFQBBYBMvmYp2btd8FSvtdrOd72WEdFYEpprus2LVSk9akNJ6rBwOVqzyLfVYuFCYG4SWPC1ICYIAgMGKzGViYhx2QYQ0T4+VUxQT3zdRyGGZUlvbOciSFTZrWVrfr+11xT4rfc2uUGkVLMqf1P0foybbC5LBKgupFStBEBmsyFQmJsbhmCdUAYBT0IIVp6NyMTXlw9DQIFyOmsSbtIWVJXZg55YL+nI6XcmPHXYHRJEvjfmWuk1RPB6fsa9VseNvTxaSQUrQpgLZY0XmEAqF4Pf7UXaeFxZX4mtjYwxWudDO/dOm99Jhke2wWVxobz9nqhcio6VO/TnYX1UQswsSZipQMFhlYfoJTZj1OVFxGx8fBTAdnuZiFwRIEJLfS9np7GwHALgccx+8PB+XowZerxdjY/z56yV1KpCN64Uxu0qbbtW2GDBYZWFG8zoExOMMVmQOo6MLBytBEOASBYyMjBRqWKakTedpByynSwtiHR3teg+pZKVur8CtFgpj9oHjDFYl7rNTgeYpYVJpGx4eAgCUi+c/hNYtSpicnJixsocy09HRoTauW1wLf3MKLVhpFS/KXeqGoNwctDAslunzGCVZZrAqdbMrVorCYEXmMDQ0CADn7bECAHfi6yMjQ3kfkxmFQkEMDvbDaa/K+AVFC1ZdXZ35GFpJstnsKR/znMBCsFimjw0y2xFCDFZZ0IKU9oTIihWZxeDgAACgQjp/xaoiUdEaGBjI+5jMqLu7C4qiwGmvyvi+FtkBi2xHV1dHHkZWmmR5unrCA5gLIzXA2k0WZhmsssANQsmsBgb6IQEoW+DcOi14DQ72F2BU5tPd3QUAcDoyD1aCIMBhr8TQ0KDpdqw2SmrV0GKxGDiS0pG6EtNsfW0MVllIrgIUBAAi4pwKLJh4PI7JSe74nQ+KomBgoA/lorTg9JRWserv7yvE0EwnGayyqFil3q+np0u3MZFKWqBaS/pIDVNm25CVwSoL02cDJipWMQarQnnyycfx9a/fj9bWs0YPxXTGxkYRDAZRlcYLS6UkQQDQ29uT/4GZUG9vNwDAaavI6v7a/Xp6unUbE6m4OWhhpG5rYbYjhPgblIXUVYECj7QpqP379wIA+0vyQAtJ6QQrWRBQLoro7e3mPm5Z6Onphs1aBknKbtrJaa8EMB3QSD9mWp22mKVWqVJ3vjeDnINVPB7Hli1bcP/99wNQzw+75557cMcdd+Dee++F1+vNeZCLTbJiJYiAICIajZ7/DkRFQJueqpHkBb5TVS3J8Pl8mJgYz+ewTGdqyofJyQk4sqxWAYAjGax69RoWUUGlTrmyYjXLb3/7W6xcuTL5+Y4dO7Bp0ybs3bsXGzduxPbt23O9xKKjBSkhEaympwapUFgl0Z9WBUw3WNUknhi57D8zfX1qGMolWMmSFRbZwYpVHvC5pfDYY5Wiv78fb7/9Nr7yla8kb9u/fz+2bNkCANiyZQv27duX2wgXoenDI0UIgjjjMEkqjIjJTkNfDDo722FJTPGlw5MIYDwQODPalKvDnn2wAtRgNjo6glCIKwP1xNaOwjPbpqw5BasHH3wQ//RP/zRjTnpkZAQej3qoaG1tbfKIDDNJTv0lKlbxeJxVqwILhUJGD8FUQqEgent74JEkiGn2mNTKDFbZ0CpW2Taua7Rg1t/PLS/0xNaOwjNbsEqv5j+Ht956Cx6PB2vWrMEHH3ww7/el0whYVeWELBfPElebTc2jgigBgjruigqb6eaJFzNRjKG21m30MEzjxIlOKIqC2jSnAQHAJYhwiCI6Otr4/yIDIyPqpqq5TAWm3t/nG0Ft7bqcx1XKUqf/ZFng73OB1dRUmOpnnnWw+uSTT/DGG2/g7bffRigUwtTUFP7xH/8RHo8Hw8PD8Hg8GBoaQnX1wie3j435sx2GIUZHE/soCZIargD09o6ivLzcwFGVlpGRcQwNmW9hhFE++eQoAKBOTn+VmiAIWCLJ6BgexunTnaiqym5PplLT3t4Bi2yHLOe227QzUbFqaWnF2rUb9BhayUqtUnm9U3xuKTCfL1R0P/PzBcGspwL/4R/+AW+99Rb279+Phx9+GBs3bsSPfvQj3HLLLdi5cycAYNeuXbjtttuyvcSiFQ6r/T2pFatIhIfR5ltq70MgEDBwJObT2noGAFAnZ/Zeqz5R4WptPa37mMwoFApiZGQ452oVADhs6spA7mWVu9Tnb+35nShbuu9jdd999+G9997DHXfcgYMHD+K+++7T+xKGSzaLijIEUU7cxp6ffAsGp8OU3z9l4EjMRVEUnD7dApcoLniUzWz1iQrXmTMMVuno7e3J+ozA2SyyHbJk48pAHaQ+f4fDfC6n3GQ9FZjquuuuw3XXXQcAqKysxGOPPabHwy5a2vlcgmgBREviNlZQ8m1qajpMMVjpp7+/F17vJFZZbBlvjrhEliECOH36VH4GZzLTR9lU5vxY2pmBg4MDCIVCMw61pcykBiuusqRccef1LEwHq+mKFQ9Dzb+pKV/KxwxWemlpaQYANFoyf58lCwLqZBmdnR0Mu2nQ9grL5vDlubjsVVAUhWcG5ig1TAWDrFhRbhisshAIJJrtRQuExJEU7PnJv9QwlRqyKDcnTx4HADRm0LieqlG2QFEUtLSwarWQzs4OAIIuU4EA4HKoi4M6Otp1ebxSlfrGmBUryhWDVRa0d+aCZFWnA8GpqUKYGaymuEOyDuLxOJqbT8AliqgUs9vyZKlsBQCcPHlCz6GZTiwWQ3v7OThsFZBEXbow4HLUAADa2s7p8nilKjVYsa2DcsVglYWpqSl1GlAQAcmavI3yK7VKFY/H+QSog66uDvh8PiyVLVkfPlsny7AIAk6eOKbz6Mylt7cH4XAYZU6Pbo/ptFdAFGWcO3dWt8csRanPJcFgkG/aKCcMVlmYmvIlm9aFZLDi1FS+JSuFiQ1aGWZzd/y4un/VMos168eQBAGNsoy+/l6MjAzrNTTTOXu2BQDg1jFYCYKIMocHfX09fA7KQWorRzweRzjM7XMoewxWWfB6JyFI6hb8gmRL3kb55fWqG8hJLjXU8oUkd1qwWpplf5VmWWI68NixIzmPyaxOn1aDVbmrTtfHdbuWQFEUbnmRA61v1iKLMz4nygaDVYZCoRDC4TCExK7JWsDSXvQpf7QgJZWpIcDnY7DKhd/vx5kzLVgiyXCkefDyfJZbGKzOR1EUNDefhEW2w27T94SGikRQa24+qevjlhK/Xw1S5W7rjM+JssFglSGtMqVVqtSpQIEVqwLw+RIVq8STH3/muTlx4iji8TguyGEaUFMhSagQJZw8cQyRCHeunq23twcTE+OoKGvIupdtPm7XEoiClFzdSZnT2goqksGKbQaFZLaVmAxWGZqYmAAACLJ64LIgCBBkOyYmxo0cVknwer2AKEAskxOfM1jl4ujRTwEAyy25TQNqLrBYEAqHcPp0sy6PZybHj6uVvIqyBt0fWxQluF1L0N3difHxMd0fvxRMTalv2qrK1RkI7U0cFYbZKoQMVhmamFCfuETZnrxNkO0YHx/nSpI8m5gYh2iTINrUYDU5OWHwiIpXPB7H0SOH4RRF1Er6LP3XKl9Hjnyiy+OZiRZiK92NeXn8SncTAE7FZktrK6iqZGuHEczWL8tglSGtMiWkBivJjkgkzE1C8ygej2N8YhyCXYJoV/dbGh9nlTBbbW2t8Pq8WJ7DNguzNcgWWAUBR44c5puMFIGAH6dPN8PlqIbV4szLNaoSwero0cN5eXyzm5ycgNUqobzMmvic1fB8i0ajyY/NFmQZrDI0NqZWrAR5+glStKjTgizD54/X60UsGoXkkCA61GA1Ojpi8KiK15Ej6gvwCh36qzSSIGCZbMHQ0CB6e3t0e9xid/z4UcRiMVS5l+btGnZbOexWN44fO4pIhFsFZGp8fBwuh4wypzotrs1MUP6kzjiYrZWGwSpDY2OjAAAx5Z2nFrK0r5H+RkaGAACiU4YgiRBtEoaHhwweVfE6cuQTiACW6hisAE4HzuXw4UMAgKryZXm7hiAIqCpfhlA4hFOnuAN+JsLhMHw+L8rLrChLrDgeHeVzeb5pRQr1Y3P9vBmsMqRVSbTmdWA6ZLGCkj+DgwMAADGxh5XokjEyMjyjnEzpGR0dQVdXJ5pkCyw6r1DTtl3QeopKXTQaxdEjh2G1uJLn+qUr0+nU6go1uGlBjtKjvUErd1vhtMuQZRHDw4MGj8r8xsamXy9Hx0YRj8cNHI2+GKwyNDo6AkGyQUg5V02rWDFY5U9/fx+A6T2spDIL4vE4q1ZZ0KYB9dhmYTaHKKJOknHmTAv3GQNw+nQz/AE/qsuXpd3L5g+OIRzxIxz143DzbviD6U1LuZ21kGUbDh8+ZKoXqXwbGOgHAFQCArnwAAAgAElEQVRV2CEIAirLbRgY6GefYJ4ln7sFEbFoNLni3gwYrDIQj8cxMjIMweKacbtWseJxHvnT29sNYHoPK6lc/W9PT7dhYypWWoNzJsEqkxeZCyxWKIqS3NW9lH36qTYNmH5/VUv721Cg/ryD4Um0dLyd1v0EQUSVeykmJyd4KHMGtOeW6sSKwJpKO0KhEN8o59nQkBqsnA1qpVVr9zADBqsMeL2TiEajM/qrACSDFoNV/nR1dUKwiMnGdS1YdXd3GjmsohOJhHHq1AlUihLKJWnB7x+JReGLx+FTFPxuYgwjsYWnXqd3YS/t6UBFUfDp4U8gSZa0j7EJRwIIhmeuSAuGJhGOpLfiWOvjYo9b+rq6OgAAtdVqe0dtjWPG7ZQfWpByNCwHAAwNmWf6lcEqA1rpcnbFShAlCLKd01J5EgwGMTg4AKnCmpxOkSvUF++uLgarTJw+3YJwOIwL0twUdK/PC61WNRGP4bU0Nk70SBKcoojjx4+U9JRUX18vhkeGUFnWCFFcOMQCQFyJZXT7bJVlDRAEMTndSws7d64Vdpuc3HW93uNM3k75MzQ0CNFmh626FgBM9frJYJUBLVGLlrLPfE2wlGFkZBixWHpPgJS+rq4OKIoCuXJ66kqwSxBtEtrbOeWRiRMn1Om5ZWlMA/rjcUzEZ/4+j8dj8C8QlgRBwFLZAq/XW9IVRW23dW3zzkLQqmNdXR2mW8KeDxMT4xgeHkLDEmfyTVv9EvWNc2vrGSOHZmqKomBkZBiWsnJY3BUAGKxKVjJYWT8brESLK9mDRfrSwpNcaUveJggCpEorRkdHuJlfBk6cOAYJAhrkhStW0Xn6qua7PdWyxOOfOHEsswGayPHj6r89X7utz0e7Hs8OXJi2NcWyRnfyNoddRm21A2fPnuaeYHkyNeVDOByG7HJDdqk/ezP1tDFYZWC6YuX6zNe0sGWmeeLFor29DQAgV9lm3K59zqpVerzeSXR1daJeliHrvM3CbNr+WKW6p1IsFsOZMy2w28rzttv6fMpd9QCAlpZTBb1uMdKC/wVN7hm3X7DUjUgkgtOnW4wYlulpm2nLTjdEixWi1WaqkzQYrDKgLvkXIFjnClbqH+bgYH+BR2V+be3n1Mb1splVFi1YdXS0GTGsoqMdjtyURrUqV05RRKUo4cyZlpLca6yzswOhUDDtpnU9uRxVkCQLWlp4GPb5xONxHDlyGC6nBXWemeH3ouXq9JS2qpP0pW2tIDmcif+6TDV1zWCVgYGBPggWFwThs42oWrDq6+sr9LBMLRAIYKC/L9m4PnVsBFPH1JKxNjXIilV6mpvVCkY604B6aJQtCIVC6OhoL8j1FpP2drXx2e2sLfi1BUFEmaMGAwN98Pv9Bb9+sVD3WvNi5QUVEAQBb73fjbfeV7deWFrvhs0q4ZNPPirpBRj54kssgpHs6gpMyebA1JTPND9rBqs0TU354PV6kwFqNu12bSNL0sd047oaosI9Uwj3TAEARIcM0S6hnRWrtJw9exoigDpZLsj1GhLXaW09XZDrLSba9LXLUWPI9bXrspo7vw8+eA8AsHplFQCg5dwYWs6pU1SSJOCSCysxNjaGM2c4Hag3LfCLVnXvMMlmg6IoCIWCRg5LNwxWaerr6wUAiLbyOb8uSFYIsh19/b2FHJbpadsppK4ITCVVWDE2OspdvhcQCoXQ1dWBWkmGlOf+Kk19ojJ29mzpra7q7e2GIAhw2CsMub7TXpUcB31WJBLGhx++D5fTgmUNc79ZXrNKPYLovffeLeTQSkIwqO7LJiZ6MYXEf4PBkGFj0hODVZq0Hb4l2/xPlKK1AiPDQwgGzZG6FwNtkz5tQ9DZpAptB/augo2pGHV2tiMej2NJgapVAOAWRTgEEW1tpbUfkKIo6Ovrg83qhigY8xTrSDxPaW8IaabDhw/B7/dj7cXVEMW532gsb3KjvMyKDz983zSVlMUiEokAAMTE85EoyYnbzbEKk8EqTdoLt3i+YJX4Gt8l6qenpxsQ5g9WMndgT0tnZzsAoFYqXLASBAEeScLIyHBJVRQDgQD8/inY52kbKAS7Tb22mfYG0tObb+4DAKxb7Zn3ewRBwOWX1iAUCuGDD94v1NBKgragRTtzV0icAqEFrmLHYJWm7m4tWM09Fah+TQ1W3A1cH4qioLe3G1KZBcI87yp5ZmB6OjvVyp+ngBWr1OuV0vEgY2OjAFDwbRZSSaIFkihjbCy9A5xLSW9vD1paTmF5ozt5PuB81q/2QBAEvPHG6zyUWUfJjbTFRARJVHbZvF5C4vE42tvbIFrdEMT5V1RJib4GNozqY3x8DIFAYN5qFQBIbvX/B6c8zq+3txsigMo0j1bRS3XinWgpVXG1ZeNW2WHYGARBgEV2mmoJu172798LALhy7cIrNt1lVqxaUYHOznacPVt6izDyRVHUAKXtdq/9l8GqhAwNDSIYDEC0V5/3+0RbBSCIJbm8PB96e3sATIenuQiSCNEls2J1HmrlrwcVolSwxnVNlahWrLT/l6XA71dXrcqybYHvzC9ZtsLvn2KlJcXUlA8HDrwDd5kVF6+oTOs+Gy5fAgB4/fVX8jm0kpIMUNrzEYNV6dH2SdIqUvMRRAmirQJdXR0luSmi3rQqh+Q+/7l2ktsKn8+LycmJQgyr6Hi9XgQCAVRKha1WAUhec2CgdDbO1ZaSS+LC5zHmkyRaEI1GTdO3ooe3334D4XAYV6+tnbdpfbalDWVY4nHg0KGP2LOmk1hMq1ipEUQQtalAc5y1y2CVBq0ELKaxJ43kqEE0GuV0oA60vrbzTQUC0w3srFrNbXhYPWbJLRb+z90iCHAIYkm9IGkrm6QCT7vOJormWmmVq2g0in37XoXVImL9mvmb1mcTBAHXrKuDoih47TVWrfQQiyWa16WZzetmKUgwWKXhzJnTgCBCWmAqEAAkR+30fSgn3d2dgCicdyoQmN5ygSsD5zY8rB4M7jbohd4tihgZGTZNmX8hkUjiRWOOExoKSdvqwSwvVrk6ePAAxsfHsW61B3ZbZos4Vq+sgttlxbvvvllSK1zzJRxWw76QWKUscLuF0hII+NHV1QHJXp1cGqoJDnyK4MCnM26TnOo7oTNneE5XLqLRKLq7uyC5518RqNGCFXvb5jYxoa4McxlQsdKuG4vFMDVVGi9IsxtzjSKYbKVVLuLxOF59dU+y+pQpSRKxYd0ShEIhvPnm63kYYWnR9nrUNggVuUFoaWluPgVFUSA5l3zma1FvJ6LemVUS0eKCYHGhufnU9JJSylhPTzcikUjyoOXzkdwWCLKIcyW2EWW6tANPnQYFK+262jjMLh7XmsWzD1ZWqxWNjY2wWnPp0zJXQ3Aujh49jN7eHqxZVYXyBXo257N+jQc2q4R9+15FKGSOAGAU7U2WaLXN+K9Z3nwxWC3gxImjAACprD7t+8iuegQC/pLbcVpPra3qMShy9cLBShAEyFU29Pf1muYPU09e7yQAwG5QBUW7rjaOkpHlj9tqteL+++/H9u3bcf/99+cYrkhRFLz88gsAgOuuSP95fDabVcJVa2vh9Xpx4MA7eg2vJHm9kxBt9mTTumRX93ybnDTHcwSD1QKOHz8KQZQhOdJvdpRcDcn7UnZOnz4FALDUnH8DP41cowYwHpj6WYGAukrNZtDxKtp1tXGUjCx3OfB4PLj99tsBALfffjs8nvSfe+YagNFTkkY7c6YFZ8+ewcrlFaityW1vsasvXwJZEvHqqy9yRiIHo6OjkJ1lyc+1j8fHR40akq4YrM6jt7cHg4MDkJx1yX6FdMiuJYAg4siRT/I4OvOKx+Nobj4F0S5BLDt/47rGUqs+YZ46dTKfQytKgYB64KnVoBdY7braNgRmN72MP7tkNTw8jNdfV/t4Xn/99eTiA8rOnj3PAwA2XpV9tUrjclqwbnUNhoeH8eGHPOYmG1NTPgSDAciu6SOf5DL1RBOzrB5msDqPQ4c+BADI5Uszup8gWSE569DR0Y7BwYF8DM3Uuru7MDk5AbnWkfa7bbnaDkESklO3NE1bgZPtGrVc+33kxP/DUtlPSfudVbIMVuFwGNu2bcNXv/pVbNu2Lfn/L1PaxqCiQb11i0FHRzuOHz+CZQ1laKovW/gOabj2ijoIgoCXXnqe/WtZ0Pa0s5ZP7wspWW2Q7E7T7HdXun9xafj44w8BQYRc1pTxfbUwpoUzSt+xY0cAANa69Mv2giRA9tjR29uDkRG+w08ViUQgC0JWU0J69PtoC9tLJVglg0wOO56Hw2H09vZmHaoSAwCAjKrtZvPSS7sBABuvatDtMSvcNlx2cRV6e3tw+PAh3R63VGj7DVoqZ25fZK2sxtDQoCkWBpTuX9wC+vp61W0WnHUQpCxeTMqWAhDwAcvFGTt2TN3CwlKX2SG2lnr1+48e/XSB7ywt8Xgs6/VpevT7CImra5sCmt10xcpYWsUs3R3Gzaa3tweHDn2E+lonVix1L3yHDGy8Ug1qe/bs4pFBGdIOZLdVz1xpb62qhaIo6OnpMmJYumKwmse7774FALBUrMjq/qJsg1TWgM6OdnR2tus2LrPz+Xw4c6YFcrUNoi2zyStrIlixt20mRcl+4b8e/T6l1judrBAZ/YKbuHypNq/v2bMbiqLg+qsadP8Z1FTZcelFVejoaE++EaT0tLW1AqIIW/XMQ7Dtnrrprxc5Bqs5RKNRHDjwDgTJCtmdWX9VKkvlRQCAd999W6+hmd7x40egKAqsDZlVqwBAclkglVtw6tQJU5STFwO9+n1KyfRruLHBarrHq/SC1cBAHz744D14qh1YtaIiL9e4/mq1Gf6FF3ayapWmUCiE9vY22KpqIcozFybZl6gtN6dPF//KbgarORw58gm83knI5Ss+s9t6JuSyRgiyHe+//we+0KfpyJHDAKan9TJlqXciEomguZmrAzWSJCGXFttc+33iiRcdScrsGJHitTimAjWlWLB68UW1WrV5g/7VKs2SGidWrajEuXOtXDSTpjNnWhCLxeBoWPaZr1nKKyE7y9DcfKLoFwUwWM1h796XAACWqpU5PY4giLBUXAS/fwp/+AOrVguJx+M4fvwIRIe84MHL89GmA1menyZJEmIGvqPWdvuRJGPPziuUXLdb0I1Sms3rAwN9OHjwADzVdlxyYWVer7V5g9prtXv3c6xapUHrf3UtvRAAMPThWxj68C0A6pS1s2kFvF4v2tvPGTVEXZTWX1watM3kpLJGSLbcS8iW6ksAQcTe117mhnIL6Ohow9TUFCxL0t9mYTa52g5BFrk5awqr1QoF05WjQosmrmuxpLcnWbHTgsxieaEttYrVCy/sQjwex+YNjXnvL6vzOHHxikqcO3c2uZqZ5haPx3Hok48gWqxw1KktNr720/C1n05+j2u5Wsz4+OPiXk2fdbDq7+/HX/zFX+Cuu+7C3Xffjd/+9rcA1PPA7rnnHtxxxx2499574fV6dRtsIbzyyh4AgLVmtS6PJ8p2WCouxPDQILdeWMCpUycAAJYMtlmYTRDVbRcGBwcwOjqi19CKms2m7l4fMaiCogUruz29XfSL3WJpFp9eFVg67597erpx8OAB1FY78l6t0my+Rq1a7dr1zKIJ04vRmTMtGBsdQdmKSyDMU712Nl0I0WLFBx++X9TTgVn/xUmShG9961t46aWX8NRTT+GJJ55Aa2srduzYgU2bNmHv3r3YuHEjtm/frud486q19Sw+/fQQREcNJEftwndIkxrSBOze/SyrVudx+nQzAMDiye0F2FKr3r+l5VTOYzIDu1097idi0JO+Fui0gGd2WpAx+kVWUdQXplIKVrt3PwtFUXDjtfmvVmmW1DixemUVOjra8MknHxXkmsXo7bf3AwDcqy6b93tEWUbZhasxNjpS1BXArP/iamtrsWbNGgCAy+XCypUrMTAwgP3792PLli0AgC1btmDfvn36jDTPFEXBs88+CQCw1V6h6x+laHXDUnkR+vv72Gs1D0VRcPbsGYguGaI9tyZnOXG+4NmzZ/QYWtFzOFwAgJBBL/TadZ3O7BYkFJvpYGXsO+7pnddLo7etra0Vhw59iIYlLqy8ILs2jmzD8A3XqEFu586ni7rSki+joyP46KMPYK2sgaP+s43rqSrXXAkAeP31VwoxtLzQ5a1Md3c3mpubccUVV2BkZCS5iWBtbS1GR4vjUMVjx46gpeUUpLJG9aw/nVk9l0MQZeze/SxCoaDuj1/sBgcH4PdPQa6y5fxYcoUNEIWib4DUixZoQnFjglU48WLlcJRGsLJY1IUXimJsdVpRYhBFsWQWDTz33O8BAJ/f2JTxG+Oh0QB8U2F4pyL45VPHMTQayOj+1ZV2rLu0Bn19vThw4J2M7lsKXn11D2KxGCovv2bB/ze2miVwNCzHyZPH0dpanG+Ocw5WU1NT+NrXvoYHHngALpfrMz+0xdJvcD6RSBhPPqn2iNlq1+flGqLFAUvVJZiYGMeePbvzco1ipm2iqkewEiQBktuC7u5OTr0CcLnUM9JCBlVQgol38GVl+pzVtthpTfpxg4NVPB5LhjyzO378KE6ePI4VS8uxvDHzXdaff60V2vuOsYkQXng9800qN29ogCyJ2L37We73lmJoaBBvvrUflrIKlJ9nGjBV9ZWbAADPPvuU4VPq2chpziUajeJrX/sa/uRP/gRf+MIXAAA1NerJ3x6PB0NDQ6iurl7gUYCqKidk2bh3VU888QQGBvphqboEkj1/DY9Wz2WITnbglVdfwh/90e1YsWJF3q5VbEZH1cOqs91mYTa5worQhA+RiBf1C5Seza6xUe0XDBr0BKVdd8WKhpJYGdjQUAMAiMWMPRsxFo/A6XKgtlbf41wWm1gshl271GrVTddnfq6rzx/B2MTMfQZHx0Pw+SMoc6b/++ous+LqdbX48NMBvPfeG/jKV76S8VjM6NFHH0EsGoVnw41p7wvpbFgG57KL0NJyCq2tJ7Bp06Y8j1JfOQWrBx54AKtWrcJf/uVfJm+79dZbsXPnTtx3333YtWsXbrvttgUfZ2zMn8swctLb24NnnnkGosUJW+26vF5LEGXY6jcg0PUOtm79Cb71re+UVGPp+Zw+rb5DlHUKVlKF+jjHjjXDnsewXAwURX1xCBhUsQoocdjtDoyPBwGYfxo8FFKDZDRufLCy2cowNFRcK7Mz9e67b6GtrQ1rL6nGkprMp5tjsbn/Lua7/Xw2XlmPY80jePrpZ3D11ZtRXl6e8WOYydGjh3HgwAHYlzTCfVFmK+1rr7sZnT0d+PnPt6GpaSUcjuxXi+fD+d6wZP2qfujQIbz44os4ePAgvvzlL2PLli1455138Dd/8zd47733cMcdd+DgwYO47777sr1E3sViMfz61zsQi8VgrbsagpT/d9NyWSNk9zK0tp7Bvn178369YtHT0wXBKkKw61O51Cpf2knqpayiQm3kDRjUVBuIK6isLJ1w63arL6bRqHEhUlHiiERDybGYVTAYxK5dT0OWRXzu2syrVXqz22Rs3tCAYDCA559/1ujhGMrvn8JvfvMoBFHEks23Z9wWZK2oRtX6azE2NopnnvldnkaZH1lXrDZs2IBTp+Zezv7YY49l+7AF9eKLu9DaegZy+XJYcjgTMFO2+g2IBQbxzDNPYvXqy7B8+QUFu/ZiFAqFMDQ0CKnGpltP3nSwKv6T0nNVUaGGGr8BwSquKAgocSwrz895bYuRFmYi0cwaoPUUjYUAKKavmLzyyosYHx/Hpqvr4S5bHP1kV6ypxeETQ3jrrf245ZbbsXRpabYiPPnk4xgbG0X1VZs/c+ByuqquuB6+jrN46639uOqqa7Bu3RU6jzI/SnYe6vTpZrz44i6IFhfs9dcU9NqibIe9YSNisSi2b//Pkm907OrqgKIokCv0e2IU7RIEq4SOjnbdHrNYud3lEAQBUwZMBfoT16ysrCr4tY1isVjgdrsRCk8ZNgbt2lVVNYaNId+Gh4fw6qt7UOay4Lor640eTpIkCbhl01IoioInn/xtUTZf5+qDD97DgQPvwOapQ/UVG7N+HFGSUff5OyGIIh59dBsmJyd0HGX+lGSw8vm82LHjESgKYGu8HoJU+Hc6clkjLFUXo6+vB0899XjBr7+YtLWp2yLIlbmvCNQIggC50orh4SFMTk7q9rjFSJZllLvLMWVAxUq7ZlXVwotYzMTjqUUoMmXYi2ow7EuOw6x+//snEIlE8PnrmmC1LK4tJS5aXoELl5Xj1KkTJbdp6ODgAH7zm0chyhbU3/THaTesz8deU4eaDZ/D5OQEfvnLbUWxT1jJBat4PI4dOx7B6OgIrJ61kJ3GPfHYllwJ0VaJt97aX9Ibh2o7rmsbe+pFezzt8UtZVXUNfPF4wV/ofclgVToVKwCoq2uAosQRSgScQguGJhPjWDyVHD2dOHEMhw59iMY6Fy67eHGG9ls3L4MoCnjqqf8qmVmJSCSCbdt+imAwgNpNX4C1Qp+/+8rLr4GzaQWOHz+CV1/do8tj5lPJBavdu5/F8eNHIbkaYPWsNXQsgijBsfQGCJIVv/3to+joaDN0PEaIRqM4ceIYRKcM0ZXbjuuzaWcOaieql7KamhrEAQQMClY1NZ6CXtdoTU1qz6Y/OG7I9bXrauMwk2g0it/97jcAgC/cuHzR7pVYXWnHNeuWYGRkGC+//ILRwymIZ575Hdrbz8G9ai3KL9bv9VUQBNR9/kuQnWXYufNpnDnTottj50NJBavDhw9hz57dEC1lcDRt0uUPMtcKgGh1w95wPaLRKH76n/8Bn8/cS6NnO3bsUwSDAVgbnbo/QcpVNoh2CZ988hEiEWOXvhtNCzbeeGE3rdSuV2rBaunS5QCAqWBmJ0+IwtzTJvPdPp+pwCgcDqcpf+6vv/4K+vp6ceVltajzLO7d/Ddd3YAylwUvv/wCBgcHjB5OXh069CH27dsLa2UNlmxaeJulTMkOJ+pvvgtxRcHPf/4TeL2Lt8WjZIJVT083dux4BIIowZ6oEuUiFhyHEgkA0QB8rS8hlsM7U9ndCKvncoyODONnP/sxotFoTmMrJm++qR7MaVuu/yaGgiDAuqwMfv8UPvrooO6PX0w8HvWYpskC9ydo19OuXyouvPAiAIDPP5zR/awWB+zWmSv57LZyWC3p7+ETjYYQDE/iwgsvWrTVnGyNjo7ghRd2wmGXceO1jUYPZ0FWq4Rbrl+KaDSKJ554zLSN7IODA/jVr3aofVW33A0xTzv+O+qXoebqGzA+PoZf/OLni7bfqiSClc/nw09+8hBCoSBsDRsh2XOf9w30HACg/pEoYS+CPQdyejyrZy3ksiY0N5/E73//XzmPrxi0tZ3D8eNHIHvsujaup7JfVA4IwMsvv1DSx9ssWZIIVgX+GUzGYnA6nCVznI2mvLwCHk8tfP6hjF9ML11xEwSogchuK8elF9yU0f29/iEAwEUXrcrofsXgqaceRygUwk0bm+DI8bD2Qrl0ZRWWN7lx7NgRHD78sdHD0Z3WVxUI+FG76TbYqvJbJa1av3HR91uZPljFYjFs2/YTDA0NwlpzGSzly3N+zHg0ACU8c8ouHvYinsO+NYIgwN54PURbBfbvfw3vvPNmrsNc1OLxePJ8RufqzIJuJi9UkssC23I3ent78NZb+zO6jpnU1tYBACYKOBWoKAom43HULimtapVm9erLEI2F4Q+OZXQ/p70KVosTVtmJqy79MpwZvhGc8PUDAC69dE1G91vsTpw4ho8/VhvWL7+0eLaREAQBX7hhOURRwO9+91uEQqGF71REnn5a7asqv/hylF98ed6vN7vfajEuTjJ9sHrmmSdx8uRxSGWNsOp1ZM18L045vmgJkgWOpZ+DIFnx+OO/wtmzp3N6vMVs3769OHv2NKyNTliWpDfNEZ0IIx6IQgnEMPZaF6IT6a20ca6tgmAR8eyzT5q+z2E+tbVLIIoiJgpYsfIpccSgoL5+8U/Z5MPq1eqBsxO+vqzun+003qSvH5IkYdWqS7K6/2KkTaUJwuJuWJ9PTZUd166vw+joCF566Xmjh6Objz/+APv3q31VtdffWrDrqv1Wf6z2W2376aLbUsfUwergwffw2msvQ7SWw9GoT7N6vonWMtibNiMWi+ORR36MiQljVhXl05kzLXjm2Sch2iS4rky/bOz9YECbfUXcF1E/T4Nol+G6ogahUAiPPLIVoZD5z6ubTZZleDy1GC9gxWo8EeLMuuR/IWvXrgcAjHl7CnbNcMSPqeAoLr10DWy2/EyvG+H1119Bf39fUTSsz+f6q+vhdlnx6qt7TPEGr7+/D7/61fa891XNx1G/FDVX34iJ8THs2PGfi6rfyrTBqqurE7/+9Q4IogX2pTcW5BxAvciuetiWrMfExJjpmtn7+nrw05/+O2KxKMquXQIxzT6JeDCKuG/myr64L4J4ML2fjXVZGWwr3Ojq6sC2bT811c80XY2NTQgqStpH28jzvBGZ7/bZRhPBqrHR+DPcjFBRUYELLrgQ3qkBRGOF2cdIC3Hr119ZkOsVwsTEBF58cVfRNKzPx2qRcPP1TYhGo3j66eI6+262YDCIRx75DwSDQdTecHve+6rmU7X+OriWXYSTJ49j9+7FczajKYNVIBDAf/7nw4hEwrA1boRkK77zsizVqyG7l+HMmRY8++xTRg9HF319vfjhD78Hn88H15WetKcAAUCJzd1XNd/tswmCkLzmkSOHsX176YUrbU+jsVh6/26nKKJi1q7JlaIEp5je08Zo4jpNTaV5VhoAXHXVBiiKgvHJwlStxibUszGvuOLqglyvEJ5//lkEg0HccE0j7LbiaFifz6Urq9BUX4ZPPvkILS1zn7W72CmKgkcf3Yaenm5UrLkS5SsvM2wsWr+VxV2BPXt24+OPPzRsLKlMGax+//v/SjSrry7o4cp6UpvZr4NodeO1117GqVMnjB5STlpbz2lqfPQAACAASURBVOLBB/8FExPjcK6vgf3CwoddQRTgvr4Ocq0dhw59hK1bf4hAwF/wcRilqUlduDGSQZ/VHWXu5JNEpSjhi2Xpb4sxGotBkqSSnQoEgKuvvhYAMDLZkfdrxWIRTPj6sHTpctP8zAcG+vDOO2+iutKOK9YU/55cgiDg5uvV16TnnnuqKLdfeP7553Do0Idw1C9F7cZbjB4OJJsdDbd9GaJswS9/+TO0t58zekjmC1affnoI77zzJkRbpX7N6gYRRAvsjdcDEPDLX26D32/coa65OHjwAP7vD/8/TPl9cF3lgWNVhWFjEWQR5ZvrYWlw4uTJ4/je975jin6HdCxffgEAYDjNihUA1EgyXKKIMkHA/1tRhRopzalbRcFILIampmWQ5eKuMuSiqWkp6urqMe7tQSyW301qRye7EFdi2LDh2rxep5D27Hke8XgcN17bCFFc/D2y6Wisc2HVikqcPXsGJ04cM3o4GTlw4B288MJOWNwVqL/l/8n5HEC92KprUXfTXQiHw/jxjx/CyEhm+8fpzVTByufz4rHHfgkIIuyN10PIcLfixUhy1MDquQxjYyP43e9+a/RwMhKNRvHUU49jx45HEEMM7k31hlSqZhMkEe6NdbCvLEdvbw/+9V//Nz799BOjh5V39fUNsFqtGMogWGkyXfgxFo8hBiUZ5kqVIAjYuHEz4vEYxrzdeb3WyHg7AOC6667P63UKZXR0BAcPHkBNpR2XXFhp9HB0telqtaL4yisvGjyS9B05chi//vUvIFptaLz9TyE7FtcigrILVsGz8RZMTIzj3//9B4buzG6qYPXyyy9icnICVs/lkOzm+UO0etZCtFfhvffeRUdHu9HDScvQ0CC+//3v4rXXXoHktqDi5kZY6xfPH6IgCnBd4YHr6loEggH85CcP4emnnzB135UoirjgggsxFoshkucpiMHEz1HbgbyUXXfdJgDA8Fj+zgKNRIMY9/Vg2bLlaGgwx2KBP/zhbcRiMVyzvq4oVnRnor7WheWNbpw6dQIDA/1GD2dBLS2n8LOf/RiKKKDx9j+FtVK/fcT0nA6tWrsBlZdfg/7+XvzHf/wQfr8xrR6mCVYTE+PYv/81CLID1upLjR6OrgRBhK32CgDA7t3PGDyahb3//h/w7e/8L7S1tcK6rAwVtzRBchd2KW667CvcKL+5EVKZBa+++hL+7XvfRl9fr9HDypuLLloFBcBQngOkFqzMuPt3phobm7B8+QqM+3oQieZnq4+RiQ4oioJNm27My+MXmqIoeP/9P0CWRaxemftJGemwWq1obGyE1VqY5yptk9P33/9DQa6XrdbWs9i69UeIxqJouOVuOOr0Ce6hsSFEp3yITXnR/uyjCI0N6fK4nmtvQvnFl6O9/Ry2bv0hgsHCb69jmmD10kvPIxIJw+pZu2jmffUkueogOWtx5MhhtLaeNXo4c5qa8mHbtp/iF7/4GcLRMFwbalF2TS0EeXH/msmVNlTc0gTbBWXo7GjHv/zLt/Dmm/uKsrF0IStXXgwA6I/mt9+nLxqB1Wot6RWBqa6//gYoipKcrtPb8Ng5CIKQrI4Vu6GhQQwM9OPCZeWwWvP/fG61WnH//fdj+/btuP/++wsSri6+sBKiKOD48aN5v1a22tpa8fDDP0AoHELdzX8M17KVuj123/4XAEXd+iUyOYa+N/SZFhUEAUtu+CLKLlyNs2dP48c//lHB9y5c3K94aYpEwnj77TchWFywVF5o9HDyQhAEWD1qM/4bb7xm8Gg+69SpE/j2t/8XPvzwfcjVNlTc1gT7Be6iKeELFhFlG5ag7LoliApxPP74r/CTnzyEyckJo4emq4svVqu5fXkMVsF4HGPxGFauvLikG9dTXX/9ZgiCgKFx/VcsBUKT8PqHsGbNWlRXF89RL+fT2noGALCsoTBnTHo8Htx+++0AgNtvvx0eT/5XIFotEuo8DnR0tCEcLsw+Z5loazuHhx76PgLBAOo//yW4V+i3k3/UP4XI5MyjniITo4jqtEBLEEXU33QnylZcgpaWU/jxjx8qaLgyRbA6fboFkUgYsntpQRvWC106lpy1EGQHTpw4tmiqKdFoFM888yQeeuhBjI2PwrGmCuWfb4TkKp4NWVPZlpah4ram5H5X/+f//E8cPfqp0cPSTUVFBerq6tEfiyKep98hLbRpIY6AysoqrF27Hj7/MAJBfcP60Jga1jZv/pyuj2ukoaFBAEBNVfp73eVieHgYr7/+OgDg9ddfx/BwYVaV1VQ6EIvFMD6e2XmS+dbWdg4P/fuDCAQDqPv8l+Beqe+5k8o8C2jmuz0bgiih/ua74LrgYjQ3nyxouDJFsDp58jgAdcfyQjGidCwIAiRXHSYnJ9Dd3ZX36y1keHgIP/jBd/HKKy9CdMoov6kRzjVVEIp8WbTkkOG+oR7OddXwTXmxdesP8fTTvzNNY/uaNWsRVpSsVgemoycRrNasWZuXxy9WN9ygBp/BsVbdHlNRFAyPtcJms5tqm4WpKbVyYbcV5o1yOBzGtm3b8NWvfhXbtm0rWAXJlvj3TU35CnK9dHR0tKmhKhBA3efvRLnOoaqQBFFCwy1/PCtc5f8QbFMEq+bmk4AgQnLWFuyaRpSOAUB21gEAmpuN3TD0xIlj+Jd/+RbOnUs0qN/aBEu13dAx6UkQBDgurkxpbN+DH/3oe6aYGtQCT3ckP9OB3RG1v0rr5yLVVVddA4fDieHxc1AUfc41m5zqRygyhWuvvR42m3n+/ux29d8SDhfu/LdwOIze3t6CTsuFI+pmvXZ7YSpzC+nq6sSPHnoQAb8/EaqM21VdL7PD1U9/+u+IRPL7/9gUwSoUCkIQLRDEwvVzGFU6FmT1CScYzH/qns/+/a/h4Yd/gEAwANdVHrVB3VKYX6VCT79qje3WJhfOnGnBd//1fy+KamEu1qxZC0EQ0BXV/8nFF49hLB7DJZesYX/VLFarFRs3bkI44se4r0+XxxwcVatfN974eV0eb7GoqqoGAIxPGvc8Vwjav0/79xqpr68XDz30IPxTU6j73B+ZIlRpBFFCw81/DNfylTh58jh+/vP8HmlmimAlSXJydUGhGFU6RqIvRpYLv/JRURQ8//xzeOKJxyBYRbg/1wD7heUFa1A3YvoVSDS2X7cEjsuqMDY6ih/84LuLdmVmOsrK3LjwwovQH40ipPPfTWeiCrZu3RW6Pq5Z3HDDTQCAodHcf3+isTBGJztQW7vEdP1sl1yyGgDQ1lX8FeL5hMIx9PRPYfnyFckKnVFGR0fw0EMPwuudRO3mL6D84ssNHU8+CJKE+lvuhqPxAnz66SH8+tc7EE/zQPpMmSJYiaIIoPDN3EaUjhWovwhimgfh6unVV/fg+eefg+hS+6ksNYV9MjBq+hVQpwadq6tQtqEW/oAfDz/8/aKuXK1bdyUU6D8d2Jkosa9fz2A1l4suWomGhkaMTnYhGs2tGjMy0YF4PIYbb7ypaFbfpquhoRFLltThXNck/IH8bg0iSXM/l853u16aW0cRjyu48kpjD8z2+6fw8MP/F2Njo6jZ8DlUrr7S0PHkkyjJaLztT2CvbcD/396Zx1VVrY/7OZzDPMkkoKE4JOIMqFlOqUmagmJolkqZpaamptUV01DJTG+3+zWt/Hh/atatbDDn1K45pWmaQ2Vazsg8z3Dm9fvjyAkUkOEMgPv5R9ln77Xevdbe73r3Wu963xMnjrF165fmqccspVoYT08vhF6LXmW9EPaWQq807B7x8rJsQtKzZ0/z9ddfYOOowK2/we/I0lhr+bU89q1dcQnzobS0lH//eyVFRYUWl8EUdOsWAsBNE/oaaIUgUavB19cPX19/k5XblJDJZPTrNxAh9GTl36xXWZk515DJZE1qN2AZMpmMxx4bhlar55ffMsxal4uTLR7u9hWOeTazx8XJfDpOpxP8fC4dhULBwIFDzFbPvdBqtXz44WpSUpJw7xSCR7feVpPFUtjY2tFiaBS27h7s3buLo0cPmb4Ok5doBUJCwgDQFCVbWRLzoy1MRi5X0LlzN4vVmZ+fz6ZN/0Eml+H6iB9yJ+v4zlht+fUO7Fu54hjsQW5uDv/97yaryFBfWrcOxN29Gbc0GpOFXUjWatAKQY8eYSYpr6nSp08/Q0yreuwOVKoKKSzJoGPHThb/yLIUAwYMwt29Gb/8nk52rnm3yY8Kb0fZZmbPZvZEDjVdIMzKOP1bGvmFKgYMGISHh2Uiy1fGli2fcvHiBZwD2uLTe1CTm/msCrmDEy2GPonc3pFPPtnIX39dMmn5TcKw6t49BJlMhtbMSU6NVBXZ3cwR3/XqIvSqPDp37oKjo+V2kezdu5Pi4iIcO3mgcLduahprLL9WhmPHZig87Tl16iQ3bpg+6KO5sbGxISQkDKXQk2YiJ86bt/vE2ksbDR0PDw86d+5ar5hWZUZZ375Ny2m9PHZ2dkyc+Bw6nWDfkZvo9eZz9/DxdMTF2Q5XZ1umPNUFH0/z6dfMnFJ++iUVd3d3oqLGmq2ee3H8+FEOHvwfdh7e+D06EpkV3EssvRmpQt1uzfAfEolA8OGHq8nNzTFZ2U3CsHJ1daNjx07oS7PRlpgm31B12Cgckdm5Vjxm54qNwrzGjjr7TwDCwiw3XavRqDl85CA2jgoc2rlbrN6Gjkwmw6mTYSfPDz/st7I0dSMkpCcANzT133klhOCGRo2Li0uTc6Q2B488YjCI6hKJXQhBZt517Ozsm1TsqsoIC+tN7959SEkv5vBJ8384m3vGRqXSseP7a+j0gpiYF3B2tkxk+TtJTk7ik082YmNnj/+QUdjYWsGwsdJmpPI4+gXg3etRCgsLWLdujcmc2ZuEYQUwZsw4AFRpZ0wWI6Y6HFv2BQwvoY2dKw4t+5q1Pp0yF03eNfz8Wlg00er169dQq1TYtXBq9IE/TY3CxwEbezkXL/5ubVHqRHBwZxwcHLmhUdc7kn+6Tkup0NOjR5hVNlY0NkJCwrC3dyAr70at276wJBOVuoiePXs3qdhVVfHssy/i79+CM79ncOEvy/tVmgq9XrD74HVy81UMHx5hdGGxNBqNhvXr16LRqPHtNww7N+ssRVpzM1J53DuF4BLYgStX/mLPnh0mKbPJaMB27R6kb98B6FV5aPJMF9m4KuQOzZDZOoLCEed2I5A7NDNbXUIIVGlnAMGECc9aND5QVpZhBlBu5SXAhohMJsPGzZa8vDx0Op21xak1CoWC7t1DKNTrya6n/NdvLwOGhjbtGRRTYW9vT8+evVGpiygsqZ1zdtbtFDZ9+pj3Y66h4OjoyKxZ83BycmL/0VvcuNX4QjAIIfj+xwSu3yqgS5duPPnkU1aT5bvvdpKYeAu3Dt1wCbReEN+GsBkJ/k7arHB2ZefOb0lOrv/MaJMxrACio8fj4OCIOvM3i+0QtISznyb3MrrSLEJDe9G5c1ez11cpDSM1YcPjdruYKx6KuQkNNSwHXq/HcqBhGVCFvb09nTs3vfg35uKhhx4BICvvZo2v0Qs92QUJuLq63Vcpg/z9WzB79qvI5Qp2HLhOSnrDSQFTE46dTuH3P7Np3boNL700x2qzuhkZ6ezeswOFkwvevQdaRYYyGspmJAC5vQPNH3kMnU7HJ59sqPcMfpMyrNzdmzFx4nMInYbSpGMInXnjn1gCbXEaqvTzuLm588wzMRav39fXkH9Rm9/wsq9bG6EX6Ao0eHv7YGvbOJNOd+3aA4VCwY16KLUcnY4CvZ5u3UKwtYKvRmMlOLgzrq6u5OQn1Nh9oaAoFa1WRe/efZDLLR8k2Jp06NCR6dNfRqeDb/ZeJT2rxNoi1YiT51I5eS6N5s19mTv3dYtuPLqTHTu2otNq8e79KHI7+3tfYGYaymYkAOeAdji3aseVK39x4cJv9SqrSRlWYMjwHh7+BHp1AaUpJyzib2Uu9OoilMk/IZfLmTXrFTw9vSwuQ2BgW1xcXNAkFyN0jbctzYEmvQSh1tG1a+MNqOfg4ECXLt3I0evIq+Ny4PXbsbCauiO1qZHL5fTs+RAarZKC4vQaXZOdlwBAr159zClagyUkpCdTpkxHpdLxzZ4rZOeWWlukajl7IYMfT6Xg6enJq68uxN3dehuA8vPzOHnyOHYePri0kTaYVIZXqMF/ef/+PfUqp8kZVgBjxz5Np05d0BWloMr4td7TetZAaFWUJh1F6NTExDxP+/YdrCKHQqGgf/9B6FU6lFebfgDWmiKEoOSiIVjrwIGDrSxN/ajv7sCbGhUKuUJKY1MHynb4Zucn3PNcIfTkFCTi7t7MavqgIfDww/2IiZlCiVLLl7uvkJtv3hhXdeW3P7P44Xgi7u7uvPbaG3h7+1hVnl9++RkhBO5BXe+beFW1xd7TBwcffy5d+oOCgrr78jVJw0oulzN9+mz8/FqgyfkLddYFa4tUK4ROTUniYfSqAsLDh9O//6NWlWfEiEhcXF0p/TMXbV7TTopaU0ov5aLLV9O37wBatWptbXHqRffuochkMmMcqtpQoNORpdPRMbgzjo5OZpCuaRMUFIyzszO5BYn3/AAsKM5Aq1MRGtrzvt95+eijQxg/fhLFJRq+2n2FwiLrLyWV59LVHPYfScDFxYVXX32jQWQiKIu359SyjZUladg4tQxECMGtW/f+2KmKJvt2uri48NprC/H2bo466w9UWRetLVKNEDoNJYlH0CtzGTBgEOPGTbC2SDg5OfP85GkInaDwZDq6UvNlBW8MqJKKKP0zDy8vb8aPn2htceqNm5sb7dt3IE2npaSWTvgJt5cBrbV1vLEjl8vp1i0EtaaU4tLqAxTmFhh2K0mR7Q2Ehw8nKmosBUVqvtpzxew5BWvKtYR8vjt0E0dHR+bPX0jLlg9YWyTAsBQIoHBytrIkDRuFsyFGZVl71YUma1gBeHh48vrrb+Dh4Yk68zfU2X9ZW6RqEXotpUlH0ZdmG6e7G8qXaY8eoYweHY2+REvhsVT096lxpU4ppuiXTOwdHJg1a57VAvyZmrJo6Ym1zB1YZlhJ0dbrTlnb5d4jc0RuYRL2dvZ07NjJEmI1CkaOHM2wYSPIyVPy7b6rqDXWDXuSnFbEzgPXkcsVzJ37Oq1bB1pVnvI0a2aIV6Utbpz5TS2Fttjg8lLWXnWhYYzaZsTb24fXX1+Eu3szVBnnUGWZNieQqRA6DaW3DqMryaRnz948//y0BmNUlREREUV4+BPoCjXkH0lBV2i56XeZvHKfgKqOmwPlzQIKf07HVq5g7pzXGpTSrC9lSZkTamFYaYQgWashIKA1Hh6e5hKtydOpUxdkMhn5hSlVnqNSF6FUFdAxuFOj3YFqDmQyGWPHPkPfvgNIzShh14EbZk19Ux25+Uq27b+GXg8zZsxtcBkI2rQx5D8svGH9CQaZvPJYjFUdtxRCr6foxmVsbOQEBNTdxaNhjdxmwtfXjwULFt+eufoVVeaFBuXQLnRqSm4dQleaRe/eDzN16qwGuZVaJpPx1FMTjDNX+YdTUKdZZsuzjYMCG5eKA4qNiy02DuZ/EYVeUPxbNsVns3Bycub11xcRFBRs9notSYsWLfH28iZRW/OkzEkaNXoMuTol6o6zswtt27anqCQLra5ywzavMBXAosnXGwsymYxnn32BLl26cf1WvkVS39yJUqVl695rlCq1xMRMaZDvxCOP9MfZ2YW8P86gKbRukFWFkzO2d0R8t3X3tPoyZf5fv6LOz+GRR/rj5uZW53LuC8MKwNfXn9jYOLy9fVBnXUCd+VuDMK70WhUlCQfRK3Po23cAU6fOtGhk9doik8mIjBzDlCnTkQsbCn9Ko+RiDsICX4muD/mWZRHCxsXW8LeZ0ZVqKTiWivJqPn5+LVj0xjLatbNetGJzIZPJ6NK1O2ohyNDVbJk3UWvwaenSRRrs60vHjp0QCAqLK891WlCcBnBfBQWtDQqFgunTZ9OiRUvO/J7B739aLoq3Xi/YeeA6uflKhg+PYMCAQRaruzY4ODgwduzT6NUqUg5sQ6e27kYk/yGRIDOYILbunvgPjrCqPCUpt8j6+RDOzs6MGjWmXmXdN4YVGJYFFyx4E19fP9TZl1BlnLOqcaXXKim9dRC9Ko+BAwczefLUBrf8VxV9+w4gNjYOLy9vSv/Mo+BYKroS8zqPKtztsHFUIHOU4xEegMLMaXbUKcUU/JCMNktJWFgvFi9ehp+f9Xf3mIuy2ZCa+lklaTQ4ODjQtm17c4p1X1DmN1VmQN1JQXEGLi6utGjR0pJiNSqcnJyYPftVnJyc+N+xWxYLIPrTmVQSkgrp1i3EqqlqasKAAYMYMiQcdW4WSXu+QFNkvRA69h4+KJxdkDu7Evjk89h7WC8cReGNv0j537fYyGTMmjUPL6/65S1sHKO4CfH09GLBgjfxb9ESTc7l20mbLW9c6TUllCb8gF6Vz5AhjzcoR/Wa0qZNO5YseZuwsN5os5Tk/5CMMqHQ7O1p7hgseo2eojOZFJ5Mx0YvY+LEycyYMbfJhxMIDu6ETCYjWXtvA7lIryNfr6Njx04Neoa1sdC2bXtkMhmFJXfPtKjUxag1xTz4YAcp/tA9aN7cl6lTZ6LTCXb87zoqtXmd2W8mFXDibCre3j68+OJLjUKHjx8/icGDhxqMq12fUZJc97ACpsCaz7TQ68g+e4y0Q7uwUyh4+eV5JnHzaPhPgRlwd2/GP15fTEBAKzR5V1GlnqpThHaFaysUrq1qfZ1eU0xpwkH06kKGDRvJM8/ENFqF6ezswowZc5g8eSp2cjuKz2RSeCK90e4aVKeXkP9DEqqEQlq1ak1c3NsMHjy00fZPbXBycqZVq0DStVo09zCOkzUG40vaoWYaHB0dadnyAYpLs+7SRUWlBmOrKS5Bm4Nu3UJ44olI8gtUHPwp0Wz1lCq1fHfoJnK5nBkz5jSaHcJyuZwJE57j6adj0KuUJO//mowTP6CvwQdVU0KVm0Xirs/JOX8ST08vYmPjjJt46st9aViBIXbPa68tIjCwLZr8GyhTT9V6psXBtwcOvrVLZ2I0qjRFREREMXbs041+0JbJZPTv/yjxy1bSsWNnNGkl5B1IssjslanQa/QUnc2k8HgaKPVERESxaFF8g4lBYymCgzuhB9LvoWRTbv8eFCQZVqYiMLAter2O0jsSyBeXZBt/l6gZo0dH07p1Gy78lc2Vm3WPR1Qd//vxFsUlGqKixja6vpHJZAwdOoxFi5bi36Il+ZfOkbB1E0U3LzcanV1X9Bo1WaePkrjjE1TZ6fTtO4Bly1aaNNDzfWtYAbej4i6kTZt2aPNvmn1ZUK8ppfTWIfSaYkaPjiYqamyjN6rK4+3tw6uvxjJp0mTsbGwNs1c/paEradizV+q0EvIPJKG6WUjLBwJYvDieqKix9+USV9kW8TRt9X2WptXi4OBAQEDtZ2wlKqdVq0CAuwKFFitzKvwucW8UCgUvvjgDhULB/368hVJlWh105UYef13PpV27Bxk2bKRJy7YkgYFtWRK3nBEjIhHKYlIP7iR5/zeocirfRNGYEUJQcPUiCVs3kvv7KTw9PHn55flMmTIdJyfTunnc14YVGBwe5837BwEBrQ3LghnnzWJc6bVKShMPoVcXMWLEKCIj67froKFiY2PDoEFDiY9fRefOXdGkl5J/IAnljYIG9yWkV+so+iWDwp/SkKkFo0dHE/fmclq3vn9TPpTloEurZsaqVK8nT6+jXbsHG4VPSWOh7Iu5RJlb4XiJMg8PD09cXBrHUlNDoUWLlkREjKG4RMORn5NNVq5KrePA8VsoFIpGteGoKmxt7XjyyfHEx6+iS5fulKYkcGv7ZtKO7rWqc7spKU6+SeKOT0k/+h2olURGjuGtt/5ptowRZnsijh49yrBhw3j88cdZv369uaoxCc7OLsyfH4u/v3lyCxqCfx5Brypg6NDhjBkzzqTlN0S8vX2YN28BkydPxV5hT/G5LAqPN5zZK3Xq7VmqW0W0ah1IXNxyIiPH3JezVOVxdXWjeXNfMnTaKg3hsnAMks+PaSnb8Vei/HvpSqtTo9aU3HdL0qZi+PCRtGjxAL9dyiIlvdgkZR7/JYWiYg1PPBHZpHZp+vn588orr/PKK/+g5QMBFF79g4StG8j8+RA6pWV2WJoaZWYqSfu+JmX/N6hzM3n44X68/fa/GD06Gnt7e7PVaxbDSq/XEx8fz4YNG9i9ezd79uzh2rVr5qjKZBh8rt4w5hbU5N0wSblC6ClN/gm9ypD7b/z4iU1q+a86ynyv3nrL8CWkySg1OIbfsp7vldDe3vF3Ig2ZBqKixrHojWU88IC0pFVG27btUAlBfhV5AzNuz2a1bdvOkmI1eVxcXHF1da3gY1WqMgRy9PdvOgO4JVEoFEyaNBmAH47fqrfeycop5eyFTJr7NGfEiEhTiNigkMlkdO3anaVLVjBlynQ83JuR98cZbn79/8g+e9zqsa9qiio3k5QD20nc9RmlKQl07tyVuLjlvPjiDLy9zR/WwSyG1W+//Ubr1q1p2bIltra2jBgxgh9++MEcVZmUZs08eOWV13F0dEKZdhptSUa9y1Sln0dXnEqXLt2YNOn5+8aoKo+npxevvPI6zz33InY2thT9kknR6Qz0Zt4KfSeaHENICFVCIQEBrXjzzeVERIy+72ep7iQw0GAwZVYRKLTseGNz2G0M+Pr6o1YXUTb8K1WFt4/7WU+oRk5QUDC9e/chLbOEPy5Xn+i6OoQQHDqRhBCC8U9PwtbWvHH0rImNjQ19+w5gxYr3ePrpGJwdHMg5f4KEr/8fub+fbrA7CDUFeaQd+Y5b2zZTfOsq7ds/yD/+sZj582Mt6qNoFsMqPT0df/+/Ayn6+vqSkVF/I8US+Pu3YObMudjIQJl0HL267gkr1blX0eRexr9FS6ZPn90g09RYCplMxoABg1i69B3atXsQdVIx+QeT0eQozV63EILSy3kUHElFSO+ggAAAF5FJREFUX6Jl+PAIFi2Klxyvq6AsB2JWFQ7sWVodHs08cHNzt6BU9wfNm/siEMaQC8rb+qd58+bWFKvRM3bsM9ja2vLj6WQ0mtqH1gFDzKqbSQV07tyV7t3vj6Tjtra2DB06jJUr/4+oqHHY2cjIOn2EhG82kH/5d0QVs9qWRltaTMaJH0j4diOF1y4SENCK2bNfJTZ2iVXSjzVurzsz0alTFyZNeh6hU1Ga/FOdYlzplLmo0s/i4uLK3DmvmXzXQWOleXNfFix4k4iIKESpjoKjqSiv5ZttaVCv0VN4Mp2SCzm4ubrx6qsLGTv2aSmRbTWUJR/NqmTGqlSvp1joCZB2qJmFv5cpDO+DSl10+7hkWNUHLy9vwsOHU1Ss4czv6bW+Xq8XHDmZjEwmY9y4CffdyoODgwMREaNZufL/GD48AplGRcax/dza8QnFidet5tqh12oMM2nfbCD/0jl8vH2YNm0WcXFv06NHqNX6ySxrIL6+vqSk/J2pPT09vdovLh8fV3OIUS+io0cRHT2qnqXMMoksTZGpU5/noYfCWLVqFQW/ZqPNU+HcwweZvPoXwWNYzWeZdIVqCk+koyvS0K1bN1599VU8PDzufeF9jyvNfXzIyTbET5ro7mn8Jfu2sRUU1L5BvreNnTZtAgAI8AvB1/NB/rj+PQBBQYHY2TXdpSdLMGnSMxw9eohTv6bTvZMPjnckcJ82oWuV1166mkNmTimDBw8mNPT+zdfo4+PKjBlTGTduDJ9//jkHDhwg5X/f4tQyEJ+HBmHXzKtW5bUZN7VOcgghKLrxF1mnj6AtLsTNzY1npjzP448/3iBcO2TCDKamTqdj2LBhfPzxx/j4+DB27Fjee+892rWTnF0lJCQkJCQkmi5mMe3kcjmLFy/m+eefRwhBdHS0ZFRJSEhISEhINHnMMmMlISEhISEhIXE/IjmvS0hISEhISEiYCMmwkpCQkJCQkJAwEZJhJSEhISEhISFhIqxiWAUHBxMVFcXo0aOJioriP//5j1nrO3jwoNnrOHXqFOfOnbvnedu2bSM+Pv6e5w0ePJi8vLx7nncn77//PidOnKj1dZagrN8jIiKYO3cuKpUhPcLTTz8NQHJyMhEREdWW8eeff3LkyBHj35boW0tT1k4jR45k9OjRbNq06Z5xYpKTk9m9e7dZ5Vq7di2bNm0CIDY2lu+//77WZdwp54ULF1i+fLnJZDQVDbUPqqOmuuVOrPUOrVixgk8++cT495QpU1i8eLHx75UrV/Lxxx9Xem15ndEYnqfylH93Nm/ebNSD5qa8/n3ppZcoKiqqUzkZGRnMmTPHxNI1LaxiWDk6OrJt2za2b9/Otm3bePHFF81Wl06nY/DgwWatA2puWAE1ClpW18Bms2fP5uGHH67TteamrN937dqFQqHgiy++ADD+WxMuXbrE0aNHjX9bom8tTVk77d69m40bN3L06FHWrl1b7TVJSUlWHdRryp1ydunShTfeeMOKElVOY+2DuugNa71DoaGhRp0phCA3N5crV64Yfz937hyhoRUjnOt0hjRYZTrDUs9TWb2mZvPmzZSWlpql7Dspr3/d3d357LPP6lRO8+bNWb16tYmluzfm6gNzYJVIWpV9+RUVFREdHc26desIDAxk/vz59OnTh7FjxxISEsK4ceM4fvw4Pj4+vPfee3h4eJCYmMjSpUvJzc3F0dGR+Ph42rRpQ2xsLHZ2dvz555+EhobSoUMHLly4wOLFi4mNjcXe3p5Lly6Rk5PD8uXL2b59O+fPn6d79+6sWLECgOPHj7NmzRrUajWtWrVixYoVODo6MnjwYKKiojh06BBarZbVq1djZ2fHli1bkMvl7Nq1i0WLFlFQUMBHH32EVqulWbNmvPvuu3h6et5132Xk5eUxf/58MjIy6N69e4U22rlzJ59++ilarZZu3bqxZMkShBC88cYbXLhwAZlMxpNPPsmzzz5LbGwsgwYNIjw8nCNHjvDOO+/g5ORESEgISUlJrFu3jrVr15KSkkJiYiJpaWnExMQwadIk03d0NfTs2ZPLly8DEBIScpdRqlariYuL48KFC9ja2rJgwQJCQkJ4//33UalUnD17lqlTp6JUKiv0rbOzMxcuXCA7O5vXXnuN8PBwhBAsXbqUU6dO4e/vj1wuJzo6mvDwcIvec13w9PRk2bJlREdH8/LLL5OcnMzrr79uVMZvvvkmPXr04L333uP69evGmeDHHnus0vPuZPv27WzcuBEbGxuCgoJYuXIlycnJLFy4kLy8PDw9PVmxYgV+flXnqvvjjz945513KCkpwcPDg3feeQdvb29u3bpFXFwcOTk5yOVyVq9efZecwcHBbNy4kXXr1pGfn8/ChQtJTEzEycmJZcuW0aFDB6s/r+bug5kzZ5KWloZarSYmJoaxY8cChvciJiaGw4cP4+joyIcffoinpyeHDh2qVrcUFxcTGRnJ999/j1wup6ioiFGjRvH999/z2Wef8eWXX6JQKGjfvj3/+te/2LZtm/Ed2rt3Lx9++CFyuRxXV1c+/fRTs7VrSEiIUd9euXKFDh06kJmZSWFhIfb29ly/fp1OnTpx6tQpVq9ejZubGzdu3GDfvn1GnVHd81Tdc/PBBx+wa9cuvLy88PPzo0uXLkyePLmCfGXjyKVLlwgLC2P27NnEx8dz9epVtFots2bNYvDgwVy9epXY2Fi0Wi16vZ41a9Ygl8uZPn06u3btAmDjxo2UlJQwa9bfQaM//fRTMjIyiImJwcPDg02bNlWq081Bjx49jPoXYMOGDezduxeNRsPQoUOZNWsW//rXv/Dz82PChAmAYcba2dmZ8PBw473p9XreffddTp8+jVqtZsKECYwbN45ly5bRv39/Bg0axMyZM2nWrBnLly9n69atJCYmMnfu3AryVDXGT5o0ieDgYM6ePcvIkSMZOnRopbopOzubuLg4EhMTkclkLFmyhB49etRq7Pzkk0/uejfqjLACwcHBYvTo0WLUqFFi9OjR4rvvvhNCCPHTTz+Jp556SuzZs0e88MILxvODgoLE7t27hRBCrF27VsTHxwshhHj22WdFQkKCEEKIX3/9VcTExAghhFiwYIGYNm2a8fpvv/3WeM2CBQvEvHnzhBBCHDhwQISGhoorV64IIYSIiooSly5dEjk5OWLChAmitLRUCCHE+vXrxQcffCCEEGLQoEHiv//9rxBCiM8++0wsWrRICCHEmjVrxMaNG411FhQUGP//1VdfiXfeeecuWcoTHx9vrOPw4cOiY8eOIjc3V1y9elVMmzZNaLVaIYQQS5YsEdu3bxcXLlwQkydPNl5fWFhovL/9+/cLlUolBg4cKJKTk4UQQsybN8/YJmvWrBHjx48XGo1G5OTkiN69exvLNyc9evQQQgih0WjESy+9JLZs2SKEECIkJEQIIURSUpIYOXKkEEKIjRs3ioULFwohhLh27Zp49NFHhUqluqv97uzbOXPmCCGEuHr1qhg6dKgQQoi9e/eKqVOnCiGEyMzMFL169RL79+839+3WmbL2KE+vXr1Edna2UCqVQqVSCSGEuHnzphgzZowQQoiff/65wjNf1XnluXLlinj88cdFXl6eEEKI/Px8IYQQ06ZNE9u3bxdCCPHNN9+IGTNmCCEqPuNlz5lGoxFPPfWUyMnJEUIIsWfPHhEbGyuEEGLs2LHiwIEDQgghVCqVUCqVd8lZ/u/4+Hixdu1aIYQQJ06cEKNGjTLWa+nn1VJ9IMTf7a5UKsXIkSON/REUFCQOHz4shBBi1apV4qOPPhJC1Ey3xMbGGtv+yy+/FCtXrhRCCNGvXz+hVquFEH/rjPLXjRw5UqSnp1f43ZwMGTJEpKamii1btogtW7aI1atXiyNHjogzZ86ICRMmCCEM7dqjRw+jLhPi7/6p7nmq6rn59ddfxejRo4VarRZFRUUiPDy8gu4u485x5L333hM7d+4UQhj6IDw8XJSWlor4+Hixa9cuIYRBt6lUqgq6TAghNmzYINasWWMst0z/DBo0yNjfVel0U1Gmf7VarZg9e7b48ccfhRBCHDt2TCxevFgIIYRerxfTpk0Tp0+fFhcvXhQTJ040Xv/EE0+ItLS0Cvf25ZdfGp9LlUolxowZI5KSksSePXvEqlWrhBBCREdHi6eeesp478eOHbtLtqrG+IkTJ4qlS5caz6tKN82dO1ds3rzZeA+FhYW1HjsrezfqilVmrBwcHNi2bdtdxx9++GH27t3L0qVLjZY+GAKODh8+HIDIyEhmz55NSUkJ586dY86cOcbZHW25pLHDhg2rsv5BgwYB0KFDB7y9vWnfvj0ADz74IMnJyaSlpXH16lWefvpphBBotVpCQkKM1w8dOhQwTDsfOHCg0jpSU1OZO3cuGRkZaLVaHnjggWrb5JdffjEuNQwcOBA3NzcATp48ycWLF4mOjkYIgUqlwsvLi0GDBpGUlMRbb73FwIED6devX4Xyrl+/TkBAAC1atABgxIgRfPXVV8bfH330URQKBR4eHnh7e5OVlYWvr2+1MtYXlUpFVFQUAGFhYTz55JNVnnvmzBnj12Xbtm1p2bIlN2/evGcdjz32GADt2rUj+3ZKlrNnzxqfB29vbx566KH63IZVKHvGNRoNy5Yt49KlS8jlchISEio9vybnnTx5kmHDhuHubkimXPbMnT9/ng8++ACAUaNG8e6771Yp140bN7hy5YoxGLBer6d58+YUFxeTnp7OkCFDAGqUjuXMmTOsWbMGgD59+pCfn09xcTFgnef1TszRB2BYDirTI2lpaSQkJNCtWzfs7OwYOHAgAJ07dzb6TtZEt0RHR7NhwwaGDBnCt99+a/Q76tixI/Pnz+exxx4zvivlCQsLY8GCBQwfPtyo58xJSEgIZ8+e5dy5c0yePJm0tDTOnj2Lq6trhWXAbt26GXVZbajsuTl37hxDhgzB1tYWW1tb43hQGeXHkWPHjnHw4EE2bNgAGPo3JSWFHj16sG7dOlJTUwkPD6d169a1krHsuQoICKhWp9eXMv2blpZG+/bt6du3r/G+jh8/TlRUlCFhfWkpCQkJPPnkk+Tk5JCZmUl2djbu7u74+vqSnJxsLPPYsWNcvnyZffv2AYaVp4SEBMLCwti8eTPXrl2jffv2FBQUkJmZyfnz5yv40ZVR2RhfxhNPPGH8f1W66eTJk6xatQowLIe7uLiwY8eOWo2d93o3aoP1k+qUQwjBtWvXcHJyIi8vr8r8gjKZDL1ej5ubW6UGGlBt0uMyJW9jY1NB4dvY2KDT6bCxsaFv375VTgWWv768MVee+Ph4pkyZwqOPPsqpU6fu6Z9RlW+EEIKoqCheeeWVu37bsWMHx44dY8uWLezbt69WTpuV3be5qcqgrgmihnFsy99XTa9p6CQmJiKXy/H09GTt2rV4e3uza9cudDod3bt3r/Sajz/+uEbnVUZt/HSEEDz44INs2bKlwvHi4mKTJkC1xvNaHnP1walTpzh58iRff/01dnZ2TJo0yejMXD7nmVwuN+qamuiW0NBQli1bxqlTp9Dr9cbMF+vXr+f06dMcPHiQdevW3eUTtmTJEn777TcOHz7MmDFj2LZtm9HwNgdlhtXly5fp0KEDfn5+bNq0CVdXV8aMGWM8z9HRsU7l1/e5uXMcWbNmDYGBgRWOtW3blu7du3P48GGmTp3KsmXLCAwMRK/XG8+piYO6m5ubUad/+eWX7N27l7fffrtW8lZHmf5VqVRMmTKFzz77jIkTJwIwbdo0xo0bd9c1w4YNY9++fWRlZVUwcMqzePFio5FWnoKCAn788Ud69epFfn4+e/fuxdnZudqxuYzyuqN839dWN91r7CzfzpW9GzY2dXNDt4rzelUD3qZNm2jXrh3vvvsusbGxxpdAp9MZLeJdu3YRGhqKi4sLDzzwgPE4GHaMmYLu3btz7tw5bt26BUBpaek9Z0ucnZ0r7LIoLi42GoY1MSZ69uxpnKU7cuQIBQUFgGEWb9++feTk5ACQn59PSkoKubm56HQ6hg4dyty5c7l48WKF8tq0aUNSUpIxGfZ3331Xgzs3L1X1e2XHy7fHjRs3SE1NpU2bNne1c03qCw0NZf/+/QghyMrK4tSpU3W8A8tQvj1ycnJYsmSJUQEWFhYan6vt27cb3xFnZ2fj7E5155WnT58+7Nu3z7j7ND8/HzAMdmUD7s6dO+nZs2eVsrZp04bc3FzOnz8PGGaNr169irOzM35+fsaZGLVajVKpvEvO8oSFhbFz504Afv75Zzw8PHB2dq62rcyFpfqgsNCQQNbOzo5r167x66+/VipDeWqqW0aNGsX8+fONM8NCCFJSUujduzfz58+nqKiIkpKSCtckJibSrVs3Zs+ejZeXF6mpqVWWbwpCQ0M5fPgwzZo1QyaT4e7uTkFBAefOnauwSnAnZW1T3fNUXZ0HDx5ErVZTXFzMoUOHanRdv379KvicXbp0CTC0WUBAAJMmTWLw4MH89ddfeHl5kZOTQ35+Pmq1msOHD1dapouLi1Gfldfpc+bMMZZvKsrazN7enjfeeIONGzei1+vp168fW7duNT4L6enpxvFm+PDh7Nmzh/3791e6CtSvXz8+//xzo9F/8+ZNlEolYPDj2rx5M7169SIsLIyNGzdWqUsqG+Mroyrd9Mgjj/D5558DoNfrKSoqqtHYWb6d7/Vu1AarzFip1WrjtKNMJqN///5ERUWxdetWvvnmGxwdHenduzcfffQRs2bNwtHRkd9//52PPvoILy8v/v3vfwPw7rvvEhcXx0cffYROp+OJJ56gY8eO9ZavzClu3rx5qNVqZDIZc+fOJTAwsEqLedCgQcyePZuDBw+yaNEiZs2axezZs3F3d6dPnz4Vpk8rY+bMmcyfP5+IiAhCQkLw9/cHDEtac+fO5fnnn0ev12Nra0tcXBx2dnYsXLgQvV6PTCZj/vz5Fcqzt7cnLi6OKVOm4OTkRNeuXU06g1AXqqq/suPPPPMMcXFxREREYGtry8qVK7G1teWhhx5i/fr1REVFMXVq9ZnRy8p9/PHHOXnyJCNGjMDf35/OnTvj6upa/xsyE2Xvh0ajQaFQMHr0aJ577jnA0C4vv/wy27dvp3///savuaCgIGxsbIwhTCZMmMCsWbPuOq887du3Z/r06UyaNAm5XE5wcDArVqxg0aJFxMbGsnHjRuO7UBW2trasXr2at956i8LCQvR6PTExMbRv356VK1fy5ptv8v777xvPu1PO4OBgY1kvv/wyCxcuJDIyEicnJ1auXGnahq0FluqD/v37s2XLFkaMGEGbNm0qOLdX9b7MnDmzRrolIiKC1atXM2LECMAweL322msUFRUhhCAmJgYXF5cK16xatcr4EfnII4+YRJ9WR4cOHcjLyyMyMtJ4LCgoCKVSSbNmzaq8rqxtqnueqqJr164MHjyYyMhIvL29CQoKuqsdKmPGjBksX76ciIgIhBA88MADrFu3jr1797Jz504UCgU+Pj689NJLKBQKZs6cSXR0NH5+frRt27bSMseNG8cLL7yAr68vsbGx1er0+lL+eQoODiYoKIjdu3cTGRnJtWvXeOqppwCDsfrPf/4TT09P2rdvT3FxMX5+fnh7e99V5tixY0lOTja6eHh6ehqX6sLCwjh+/DgBAQH4+/uTn59fpWFV1Rh/5ztQlW5auHAhixcv5ptvvkGhULBkyRK6d+9e47FTq9Xe892oVVuLRrBeUtmuMYl7U1JSYpx2Xbp0KYGBgWbbZdLQKWuLvLw8xo0bxxdffIGXl5e1xZKQMBv79u3j0KFDVjVQGypl+kCpVDJhwgTeeuutGhllEuahqY3xDcrHqiqsPdPSWPnqq6/Yvn07Go2GTp06MX78eGuLZDWmTZtGYWEhWq2WGTNmSEaVRJPmrbfe4scff2T9+vXWFqVBsnjxYq5du2acmZSMKuvS1Mb4RjFjJSEhISEhISHRGJByBUpISEhISEhImAjJsJKQkJCQkJCQMBGSYSUhISEhISEhYSIkw0pCQkJCQkJCwkRIhpWEhISEhISEhImQDCsJCQkJCQkJCRPx/wECFso3pqnnvwAAAABJRU5ErkJggg==" }, "metadata": {} } ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "And we might want to know how these covary (bearing in mind that the values have to sum to 100):" ], "metadata": {} }, { "cell_type": "code", "execution_count": 51, "source": [ "dat_red.corr()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Experimental design Piloting Data collection \\\n", "Experimental design 1.000000 -0.057772 -0.394450 \n", "Piloting -0.057772 1.000000 -0.116101 \n", "Data collection -0.394450 -0.116101 1.000000 \n", "Data analysis -0.418189 -0.062659 -0.181762 \n", "Writing results -0.149596 -0.332602 -0.395939 \n", "Review process -0.007290 -0.215466 -0.344578 \n", "\n", " Data analysis Writing results Review process \n", "Experimental design -0.418189 -0.149596 -0.007290 \n", "Piloting -0.062659 -0.332602 -0.215466 \n", "Data collection -0.181762 -0.395939 -0.344578 \n", "Data analysis 1.000000 -0.146576 -0.340260 \n", "Writing results -0.146576 1.000000 0.375177 \n", "Review process -0.340260 0.375177 1.000000 " ], "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", "
Experimental designPilotingData collectionData analysisWriting resultsReview process
Experimental design1.000000-0.057772-0.394450-0.418189-0.149596-0.007290
Piloting-0.0577721.000000-0.116101-0.062659-0.332602-0.215466
Data collection-0.394450-0.1161011.000000-0.181762-0.395939-0.344578
Data analysis-0.418189-0.062659-0.1817621.000000-0.146576-0.340260
Writing results-0.149596-0.332602-0.395939-0.1465761.0000000.375177
Review process-0.007290-0.215466-0.344578-0.3402600.3751771.000000
\n", "
" ] }, "metadata": {}, "execution_count": 51 } ], "metadata": { "collapsed": false } } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }