You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1556 lines
136 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div>\n",
" <span>\n",
" <p align=\"left\">\n",
" <img align=\"left\" style=\"padding-right: 5px\" valign=\"center\" src=\"https://ga-dash.s3.amazonaws.com/production/assets/logo-9f88ae6c9c3871690e33280fcf557f33.png\" width=\"28px\">\n",
" </p>\n",
" </span>\n",
" <span>\n",
" <h1>Consumer Sales Lab</h1>\n",
" </span>\n",
"</div>\n",
"\n",
"<font color='red'><strong>Important!!</font></strong>: This lab is fairly challenging and may take longer than 60m to complete. Because of this, we've included a <a href='#shortcut'>shortcut cell</a> that _skips the EDA section_ of this lab and lets you get right to the analysis section. Work with your instructor and use your best judgement to use your time wisely to focus on the areas you'd like to practice.\n",
"\n",
"This lab can be conducted in one of two ways:\n",
"\n",
"- <a href=\"#eda\">EDA</a> _and_ <a href=\"#analysis\">Analysis</a>\n",
"- <a href=\"#analysis\">Analysis</a> only\n",
"\n",
"The <a href=\"#eda\">EDA</a> section covers the following topics:\n",
"\n",
"- <a href='#import'>Importing</a> data from csvs\n",
"- <a href=\"#nulls\">Handling nulls</a>\n",
"- <a href='#dtypes'>Casting different Dtypes</a>\n",
"- <a href=\"#join\">Complex joining</a> of star-schema tables\n",
"\n",
"The <a href=\"#analysis\">Analysis</a> section covers the following topics:\n",
"\n",
"- <a href='#fe'>Feature engineering</a>\n",
"- <a href=\"#visualization\">Visualization and Reporting</a>\n",
"\n",
"<details>\n",
" <summary>Table of Contents</summary>\n",
" <ul>\n",
" <li><a href=\"#eda\">EDA</a></li>\n",
" <ul>\n",
" <li><a href='#import'>Import</a></li>\n",
" <li><a href=\"#nulls\">Nulls</a></li>\n",
" <li><a href='#dtypes'>Dtypes</a></li>\n",
" <li><a href=\"#join\">Join</a></li>\n",
" </ul>\n",
" <li><a href=\"#analysis\">Analysis</a></li>\n",
" <ul>\n",
" <li><a href='#fe'>Feature Engineering</a></li>\n",
" <li><a href=\"#visualization\">Visualization and Reporting</a></li>\n",
" <ul>\n",
" <li><a href='#1a'>1.A</a></li>\n",
" <li><a href=\"#1b\">1.B</a></li>\n",
" <li><a href='#1c'>1.C</a></li>\n",
" <li><a href=\"#2a\">2.A</a></li>\n",
" <li><a href=\"#3a\">3.A</a></li>\n",
" </ul>\n",
" </ul>\n",
" </ul>\n",
"</details>\n",
"<details>\n",
" <summary>Background</summary>\n",
" <ul>\n",
" <li>Originally adapted from <a href=\"https://sense-demo.qlik.com/sense/app/372cbc85-f7fb-4db6-a620-9a5367845dce\">qlik</a>, we'll be performing EDA on a consumer data set.</li>\n",
" </ul>\n",
"</details>\n",
"<details id='prompts'>\n",
" <summary>Prompts</summary>\n",
" <br>\n",
" Your boss, Joanna, has requested a report on the following:\n",
" <ol>\n",
" <li>Product Sales</li>\n",
" <ol>\n",
" <li>Gross margin analysis by product group.</li>\n",
" <li>Sales by product group, top 10 product groups only.</li>\n",
" <li>Sales, by year/month, year over year</li>\n",
" </ol>\n",
" <li>Sales Reps</li>\n",
" <ol>\n",
" <li>Sum of Sales and sales quantity, by rep, by customer</li>\n",
" </ol>\n",
" <li>Supply Chain</li>\n",
" <ol>\n",
" <li>Inventory vs Lead Time for all products</li>\n",
" </ol>\n",
" </ol>\n",
"</details>\n",
"<details id='dictionary'>\n",
" <summary>Data Dictionary</summary>\n",
" <br>\n",
" <!-- table created with https://www.tablesgenerator.com/html_tables please see ../assets/dictionary.tgn file -->\n",
" <table>\n",
" <tr>\n",
" <th>Table</th>\n",
" <th>Field</th>\n",
" <th>Description</th>\n",
" <th>PK</th>\n",
" <th>FK</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Item master.xls</td>\n",
" <td>Item Number</td>\n",
" <td>Foreign key to Sales.Item Number field. Unique identifier for item</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Item master.xls</td>\n",
" <td>Product Group</td>\n",
" <td>Group for the product, i.e. Frozen Foods, Deli, etc</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Item master.xls</td>\n",
" <td>Product Line</td>\n",
" <td>Product line, i.e. Food, Drink, etc</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Item master.xls</td>\n",
" <td>Product Sub Group</td>\n",
" <td>Detail field for the Product Group field, i.e. Produce -&gt; Fresh Vegetables</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Item master.xls</td>\n",
" <td>Product Type</td>\n",
" <td>Type of product and additional detail at the sub group level, i.e. 'Breakfast Foods'</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Manager</td>\n",
" <td>Name of manager</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr> \n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Manager Number</td>\n",
" <td>ID of manager</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Path</td>\n",
" <td>Order through which sales passes through reps, separated by hyphens. Correlates with Sales Rep ID key.</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Sales Rep Name</td>\n",
" <td>Primary sales rep name</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Sales Rep Name 1</td>\n",
" <td>Secondary sales rep name (nullable)</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Sales Rep Name 2</td>\n",
" <td>Tertiary sales rep name (nullable)</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Sales Rep Name 3</td>\n",
" <td>Quaterinary sales rep name (nullable)</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales&nbsp;&nbsp;rep.csv</td>\n",
" <td>Sales Rep ID</td>\n",
" <td>Foreign key to Sales. UID for path.</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Customers.xlsx</td>\n",
" <td>Customer</td>\n",
" <td>Name of customer</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Customers.xlsx</td>\n",
" <td>Customer Number</td>\n",
" <td>Unique identifier for customer name, keys to Sales.Customer Number</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Customers.xlsx</td>\n",
" <td>City Code</td>\n",
" <td>City ID, foreign key for City.City Code</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Cities.xlsx</td>\n",
" <td>City</td>\n",
" <td>Name of city</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Cities.xlsx</td>\n",
" <td>City Code</td>\n",
" <td>ID of city name</td>\n",
" <td>Y</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Cities.xlsx</td>\n",
" <td>Region</td>\n",
" <td>Sales region (i.e. USA, Nordic, etc)</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Cities.xlsx</td>\n",
" <td>Latitude</td>\n",
" <td>Latitude of city</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Cities.xlsx</td>\n",
" <td>Longitude</td>\n",
" <td>Longitude of city</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Cities.xlsx</td>\n",
" <td>Desc</td>\n",
" <td>String description of city, including city, state (if applicable), and country</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>%KEY</td>\n",
" <td>Primary key of table</td>\n",
" <td>Y</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Cost</td>\n",
" <td>Total cost of sale for transaction [USD]</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Customer Number</td>\n",
" <td>Customer number, keys to Customer.Customer Number</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Date</td>\n",
" <td>Date of sale</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>GrossSales</td>\n",
" <td>Gross sale for invoice [USD]</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Invoice Date</td>\n",
" <td>Date of invoice</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Item Desc</td>\n",
" <td>Description of invoiced item</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Item Number</td>\n",
" <td>ID of invoiced item (product) - not a primary key. Keys to Item.Item Number</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Margin</td>\n",
" <td>Percent gross margin of line item sale</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Order Number</td>\n",
" <td>ID of the order placed</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Promised Delivery Date</td>\n",
" <td>Agreed date of delivery</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Sales</td>\n",
" <td>Gross sale for invoice [USD], less cost of sale</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Sales Qty</td>\n",
" <td>Qty of invoiced item sold (see Item Number, Item Desc)</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sales.xlsx</td>\n",
" <td>Sales Rep Number</td>\n",
" <td>Sales rep ID credited with sale</td>\n",
" <td>N</td>\n",
" <td>Y</td>\n",
" </tr>\n",
"</table>\n",
"</details>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='eda'></div>\n",
"<h2>EDA</h2>\n",
"\n",
"Before we create our charts/reports for Joanna, we'll need to sanity check our input data. We'll get to the analysis (feature engineering) and visualization and reporting in just a bit."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='import'></div>\n",
"<h3>Import Data</h3>\n",
"Read in the data. Check the raw file to make sure you understand quote characters, delimiters, and encoding. You will need to use the encoding flag here since we are dealing with international character sets."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Conduct any library imports here\n",
"import pandas as pd\n",
"from matplotlib.ticker import FormatStrFormatter\n",
"import matplotlib\n",
"matplotlib.use('nbagg')\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Read in your sales, cities, customers, item_master, and sales_rep csvs here.\n",
"sales = pd.read_csv('../data/sales.csv')\n",
"cities = pd.read_csv('../data/cities.csv', encoding = \"ISO-8859-1\")\n",
"customers = pd.read_csv('../data/customers.csv', encoding = \"ISO-8859-1\")\n",
"item_master = pd.read_csv('../data/item_master.csv')\n",
"sales_rep = pd.read_csv('../data/sales_rep.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>%KEY</th>\n",
" <th>Cost</th>\n",
" <th>Customer Number</th>\n",
" <th>Date</th>\n",
" <th>GrossSales</th>\n",
" <th>Invoice Date</th>\n",
" <th>Invoice Number</th>\n",
" <th>Item Desc</th>\n",
" <th>Item Number</th>\n",
" <th>Margin</th>\n",
" <th>Order Number</th>\n",
" <th>Promised Delivery Date</th>\n",
" <th>Sales</th>\n",
" <th>Sales Qty</th>\n",
" <th>Sales Rep Number</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3428</td>\n",
" <td>-513.15</td>\n",
" <td>10012226</td>\n",
" <td>1/12/2012</td>\n",
" <td>-573.3835</td>\n",
" <td>1/12/2012</td>\n",
" <td>318960</td>\n",
" <td>Cutting Edge Sliced Ham</td>\n",
" <td>10696</td>\n",
" <td>-37.29</td>\n",
" <td>115785</td>\n",
" <td>1/12/2012</td>\n",
" <td>-550.44</td>\n",
" <td>-1.0</td>\n",
" <td>180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3429</td>\n",
" <td>-105.93</td>\n",
" <td>10012226</td>\n",
" <td>1/12/2012</td>\n",
" <td>-204.6638</td>\n",
" <td>1/12/2012</td>\n",
" <td>318960</td>\n",
" <td>Washington Cranberry Juice</td>\n",
" <td>10009</td>\n",
" <td>-90.54</td>\n",
" <td>115785</td>\n",
" <td>1/12/2012</td>\n",
" <td>-196.47</td>\n",
" <td>-2.0</td>\n",
" <td>180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3430</td>\n",
" <td>-88.07</td>\n",
" <td>10012226</td>\n",
" <td>1/12/2012</td>\n",
" <td>-165.8016</td>\n",
" <td>1/12/2012</td>\n",
" <td>318960</td>\n",
" <td>Moms Sliced Ham</td>\n",
" <td>10385</td>\n",
" <td>-71.10</td>\n",
" <td>115785</td>\n",
" <td>1/12/2012</td>\n",
" <td>-159.17</td>\n",
" <td>-3.0</td>\n",
" <td>180</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" %KEY Cost Customer Number Date GrossSales Invoice Date \\\n",
"0 3428 -513.15 10012226 1/12/2012 -573.3835 1/12/2012 \n",
"1 3429 -105.93 10012226 1/12/2012 -204.6638 1/12/2012 \n",
"2 3430 -88.07 10012226 1/12/2012 -165.8016 1/12/2012 \n",
"\n",
" Invoice Number Item Desc Item Number Margin \\\n",
"0 318960 Cutting Edge Sliced Ham 10696 -37.29 \n",
"1 318960 Washington Cranberry Juice 10009 -90.54 \n",
"2 318960 Moms Sliced Ham 10385 -71.10 \n",
"\n",
" Order Number Promised Delivery Date Sales Sales Qty Sales Rep Number \n",
"0 115785 1/12/2012 -550.44 -1.0 180 \n",
"1 115785 1/12/2012 -196.47 -2.0 180 \n",
"2 115785 1/12/2012 -159.17 -3.0 180 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sales.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='nulls'></div>\n",
"<h3>Nulls</h3>\n",
"Check for nulls and missing values in all imported tables. If you are filling missing values, state your reasoning for dropping and/or imputing data."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sales nulls: 0\n",
"Customer nulls: 0\n",
"Item Master nulls: 0\n"
]
}
],
"source": [
"# No nulls in Sales\n",
"print(f'Sales nulls: {sales.isnull().sum().sum()}')\n",
"print(f'Customer nulls: {customers.isnull().sum().sum()}')\n",
"print(f'Item Master nulls: {item_master.isnull().sum().sum()}')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Manager</th>\n",
" <th>Manager Number</th>\n",
" <th>Path</th>\n",
" <th>Sales Rep Name</th>\n",
" <th>Sales Rep Name1</th>\n",
" <th>Sales Rep Name2</th>\n",
" <th>Sales Rep Name3</th>\n",
" <th>Sales Rep ID</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Amanda Honda</td>\n",
" <td>104</td>\n",
" <td>Amanda Honda-Amalia Craig</td>\n",
" <td>Amalia Craig</td>\n",
" <td>Amanda Honda</td>\n",
" <td>Amalia Craig</td>\n",
" <td>NaN</td>\n",
" <td>103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Amanda Honda</td>\n",
" <td>104</td>\n",
" <td>Amanda Honda-Cart Lynch</td>\n",
" <td>Cart Lynch</td>\n",
" <td>Amanda Honda</td>\n",
" <td>Cart Lynch</td>\n",
" <td>NaN</td>\n",
" <td>112</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Amanda Honda</td>\n",
" <td>104</td>\n",
" <td>Amanda Honda-Molly McKenzie</td>\n",
" <td>Molly McKenzie</td>\n",
" <td>Amanda Honda</td>\n",
" <td>Molly McKenzie</td>\n",
" <td>NaN</td>\n",
" <td>159</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Amanda Honda</td>\n",
" <td>104</td>\n",
" <td>Amanda Honda-Sheila Hein</td>\n",
" <td>Sheila Hein</td>\n",
" <td>Amanda Honda</td>\n",
" <td>Sheila Hein</td>\n",
" <td>NaN</td>\n",
" <td>176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Brenda Gibson</td>\n",
" <td>109</td>\n",
" <td>Brenda Gibson-Dennis Johnson</td>\n",
" <td>Dennis Johnson</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>Dennis Johnson</td>\n",
" <td>NaN</td>\n",
" <td>121</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Brenda Gibson</td>\n",
" <td>109</td>\n",
" <td>Brenda Gibson-Ken Roberts</td>\n",
" <td>Ken Roberts</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>Ken Roberts</td>\n",
" <td>NaN</td>\n",
" <td>145</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Brenda Gibson</td>\n",
" <td>109</td>\n",
" <td>Brenda Gibson-Robert Kim</td>\n",
" <td>Robert Kim</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>Robert Kim</td>\n",
" <td>NaN</td>\n",
" <td>163</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Brenda Gibson</td>\n",
" <td>109</td>\n",
" <td>Brenda Gibson-William Fisher</td>\n",
" <td>William Fisher</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>William Fisher</td>\n",
" <td>NaN</td>\n",
" <td>185</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>John Greg</td>\n",
" <td>134</td>\n",
" <td>John Greg-David Laychak</td>\n",
" <td>David Laychak</td>\n",
" <td>John Greg</td>\n",
" <td>David Laychak</td>\n",
" <td>NaN</td>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>John Greg</td>\n",
" <td>134</td>\n",
" <td>John Greg-Kathy Clinton</td>\n",
" <td>Kathy Clinton</td>\n",
" <td>John Greg</td>\n",
" <td>Kathy Clinton</td>\n",
" <td>NaN</td>\n",
" <td>144</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>John Greg</td>\n",
" <td>134</td>\n",
" <td>John Greg-Sandra Barone</td>\n",
" <td>Sandra Barone</td>\n",
" <td>John Greg</td>\n",
" <td>Sandra Barone</td>\n",
" <td>NaN</td>\n",
" <td>170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>John Greg</td>\n",
" <td>134</td>\n",
" <td>John Greg-Viginia Mountain</td>\n",
" <td>Viginia Mountain</td>\n",
" <td>John Greg</td>\n",
" <td>Viginia Mountain</td>\n",
" <td>NaN</td>\n",
" <td>184</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>Samantha Allen</td>\n",
" <td>169</td>\n",
" <td>Samantha Allen-Brad Taylor</td>\n",
" <td>Brad Taylor</td>\n",
" <td>Samantha Allen</td>\n",
" <td>Brad Taylor</td>\n",
" <td>NaN</td>\n",
" <td>108</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>Samantha Allen</td>\n",
" <td>169</td>\n",
" <td>Samantha Allen-Karl Anderson</td>\n",
" <td>Karl Anderson</td>\n",
" <td>Samantha Allen</td>\n",
" <td>Karl Anderson</td>\n",
" <td>NaN</td>\n",
" <td>143</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>Samantha Allen</td>\n",
" <td>169</td>\n",
" <td>Samantha Allen-Odessa Morris</td>\n",
" <td>Odessa Morris</td>\n",
" <td>Samantha Allen</td>\n",
" <td>Odessa Morris</td>\n",
" <td>NaN</td>\n",
" <td>160</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>Samantha Allen</td>\n",
" <td>169</td>\n",
" <td>Samantha Allen-Stephanie Reagan</td>\n",
" <td>Stephanie Reagan</td>\n",
" <td>Samantha Allen</td>\n",
" <td>Stephanie Reagan</td>\n",
" <td>NaN</td>\n",
" <td>179</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>Stewart Wind</td>\n",
" <td>181</td>\n",
" <td>Stewart Wind-Carolyn Halmon</td>\n",
" <td>Carolyn Halmon</td>\n",
" <td>Stewart Wind</td>\n",
" <td>Carolyn Halmon</td>\n",
" <td>NaN</td>\n",
" <td>111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>Stewart Wind</td>\n",
" <td>181</td>\n",
" <td>Stewart Wind-John Davis</td>\n",
" <td>John Davis</td>\n",
" <td>Stewart Wind</td>\n",
" <td>John Davis</td>\n",
" <td>NaN</td>\n",
" <td>132</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>Stewart Wind</td>\n",
" <td>181</td>\n",
" <td>Stewart Wind-Micheal Williams</td>\n",
" <td>Micheal Williams</td>\n",
" <td>Stewart Wind</td>\n",
" <td>Micheal Williams</td>\n",
" <td>NaN</td>\n",
" <td>157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>Stewart Wind</td>\n",
" <td>181</td>\n",
" <td>Stewart Wind-Ronald Golinski</td>\n",
" <td>Ronald Golinski</td>\n",
" <td>Stewart Wind</td>\n",
" <td>Ronald Golinski</td>\n",
" <td>NaN</td>\n",
" <td>166</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>Amanda Honda</td>\n",
" <td>104</td>\n",
" <td>Amanda Honda</td>\n",
" <td>Amanda Honda</td>\n",
" <td>Amanda Honda</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>104</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>Brenda Gibson</td>\n",
" <td>109</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>Brenda Gibson</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>109</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>John Greg</td>\n",
" <td>134</td>\n",
" <td>John Greg</td>\n",
" <td>John Greg</td>\n",
" <td>John Greg</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>134</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>Samantha Allen</td>\n",
" <td>169</td>\n",
" <td>Samantha Allen</td>\n",
" <td>Samantha Allen</td>\n",
" <td>Samantha Allen</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>169</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>Stewart Wind</td>\n",
" <td>181</td>\n",
" <td>Stewart Wind</td>\n",
" <td>Stewart Wind</td>\n",
" <td>Stewart Wind</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>181</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Manager Manager Number Path \\\n",
"0 Amanda Honda 104 Amanda Honda-Amalia Craig \n",
"1 Amanda Honda 104 Amanda Honda-Cart Lynch \n",
"2 Amanda Honda 104 Amanda Honda-Molly McKenzie \n",
"3 Amanda Honda 104 Amanda Honda-Sheila Hein \n",
"4 Brenda Gibson 109 Brenda Gibson-Dennis Johnson \n",
"5 Brenda Gibson 109 Brenda Gibson-Ken Roberts \n",
"6 Brenda Gibson 109 Brenda Gibson-Robert Kim \n",
"7 Brenda Gibson 109 Brenda Gibson-William Fisher \n",
"21 John Greg 134 John Greg-David Laychak \n",
"22 John Greg 134 John Greg-Kathy Clinton \n",
"23 John Greg 134 John Greg-Sandra Barone \n",
"24 John Greg 134 John Greg-Viginia Mountain \n",
"41 Samantha Allen 169 Samantha Allen-Brad Taylor \n",
"42 Samantha Allen 169 Samantha Allen-Karl Anderson \n",
"43 Samantha Allen 169 Samantha Allen-Odessa Morris \n",
"44 Samantha Allen 169 Samantha Allen-Stephanie Reagan \n",
"52 Stewart Wind 181 Stewart Wind-Carolyn Halmon \n",
"53 Stewart Wind 181 Stewart Wind-John Davis \n",
"54 Stewart Wind 181 Stewart Wind-Micheal Williams \n",
"55 Stewart Wind 181 Stewart Wind-Ronald Golinski \n",
"59 Amanda Honda 104 Amanda Honda \n",
"60 Brenda Gibson 109 Brenda Gibson \n",
"61 John Greg 134 John Greg \n",
"62 Samantha Allen 169 Samantha Allen \n",
"63 Stewart Wind 181 Stewart Wind \n",
"\n",
" Sales Rep Name Sales Rep Name1 Sales Rep Name2 Sales Rep Name3 \\\n",
"0 Amalia Craig Amanda Honda Amalia Craig NaN \n",
"1 Cart Lynch Amanda Honda Cart Lynch NaN \n",
"2 Molly McKenzie Amanda Honda Molly McKenzie NaN \n",
"3 Sheila Hein Amanda Honda Sheila Hein NaN \n",
"4 Dennis Johnson Brenda Gibson Dennis Johnson NaN \n",
"5 Ken Roberts Brenda Gibson Ken Roberts NaN \n",
"6 Robert Kim Brenda Gibson Robert Kim NaN \n",
"7 William Fisher Brenda Gibson William Fisher NaN \n",
"21 David Laychak John Greg David Laychak NaN \n",
"22 Kathy Clinton John Greg Kathy Clinton NaN \n",
"23 Sandra Barone John Greg Sandra Barone NaN \n",
"24 Viginia Mountain John Greg Viginia Mountain NaN \n",
"41 Brad Taylor Samantha Allen Brad Taylor NaN \n",
"42 Karl Anderson Samantha Allen Karl Anderson NaN \n",
"43 Odessa Morris Samantha Allen Odessa Morris NaN \n",
"44 Stephanie Reagan Samantha Allen Stephanie Reagan NaN \n",
"52 Carolyn Halmon Stewart Wind Carolyn Halmon NaN \n",
"53 John Davis Stewart Wind John Davis NaN \n",
"54 Micheal Williams Stewart Wind Micheal Williams NaN \n",
"55 Ronald Golinski Stewart Wind Ronald Golinski NaN \n",
"59 Amanda Honda Amanda Honda NaN NaN \n",
"60 Brenda Gibson Brenda Gibson NaN NaN \n",
"61 John Greg John Greg NaN NaN \n",
"62 Samantha Allen Samantha Allen NaN NaN \n",
"63 Stewart Wind Stewart Wind NaN NaN \n",
"\n",
" Sales Rep ID \n",
"0 103 \n",
"1 112 \n",
"2 159 \n",
"3 176 \n",
"4 121 \n",
"5 145 \n",
"6 163 \n",
"7 185 \n",
"21 118 \n",
"22 144 \n",
"23 170 \n",
"24 184 \n",
"41 108 \n",
"42 143 \n",
"43 160 \n",
"44 179 \n",
"52 111 \n",
"53 132 \n",
"54 157 \n",
"55 166 \n",
"59 104 \n",
"60 109 \n",
"61 134 \n",
"62 169 \n",
"63 181 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Sales Rep looks like we just don't have a 2nd or 3rd sales rep for that territory/path.\n",
"sales_rep[ sales_rep['Sales Rep Name2'].isnull() | sales_rep['Sales Rep Name3'].isnull() ]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>City</th>\n",
" <th>City Code</th>\n",
" <th>Region</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" <th>Desc</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>Yokohama</td>\n",
" <td>95</td>\n",
" <td>Japan</td>\n",
" <td>35.455592</td>\n",
" <td>139.572196</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" City City Code Region Latitude Longitude Desc\n",
"94 Yokohama 95 Japan 35.455592 139.572196 NaN"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Don't think we'll be using the Desc field, so we'll leave this as-is\n",
"cities[cities['Desc'].isnull()]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='dtypes'></div>\n",
"<h3>Dtypes</h3>\n",
"Review all imported tables and convert the data types if necessary, according to the rules in the following table:\n",
"<br><br>\n",
"<table>\n",
" <tr>\n",
" <th>Name</th>\n",
" <th>Dtype</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Primary or Foreign Keys</td>\n",
" <td>int64 or int32</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Currency</td>\n",
" <td>float64</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Text fields</td>\n",
" <td>object (string)</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Discrete, non-negative values</td>\n",
" <td>int64 or int32</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Dates</td>\n",
" <td>datetime64[ns] (Timestamp object)</td>\n",
" </tr>\n",
"</table>\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"%KEY int64\n",
"Cost float64\n",
"Customer Number int64\n",
"Date datetime64[ns]\n",
"GrossSales float64\n",
"Invoice Date datetime64[ns]\n",
"Invoice Number int64\n",
"Item Desc object\n",
"Item Number int64\n",
"Margin float64\n",
"Order Number int64\n",
"Promised Delivery Date datetime64[ns]\n",
"Sales float64\n",
"Sales Qty int64\n",
"Sales Rep Number int64\n",
"dtype: object"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Dtypes look good as-is with the exception of the datetime fields in the sales df.\n",
"# This might take a minute to run since we have quite a few rows.\n",
"sales['Promised Delivery Date'] = pd.to_datetime(sales['Promised Delivery Date'])\n",
"sales['Invoice Date'] = pd.to_datetime(sales['Invoice Date'])\n",
"sales['Promised Delivery Date'] = pd.to_datetime(sales['Promised Delivery Date'])\n",
"sales['Date'] = pd.to_datetime(sales['Date'])\n",
"# Let's get the qty as an int since we can't have fractional qtys\n",
"sales['Sales Qty'] = sales['Sales Qty'].astype('int64')\n",
"\n",
"sales.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='join'></div>\n",
"<h3>Join</h3>\n",
"Join all your tables together and store the joined result into a dataframe named <code>cs</code>. You'll need this for the <a href=\"#visualization\">reporting and visualization</a> section below. \n",
"\n",
"Use the <a href=\"#dictionary\">data dictionary</a> for guidance."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"cs = pd.merge(sales, item_master, how='left', left_on='Item Number', right_on='Item Number') \\\n",
" .merge(sales_rep, how='left', left_on='Sales Rep Number', right_on='Sales Rep ID') \\\n",
" .merge(customers, how='left', left_on='Customer Number', right_on='Customer Number') \\\n",
" .merge(cities, how='inner', left_on='City Code', right_on='City Code')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='Analysis'></div>\n",
"<h2>Analysis</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='fe'></div>\n",
"<h3>Feature Engineering</h3>\n",
"<ul>\n",
" <li>Create a new column, <code>GrossMargin</code>, which is the <code>GrossSales</code> minus the <code>Cost</code>, all divided by <code>GrossSales</code>. Store this value as a float (percentage).</li>\n",
" <li>Create a new column, <code>ShipDiff</code>, which is the difference between the <code>Promised Delivery Date</code> and the <code>Invoice Date</code>, in <code>seconds</code>.</li>\n",
" <li>Drop the <code>%KEY</code>, <code>Sales Rep Number</code>, <code>Manager Number</code>, <code>Path</code>, <code>Sales Rep ID</code>, and <code>Desc</code>.</li>\n",
"</ul>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"cs['GrossMargin'] = (cs['GrossSales'] - cs['Cost']) / cs['GrossSales']"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"cs['ShipDiff'] = (cs['Promised Delivery Date'] - cs['Invoice Date']).dt.seconds"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"cs.drop(['%KEY', 'Sales Rep Number', 'Manager Number', 'Path', 'Sales Rep ID', 'Desc'], axis=1, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='visualization'></div>\n",
"<h2>Reporting and Visualization</h2>\n",
"Create charts or reports according to the <a href=\"#prompts\">prompts</a>.\n",
"\n",
"<b>Use your best judgement to create visualizations or reports to best answer the questions. As yourself questions such as:</b>\n",
"<ul>\n",
" <li>Is the data I'm using categorical or continuous?</li>\n",
" <li>Am I looking at timeseries data?</li>\n",
" <li>Am I representing a part-of-a-whole relationship?</li>\n",
" <li>Do I have many data points? If so, could I report or chart a subset of that data?</li>\n",
"</ul>\n",
"\n",
"<b>There's no right or wrong answer to these questions. As you solve them, focus on this progression:</b>\n",
"<ul>\n",
" <li>First, create a pandas report with a dataframe or list of values that attempts to answer the prompt.</li>\n",
" <li>If you get that done, try charting it out using a pandas charting method, like <code>.plot()</code></li>\n",
" <li>If you get that done, look at how you might make your chart <i>more information dense</i></li>\n",
" <ul>\n",
" <li>Increase chart ink area</li>\n",
" <li>Reduce visual clutter</li>\n",
" <li>Use color to convey meaning</li>\n",
" <li>Increase information density with shape, size, color</li>\n",
" <li>Use callouts to highlight anomalies in your data or points of interest</li>\n",
" </ul>\n",
" <li>If you get that done, look at graduating from the <a href=\"https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html\">pandas plotting methods</a> to <a href=\"https://matplotlib.org/\">matplotlib</a>, which is the backend for pandas plotting. This will allow you more control over your plots but the learning curve is fairly steep. Hang in there!</li>\n",
"</ul>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://cdn.wikimg.net/en/strategywiki/images/7/70/SMB3-warpzone.png\" height=\"150\" width=\"150\">\n",
"\n",
"<div id='shortcut'></div>\n",
"<font color='red'><strong>Shortcut cell</font></strong>: if you'd like to bypass the EDA section, please run the cell below to import a pre-cleaned dataset into variable `cs` for charting purposes:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# Shortcut cell\n",
"cs = pd.read_csv('../data/pre_cleaned_data.csv', \n",
" infer_datetime_format=True, \n",
" parse_dates=['Date', 'Invoice Date', 'Promised Delivery Date']\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='1a'></div>\n",
"<h3>1.A</h3>\n",
"Gross Margin by product group."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cs.groupby(['Product Group'])['GrossMargin'].mean().sort_values().plot(kind='barh')\n",
"plt.title('Gross Margin by Product Group')\n",
"plt.xlabel('Gross Margin [%]');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='1b'></div>\n",
"<h3>1.B</h3>\n",
"Sales by product group, top 10 product groups only."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cs.groupby(['Product Type'])['GrossSales'].sum()\\\n",
" .apply(lambda x: x/1000000)\\\n",
" .sort_values(ascending=False)\\\n",
" .head(10)\\\n",
" .plot(kind='bar');\n",
"plt.title('Sales [MM USD] by Product Type')\n",
"plt.ylabel('Sales [MM USD]');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='1c'></div>\n",
"<h3>1.C</h3>\n",
"Sales, by year/month, year over year"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"(cs.groupby([cs['Date'].dt.year, cs['Date'].dt.month])['GrossSales'].sum().unstack().T/1000000).plot()\n",
"plt.ylabel('Sales [Million USD]')\n",
"plt.xlabel('Month')\n",
"plt.title('Monthly Sales, YOY');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='2a'></div>\n",
"<h3>2.A</h3>\n",
"Sum of Sales and sales quantity, by rep, by customer. Top 10 customer gross sales only. Formatted as a data frame, not a chart."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>GrossSales</th>\n",
" <th>Sales Qty</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Sales Rep Name</th>\n",
" <th>Customer</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Stewart Wind</th>\n",
" <th>PageWave</th>\n",
" <td>5.867753e+06</td>\n",
" <td>232848</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Judy Thurman</th>\n",
" <th>Paracel</th>\n",
" <td>5.665680e+06</td>\n",
" <td>28360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Deak-Perera Group.</th>\n",
" <td>5.326473e+06</td>\n",
" <td>27784</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Stewart Wind</th>\n",
" <th>Talarian</th>\n",
" <td>4.442953e+06</td>\n",
" <td>177012</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Lee Chin</th>\n",
" <th>Userland</th>\n",
" <td>3.747440e+06</td>\n",
" <td>111200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Target</th>\n",
" <td>3.410170e+06</td>\n",
" <td>101601</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Stewart Wind</th>\n",
" <th>Acer</th>\n",
" <td>2.816532e+06</td>\n",
" <td>109296</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Judy Thurman</th>\n",
" <th>Tandy Corporation</th>\n",
" <td>2.551884e+06</td>\n",
" <td>11872</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lee Chin</th>\n",
" <th>Boston and Albany Railroad Company</th>\n",
" <td>2.075920e+06</td>\n",
" <td>61600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cheryle Sincock</th>\n",
" <th>Matradi</th>\n",
" <td>1.730093e+06</td>\n",
" <td>100072</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GrossSales Sales Qty\n",
"Sales Rep Name Customer \n",
"Stewart Wind PageWave 5.867753e+06 232848\n",
"Judy Thurman Paracel 5.665680e+06 28360\n",
" Deak-Perera Group. 5.326473e+06 27784\n",
"Stewart Wind Talarian 4.442953e+06 177012\n",
"Lee Chin Userland 3.747440e+06 111200\n",
" Target 3.410170e+06 101601\n",
"Stewart Wind Acer 2.816532e+06 109296\n",
"Judy Thurman Tandy Corporation 2.551884e+06 11872\n",
"Lee Chin Boston and Albany Railroad Company 2.075920e+06 61600\n",
"Cheryle Sincock Matradi 1.730093e+06 100072"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cs.groupby(['Sales Rep Name', 'Customer'])[['GrossSales', 'Sales Qty']].sum()\\\n",
" .sort_values('GrossSales', ascending=False)\\\n",
" .head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div id='3a'></div>\n",
"<h3>3.A</h3>\n",
"Scatter plot of mean Gross Margin vs Gross Sales, by Product Sub Group"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def gsgm(s):\n",
" '''\n",
" Scales gross sales and margin for plotting purposes\n",
" '''\n",
" if s.name == 'GrossSales':\n",
" return(s)\n",
" elif s.name == 'GrossMargin':\n",
" return(s*100)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cs.groupby(['Product Sub Group'])[['GrossMargin', 'GrossSales']]\\\n",
" .mean()\\\n",
" .apply(lambda x: gsgm(x))\\\n",
" .plot\\\n",
" .scatter('GrossSales', 'GrossMargin');\n",
"plt.title('Mean Gross Margin vs Gross Sales');"
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}