{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Basic Statistics\n", "\n", "*Damian Trilling and Penny Sheets*\n", "\n", "This notebook is designed to show you some ways to use python for basic statistical analysis of numbers, and to explore some methods that go beyond `df.describe()` or `Counter()`, which we used last week. In particular, we are going to look into analyzing numerical data. Next week, we will focus on textual data.\n", "\n", "The dataset we use in this example is a subset of the data presented in Trilling, D. (2013). *Following the news. Patterns of online and offline news use*. PhD thesis, University of Amsterdam. http://hdl.handle.net/11245/1.394551\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import our tools/modules/libraries\n", "\n", "As always, we first import the tools we'll need. Today, we'll use pandas (usually imported as \"pd\"), and something called statsmodels, and something called numpy. We also use matplotlib for some visualizations. A lot of other stuff here we will need for some specific analyses later on; you don't have to worry about all of it right now.\n", "\n", "If you want to learn more about these modules, you can look online for info." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import seaborn as sns\n", "import statsmodels as sm\n", "import statsmodels.formula.api as smf\n", "from statsmodels.stats.weightstats import ttest_ind\n", "from scipy.stats import kendalltau\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Read data into a dataframe\n", "We will read a dataset based on Trilling (2013). It contains some sociodemographic variables as well as the number of days the respondent uses a specific medium to access information about news and current affairs.\n", "\n", "You should download the dataset (with the 'save page as' method, making sure .txt isn't appended to the file extension) into the same folder as this jupyter notebook: https://raw.githubusercontent.com/damian0604/bdaca/master/ipynb/mediause.csv\n", "\n", "Remember that the 'df' here is arbitrary; last week we used the names 'iris' and 'stockdata' and others; this week we're going more basic and just saying 'df' for dataframe." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# df = pd.read_csv('mediause.csv') # if you downloaded and stored the file locally \n", "df = pd.read_csv('https://raw.githubusercontent.com/damian0604/bdaca/master/ipynb/mediause.csv') # if directly reading it from source " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the .keys() method is way to find out what the columns are in your dataframe. Sometimes they have nice labels already, and sometimes they don't. In this case, we're in luck." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['gender', 'age', 'education', 'radio', 'newspaper', 'tv', 'internet'], dtype='object')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.keys()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remember that for a dataframe or object in python, you can simply type its name in a code cell and python will display it as best it can. (In this case, it works well.) " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genderageeducationradionewspapertvinternet
01714.05650
11402.06000
21412.04373
30655.00050
40392.00177
........................
20760495.03660
20770514.07755
20781316.03556
20790586.03310
20801213.02664
\n", "

2081 rows × 7 columns

\n", "
" ], "text/plain": [ " gender age education radio newspaper tv internet\n", "0 1 71 4.0 5 6 5 0\n", "1 1 40 2.0 6 0 0 0\n", "2 1 41 2.0 4 3 7 3\n", "3 0 65 5.0 0 0 5 0\n", "4 0 39 2.0 0 1 7 7\n", "... ... ... ... ... ... .. ...\n", "2076 0 49 5.0 3 6 6 0\n", "2077 0 51 4.0 7 7 5 5\n", "2078 1 31 6.0 3 5 5 6\n", "2079 0 58 6.0 3 3 1 0\n", "2080 1 21 3.0 2 6 6 4\n", "\n", "[2081 rows x 7 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Explore the dataset\n", "Let's do some descriptive statistics, using the .describe() method we saw last week. This would be important if you wanted to describe the dataset to your audience, for example." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genderageeducationradionewspapertvinternet
count2081.0000002081.0000002065.0000002081.0000002081.0000002081.0000002081.000000
mean0.48149946.0735224.2726393.3339743.1110044.1672272.684286
std0.49977818.2674011.6614512.6990822.8530822.5170392.786262
min0.00000013.0000001.0000000.0000000.0000000.0000000.000000
25%0.00000031.0000003.0000000.0000000.0000002.0000000.000000
50%0.00000046.0000004.0000004.0000003.0000005.0000002.000000
75%1.00000061.0000006.0000006.0000006.0000007.0000005.000000
max1.00000095.0000007.0000007.0000007.0000007.0000007.000000
\n", "
" ], "text/plain": [ " gender age education radio newspaper \\\n", "count 2081.000000 2081.000000 2065.000000 2081.000000 2081.000000 \n", "mean 0.481499 46.073522 4.272639 3.333974 3.111004 \n", "std 0.499778 18.267401 1.661451 2.699082 2.853082 \n", "min 0.000000 13.000000 1.000000 0.000000 0.000000 \n", "25% 0.000000 31.000000 3.000000 0.000000 0.000000 \n", "50% 0.000000 46.000000 4.000000 4.000000 3.000000 \n", "75% 1.000000 61.000000 6.000000 6.000000 6.000000 \n", "max 1.000000 95.000000 7.000000 7.000000 7.000000 \n", "\n", " tv internet \n", "count 2081.000000 2081.000000 \n", "mean 4.167227 2.684286 \n", "std 2.517039 2.786262 \n", "min 0.000000 0.000000 \n", "25% 2.000000 0.000000 \n", "50% 5.000000 2.000000 \n", "75% 7.000000 5.000000 \n", "max 7.000000 7.000000 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to find out how many possible values there are for a specific variable, you can use the `.value_counts()` method. In this case, you select the dataframe (which we've called `df`), select the column/variable you want to examine, and then apply the method.\n", "\n", "The output shows us that there are two values - 0 and 1 - for the 'gender' variable. It gives us how many instances (aka frequencies) of each of these values exist in the dataset." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1079\n", "1 1002\n", "Name: gender, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['gender'].value_counts()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.0 667\n", "2.0 323\n", "5.0 178\n", "6.0 396\n", "3.0 214\n", "7.0 219\n", "1.0 68\n", "Name: education, dtype: int64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#as with any method, value_counts() has parameters we can adjust.\n", "#by default, the results are sorted by size of the count, but we can\n", "#also allow it to be random if we wanted. Compare the results.\n", "\n", "df['education'].value_counts(sort=False)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.0 667\n", "6.0 396\n", "2.0 323\n", "7.0 219\n", "3.0 214\n", "5.0 178\n", "1.0 68\n", "Name: education, dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['education'].value_counts(sort=True)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0 68\n", "2.0 323\n", "3.0 214\n", "4.0 667\n", "5.0 178\n", "6.0 396\n", "7.0 219\n", "Name: education, dtype: int64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#if it is useful to sort by the index - i.e. days of the week here - then you can specify that as follows:\n", "df['education'].value_counts().sort_index()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mtest\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnormalize\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mascending\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mbins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mdropna\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Return a Series containing counts of unique values.\n", "\n", "The resulting object will be in descending order so that the\n", "first element is the most frequently-occurring element.\n", "Excludes NA values by default.\n", "\n", "Parameters\n", "----------\n", "normalize : bool, default False\n", " If True then the object returned will contain the relative\n", " frequencies of the unique values.\n", "sort : bool, default True\n", " Sort by frequencies.\n", "ascending : bool, default False\n", " Sort in ascending order.\n", "bins : int, optional\n", " Rather than count values, group them into half-open bins,\n", " a convenience for ``pd.cut``, only works with numeric data.\n", "dropna : bool, default True\n", " Don't include counts of NaN.\n", "\n", "Returns\n", "-------\n", "Series\n", "\n", "See Also\n", "--------\n", "Series.count: Number of non-NA elements in a Series.\n", "DataFrame.count: Number of non-NA elements in a DataFrame.\n", "DataFrame.value_counts: Equivalent method on DataFrames.\n", "\n", "Examples\n", "--------\n", ">>> index = pd.Index([3, 1, 2, 3, 4, np.nan])\n", ">>> index.value_counts()\n", "3.0 2\n", "1.0 1\n", "2.0 1\n", "4.0 1\n", "dtype: int64\n", "\n", "With `normalize` set to `True`, returns the relative frequency by\n", "dividing all values by the sum of values.\n", "\n", ">>> s = pd.Series([3, 1, 2, 3, 4, np.nan])\n", ">>> s.value_counts(normalize=True)\n", "3.0 0.4\n", "1.0 0.2\n", "2.0 0.2\n", "4.0 0.2\n", "dtype: float64\n", "\n", "**bins**\n", "\n", "Bins can be useful for going from a continuous variable to a\n", "categorical variable; instead of counting unique\n", "apparitions of values, divide the index in the specified\n", "number of half-open bins.\n", "\n", ">>> s.value_counts(bins=3)\n", "(0.996, 2.0] 2\n", "(2.0, 3.0] 2\n", "(3.0, 4.0] 1\n", "dtype: int64\n", "\n", "**dropna**\n", "\n", "With `dropna` set to `False` we can also see NaN index values.\n", "\n", ">>> s.value_counts(dropna=False)\n", "3.0 2\n", "1.0 1\n", "2.0 1\n", "4.0 1\n", "NaN 1\n", "dtype: int64\n", "\u001b[0;31mFile:\u001b[0m ~/opt/anaconda3/envs/dj21/lib/python3.7/site-packages/pandas/core/base.py\n", "\u001b[0;31mType:\u001b[0m method\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#You can also use a help command to get python to print info about this method. But in this case, \n", "#you have to make an additional step, because the selected column isn't an object until\n", "#it is officially run in a 'real' command. So you have to turn that into an object, and then ask for help.\n", "\n", "test = df['education']\n", "test.value_counts?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also display value counts for multiple variables at once, to get an overview of your data. In this case, use a loop to replicate commands for each of the four media types. We'll do this next, but we'll also set a few specifications so that it prints out nicely. \n", "\n", "See if you can figure out what each of these print commands is doing." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RADIO\n", "0 0.292167\n", "7 0.199904\n", "5 0.169149\n", "3 0.082653\n", "4 0.075925\n", "2 0.066314\n", "6 0.058145\n", "1 0.055742\n", "Name: radio, dtype: float64\n", "-------------------------------------------\n", "\n", "NEWSPAPER\n", "0 0.356559\n", "6 0.252763\n", "7 0.126862\n", "1 0.081211\n", "2 0.061028\n", "5 0.055262\n", "3 0.038443\n", "4 0.027871\n", "Name: newspaper, dtype: float64\n", "-------------------------------------------\n", "\n", "TV\n", "7 0.271024\n", "5 0.149447\n", "0 0.143681\n", "6 0.112446\n", "4 0.095147\n", "3 0.082653\n", "2 0.074003\n", "1 0.071600\n", "Name: tv, dtype: float64\n", "-------------------------------------------\n", "\n", "INTERNET\n", "0 0.389716\n", "7 0.197021\n", "1 0.090822\n", "2 0.083614\n", "3 0.072081\n", "5 0.069678\n", "4 0.049976\n", "6 0.047093\n", "Name: internet, dtype: float64\n", "-------------------------------------------\n", "\n" ] } ], "source": [ "for medium in ['radio','newspaper','tv','internet']:\n", " print(medium.upper())\n", " print(df[medium].value_counts(sort=True, normalize=True))\n", " print('-------------------------------------------\\n')\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So that's one way to start exploring a dataset generally.\n", "\n", "## Groupby\n", "\n", "Let's say you'd like to compare the media use of men and women in the dataset. Eventually we'll move toward statistical comparison, but for now we can start by looking at their descriptive statistics - separately for men and women.\n", "\n", "In python, this is quite easy, using the `.groupby()` method.\n", "\n", "First, we group the dataframe by the 'gender' variable, and then apply a method to that grouped dataframe; this is called 'chaining' multiple methods together. (We saw a bit of this chaining idea last week already.)\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ageeducation...tvinternet
countmeanstdmin25%50%75%maxcountmean...75%maxcountmeanstdmin25%50%75%max
gender
01079.044.74420817.50805313.030.044.059.086.01072.04.212687...7.07.01079.02.3707142.6826100.00.01.05.07.0
11002.047.50499018.95603213.033.047.063.095.0993.04.337362...7.07.01002.03.0219562.8568090.00.02.06.07.0
\n", "

2 rows × 48 columns

\n", "
" ], "text/plain": [ " age education \\\n", " count mean std min 25% 50% 75% max count \n", "gender \n", "0 1079.0 44.744208 17.508053 13.0 30.0 44.0 59.0 86.0 1072.0 \n", "1 1002.0 47.504990 18.956032 13.0 33.0 47.0 63.0 95.0 993.0 \n", "\n", " ... tv internet \\\n", " mean ... 75% max count mean std min 25% 50% \n", "gender ... \n", "0 4.212687 ... 7.0 7.0 1079.0 2.370714 2.682610 0.0 0.0 1.0 \n", "1 4.337362 ... 7.0 7.0 1002.0 3.021956 2.856809 0.0 0.0 2.0 \n", "\n", " \n", " 75% max \n", "gender \n", "0 5.0 7.0 \n", "1 6.0 7.0 \n", "\n", "[2 rows x 48 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('gender').describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sometimes in this case, it's more useful to transpose the dataset, making columns into rows and vice versa. This display will then be much easier to look at. In this case, we use a .T at the end, after the describe() method. This doesn't change the dataframe in any way, just displays it differently for you here." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
gender01
agecount1079.0000001002.000000
mean44.74420847.504990
std17.50805318.956032
min13.00000013.000000
25%30.00000033.000000
50%44.00000047.000000
75%59.00000063.000000
max86.00000095.000000
educationcount1072.000000993.000000
mean4.2126874.337362
std1.6005101.723294
min1.0000001.000000
25%3.0000003.000000
50%4.0000004.000000
75%6.0000006.000000
max7.0000007.000000
radiocount1079.0000001002.000000
mean3.0685823.619760
std2.6976462.672636
min0.0000000.000000
25%0.0000000.000000
50%3.0000004.000000
75%5.0000006.000000
max7.0000007.000000
newspapercount1079.0000001002.000000
mean2.9360523.299401
std2.8380182.858672
min0.0000000.000000
25%0.0000000.000000
50%2.0000003.000000
75%6.0000006.000000
max7.0000007.000000
tvcount1079.0000001002.000000
mean4.0759964.265469
std2.5291932.501425
min0.0000000.000000
25%2.0000002.000000
50%5.0000005.000000
75%7.0000007.000000
max7.0000007.000000
internetcount1079.0000001002.000000
mean2.3707143.021956
std2.6826102.856809
min0.0000000.000000
25%0.0000000.000000
50%1.0000002.000000
75%5.0000006.000000
max7.0000007.000000
\n", "
" ], "text/plain": [ "gender 0 1\n", "age count 1079.000000 1002.000000\n", " mean 44.744208 47.504990\n", " std 17.508053 18.956032\n", " min 13.000000 13.000000\n", " 25% 30.000000 33.000000\n", " 50% 44.000000 47.000000\n", " 75% 59.000000 63.000000\n", " max 86.000000 95.000000\n", "education count 1072.000000 993.000000\n", " mean 4.212687 4.337362\n", " std 1.600510 1.723294\n", " min 1.000000 1.000000\n", " 25% 3.000000 3.000000\n", " 50% 4.000000 4.000000\n", " 75% 6.000000 6.000000\n", " max 7.000000 7.000000\n", "radio count 1079.000000 1002.000000\n", " mean 3.068582 3.619760\n", " std 2.697646 2.672636\n", " min 0.000000 0.000000\n", " 25% 0.000000 0.000000\n", " 50% 3.000000 4.000000\n", " 75% 5.000000 6.000000\n", " max 7.000000 7.000000\n", "newspaper count 1079.000000 1002.000000\n", " mean 2.936052 3.299401\n", " std 2.838018 2.858672\n", " min 0.000000 0.000000\n", " 25% 0.000000 0.000000\n", " 50% 2.000000 3.000000\n", " 75% 6.000000 6.000000\n", " max 7.000000 7.000000\n", "tv count 1079.000000 1002.000000\n", " mean 4.075996 4.265469\n", " std 2.529193 2.501425\n", " min 0.000000 0.000000\n", " 25% 2.000000 2.000000\n", " 50% 5.000000 5.000000\n", " 75% 7.000000 7.000000\n", " max 7.000000 7.000000\n", "internet count 1079.000000 1002.000000\n", " mean 2.370714 3.021956\n", " std 2.682610 2.856809\n", " min 0.000000 0.000000\n", " 25% 0.000000 0.000000\n", " 50% 1.000000 2.000000\n", " 75% 5.000000 6.000000\n", " max 7.000000 7.000000" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('gender').describe().T" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "#try this again here, using a different variable as the grouping variable.\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroupby\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mby\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Axis'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlevel\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Level | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mas_index\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mgroup_keys\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msqueeze\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool | lib.NoDefault'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m<\u001b[0m\u001b[0mno_default\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mobserved\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mdropna\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;34m'DataFrameGroupBy'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Group DataFrame using a mapper or by a Series of columns.\n", "\n", "A groupby operation involves some combination of splitting the\n", "object, applying a function, and combining the results. This can be\n", "used to group large amounts of data and compute operations on these\n", "groups.\n", "\n", "Parameters\n", "----------\n", "by : mapping, function, label, or list of labels\n", " Used to determine the groups for the groupby.\n", " If ``by`` is a function, it's called on each value of the object's\n", " index. If a dict or Series is passed, the Series or dict VALUES\n", " will be used to determine the groups (the Series' values are first\n", " aligned; see ``.align()`` method). If an ndarray is passed, the\n", " values are used as-is to determine the groups. A label or list of\n", " labels may be passed to group by the columns in ``self``. Notice\n", " that a tuple is interpreted as a (single) key.\n", "axis : {0 or 'index', 1 or 'columns'}, default 0\n", " Split along rows (0) or columns (1).\n", "level : int, level name, or sequence of such, default None\n", " If the axis is a MultiIndex (hierarchical), group by a particular\n", " level or levels.\n", "as_index : bool, default True\n", " For aggregated output, return object with group labels as the\n", " index. Only relevant for DataFrame input. as_index=False is\n", " effectively \"SQL-style\" grouped output.\n", "sort : bool, default True\n", " Sort group keys. Get better performance by turning this off.\n", " Note this does not influence the order of observations within each\n", " group. Groupby preserves the order of rows within each group.\n", "group_keys : bool, default True\n", " When calling apply, add group keys to index to identify pieces.\n", "squeeze : bool, default False\n", " Reduce the dimensionality of the return type if possible,\n", " otherwise return a consistent type.\n", "\n", " .. deprecated:: 1.1.0\n", "\n", "observed : bool, default False\n", " This only applies if any of the groupers are Categoricals.\n", " If True: only show observed values for categorical groupers.\n", " If False: show all values for categorical groupers.\n", "dropna : bool, default True\n", " If True, and if group keys contain NA values, NA values together\n", " with row/column will be dropped.\n", " If False, NA values will also be treated as the key in groups\n", "\n", " .. versionadded:: 1.1.0\n", "\n", "Returns\n", "-------\n", "DataFrameGroupBy\n", " Returns a groupby object that contains information about the groups.\n", "\n", "See Also\n", "--------\n", "resample : Convenience method for frequency conversion and resampling\n", " of time series.\n", "\n", "Notes\n", "-----\n", "See the `user guide\n", "`__ for more.\n", "\n", "Examples\n", "--------\n", ">>> df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',\n", "... 'Parrot', 'Parrot'],\n", "... 'Max Speed': [380., 370., 24., 26.]})\n", ">>> df\n", " Animal Max Speed\n", "0 Falcon 380.0\n", "1 Falcon 370.0\n", "2 Parrot 24.0\n", "3 Parrot 26.0\n", ">>> df.groupby(['Animal']).mean()\n", " Max Speed\n", "Animal\n", "Falcon 375.0\n", "Parrot 25.0\n", "\n", "**Hierarchical Indexes**\n", "\n", "We can groupby different levels of a hierarchical index\n", "using the `level` parameter:\n", "\n", ">>> arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],\n", "... ['Captive', 'Wild', 'Captive', 'Wild']]\n", ">>> index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))\n", ">>> df = pd.DataFrame({'Max Speed': [390., 350., 30., 20.]},\n", "... index=index)\n", ">>> df\n", " Max Speed\n", "Animal Type\n", "Falcon Captive 390.0\n", " Wild 350.0\n", "Parrot Captive 30.0\n", " Wild 20.0\n", ">>> df.groupby(level=0).mean()\n", " Max Speed\n", "Animal\n", "Falcon 370.0\n", "Parrot 25.0\n", ">>> df.groupby(level=\"Type\").mean()\n", " Max Speed\n", "Type\n", "Captive 210.0\n", "Wild 185.0\n", "\n", "We can also choose to include NA in group keys or not by setting\n", "`dropna` parameter, the default setting is `True`:\n", "\n", ">>> l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]\n", ">>> df = pd.DataFrame(l, columns=[\"a\", \"b\", \"c\"])\n", "\n", ">>> df.groupby(by=[\"b\"]).sum()\n", " a c\n", "b\n", "1.0 2 3\n", "2.0 2 5\n", "\n", ">>> df.groupby(by=[\"b\"], dropna=False).sum()\n", " a c\n", "b\n", "1.0 2 3\n", "2.0 2 5\n", "NaN 1 4\n", "\n", ">>> l = [[\"a\", 12, 12], [None, 12.3, 33.], [\"b\", 12.3, 123], [\"a\", 1, 1]]\n", ">>> df = pd.DataFrame(l, columns=[\"a\", \"b\", \"c\"])\n", "\n", ">>> df.groupby(by=\"a\").sum()\n", " b c\n", "a\n", "a 13.0 13.0\n", "b 12.3 123.0\n", "\n", ">>> df.groupby(by=\"a\", dropna=False).sum()\n", " b c\n", "a\n", "a 13.0 13.0\n", "b 12.3 123.0\n", "NaN 12.3 33.0\n", "\u001b[0;31mFile:\u001b[0m ~/opt/anaconda3/envs/dj21/lib/python3.7/site-packages/pandas/core/frame.py\n", "\u001b[0;31mType:\u001b[0m method\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#you can use help again here, to figure out all the specifications.\n", "\n", "df.groupby?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And, as we did last week, you can plot a simple histogram of the distribution of a variable across the dataset. So if you want to look at how 'radio' (as in, how many days per week a person uses radio) is distributed among your sample, e.g., you can use a histogram." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Here, 'bins' refers to how many bars we want, essentially. If you don't specify, python/pandas will guess based\n", "#on the dataset. This can be misleading. So if you know how many you want to display, you should specify.\n", "\n", "df['radio'].hist(bins=7)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "#Try to plot a histogram of internet news use here:\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One of the modules we imported above helps us to make prettier plots (but no, it's not called \"pretty plot\" like \"pretty print\"). Here we can plot the value counts for internet news use in a bar chart, again sorted by the index.\n", "\n", "In particular, the histogram above is very good for continous variables, that we want to 'bin' into fewer bins (=bars). But if we only have a small number of discrete values (like here: the integers from 0 to 7), then the alignment of the labels above may be more confusing. \n", "\n", "Let's try to use `.plot()` to make a bar chart:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df['internet'].value_counts().sort_index().plot(kind='bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## POP QUIZ!\n", "\n", "Can you integrate this plotting method in your for-loop (from above) to get a nice series of plots? Fill in the missing line of code, below. But keep the plt.show() command afterward, in order to display all plots.\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RADIO\n", "0 0.292167\n", "7 0.199904\n", "5 0.169149\n", "3 0.082653\n", "4 0.075925\n", "2 0.066314\n", "6 0.058145\n", "1 0.055742\n", "Name: radio, dtype: float64\n", "-------------------------------------------\n", "\n", "NEWSPAPER\n", "0 0.356559\n", "6 0.252763\n", "7 0.126862\n", "1 0.081211\n", "2 0.061028\n", "5 0.055262\n", "3 0.038443\n", "4 0.027871\n", "Name: newspaper, dtype: float64\n", "-------------------------------------------\n", "\n", "TV\n", "7 0.271024\n", "5 0.149447\n", "0 0.143681\n", "6 0.112446\n", "4 0.095147\n", "3 0.082653\n", "2 0.074003\n", "1 0.071600\n", "Name: tv, dtype: float64\n", "-------------------------------------------\n", "\n", "INTERNET\n", "0 0.389716\n", "7 0.197021\n", "1 0.090822\n", "2 0.083614\n", "3 0.072081\n", "5 0.069678\n", "4 0.049976\n", "6 0.047093\n", "Name: internet, dtype: float64\n", "-------------------------------------------\n", "\n" ] } ], "source": [ "for medium in ['radio','newspaper','tv','internet']:\n", " print(medium.upper())\n", " print(df[medium].value_counts(sort=True, normalize=True))\n", " print('-------------------------------------------\\n')\n", " #YOUR CODE HERE\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And instead of (or in addition to) the plt.show(), you can also save these plots to your folder on your computer. These are very high quality images then, that could be used in a piece (if you provided appropriate axis titles, etc.), and you can specify the figure size and DPI.\n", "\n", "Note here we've added a 'figsize' specification to the end of the plot method in your missing line of code. You can play around with different figure sizes to see what happens, if you display them here using plt.show()." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RADIO\n", "0 0.292167\n", "7 0.199904\n", "5 0.169149\n", "3 0.082653\n", "4 0.075925\n", "2 0.066314\n", "6 0.058145\n", "1 0.055742\n", "Name: radio, dtype: float64\n", "-------------------------------------------\n", "\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "NEWSPAPER\n", "0 0.356559\n", "6 0.252763\n", "7 0.126862\n", "1 0.081211\n", "2 0.061028\n", "5 0.055262\n", "3 0.038443\n", "4 0.027871\n", "Name: newspaper, dtype: float64\n", "-------------------------------------------\n", "\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TV\n", "7 0.271024\n", "5 0.149447\n", "0 0.143681\n", "6 0.112446\n", "4 0.095147\n", "3 0.082653\n", "2 0.074003\n", "1 0.071600\n", "Name: tv, dtype: float64\n", "-------------------------------------------\n", "\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "INTERNET\n", "0 0.389716\n", "7 0.197021\n", "1 0.090822\n", "2 0.083614\n", "3 0.072081\n", "5 0.069678\n", "4 0.049976\n", "6 0.047093\n", "Name: internet, dtype: float64\n", "-------------------------------------------\n", "\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for medium in ['radio','newspaper','tv','internet']:\n", " print(medium.upper())\n", " print(df[medium].value_counts(sort=True, normalize=True))\n", " print('-------------------------------------------\\n')\n", " #YOUR CODE HERE ...(kind='bar', figsize=(6,4))\n", " plt.savefig('{}.png'.format(medium), dpi=400)\n", " plt.show()\n", "\n", "#Now go check your folder and see if the image files have shown up.\n", "#Note that we have to use the curly brackets and .format(medium) to give \n", "#the relevant title to each figure. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plots grouped by variables\n", "\n", "You can also create comparison histograms, side-by-side, for different values of a variable. For example, let's look at the histogram of internet news use for men and women in this dataset.\n", "\n", "Here, we're using the \"by=[' ']\" command to specify which grouping variable we want, and again specifying the bins and the figure size, both of which you can play around with." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ], dtype=object)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.hist(column='internet', by=['gender'], bins=7, figsize=(10,5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Statistical tests and subsetting datasets\n", "\n", "Now, if we want to move onto statistical comparisons, we can run our normal, basic statistics here in python as well. There's no need to import your datset to SPSS to do this, if you want to know whether a specific difference is significant, for example.\n", "\n", "### T-tests\n", "\n", "Let's start with a t-test, comparing the mean internet news use for men and women that we just examined in the histograms. \n", "\n", "In order to do this, we have to create two new little dataframes out of our first one - one for men, one for women.\n", "\n", "We are using the ability to filter a dataframe (e.g., `df[df['gender']==1]` to create a dataframe only for males; adding `['internet']` at the end selects only the column for internet). This can be handy to select only relevant data for your story out of a much larger dataset!" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "males_internet = df[df['gender']==1]['internet']\n", "females_internet = df[df['gender']==0]['internet']\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each of these new dataframes can then be described and explored as we do with any pandas dataframe, and using `.describe()`, remember, gives us the mean score (handy for our t-test!)." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1002.000000\n", "mean 3.021956\n", "std 2.856809\n", "min 0.000000\n", "25% 0.000000\n", "50% 2.000000\n", "75% 6.000000\n", "max 7.000000\n", "Name: internet, dtype: float64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "males_internet.describe()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1079.000000\n", "mean 2.370714\n", "std 2.682610\n", "min 0.000000\n", "25% 0.000000\n", "50% 1.000000\n", "75% 5.000000\n", "max 7.000000\n", "Name: internet, dtype: float64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "females_internet.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see the male mean is 3.02, and the female mean is 2.37. But we don't know if, based on the sample, this is a significant difference. We don't want to make misleading claims in our story! So, run a t-test. (Specifically, an independent samples t-test.)\n", "\n", "The results return the test statistic, p-value, and the degrees of freedom (in that order). " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(5.363006854632657, 9.094061516694626e-08, 2079.0)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttest_ind(males_internet,females_internet)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that males use the internet significantly more often than females (that e-08 means the p-value is REALLY tiny). \n", "\n", "We could also do some pretty-printing if we wanted to, to display this more nicely for ourselves.\n", "\n", "The \"._f\" specification is how many decimal places; the integer before the colon is the position of the output from the default t-test command.\n", "\n", "And again, here we see the use of \".format()\" as a method to input something from the ongoing calculation." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "t(2079) = 5.363, p = 0.000\n" ] } ], "source": [ "results = ttest_ind(males_internet,females_internet)\n", "print('t({2:.0f}) = {0:.3f}, p = {1:.3f}'.format(*results))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look into some continous variables. First of all, let us create one: We make a subset of our dataframe that contains only the media variables, apply the `.mean()` method to it (`axis = 1` means that we want to apply it row-wise), and then we assign the result of this to a new colum in the original dataframe.\n", "\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "df['meanmedia'] = df[['radio','internet','newspaper','tv']].mean(axis=1)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#We can then plot this mean media usage (for news) by age, using a scatterplot, e.g.\n", "#Feel free to play around with the color parameters, and remember to use help commands to \n", "#find out more about formatting these plots.\n", "\n", "df.plot.scatter(x='age', y='meanmedia', c='blue')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are obviously many more possibilities here, including running a correlation between age and mean media use, for example, or using ANOVAs if you had more than 2 groups to compare, etc. We don't have time to show all of this to you in class, but remember there is a ton of resources online, so you should just search away to find what you need. If you have problems understanding specific modules or commands you find online, you can approach us during our open lab sessions with questions as to how to apply these techniques to your own data story." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Before we finish, let's play around with some more graphics\n", "\n", "The seaborn library (which we imported at the beginning) offers a lot of cool stuff." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we'll make a simple correlation matrix of the four media in this datset." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "corrmatrix = df[['internet','tv','radio','newspaper']].corr()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
internettvradionewspaper
internet1.0000000.1211920.098797-0.005689
tv0.1211921.0000000.2700310.350694
radio0.0987970.2700311.0000000.230926
newspaper-0.0056890.3506940.2309261.000000
\n", "
" ], "text/plain": [ " internet tv radio newspaper\n", "internet 1.000000 0.121192 0.098797 -0.005689\n", "tv 0.121192 1.000000 0.270031 0.350694\n", "radio 0.098797 0.270031 1.000000 0.230926\n", "newspaper -0.005689 0.350694 0.230926 1.000000" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrmatrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But think of ways that are more useful to display this to audiences, who may not want to deal with a correlation matrix. Heatmaps are one way to do this:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAD8CAYAAADUv3dIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZeklEQVR4nO3dfbQddX3v8feHKM+kKYWqJCABIllogVtDlAcxFh+CtaRYvAF8jG0DVURYixZc9vpQu6547eqDAqaRQgQVKlU0SAC9FgQEmgcbQgLiTUOUQ+rFSEEFJJyzv/1jfscMh7PPnr2zZ/acyefFmrVnZs/M/u7N3t/8znd+8xtFBGZmVo1dBh2AmdnOxEnXzKxCTrpmZhVy0jUzq5CTrplZhZx0zcwq5KRrZtaGpCskPSppfZvnJekzkjZKWifpdzsd00nXzKy9ZcD8CZ4/GZiVpsXA5zod0EnXzKyNiLgdeGyCTRYAV0XmHmCapJdMdMwX9DPA8Ty7dZMveUvmvuKdgw6hNp5ubRt0CLWx8fEtgw6hNoa3PaIdPUY3OWfX/Q89i6yFOmppRCzt4uWmAw/nlofSuv9st0PpSdfMrFKtkcKbpgTbTZIda7x/JCZM+k66ZtYs0ary1YaAA3PLM4AJ/3RxTdfMmqXVKj7tuOXAu1IvhlcDT0RE29ICuKVrZg0TfWzpSroGmAfsJ2kI+Cjwwux1YgmwAngzsBF4CljU6ZhOumbWLCPDfTtURJzR4fkA3t/NMZ10zaxZujiRNghOumbWLNWeSOuak66ZNUt/TpCVxknXzBqlnyfSylCoy5iktxVZZ2Y2cNV2Geta0X66Hyq4zsxssEaeLT4NwITlBUknk/VBmy7pM7mnpgL965dhZtYvNS8vdKrpbgFWA6cAa3LrfwGcX1ZQZmY9m8wn0iLiXuBeSV9O2x4UEQ9WEpmZWS9q3tItWtOdD6wFbgaQdLSk5WUFZWbWs5qfSCvaZexjwFzgNoCIWCvp4HJCMjPrXbQGc4KsqKJJdzginpB2eHxhM7NyTeaabs56SWcCUyTNAs4F7iovLDOzHjWkpvsB4OXAM8A1wM+B80qKycysd62R4tMAFGrpRsRTwIfTZGZWXzVv6RZKupJeBlwAHJzfJyJ+r5ywzMx61JCa7nXAEuByoN6DVZrZzq2Pg5iXoZveC58rNRIzs35oSEv3BknvA64nO5kGQEQ8VkpUZmY9iqj3H+NFk+670+Of59YFcEh/wzEz20GTvaUraRfgooj45wriMTPbMTXvvdCxn25kw7B3dbdLM7OBqfnYC0Uvjvi2pAskHShp39Gp3caSFktaLWn15Vdd06dQzcwKGBkuPg1A0Zrue9NjvsXbtqYbEUuBpQDPbt0UPUdnZtatmpcXil6RNrPsQMzM+qLmJ9KK3phyT0l/KWlpWp4l6S3lhmZm1oOG1HSvBLYBx6XlIeCvS4nIzGxHRKv4NABFa7qHRsRCSWcARMTT8uC6ZlZHDbkMeJukPchOniHpUHJXppmZ1UbNa7rd3K7nZuBASV8CjgcWlRWUmVnPGtJ74VuS1gCvBgR8MCK2lhqZmVkvmtDSlfSdiDgJuHGcdWZm9TGZk66k3YE9gf0k/SZZKxdgKnBAybGZmXUv6n09VqeW7llk90I7AFjD9qT7c+DS8sIyM+vRcL17L0zYTzci/iFdjXZBRBwSETPTdFREXFJRjGZmxfWxn66k+ZIelLRR0kXjPP8bkm6QdK+kDZI6djAoeiLts5KO4/n3SLuqyP5mZpXpU01X0hSyv+jfQHZB2CpJyyPi/txm7wfuj4g/kLQ/8KCkL0XEtnbHLXoi7WrgUGAt2++RFoCTrpnVS/9qunOBjRGxCUDStcACIJ90A9gnXSy2N/AYMGF9o2g/3TnAERE1r1CbmfWv98J04OHc8hDwqjHbXAIsB7YA+wAL0xjkbRUde2E98OKC25qZDU4XA97kx/5O0+LckcYb6mBsw/NNZBWAA4CjgUskTZ0ovKIt3f2A+yWt5Lk3pjyl4P5mZpWIkeI3psyP/T2OIeDA3PIMshZt3iLg4lQF2CjpIWA2sLLda3ZzGbCZWf31r7ywCpglaSbwCHA6cOaYbX4MnATcIelFwOHApokOWrT3wne7DtfMbBD6NPZCRAxLOge4BZgCXBERGySdnZ5fAnwCWCbpPrJyxIWdhkjodEXanRFxgqRf8NxahrLXjAlrF2ZmlWv173x/RKwAVoxZtyQ3vwV4YzfHnDDpRsQJ6XGfbg5qZjYwk3nsBTOzSaeLE2mD4KRrZs3ilq6ZWYX6WNMtg5OumTVLE+4cYWY2aezsLd25r3hn2S8xaaxcf/WgQ6iN8+d8aNAh1Maf7n74oENolHBN18ysQu69YGZWoZ29vGBmVimXF8zMKuSWrplZhdxlzMysQm7pmplVJ4bde8HMrDpu6ZqZVcg1XTOzCrmla2ZWnXDSNTOrkE+kmZlVyC1dM7MKOemamVUnwknXzKw6bumamVXISdfMrDox7IsjzMyqU++c66RrZs3iiyPMzKrkpGtmViGXF8zMquPygplZhWK43kl3l04bSDpV0m5VBGNmtsNaXUwD0DHpAqcAP5R0taTfl+TWsZnVVrSKT4PQMelGxCLgMOA64EzgPyRdPtE+khZLWi1p9danftKfSM3MimhAS5eIeBa4CbgWWAP8YYftl0bEnIiYs9+eL97hIM3Mipr0LV1J8yUtAzYCpwGXA86kZlZLMVx86iTlvwclbZR0UZtt5klaK2mDpO92OmaR+uwi4BrgrIh4Jr3Ip4ALC+xrZlapfrVgJU0BLgXeAAwBqyQtj4j7c9tMAy4D5kfEjyX9dqfjFikvzIqIr48m3OTkrqI3M6tIH8sLc4GNEbEpIraRlVcXjNnmTOBrEfFjgIh4tNNB2yZdSX8m6T7gcEnrctNDwLqO4ZqZDUKo8JQ/6Z+mxbkjTQcezi0PpXV5LwN+U9JtktZIelen8CYqL3yZ7OTZJ4F8LeMXEfFYpwObmQ1CN+WFiFgKLG3ztMbbZczyC4BXAicBewB3S7onIn7Y7jXbJt2IeAJ4AjhjoqDNzOokWuPlyp4MAQfmlmcAW8bZZmtEPAk8Kel24CigbdIt1GXMzGyyaI2o8NTBKmCWpJmSdgVOB5aP2eYbwGskvUDSnsCrgAcmOqivLjOzRulX74WIGJZ0DnALMAW4IiI2SDo7Pb8kIh6QdDPZea4WcHlErJ/ouE66ZtYofSwvEBErgBVj1i0Zs/xp4NNFj+mka2aNUvM7sDvpmlmz9LOlWwYnXTNrlAInyAbKSdfMGsUtXTOzCkU46ZqZVWZQQzYW5aRrZo3SckvXzKw6Li+YmVXIvRfMzCrk3gtmZhVyTdfMrEKu6ZqZVchjL5iZVcjlBTOzCrV8Is3MrDo7fUv36da2sl9i0jh/zocGHUJt/N3qTw46hNpY9MoLBh1Co/hEmplZhXb6lq6ZWZVq3nnBSdfMmmWkVe+bnDvpmlmj1HxkRyddM2uWwDVdM7PKtGpe1HXSNbNGabmla2ZWHZcXzMwqNOKka2ZWHfdeMDOrkJOumVmFXNM1M6tQzUd2dNI1s2ZxlzEzswqNDDqADpx0zaxRWnJL18ysMjW/CphCY6BJmiHpekk/lfT/JX1V0oyygzMz61ari6kTSfMlPShpo6SLJtjuGEkjkk7rdMyiA09eCSwHXgJMB25I68zMaqWl4tNEJE0BLgVOBo4AzpB0RJvtPgXcUiS+okl3/4i4MiKG07QM2L/gvmZmlRlBhacO5gIbI2JTRGwDrgUWjLPdB4CvAo8Wia9o0t0q6R2SpqTpHcDPCu5rZlaZblq6khZLWp2bFucONR14OLc8lNb9mqTpwKnAkqLxFT2R9l7gEuDvyOrUd6V1Zma10s1lwBGxFFja5unxmsJjz9P9PXBhRIyoYK+JQkk3In4MnFLoiGZmA9TH3gtDwIG55RnAljHbzAGuTQl3P+DNkoYj4uvtDjph0pX0FxHxfyR9lnHeS0ScWyx2M7Nq9PEy4FXALEkzgUeA04Ez8xtExMzReUnLgG9OlHChc0v3gfS4ustgzcwGol+jjEXEsKRzyHolTAGuiIgNks5Ozxeu4+ZNmHQj4ob0+IVeDm5mVrWRPl6QFhErgBVj1o2bbCPiPUWO2am8cAMTlEgiYtw6bzoDuBjgRXu/lGl7uHeZmVVjso+n+zfp8a3Ai4EvpuUzgM3tdsqfEZz928fU/ao8M2uQSZ10I+K7AJI+EREn5p66QdLtpUZmZtaDurfyCl+RJumQ0YV0Ns81AzOrnX5dBlyWohdHnA/cJmlTWj4YOKuUiMzMdsCkLi+MioibJc0CZqdVP4iIZ8oLy8ysN00axHwWcDiwO3CUJCLiqnLCMjPrTSPukSbpo8A8suHNVpANdXYn4KRrZrVS9/JC0RNppwEnAT+JiEXAUcBupUVlZtaj6GIahKLlhV9FREvSsKSpZONGHtJpJzOzqrVq3mmsY9JVNnzOOknTgM8Da4BfAivLDc3MrHuT/kRaRISkoyPicWCJpJuBqRGxrvTozMy6VPeabtHywj2SjomIVRGxucyAzMx2RCN6LwCvA86S9CPgSbIR1SMijiwtMjOzHkz6mm5ycqlRmJn1Sb1TbvEr0n5UdiBmZv3QlJqumdmkMFLztq6Trpk1ilu6ZmYVasqJNDOzSaHeKddJ18waxuUFM7MK+USamVmFXNM1M6tQvVOuk66ZNYxbumZmFfKJNDOzCsXO3tLd+PiWsl9i0vjT3Q8fdAi1seiVFww6hNq4cs3fDDqERnHvBTOzCrm8YGZWoVbUu6Xb8W7AkqZI+mIVwZiZ7ahJfzfgiBiRtL+kXSNiWxVBmZn1qildxjYD35O0nOx2PQBExN+WEZSZWa+a0nthS5p2AfYpLxwzsx0z3ISkGxEfB5C0V0Q82Wl7M7NB6WdLV9J84B+AKcDlEXHxmOffDlyYFn8J/FlE3DvRMTueSEsHPlbS/cADafkoSZd1Gb+ZWelaXUwTkTQFuJTsxrxHAGdIOmLMZg8Br013Rv8EsLRTfIWSLvD3wJuAnwGkTH5iwX3NzCoTEYWnDuYCGyNiU+pEcC2wYMxr3RUR/5UW7wFmdDpo0aRLRDw8ZtVI0X3NzKrSIgpPkhZLWp2bFucONR3I572htK6dPwZu6hRf0RNpD0s6DghJuwLnkkoNZmZ10s1lwBGxlPYlAY23y7gbSq8jS7ondHrNokn3bLJi8nTgEeAW4P0F9zUzq0wf++kOAQfmlmeQ9eJ6DklHApcDJ0fEzzodtGjvha3A24vFaWY2OAVqtUWtAmZJmknW2DwdODO/gaSDgK8B74yIHxY5aNHeC4dIukHSTyU9Kukbkg7pLn4zs/L1q/dCRAwD55D9Zf8A8JWI2CDpbElnp80+AvwWcJmktZJWd4qvaHnhy2RdJ05Ny6cD1wCvKri/mVkl+tlPNyJWACvGrFuSm/8T4E+6OWbR3guKiKsjYjhNX6T+tyIys51QN70XBqFoS/dWSReR9VMLYCFwo6R9ASLisZLiMzPrykjUe0Tdokl3YXo8a8z695IlYdd3zawWGjHgTUTMLDsQM7N+qPsg5oXvHCHpFWTXH+8+ui4iriojKDOzXtU75RZMupI+CswjS7oryAaAuBNw0jWzWqn7IOZFey+cBpwE/CQiFgFHAbuVFpWZWY+a0nvh6YhoSRqWNBV4FJ88M7MaakrvhdWSpgGfB9aQDda7sqygzMx61ZTeC+9Ls0sk3QxMjYh15YVlZtabPo69UIpuei+8lWzYsiA7ieaka2a1U/cTaUV7L1wGHEY23gLAWZJeHxEe3tHMaqUpLd3XAq+I9G4kfQG4r93GafT1xQCa8hvsssteOxqnmVkhIx3HDxusol3GHgQOyi0fyATlhYhYGhFzImKOE66ZVakVUXgahKIt3d8CHpA02mPhGOBuScsBIuKUMoIzM+tWI3ovkA3Ua2ZWe00Ze2E12y+QeBkwG7gpIp4tLzQzs+7VvaVbtKZ7O7C7pOnAd4BFwLKygjIz61Xda7rd3DniKeCtwGcj4lTg5eWFZWbWm5FoFZ4GoXDSlXQs2R2Bb0zrppQTkplZ76KL/wahaE33g8CHgOvT3TAPAW4tLywzs95EQwa8Gcp3C4uITcC55YRkZta7RlwGDCxLJ9FWkZ1UuyMi2l6RZmY2KI24DDgiTpS0K9lFEfPI7gS8d0TsW2ZwZmbdakRLV9IJwGvSNA34JnBHeWGZmfVmpNWMmu53yS6Q+CSwIiK2lReSmVnv6n5xRDdjLxwPnAicK6kF3B0R/6u0yMzMetCUmu7jkjaRjS42AzgOeGGZgZmZ9aIpNd3/IBve8U5gCbDIJQYzq6NGtHSBWVH3HsdmZtT/RFrRy4APk/QdSesBJB0p6S9LjMvMrCctovA0CEWT7ufJLgN+FiDdCfj0soIyM+tVRBSeBqFoeWHPiFgpKb9uuIR4zMx2SFMGMd8q6VCy268j6TTgP0uLysysR3Xvp1u0vPB+4B+B2ZIeAc4Dzi4rKDOzXvVzEHNJ8yU9KGmjpIvGeV6SPpOeXyfpdzsds2hL9xHgSrLhHPcFfg68G/irgvubmVWi1aeOVpKmAJcCbwCGgFWSlkfE/bnNTgZmpelVwOfSY1tFk+43gMeB7wNbuorczKxCfTxBNhfYmIayRdK1wAIgn3QXAFdF9qL3SJom6SUR0bb8WjTpzoiI+T0GbmZWmT4m3enAw7nlIZ7fih1vm+lMcM6raE33Lkm/U3BbM7OBiS4mSYslrc5Ni3OHEs83NqMX2eY5irZ0TwDeI+kh4Jn0QhERR3bacXjbI+MFVTlJiyNi6aDjqAN/Ftv5s9iuKZ9FDzmn3XseIhtvZtQMnl9eLbLNc6hIU1zSS8dbHxE/6rhzTUhaHRFzBh1HHfiz2M6fxXb+LJ5L0guAHwInkXUmWAWcGREbctv8PnAO8Gay0sNnImLuRMctOsrYpEmuZmb9EBHDks4BbiG7+/kV6ca8Z6fnlwAryBLuRuApYFGn4xYtL5iZ7XQiYgVZYs2vW5KbD7LrGAoreiKtCSZ9raqP/Fls589iO38WFShU0zUzs/7YmVq6ZmYD56RrZlahWiddSXcV2OY8SXtWEMvRkt5c9uv0W7os8X2DjqPOJM2T9M00f8p4A5uY9Uutk25EHFdgs/OArpJuGsiiW0eTdQ2ZbKYBO2XSTSNAdfUdj4jlEXFxWTHZr/u/7rRqnXQl/TI9zpN0m6R/kfQDSV9KP6hzgQOAWyXdmrZ9o6S7JX1f0nWS9k7rN0v6iKQ7gbel5Y+n7e6TNDttt5ekKyStkvTvkhZI2pVsRLWFktZKWjiQD6Q3FwOHprivy7fWJS2T9EcDjK3vJB0s6QFJl5EN0PRP6fLODZI+nttufvou3Qm8Nbf+PZIuSfMvTbepWpceDxrg+/l8eg/fkrSHpEMl3SxpjaQ7JM2WNEXSpvTbmCapJenEdJw7JB0m6bXpu7A2fb/3Sb+v2yVdL+l+SUtG/7GS9Lk2n99mSZ+StDJNh6X1+0v6avr9rJJ0fFr/MUlLJX0LuKrqz7FWurm1RdUT8Mv0OA94guwSu12Au4ET0nObgf3S/H7A7cBeaflC4CO57f4id+zNwAfS/PuAy9P8/wbekeankV2RshfwHuCSQX8mPXyGBwPr0/ypwBfS/K5kA3XsMegYS3i/LeDVaXnf9DgFuA04Etg9vfdZZJe0fwX4Ztru1/+fgRuAd6f59wJfH9D7GQaOTstfAd4BfIfshrGQXQn1r2n+ZuDlwFvIrqD6MLAb8FDuPR2f5vcm66s/D/gVcEj6nL4NnNbu80vLm4EPp/l35T6/L+d+mwcBD6T5jwFrmvZ962WqdUt3jJURMRTZXYnXkn0Zx3o1cATwPUlrycb8zV/C/M9jtv9aelyTO94bgYvS/reR/UArb+GU5Cbg9yTtRjYO6O0R8fSAYyrDjyLinjT/PyV9H/h3smR0BDCbLAn9v8gywhfbHOdYsiQCcDXZGCSD8FBErE3zo9/V44Dr0vf0H4GXpOfvAE5M0yfJYj6GLAEDfA/42/RX4rSIGL3t1sqI2BQRI8A1bH+v431+o67JPR6b5l8PXJLiWg5MlbRPem55Q79vXZlMtZVncvMjjB+7gG9HxBltjvFkm2PmjyfgjyLiweccWJpwYOLJICJ+Jek24E3AQrb/aJrmSQBJM4ELgGMi4r8kLSP7RxQ6jATVxqA6tY/97r8IeDwijh5n2zvI7upyAPAR4M/JWrK3A0TExZJuJDs/cY+k16f9xr636PD5jd1ndH4X4NixyVXZ/RXH/v52SpOppdvOL4DRf0nvAY7P1Zf2lPSyLo93C/ABpW+JpP8xzutMJmPjvpbs+vDXkL3XJptK9kN/QtKLyFr3AD8AZiq77x9Au3+k72L7Xa/fDtxZVqBd+jnwkKS3wa9PGB6Vnvs3slZwKyJ+RfZX4VlkyRhJh0bEfRHxKWA1WasfYK6kmamWu5Dsvbb7/EYtzD3enea/RTYADOn1ju7LO26QJiTdpcBNkm6NiJ+S1eSukbSOLAnPnmjncXwCeCGwTtL6tAzZrYqOmGwn0iLiZ2TllvWSPk32ozgR+L8RsW2w0ZUrIu4l+7N4A3AF2Z/WpGS0GLgxnUhrN6DTucCi9F16J/DB0oMu7u3AH0u6l+z9LQCIiGfI6tWj5ZU7yP7RvS8tn5e+C/cCT5OVnCBLmhcD64GHgOvbfX45u0n6N7LP5fy07lxgTjr5eD++l+Lz+DJgs52cpHnABRHxli722QzMiYitJYXVWE1o6ZqZTRpu6ZqZVcgtXTOzCjnpmplVyEnXzKxCTrpmZhVy0jUzq9B/A+qP8Tb2SvlbAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(corrmatrix)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This looks okay, but is a bit redundant, so it would be great if we could sort of 'white out' the unnecessary (replicated) top triangle of the chart, and use colors that are more intuitive - usually darker means a stronger relationship in a heat map, right?\n", "\n", "Here, note that even Damian (EVEN DAMIAN!) can't reproduce all of this out of his head. But if you look around online, or use what we show you here and adapt it, you can do a lot of amazing graphics stuff." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/fhopp/opt/anaconda3/envs/dj21/lib/python3.7/site-packages/ipykernel_launcher.py:2: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.\n", "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n", " \n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.set(style=\"white\")\n", "mask = np.zeros_like(corrmatrix, dtype=np.bool)\n", "mask[np.triu_indices_from(mask)] = True\n", "cmap = sns.light_palette(\"red\",as_cmap=True)\n", "sns.heatmap(corrmatrix,mask=mask,cmap=cmap,vmin=0,vmax=.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## So...\n", "\n", "there are lots of possibilities here. Remember: google is your friend here!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More (non-graded) homework :)\n", "\n", "Using the Iris dataset from last Wednesday, try the following:\n", "1. Describe the dataset\n", "2. Find the value counts of the 'species' column\n", "3. Describe the dataset for each of the species separately.\n", "4. Transpose the output for this previous command.\n", "5. Create side-by-side histograms of petal length for each species.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Regardless whether you were able to do that, here's a really cool graphic to show you. In this case, we're plotting petal width by petal length, with a different color for each species. This also uses the seaborn library (indicated by sns). Because of the nature of this dataset and the values within it, it works quite well.)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
speciessetosaversicolorvirginica
sepal_lengthcount50.00000050.00000050.000000
mean5.0060005.9360006.588000
std0.3524900.5161710.635880
min4.3000004.9000004.900000
25%4.8000005.6000006.225000
50%5.0000005.9000006.500000
75%5.2000006.3000006.900000
max5.8000007.0000007.900000
sepal_widthcount50.00000050.00000050.000000
mean3.4280002.7700002.974000
std0.3790640.3137980.322497
min2.3000002.0000002.200000
25%3.2000002.5250002.800000
50%3.4000002.8000003.000000
75%3.6750003.0000003.175000
max4.4000003.4000003.800000
petal_lengthcount50.00000050.00000050.000000
mean1.4620004.2600005.552000
std0.1736640.4699110.551895
min1.0000003.0000004.500000
25%1.4000004.0000005.100000
50%1.5000004.3500005.550000
75%1.5750004.6000005.875000
max1.9000005.1000006.900000
petal_widthcount50.00000050.00000050.000000
mean0.2460001.3260002.026000
std0.1053860.1977530.274650
min0.1000001.0000001.400000
25%0.2000001.2000001.800000
50%0.2000001.3000002.000000
75%0.3000001.5000002.300000
max0.6000001.8000002.500000
\n", "
" ], "text/plain": [ "species setosa versicolor virginica\n", "sepal_length count 50.000000 50.000000 50.000000\n", " mean 5.006000 5.936000 6.588000\n", " std 0.352490 0.516171 0.635880\n", " min 4.300000 4.900000 4.900000\n", " 25% 4.800000 5.600000 6.225000\n", " 50% 5.000000 5.900000 6.500000\n", " 75% 5.200000 6.300000 6.900000\n", " max 5.800000 7.000000 7.900000\n", "sepal_width count 50.000000 50.000000 50.000000\n", " mean 3.428000 2.770000 2.974000\n", " std 0.379064 0.313798 0.322497\n", " min 2.300000 2.000000 2.200000\n", " 25% 3.200000 2.525000 2.800000\n", " 50% 3.400000 2.800000 3.000000\n", " 75% 3.675000 3.000000 3.175000\n", " max 4.400000 3.400000 3.800000\n", "petal_length count 50.000000 50.000000 50.000000\n", " mean 1.462000 4.260000 5.552000\n", " std 0.173664 0.469911 0.551895\n", " min 1.000000 3.000000 4.500000\n", " 25% 1.400000 4.000000 5.100000\n", " 50% 1.500000 4.350000 5.550000\n", " 75% 1.575000 4.600000 5.875000\n", " max 1.900000 5.100000 6.900000\n", "petal_width count 50.000000 50.000000 50.000000\n", " mean 0.246000 1.326000 2.026000\n", " std 0.105386 0.197753 0.274650\n", " min 0.100000 1.000000 1.400000\n", " 25% 0.200000 1.200000 1.800000\n", " 50% 0.200000 1.300000 2.000000\n", " 75% 0.300000 1.500000 2.300000\n", " max 0.600000 1.800000 2.500000" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.groupby('species').describe().T" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[,\n", " ],\n", " [, ]],\n", " dtype=object)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAFDCAYAAACUUBKvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAleUlEQVR4nO3df3RU5Z3H8c8kIQmBpamaEBAO65FaSyIRS4WAEBGIiESJDlsgojV6FlubHpAVjIAsAQ5ZjAsoC8iu3bYQWoMaBJYfCtFYDSip3cSgVCuEHwskY1FJpIRk5u4fHOYQkfyYZOaZO3m//sodZp77fe4kD5957p3nOizLsgQAAABjwkwXAAAA0NkRyAAAAAwjkAEAABhGIAMAADCMQAYAAGAYgQwAAMAwAhk63LFjx5SdnW26DAAIKr///e+1bt06n177/vvva8KECR1cEYJJhOkCEHpOnDihw4cPmy4DAILKlClTTJeAIEYgQ4u++eYb5eTk6MiRIwoLC1NiYqJyc3P19ttva82aNWpoaFB0dLTmzJmjgQMHat68eaqurtYjjzyil156Sbt379aqVavk8XjUrVs35eTkaODAgfr88881d+5cnT9/XpZlyel0KjMzU1988YWeeeYZ/e1vf5PL5dK1116rFStW6OqrrzZ9KAB0ArNmzVJiYqKysrIkSRs3btQHH3yge+6557Ixb9CgQXrhhRf0v//7v6qpqdEPf/hD/fznP//Ose2FF17Ql19+qWeeeUaHDx/WM888o9OnTyssLEw///nPNX78eH322WfKzc3VV199JYfDoaysLE2cOLFJfbW1tVq4cKEOHjwoh8OhESNG6IknnlBERISSkpI0evRoHTx4UPn5+brpppsMHEH4xAJaUFRUZGVlZVmWZVmNjY3W3LlzrcOHD1sTJkywTp8+bVmWZX366afW8OHDrW+++cbat2+fdffdd1uWZVl//etfrWHDhllHjx61LMuySktLreHDh1u1tbVWTk6O9eKLL1qWZVk1NTXWjBkzLLfbbf3mN7/xPu7xeKxHH33UeumllwLdbQCd1N69e60JEyZ4t51Op/Xyyy9fccx7/vnnrTvvvNNqaGiwLMu64tj2/PPPWwsXLrQsy7ImTpxobdiwwbIsyzpx4oQ1evRoq7a21ho9erS1a9cuy7Is69SpU9aIESOsDz/8sMm4Onv2bGvRokWWx+Ox6uvrraysLO/+brjhBquoqMj/BwkdjhkytOjHP/6xli9frmnTpmnYsGF66KGH9N5776mmpkY/+9nPvM9zOBw6evRok9fu27dPQ4cOVd++fSVJKSkpuuqqq1RZWamxY8dqzpw5qqioUEpKiubNm6ewsDA99NBDKisr03//93+rqqpKn332mZKTkwPZZQCd2JAhQ1RfX6+PPvpIXbt21enTp9XQ0NDsmHfzzTcrIuLCf6lXGtsu+uqrr3Tw4EFNmjRJktSrVy/t3r1bf/3rX1VfX6+0tDRJUs+ePZWWlqY//vGPGjJkiPf177zzjn7/+9/L4XAoMjJSkydP1m9/+1v98z//syRp8ODBfj0+8A8CGVrUt29fvfnmm3r//fe1b98+Pfzww5o+fbpSUlK0YsUK7/NOnjyp+Ph4lZWVeR/zeDxyOBxN2rMsS42NjRo1apR27dql0tJS7d27V//xH/+h1157TevXr1dFRYXuv/9+DRkyRI2NjbK45SqAAHE4HHI6nXr99dfVpUsXOZ1OeTyeK455b775pmJiYryPX2lsu+hicLt0bDx06JDcbvcVx8tLfXtc9Xg8TZ5zaS2wD75liRZt3LhROTk5uu222/Tkk0/qtttu09dff6333ntPn3/+uSSppKRE99xzj86dO6fw8HA1NDRIujAj9u677+rYsWOSpL179+rkyZNKTk7WrFmztH37dt19991asGCBunfvrqNHj+rdd9/VQw89pIkTJ+rqq69WaWmp3G63sf4D6HwyMjJUXFysXbt26b777lNKSsoVx7xvu9LYdlH37t2VmJiozZs3S7oQ7KZMmaIePXooIiJCb7zxhiSpurpau3bt0rBhw5q0f9ttt2nDhg2yLEvnz59XYWHhZc+B/TBDhhZNnDhRH3zwgcaPH6+uXbuqV69emjZtmq6//no98cQTsixLERERWrNmjbp166b+/fsrKipKTqdTmzZt0oIFC/TLX/5Sbrdb0dHRWrt2rf7hH/5Bv/jFLzR37ly9/PLLCg8P15gxY/STn/xEjz/+uJYtW6aVK1eqS5cuuuWWWy47FQoA/hQXF6cBAwaosbFRPXv2VM+ePZWbm/udY963XWlse//9973Pee6557Rw4UKtX79eDodDS5YsUa9evbR69WotXrxYL7zwgtxutx5//HENHTq0yWvnzZunxYsXKz09XQ0NDRoxYoQee+yxgBwX+I/D4lwQAACAUZyyBAAAMIxABgAAYBiBDAAAwDACGQAAgGEB/5bluXPnVFlZqbi4OIWHhwd69wACwO12y+VyKSkpSdHR0abLCXqMi0Doa2lcDHggq6ysVGZmZqB3C8CAgoICVg1vBcZFoPO40rgY8EAWFxfnLSghISHQuwcQAKdOnVJmZqb37z0U1dXVafLkyVq7dq369Omj0tJSLV26VPX19brrrrs0c+bMVrfFuAiEvpbGxYAHsovT8QkJCerTp0+gdw8ggEL19Ft5ebnmzZunqqoqSRdOOT799NNav369evXqpenTp6ukpESpqamtao9xEeg8rjQuclE/ALRRYWGhFixYoPj4eElSRUWF+vXrp759+yoiIkLp6enauXOn4SoB2Am3TgKANlqyZEmT7ZqamianIeLj41VdXR3osgDYGDNk8Drf4L8beNf7sW1/1g20hsfjkcPh8G5bltVkGwgV/hxvO/tYzgwZvCK7hCt91ut+aXvrc/f6tW3ApISEBLlcLu+2y+Xyns4EQom//5/ozJghA4B2Sk5O1uHDh3XkyBG53W5t27ZNI0eONF0WABthhgwA2ikqKkp5eXnKzs5WfX29UlNTNW7cONNlAbARAhkA+Ki4uNj7c0pKirZs2WKwGgB2xilLAAAAwwhkAAAAhhHIAAAADCOQAQAAGEYgAwAAMIxABgAAYBiBDAAAwDACGQAAgGEEMgAAAMMIZAAAAIYRyAAAAAwjkAEAABhGIAMAADCMQAYAAGAYgQwAAMCwVgWyuro6TZgwQcePH5cklZaWKj09XWlpaVq+fLlfCwQAAAh1LQay8vJyTZkyRVVVVZKkc+fO6emnn9bq1au1fft2VVZWqqSkxN91AgAQcOcb3LZsG/YT0dITCgsLtWDBAs2ePVuSVFFRoX79+qlv376SpPT0dO3cuVOpqan+rRQAgACL7BKu9Fmv+6Xtrc/d65d2YU8tBrIlS5Y02a6pqVFcXJx3Oz4+XtXV1R1fGQAAQCfR5ov6PR6PHA6Hd9uyrCbbAAAAaJs2B7KEhAS5XC7vtsvlUnx8fIcWBQAA0Jm0OZAlJyfr8OHDOnLkiNxut7Zt26aRI0f6ozYAAIBOocVryL4tKipKeXl5ys7OVn19vVJTUzVu3Dh/1AYAANAptDqQFRcXe39OSUnRli1b/FIQAABAZ8NK/QAAAIYRyAAAAAwjkAEAYIC/Vuq36x0AOvtdEdp8UT8AAGg/f90FwK53AOjsd0VghgwAAMAwAhkAAIBhBDIAAADDCGQAAACGEcgAAAAMI5ABAAAYRiADAAAwjEAGAABgGIEMAIAQYodV6XE5VuoHACCEdPYV7+2KGTIAAADDCGQAAACGEcgAAAAMI5ABAAAYRiADAAAwjG9Z2tD5Brciu4SbLiNo+PN4cKzRFtOmTdPp06cVEXFhaM3NzVVycrLhqgDYAYHMhvz1lWa7fp2Zr3gjGFiWpaqqKr311lveQAYArcUpSwDoAIcOHZIkZWVl6Z577tGGDRsMVwTATvgYBwAd4MyZM0pJSdH8+fPV0NCgBx98UNddd52GDx9uujQANkAgA4AOMGjQIA0aNMi77XQ6VVJSQiAD0CqcsgSADlBWVqa9e/d6ty3L4loyAK1GIAOADlBbW6tly5apvr5edXV1Kioq0tixY02XBcAm+PgGAB1g1KhRKi8v18SJE+XxeDR16tQmpzABoDkEMgDoIDNmzNCMGTNMlwHAhjhlCQAAYBiBDAAAwDACGQAAgGHtuoaM+7YBAAC0n8+BjPu2AQAAdAyfT1ly3zYAAGAH5xvcQd+2z1Nb3LcNAADYQWSXcKXPet0vbW997t4OacfnQMZ92wAAADqGz6csuW8bAABAx/A5kHHfNgAAgI7h85QW920DAADoGO06x8h92wAAANqPlfoBAAAMI5ABAAAYRiADmuGvxQT9uUghAMB+WKcCaIa/FhPsqIUEAbs43+BWZJdw27UNBAqBDADgd3ZYKR0wiVOWAAAAhhHIAAAADCOQAQAAGEYgAwAAMIxABgAAYBiBDAAAwDACGQAAgGEEMgAAAMMIZAAALzve1suONQPfxkr9AAAvO94ujLsAIBQwQwYAAGAYgQwAAMAwAhkAAIBhBDI/4SJTmOLP3z1+rwHAP7io30+4yBSm8LsHAPbDDBkAAIBhBDIAAADDCGQAAACGEcgAAAAMI5ABgM3wbVcg9PAtSwCwGb5JC4SeoJ8h8+cnwXo+ZQIAgCAQ9DNk/v4kyKdMAABgWtDPkAEAAIQ6AhkAAIBh7QpkW7du1fjx45WWlqaCgoKOqgkAbIkxEYCvfL6GrLq6WsuXL9drr72myMhITZ48WUOGDFH//v07sj4AsAXGRADt4fMMWWlpqYYOHarY2FjFxMTozjvv1M6dOzuyNgCwDcZEAO3h8wxZTU2N4uLivNvx8fGqqKho8XVu94WlJk6dOtXqfTWcPd32Alvh+PHjtB2Admn7u9v1J38ej9a4+Pd98e+9M/B1TJQ6x7hox79Tu7Ztx5rt3nZrtDQuOizLsnwpYM2aNaqvr9eMGTMkSYWFhaqsrFRubm6zrysrK1NmZqYvuwRgMwUFBRo8eLDpMgLC1zFRYlwEOpMrjYs+z5AlJCSorKzMu+1yuRQfH9/i65KSklRQUKC4uDiFh4f7unsAQcztdsvlcikpKcl0KQHj65goMS4CnUFL46LPM2TV1dWaMmWKXnnlFXXt2lWTJ0/WokWLNHDgwHYVDAB2xJgIoD18niHr2bOnZs6cqQcffFANDQ1yOp0MPAA6LcZEAO3h8wwZAAAAOgYr9QMAABhGIAMAADCMQAYAAGAYgQwAAMAwAhkAAIBhBDIAAADDCGQAAACG+bwwLADAvzwejwoLC7Vjxw5VV1crLCxM8fHxGjlypKZNm6YuXbqYLtFnGzdu1NSpU3X+/HmtXr1a77zzjiIiIjRmzBhlZWUpIsJ+/z3xftlPML1nQbcwbDAdnPaora3V888/r1OnTmnMmDG69957vf82f/58LVq0yGB17ffAAw9ow4YNpstok9raWq1bt06ZmZmKiYnR0qVL9dFHHykxMVFz5szRVVddZbrEVqurq9NLL72k6OhoTZ48WbNnz9YHH3ygm266SUuXLtW1115rukR0gPnz58vj8SgjI0Px8fGyLEsul0tbtmzR2bNnlZ+fb7pEn2VkZKioqEiLFi3SmTNnlJWVJcuyVFBQIElasmSJ4QrbjvfLfoLpPQu6SLtgwQJ5PB5lZ2dfdnBycnJs8wudk5OjG264QYMHD9a6detUVlbmDWGVlZWGq2ub0aNHX/ZYdXW19/E9e/YEuiSfzJw5UwMGDFD37t21cOFC9enTR48++qj27Nmj2bNn67/+679Ml9hq//Iv/6LrrrtOX375pf7pn/5JU6ZM0YoVK7R7927Nnz9fv/71r02XiA6wf/9+7dy5s8lj/fr10+DBgzV+/HhDVXWs/fv3a/PmzQoLu3AFzeLFi3XXXXcZrso3vF/2E0zvWdAFsmA6OO1x/PhxrVq1SpKUmpqq6dOnKy8vT0899ZSCbFKyRfPnz9eyZcv0y1/+UsnJybIsS9OnT9e6detMl9YmLpdLTzzxhCTp888/17PPPitJuv7667V161aTpbXZqVOntHbtWknSiBEj9LOf/UySlJ6ebqtgieZ169ZNFRUVl90T889//rO6detmqKqO8fXXX6u8vFzXXnutjh49qn/8x3+UJJ04ccI2Z0K+jffLfoLpPQu6QBZMB6e9XC6X4uLiFB0drVWrVikzM1Nr166Vw+EwXVqb3H777brppps0d+5cHTp0SL/4xS8UGRlpu9NiPXr00Hvvvafhw4frRz/6kT7++GMNGDBAf/nLXxQdHW26vDaJiIjQu+++q9raWp09e1aVlZVKSkpSVVWV6dLQgRYvXqzZs2ervr5ecXFxcjgcqqmpUVRUlPcDhV3dd999WrNmjSorK7V06VK9+OKLevXVV5Wfn6/c3FzT5fmE98t+guk9C7pryD755JNmD86NN95ousRW2b17txYuXKgFCxZozJgxki4EtOnTp+vgwYP6+OOPDVfom/Xr1+uNN96Qy+W6bCYz2F0MkzExMbrmmmu0f/9+9evXT6dPn9aqVasu+xAQzD7++GMtWbJEHo9HTz31lObOnavo6GidOnVKS5cu1YgRI0yXiA504sQJ1dTUyOPxKCEhQb179zZdUoc6e/asYmJidPLkSUVFRdnqes7vwvtlP8HwngVdILsoGA5Oe9XV1amxsVGxsbHexzwej4qLi70hzY4+/fRT7dq1S9nZ2aZL8cmBAwd05MgRud1uXXPNNbrlllsUFRVluqx2qa+v16effqp+/fqpR48epstBABw4cECJiYmmy/CLUOxbKPbpolDtW6D7FbTrkPXu3Vs333yzbrnlFm8YO3DggOGq2qZ79+5NwpgkhYWFqVevXmYK6iA33HCDN4zZ7T2RpMTERI0fP17p6elKSUlRVFSULftxqaioKN10003q0aOH7fuC1lm5cqXpEvwmFPsWin26KFT7Fuh+BW0g+y6h8qaHSj+k0OlLqPRDCq2+QKqqqlJ1dbUkadOmTVq8eLG2b99uuy/VfJdQ7ttFeXl5khRSfbooFPpWUVHh/Xnv3r3Ky8tTfn6+ysvLA96voD1lCQCd3W9+8xutX79eHo9HQ4cO1cmTJzV27FgVFxfrlltu0eOPP266RJ+FYt9ycnIue6y4uFh33HGHJGnp0qWBLqnDhGrfLq6vVlBQoD/84Q+6//77JUlFRUWaNGmSHnjggYDVEnTfsjxx4kSz/26Xa8lCpR9S6PQlVPohhVZfcGWvvvqqtm/fri+++EITJkzQvn37FBUVpUmTJsnpdNoytFwUin2LjY3V5s2b9dhjj3mv5dy3b59uvfVWw5W1Xyj3TZIKCwv1u9/9Tt///vclSU6nU06ns3MHsunTp6uqqsq7KOylHA6HbRYhDZV+SKHTl1DphxRafcGVeTwe7xIzWVlZTb584na7DVbWfqHYtzlz5mjkyJFasWKFnnjiCQ0ZMkS//e1vlZGRYbq0dgvVvjU2Nsrj8Sg2NlaRkZHexyMjI72L3waMFWRqa2ut9PR0q6yszHQp7RIq/bCs0OlLqPTDskKrL7iyFStWWFOnTrUaGxu9j33yySfW/fffb73wwgsGK2u/UO7bl19+af3qV7+y8vLyrAkTJpgup0OFWt8eeOABa8SIEdaIESOsOXPmWJZlWaWlpVZGRoa1cuXKgNYSlNeQVVRUaNOmTba/32Oo9EMKnb6ESj+k0OoLrmz//v36yU9+4t0+dOiQjh07ptTUVINVdYxQ7pt04YsKO3bsCMlbmYVa3w4dOqQzZ87o5ptv1p/+9CfV1tbq9ttvD2gNQRnIAAAAOhNbLXsBAAAQighkAAAAhhHIAAAADCOQAQAAGEYgAwAAMIxABgAAYBiBDAAAwDACGQAAgGEEMgAAAMMIZAAAAIYRyAAAAAwjkAEAABhGIAMAADCMQIYWffTRR/rVr37V5tfde++9OnPmTLPPmTt3rkpLS30tDQCAkOCwLMsyXQQAAEBnFmG6AASXWbNmKTExUVlZWZKkjRs3atWqVbrqqqu0bds2PfXUU/rqq6907Ngx3X777XrkkUeUk5Ojo0ePKjY2VnFxcfrBD36g7Oxs/fCHP9TevXv19ttv680331RYWJiOHDmi6Oho/du//Zuuv/56TZs2TZmZmRo3bpzeeustrVixQh6PRzExMVq4cKFuvPFGrV27Vnv27NG5c+f097//XXPmzNHYsWMNHykAADoOpyzRxKRJk1RUVOTdLioqUn5+fpPnnDt3Tv/zP/+jJ598UosXL1b//v21Y8cOrVy5Uh9++OF3trt//37Nnz9f27ZtU3JystatW9fk37/44gs9+eSTWrp0qbZu3apHHnlE+fn5+r//+z+VlpZq/fr12rp1q2bOnKnnn3++4zsOAIBBzJChiSFDhqi+vl4fffSRunbtqtOnTyssrGlu//GPf+z9uaSkxBvg4uPjNW7cuO9sNzExUQkJCZKkAQMG6M0332zy7x9++KF+8IMfaMCAAZKktLQ0paWlSZKWLVumrVu36siRIyovL9c333zTMZ0FACBIMEOGJhwOh5xOp15//XW9+uqrcjqdcjgcTZ4TExPj/TkiIkKXXob47fB2UXR0dJN9fPvSxfDw8Cb7sSxLBw8e1IEDB/TTn/5UdXV1Gj58uB599NF29Q8AgGBEIMNlMjIyVFxcrF27dum+++5r9rmpqal65ZVXJElffvmldu/efVmAa43k5GR9/vnn+uyzzyRJe/bs0ZNPPqn9+/crKSlJDz/8sG699Vbt2bNHbre77Z0CACCIccoSl4mLi9OAAQPU2Nionj17qqqq6orPzcnJ0bx585Senq7Y2Fj17t27yWxYa11zzTXKz8/XnDlz5Ha71b17dy1fvlyxsbF64403dNddd8nj8WjUqFH6+uuvVVdXp+7du7ejlwAABA+WvUC7FBQUaMCAARo0aJDOnz+vqVOnKjs7W6mpqaZLAwDANpghQ7v0799fixYtksfjUUNDg8aNG0cYAwCgjZghAwAAMIyL+gEAAAwjkAEAABgW8GvIzp07p8rKSsXFxSk8PDzQuwcQAG63Wy6XS0lJST596xYAOpuAB7LKykplZmYGercADCgoKNDgwYNNlwEAQS/ggSwuLk7ShYH64q10AISWU6dOKTMz0/v3DgBoXsAD2cXTlAkJCerTp0+gdw8ggLgsAQBah4v6AQAADCOQAQAAGEYg85PzDf67AbY/2wYAAIHHrZP8JLJLuNJnve6Xtrc+d69f2gUAAGYwQwYAAGAYgQwAAMAwAhkAAIBhBDIAAADDCGQAAACGEcgAAAAMI5ABAAAYRiADAAAwjEAGAABgGIEMAADAMAIZAACAYa0KZHV1dZowYYKOHz8uSSotLVV6errS0tK0fPlyvxYIAAAQ6loMZOXl5ZoyZYqqqqokSefOndPTTz+t1atXa/v27aqsrFRJSYm/6wQAAAhZLQaywsJCLViwQPHx8ZKkiooK9evXT3379lVERITS09O1c+dOvxcKAAAQqiJaesKSJUuabNfU1CguLs67HR8fr+rq6o6vDAAAoJNo80X9Ho9HDofDu21ZVpNtAAAAtE2bA1lCQoJcLpd32+VyeU9nAgAAoO3aHMiSk5N1+PBhHTlyRG63W9u2bdPIkSP9URsAAECn0OI1ZN8WFRWlvLw8ZWdnq76+XqmpqRo3bpw/agMAAOgUWh3IiouLvT+npKRoy5YtfikIAACgs2GlfgAAAMMIZAAAAIYRyAAAAAwjkAEAABhGIIPX+Qa3LdsGAMDu2rzsBUJXZJdwpc963S9tb33uXr+0CwBAKGCGDAAAwDACGQAAgGEEMgAAAMMIZAAAAIYRyAAAAAwjkAEAABhGIENAsMYZAABXxjpkCAjWOAMA4MqYIQMAADCMQAYAAGAYgQwAAMAwAhkAAIBhBDIAAADDCGQAAACGEcgAAAAMI5ABAAAYRiADAAAwjEAGAABgGIEMAADAMAIZAACAYQQyAAAAwwhkAAAAhhHIAAAADCOQAQAAGEYgAwAAMIxABgAAYBiBDAAAwDACGQAAgGER7XnxtGnTdPr0aUVEXGgmNzdXycnJHVIYAABAZ+FzILMsS1VVVXrrrbe8gQwAAABt5/Mpy0OHDkmSsrKydM8992jDhg0dVhQAAEBn4vPU1pkzZ5SSkqL58+eroaFBDz74oK677joNHz68I+sDAAAIeT4HskGDBmnQoEHebafTqZKSElsFsvMNbkV2CTddBtrJn+8jvyMAgEDwOZCVlZWpoaFBKSkpki5cU2a3a8kiu4Qrfdbrfml763P3+qVdXI73EQBgdz5fQ1ZbW6tly5apvr5edXV1Kioq0tixYzuyNgAAgE7B5ymtUaNGqby8XBMnTpTH49HUqVObnMIEAABA67TrHOOMGTM0Y8aMDioFAACgc2KlfgAAAMMIZAAAAIYRyAAAAAwjkAEAABhGILOh8w1u0yUAAIAOZK+VXCHJfwuhsggqAABmMEMGAABgGIEMAADAMAIZAACAYQQyAAAAwwhkAAAAhhHIAAAADCOQASHGn+vUsQYeAPgH65ABIcZf69RJrFUHAP7CDBkAAIBhBDIAAADDCGQAAACGEcgAAAAMI5ABAAAYRiADAAAwjEAGAABgGIEMaIa/FkJlgVUAwKVYGBZohr8WWWWBVQDApZghAwAAMIxABgAAYBiBDAAAwDACGQAAgGEEMgAAAMMIZAAAAIYFfSBjvSaEIn6vAQCXCvp1yPy1DpTEWlAwh99rAMClgn6GDAAAINQRyAAAAAwjkAEAABjWrkC2detWjR8/XmlpaSooKOiomgAAADoVny/qr66u1vLly/Xaa68pMjJSkydP1pAhQ9S/f/+OrA8AACDk+TxDVlpaqqFDhyo2NlYxMTG68847tXPnzo6sDQAAoFPweYaspqZGcXFx3u34+HhVVFS0+Dq3+8L6S6dOnWr1vhrOnm57ga1w/Phx2g5Au7QduHYD0XZrXPz7vvj3DgBonsOyLMuXF65Zs0b19fWaMWOGJKmwsFCVlZXKzc1t9nVlZWXKzMz0ZZcAbKagoECDBw82XQYABD2fZ8gSEhJUVlbm3Xa5XIqPj2/xdUlJSSooKFBcXJzCw8N93T2AIOZ2u+VyuZSUlGS6FACwBZ9nyKqrqzVlyhS98sor6tq1qyZPnqxFixZp4MCBHV0jAABASPN5hqxnz56aOXOmHnzwQTU0NMjpdBLGAAAAfODzDBkAAAA6Biv1AwAAGEYgAwAAMIxABgAAYBiBDAAAwDACGQAAgGEEMgAAAMMIZAAAAIb5vDCsP2zcuFFTp07V+fPntXr1ar3zzjuKiIjQmDFjlJWVpYiIoCq3CY/Ho8LCQu3YsUPV1dUKCwtTfHy8Ro4cqWnTpqlLly6mS2wWx94MOx93yd7HHgCCSVAtDJuRkaGioiItWrRIZ86cUVZWlizLUkFBgSRpyZIlhiu8svnz58vj8SgjI0Px8fGyLEsul0tbtmzR2bNnlZ+fb7rEZnHszbDzcZfsfewBIJgE5cfv/fv3a/PmzQoLu3BGdfHixbrrrrsMV9W8/fv3a+fOnU0e69evnwYPHqzx48cbqqrtOPZm2PG4S6Fx7AEgGATVNWRff/21ysvLde211+ro0aPex0+cOBH0pz66deumioqKyx7/85//rG7duhmoqG049mbY+bhL9j72ABBMguqU5apVq1RZWanKykolJibqxRdf1Kuvvqr8/Hzl5uZq7Nixpku8ok8++USzZ89WfX294uLi5HA4VFNTo6ioKD377LO68cYbTZfYLI69GXY+7pK9jz0ABJOgCmSXOnv2rGJiYnTy5ElFRUXpqquuMl1Sq5w4cUI1NTXyeDxKSEhQ7969TZfUZhx7M+x63CX7H3sAMC1oA9m3HThwQImJiabL8Imda5fsXT+1m2P3+gEgkILqGrLmrFy50nQJPrNz7ZK966d2c+xePwAEUtDPkOXl5empp54yXUaLKioqNHDgQEnS3r17VVJSooiICI0dO1bJycmGq2uZ3ev/4x//qOTkZPXo0UObN29WRUWFEhMTdd9998nhcJgur1l2rn3x4sXKzs7W9773PdOlAICtBVUgy8nJueyx4uJi3XHHHZKkpUuXBrqkVru4nlRBQYH+8Ic/6P7775ckFRUVadKkSXrggQcMV9g8O9e/ZMkSffLJJ1q+fLkKCgpUUVGhMWPG6J133lGfPn00b9480yVekZ1rl6TBgwfr6quv1qxZs5SWlma6HACwraBahyw2NlabN2/WY489ph49ekiS9u3bp1tvvdVwZa1XWFio3/3ud/r+978vSXI6nXI6nUEdaC5lx/pLS0u1ZcsWhYeHq6SkRC+//LIiIyP105/+VBMmTDBdXrPsXLsk9enTR/n5+frXf/1X/ed//qcefvhh3XHHHYqOjjZdGgDYSlBdQzZnzhz9+7//u7Zv367evXsrIyND3/ve95SRkaGMjAzT5TWrsbFRHo9HsbGxioyM9D4eGRnpXewzmNm5/ujoaP3tb3+TJCUkJOjs2bOSpL///e9Bf+shO9cuSQ6HQ/3799eGDRs0c+ZM7dq1S6NHj1ZmZqZmzZplujwAsI2gG/FTUlL0ox/9SAsWLNDbb78tt9ttuqRWiY2N1e233y5JWrRokfLy8rR37149++yzGjdunNniWsHO9T/++ONyOp26++671adPH02bNk0pKSl699139eijj5our1l2rl2SLr3iYdiwYRo2bJgaGhr0l7/8RceOHTNYGQDYS1BdQ/ZtmzZt0o4dO/TrX//adCmtdujQIZ05c0Y333yz/vSnP6m2ttYbdOzArvUfO3ZMu3fv1pEjR+R2u3XNNddo1KhR3i8qBDM7175p0yZNmjTJdBkAYHtBHcgAAAA6g+C+OAgAAKATIJABAAAYRiADAAAwjEAGAABgGIEMAADAsP8Hj5VlT8XR5PUAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "iris.hist(column='petal_length', by=['species'], figsize=(10,5))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.scatterplot(x=\"petal_width\", y=\"petal_length\", hue=\"species\", data=iris)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "## Appendix: Multivariate statistical analysis\n", "\n", "For those who are interested, here's a brief bit on multivariate analyses. Here, we're focusing on the same comparison of internet news use between men and women, but first, let's see whether that holds when we control for political interest. \n", "\n", "Before we can do that, we have to bring in another datset, however, and join it. You can access this dataset and save it from the following URL: https://raw.githubusercontent.com/damian0604/bdaca/master/ipynb/intpol.csv\n", "\n", "We'll talk more about aggregating/merging datasets in a later session, so for now just go with it." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "# intpol=pd.read_csv('intpol.csv') # if you stored it locally \n", "intpol=pd.read_csv('https://raw.githubusercontent.com/damian0604/bdaca/master/ipynb/intpol.csv') # if reading it directly from the website" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "combined = df.join(intpol)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genderageeducationradionewspapertvinternetmeanmediaintpol
01714.056504.004
11402.060001.501
21412.043734.254
30655.000501.254
40392.001773.751
..............................
20760495.036603.755
20770514.077556.006
20781316.035564.757
20790586.033101.753
20801213.026644.505
\n", "

2081 rows × 9 columns

\n", "
" ], "text/plain": [ " gender age education radio newspaper tv internet meanmedia \\\n", "0 1 71 4.0 5 6 5 0 4.00 \n", "1 1 40 2.0 6 0 0 0 1.50 \n", "2 1 41 2.0 4 3 7 3 4.25 \n", "3 0 65 5.0 0 0 5 0 1.25 \n", "4 0 39 2.0 0 1 7 7 3.75 \n", "... ... ... ... ... ... .. ... ... \n", "2076 0 49 5.0 3 6 6 0 3.75 \n", "2077 0 51 4.0 7 7 5 5 6.00 \n", "2078 1 31 6.0 3 5 5 6 4.75 \n", "2079 0 58 6.0 3 3 1 0 1.75 \n", "2080 1 21 3.0 2 6 6 4 4.50 \n", "\n", " intpol \n", "0 4 \n", "1 1 \n", "2 4 \n", "3 4 \n", "4 1 \n", "... ... \n", "2076 5 \n", "2077 6 \n", "2078 7 \n", "2079 3 \n", "2080 5 \n", "\n", "[2081 rows x 9 columns]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "combined" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's do an OLS regression. In order to do so, we need to define a model and then run it. When defining the model, you create the equation in the following manner:\n", "* First you include your dependent variable, followed by the ~ sign\n", "* Then you include the independent variables (separated by the + sign)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "m1 = smf.ols(formula='internet ~ age + gender + education', data=combined).fit()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: internet R-squared: 0.085
Model: OLS Adj. R-squared: 0.084
Method: Least Squares F-statistic: 63.91
Date: Fri, 05 Nov 2021 Prob (F-statistic): 1.65e-39
Time: 11:19:47 Log-Likelihood: -4951.8
No. Observations: 2065 AIC: 9912.
Df Residuals: 2061 BIC: 9934.
Df Model: 3
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 1.1512 0.233 4.941 0.000 0.694 1.608
age -0.0119 0.003 -3.675 0.000 -0.018 -0.006
gender 0.6224 0.118 5.283 0.000 0.391 0.853
education 0.4175 0.035 11.763 0.000 0.348 0.487
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 976.493 Durbin-Watson: 1.978
Prob(Omnibus): 0.000 Jarque-Bera (JB): 187.053
Skew: 0.481 Prob(JB): 2.41e-41
Kurtosis: 1.882 Cond. No. 199.


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: internet R-squared: 0.085\n", "Model: OLS Adj. R-squared: 0.084\n", "Method: Least Squares F-statistic: 63.91\n", "Date: Fri, 05 Nov 2021 Prob (F-statistic): 1.65e-39\n", "Time: 11:19:47 Log-Likelihood: -4951.8\n", "No. Observations: 2065 AIC: 9912.\n", "Df Residuals: 2061 BIC: 9934.\n", "Df Model: 3 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 1.1512 0.233 4.941 0.000 0.694 1.608\n", "age -0.0119 0.003 -3.675 0.000 -0.018 -0.006\n", "gender 0.6224 0.118 5.283 0.000 0.391 0.853\n", "education 0.4175 0.035 11.763 0.000 0.348 0.487\n", "==============================================================================\n", "Omnibus: 976.493 Durbin-Watson: 1.978\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 187.053\n", "Skew: 0.481 Prob(JB): 2.41e-41\n", "Kurtosis: 1.882 Cond. No. 199.\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m1.summary()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: internet R-squared: 0.100
Model: OLS Adj. R-squared: 0.099
Method: Least Squares F-statistic: 57.45
Date: Fri, 05 Nov 2021 Prob (F-statistic): 5.12e-46
Time: 11:19:47 Log-Likelihood: -4934.5
No. Observations: 2065 AIC: 9879.
Df Residuals: 2060 BIC: 9907.
Df Model: 4
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept 1.0389 0.232 4.481 0.000 0.584 1.494
age -0.0196 0.003 -5.642 0.000 -0.026 -0.013
gender 0.5212 0.118 4.413 0.000 0.290 0.753
education 0.3447 0.037 9.240 0.000 0.272 0.418
intpol 0.2230 0.038 5.910 0.000 0.149 0.297
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 763.270 Durbin-Watson: 1.972
Prob(Omnibus): 0.000 Jarque-Bera (JB): 179.407
Skew: 0.483 Prob(JB): 1.10e-39
Kurtosis: 1.926 Cond. No. 200.


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: internet R-squared: 0.100\n", "Model: OLS Adj. R-squared: 0.099\n", "Method: Least Squares F-statistic: 57.45\n", "Date: Fri, 05 Nov 2021 Prob (F-statistic): 5.12e-46\n", "Time: 11:19:47 Log-Likelihood: -4934.5\n", "No. Observations: 2065 AIC: 9879.\n", "Df Residuals: 2060 BIC: 9907.\n", "Df Model: 4 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 1.0389 0.232 4.481 0.000 0.584 1.494\n", "age -0.0196 0.003 -5.642 0.000 -0.026 -0.013\n", "gender 0.5212 0.118 4.413 0.000 0.290 0.753\n", "education 0.3447 0.037 9.240 0.000 0.272 0.418\n", "intpol 0.2230 0.038 5.910 0.000 0.149 0.297\n", "==============================================================================\n", "Omnibus: 763.270 Durbin-Watson: 1.972\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 179.407\n", "Skew: 0.483 Prob(JB): 1.10e-39\n", "Kurtosis: 1.926 Cond. No. 200.\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m2 = smf.ols(formula='internet ~ age + gender + education + intpol', data=combined).fit()\n", "m2.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also do a test to see whether M2 is better than M1 (it is, in this case:)\n", "(see also http://www.statsmodels.org/stable/generated/statsmodels.regression.linear_model.OLSResults.compare_lr_test.html?highlight=compare_lr_test )\n" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(34.71733114293056, 3.8122257183791596e-09, 1.0)" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m2.compare_lr_test(m1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hexplots\n", "\n", "We have seen scatterplots at work above. Scatterplots are a cool way to show the relationship between two variables, but they mainly work well if both variables have a lot of different values (say, the money people earn in Euros' (and not in categories!), or the time people spent on Facebook in exact minutes). However, if we have only few possible values (such as the integers from 0 to 7, as in our examples above), the dots in the scatterplot will overlap, and an observation that only occurs one single time looks exactly like an observation that occurs 1000 times.\n", "\n", "A hexplot is very much like a scatterplot, but *the more observations overlap at the same (hexagon-shaped) place in the graph, the darker it gets.*\n", "\n", "To make it even more informative, we add histograms of the two variables in the margin, so that you can immediately get an idea of the distributions. This, again, helps us to understand whether there are just a few (very old, very young) people that behave in some way (no media at all, media every day), or whether it's a general pattern." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/fhopp/opt/anaconda3/envs/dj21/lib/python3.7/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", " FutureWarning\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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8Pl8NRkLwBXNdRwHqVQKlmXBsiwEg8GajQcxNXNfkKdMurq6cv/u7u7Gr3/9a3z9619HOBzO/by1tRX9/f3T0b1p4Xvf+x4efPBB9Pb2AgAikUhNxuPYsWOQZRn33nsvent7ce2116Krq6smYwEAwWAQDzzwAG6++Wb4fD6sXLmyZr8bRHGosinAoUOHcPfdd+Ohhx7CwoULJ3h8cM7PiufHbOD555/HvHnzsHr16tzPHMepyXjYto33338fjz/+OJ577jkcOHAAx48fr8lYAMCnn36KX/7yl3j77bfxzjvvQBAEdHd312w8iKmhyiYPv//973H//ffjkUcewfr167F3796c9QHg2iC0trZOYw/PHa+99hoGBgbw1a9+FdFoFMlkEidPnpygyF0r8WhpacHq1avR1NQEALjxxhuxa9eumowFALz77rtYvXo1mpubAQAbN27E008/XbPxIKaGKptJ9Pb24r777sMPf/hDrF+/HgCwfPlyHD16FMeOHYNt23j11VdxzTXXTHNPzw0///nP8eqrr2Lnzp24//77cf311+NnP/tZTcbjuuuuw7vvvouxsTHYto133nkH69atq8lYAMCFF16IPXv2IJlMgnOOt956q6bvFWJqqLKZxNNPPw1d1/HEE0/kfnb77bfjiSeewNatW6HrOtauXYt169ZNYy+nF1VVazIey5cvxz333IMtW7bANE2sWbMGmzdvxpIlS2ouFgBw9dVX4+OPP8bGjRshyzIuvfRSbN26FWvWrKnJeBBTQ342BEEQRNWhZTSCIAii6lCyIQiCIKoOJRuCIAii6lCyIQiCIKoOJRuCIAii6lCyIQiCIKoOJRuCIAii6tBLncScwXEcPP7449i/fz8SiQQ453j00UexePFifOc730FPTw8aGhoQDofR1dWFrVu34vDhw3jssccwOjoK27Zxxx13YNOmTdN9KgQx56BkQ8wZ9u/fj0gkgueeew6CIOCnP/0pnnrqKfj9fnR2duLJJ59EJBLBxo0b0dXVBcuycP/992P79u24+OKLEYvFcNttt6GzsxOXX375dJ8OQcwpKNkQc4YVK1agvr4ezz77LI4fP44PPvgAgUAA+/btw0svvQTAlbzPyqd0d3ejp6cHjzzySO4z0uk0Pv74Y0o2BHGWoWRDzBl2796Nxx57DHfddRduuOEGLFmyBC+//DIkScJ4VSZBcB9V2raNUCiEnTt35n43ODiIUCh0zvtOEHMd2iBAzBnee+89XHfdddiyZQsuueQSvPHGG7BtG2vXrsULL7wAABgZGcEbb7wBxhgWL14MTdNyyaa3txe33norDh48OJ2nQRBzEhLiJOYMhw8fxre+9S3Ytg3LsrBmzRq8/vrr2LlzJ7773e/mNghwznHttdfinnvuwaeffprbIGBZFu68805s3rx5uk+FIOYclGyIOc8zzzyDZcuWYcWKFTAMA1u2bMHWrVuxdu3a6e4aQdQM9MyGmPN0dnbi+9//PhzHgWmaWLduHSUagjjHUGVDEARBVB3aIEAQBEFUHUo2BEEQRNWhZEMQBEFUHUo2BEEQRNWhZEMQBEFUHUo2BEEQRNX5/05MpllMxVylAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.jointplot(combined['age'], combined['meanmedia'] , \n", " kind=\"hex\", color=\"#4CB391\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.11" } }, "nbformat": 4, "nbformat_minor": 4 }