{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "

\n", " \n", "

\n", "
\n", " \n", "

Consumer Sales Lab

\n", "
\n", "
\n", "\n", "Important!!: This lab is fairly challenging and may take longer than 60m to complete. Because of this, we've included a shortcut cell 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", "- EDA _and_ Analysis\n", "- Analysis only\n", "\n", "The EDA section covers the following topics:\n", "\n", "- Importing data from csvs\n", "- Handling nulls\n", "- Casting different Dtypes\n", "- Complex joining of star-schema tables\n", "\n", "The Analysis section covers the following topics:\n", "\n", "- Feature engineering\n", "- Visualization and Reporting\n", "\n", "
\n", " Table of Contents\n", " \n", "
\n", "
\n", " Background\n", " \n", "
\n", "
\n", " Prompts\n", "
\n", " Your boss, Joanna, has requested a report on the following:\n", "
    \n", "
  1. Product Sales
  2. \n", "
      \n", "
    1. Gross margin analysis by product group.
    2. \n", "
    3. Sales by product group, top 10 product groups only.
    4. \n", "
    5. Sales, by year/month, year over year
    6. \n", "
    \n", "
  3. Sales Reps
  4. \n", "
      \n", "
    1. Sum of Sales and sales quantity, by rep, by customer
    2. \n", "
    \n", "
  5. Supply Chain
  6. \n", "
      \n", "
    1. Inventory vs Lead Time for all products
    2. \n", "
    \n", "
\n", "
\n", "
\n", " Data Dictionary\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TableFieldDescriptionPKFK
Item master.xlsItem NumberForeign key to Sales.Item Number field. Unique identifier for itemYN
Item master.xlsProduct GroupGroup for the product, i.e. Frozen Foods, Deli, etcNN
Item master.xlsProduct LineProduct line, i.e. Food, Drink, etcNN
Item master.xlsProduct Sub GroupDetail field for the Product Group field, i.e. Produce -> Fresh VegetablesNN
Item master.xlsProduct TypeType of product and additional detail at the sub group level, i.e. 'Breakfast Foods'NN
Sales  rep.csvManagerName of managerNN
Sales  rep.csvManager NumberID of managerNN
Sales  rep.csvPathOrder through which sales passes through reps, separated by hyphens. Correlates with Sales Rep ID key.NN
Sales  rep.csvSales Rep NamePrimary sales rep nameNN
Sales  rep.csvSales Rep Name 1Secondary sales rep name (nullable)NN
Sales  rep.csvSales Rep Name 2Tertiary sales rep name (nullable)NN
Sales  rep.csvSales Rep Name 3Quaterinary sales rep name (nullable)NN
Sales  rep.csvSales Rep IDForeign key to Sales. UID for path.NY
Customers.xlsxCustomerName of customerNN
Customers.xlsxCustomer NumberUnique identifier for customer name, keys to Sales.Customer NumberYY
Customers.xlsxCity CodeCity ID, foreign key for City.City CodeNY
Cities.xlsxCityName of cityNN
Cities.xlsxCity CodeID of city nameYY
Cities.xlsxRegionSales region (i.e. USA, Nordic, etc)NN
Cities.xlsxLatitudeLatitude of cityNN
Cities.xlsxLongitudeLongitude of cityNN
Cities.xlsxDescString description of city, including city, state (if applicable), and countryNN
Sales.xlsx%KEYPrimary key of tableYN
Sales.xlsxCostTotal cost of sale for transaction [USD]NN
Sales.xlsxCustomer NumberCustomer number, keys to Customer.Customer NumberNY
Sales.xlsxDateDate of saleNN
Sales.xlsxGrossSalesGross sale for invoice [USD]NN
Sales.xlsxInvoice DateDate of invoiceNN
Sales.xlsxItem DescDescription of invoiced itemNN
Sales.xlsxItem NumberID of invoiced item (product) - not a primary key. Keys to Item.Item NumberNY
Sales.xlsxMarginPercent gross margin of line item saleNN
Sales.xlsxOrder NumberID of the order placedNN
Sales.xlsxPromised Delivery DateAgreed date of deliveryNN
Sales.xlsxSalesGross sale for invoice [USD], less cost of saleNN
Sales.xlsxSales QtyQty of invoiced item sold (see Item Number, Item Desc)NN
Sales.xlsxSales Rep NumberSales rep ID credited with saleNY
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

EDA

\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": [ "
\n", "

Import Data

\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
%KEYCostCustomer NumberDateGrossSalesInvoice DateInvoice NumberItem DescItem NumberMarginOrder NumberPromised Delivery DateSalesSales QtySales Rep Number
03428-513.15100122261/12/2012-573.38351/12/2012318960Cutting Edge Sliced Ham10696-37.291157851/12/2012-550.44-1.0180
13429-105.93100122261/12/2012-204.66381/12/2012318960Washington Cranberry Juice10009-90.541157851/12/2012-196.47-2.0180
23430-88.07100122261/12/2012-165.80161/12/2012318960Moms Sliced Ham10385-71.101157851/12/2012-159.17-3.0180
\n", "
" ], "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": [ "
\n", "

Nulls

\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ManagerManager NumberPathSales Rep NameSales Rep Name1Sales Rep Name2Sales Rep Name3Sales Rep ID
0Amanda Honda104Amanda Honda-Amalia CraigAmalia CraigAmanda HondaAmalia CraigNaN103
1Amanda Honda104Amanda Honda-Cart LynchCart LynchAmanda HondaCart LynchNaN112
2Amanda Honda104Amanda Honda-Molly McKenzieMolly McKenzieAmanda HondaMolly McKenzieNaN159
3Amanda Honda104Amanda Honda-Sheila HeinSheila HeinAmanda HondaSheila HeinNaN176
4Brenda Gibson109Brenda Gibson-Dennis JohnsonDennis JohnsonBrenda GibsonDennis JohnsonNaN121
5Brenda Gibson109Brenda Gibson-Ken RobertsKen RobertsBrenda GibsonKen RobertsNaN145
6Brenda Gibson109Brenda Gibson-Robert KimRobert KimBrenda GibsonRobert KimNaN163
7Brenda Gibson109Brenda Gibson-William FisherWilliam FisherBrenda GibsonWilliam FisherNaN185
21John Greg134John Greg-David LaychakDavid LaychakJohn GregDavid LaychakNaN118
22John Greg134John Greg-Kathy ClintonKathy ClintonJohn GregKathy ClintonNaN144
23John Greg134John Greg-Sandra BaroneSandra BaroneJohn GregSandra BaroneNaN170
24John Greg134John Greg-Viginia MountainViginia MountainJohn GregViginia MountainNaN184
41Samantha Allen169Samantha Allen-Brad TaylorBrad TaylorSamantha AllenBrad TaylorNaN108
42Samantha Allen169Samantha Allen-Karl AndersonKarl AndersonSamantha AllenKarl AndersonNaN143
43Samantha Allen169Samantha Allen-Odessa MorrisOdessa MorrisSamantha AllenOdessa MorrisNaN160
44Samantha Allen169Samantha Allen-Stephanie ReaganStephanie ReaganSamantha AllenStephanie ReaganNaN179
52Stewart Wind181Stewart Wind-Carolyn HalmonCarolyn HalmonStewart WindCarolyn HalmonNaN111
53Stewart Wind181Stewart Wind-John DavisJohn DavisStewart WindJohn DavisNaN132
54Stewart Wind181Stewart Wind-Micheal WilliamsMicheal WilliamsStewart WindMicheal WilliamsNaN157
55Stewart Wind181Stewart Wind-Ronald GolinskiRonald GolinskiStewart WindRonald GolinskiNaN166
59Amanda Honda104Amanda HondaAmanda HondaAmanda HondaNaNNaN104
60Brenda Gibson109Brenda GibsonBrenda GibsonBrenda GibsonNaNNaN109
61John Greg134John GregJohn GregJohn GregNaNNaN134
62Samantha Allen169Samantha AllenSamantha AllenSamantha AllenNaNNaN169
63Stewart Wind181Stewart WindStewart WindStewart WindNaNNaN181
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CityCity CodeRegionLatitudeLongitudeDesc
94Yokohama95Japan35.455592139.572196NaN
\n", "
" ], "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": [ "
\n", "

Dtypes

\n", "Review all imported tables and convert the data types if necessary, according to the rules in the following table:\n", "

\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameDtype
Primary or Foreign Keysint64 or int32
Currencyfloat64
Text fieldsobject (string)
Discrete, non-negative valuesint64 or int32
Datesdatetime64[ns] (Timestamp object)
\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": [ "
\n", "

Join

\n", "Join all your tables together and store the joined result into a dataframe named cs. You'll need this for the reporting and visualization section below. \n", "\n", "Use the data dictionary 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": [ "
\n", "

Analysis

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Feature Engineering

\n", "" ] }, { "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": [ "
\n", "

Reporting and Visualization

\n", "Create charts or reports according to the prompts.\n", "\n", "Use your best judgement to create visualizations or reports to best answer the questions. As yourself questions such as:\n", "\n", "\n", "There's no right or wrong answer to these questions. As you solve them, focus on this progression:\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "
\n", "Shortcut cell: 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": [ "
\n", "

1.A

\n", "Gross Margin by product group." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "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": [ "
\n", "

1.B

\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": [ "
" ] }, "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": [ "
\n", "

1.C

\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": [ "
" ] }, "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": [ "
\n", "

2.A

\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GrossSalesSales Qty
Sales Rep NameCustomer
Stewart WindPageWave5.867753e+06232848
Judy ThurmanParacel5.665680e+0628360
Deak-Perera Group.5.326473e+0627784
Stewart WindTalarian4.442953e+06177012
Lee ChinUserland3.747440e+06111200
Target3.410170e+06101601
Stewart WindAcer2.816532e+06109296
Judy ThurmanTandy Corporation2.551884e+0611872
Lee ChinBoston and Albany Railroad Company2.075920e+0661600
Cheryle SincockMatradi1.730093e+06100072
\n", "
" ], "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": [ "
\n", "

3.A

\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": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmcXHWZ7/HP09WdTkhCEpKAgQCBCYKAEDAIGJ2BKIjKgE4cQBgE1MENL45eWS74Ui4zDsvMINtVUMfBuQKyh0VhgIAOXAWChAgBJKxJJCQ0idAh6STdz/3j96vkdKWqq7q7Tm3n+3696tVVp05VPX2q+/ec81vN3RERkexqq3cAIiJSX0oEIiIZp0QgIpJxSgQiIhmnRCAiknFKBCIiGadEIFIFZvYrMzup3nG0EjM72cweqnccWaBE0ATM7GUzW29mkwq2P2FmbmbT6hDTWDP7txjbGjN71cxuMrMDax1LIqZp8Xg8UbB9Ujx+L6f12e7+MXe/Jq33r4SZ7WZm15vZSjN7y8yeN7PLzWxqHWMaYWb/amZLzaw7/r18v17xSHFKBM3jJeAz+Qdm9l5gq3oEYmadwDzgvcCRwNbAe4DrgY+VeE17zQKErcxs78Tj4wnHb0hqHPuQmNl04BHgT8B+7r41MAt4AfhgidfU4vc6G5gJvB8YCxwC/L4GnyuD4e66NfgNeBk4F3gsse1fgHMAB6bFbZ1x+6vA68APgVHxuQnAncBKYFW8PzXxfg8C5wMPA28D/wVMKhHPF4DXgNFl4nbgq8DzwEtx2weAx4A/x58fSOx/MvBi/PyXgBPi9unAr+Nr3gB+UeLzpsXPPBe4OLF9fjxWLye2nUUoJN8GFgGfKojjYeASoAv4RyAH/Gv8/JeA0+JntSeO3xcSr38ofher4v4fKxHzmcBNBdsuBS4b6JgUeZ//C9xR5vs4BFgaP3M58J9x+98Di4E3gduB7eN2i8dgBfAW8Adg7/jcx+NxextYBvzPEp95J/D1AWIq9z08lHi8B3BvjPM54JjEcxXFo1uJ76HeAehWwZcUEsFH4h//e2KhtBTYmf6J4JL4j7wN4ezrDuCf43MTgTmEq4ixwI3AbYnPeDD+Q74bGBUfX1AinuuB/6ggbo//uNvE99wmFownAu2EK5xVMbbRsbDZPb52CrBXvH8doSBvA0YCHyzxedPyxwNYEo/TnsCz8fi9nNj3b4Ht43seC6wBpsTnTgY2Al+LcY4CvhQLmqmEpHofAyeCDYQCNgd8mXCmbkVi3hl4BxgbH+cISfaggY5JkfdZDpxc5vs4JP5eFxJOGkYBswnJbf+47XLgN3H/jwKPA+MJSeE9iWP0GvCheH8CsH+JzzyXcGLyFcIVpBU8X+57eCjeHx2/01Pid7JfjHvPwcSjW4m/jXoHoFsFX9LmRHAu8M/AEYQCtj1R8Fn8J/qLxOsOJp6JF3nPGcCqxOMHgXMTj78C3F3itfeRSBLxvVbHQuu5xHYHZicenwg8WvBev43/8KPje8whXsUk9vkZcDWJK5gScU2Ln9keY/wocAEhifRLBEVeuwA4Ot4/GXi14Pl5wBcTjz/CwIlgcWLfreK+7yrx2Q8Bn433DwNeiPdLHpMi77EROCLx+LT42m7gR3HbIcB6YGRiv58AFyUejyEksWmEJPFHQlJqK/i8V4EvAluXiStHuCp8GOghJMSTBvE95BPBscB/F+x7FfCdwcSjW/Gb2giay38S6rtPJhSOSZMJBc7jZrbazFYDd8ftmNlWZnaVmb1iZm8BvwHGm1ku8R7LE/ffIRQKxXQRzk4BcPcF7j4e+BvCWWXSksT97YFXCp5/BdjB3dcQ/tm/BLxmZneZ2R5xnzMIie5RM3vazD5XIq6knxGO02cIx60fM/usmS1IHKu9gWRj/JKCl2xfsK3w+UKbjqW7vxPvljqe17K5/ef4+Jgyx6RQ4XdyRfxOvg90JPZb6e7rEo/7fSfu3h3fawd3nwdcAVwJrDCzq81s67jrHEJ1zCtm9mszO7hYUO7e6+5XuvsswpXFPwH/bmbvgYq+h7ydgQPz+8V9TwDeNZh4pDglgibi7q8Q6ok/DtxS8PQbwFpC1cH4eBvn7vnC55vA7sCBHhoS/zJutyGEcj9wuJmNriTsxP0/Ef6hk3Yi1Oni7ve4+2GEAu1Z4Edx+3J3/3t3355w1vd/YuPoQG4GPgG86O6vJp8ws53je58GTIwF5lP0PxaF0/K+RqgWytuxzOcPxo3AIbF3z6eIiQBKH5Mi7ick4nIKf69+30n8Tiey+Tu5zN3fR6hiezfwrbj9MXc/GtgWuA24oewHu6919ysJ1YF7Vvg95C0Bfp342x7v7mPc/ctDjUc2UyJoPp8nVLesSW509z7CP9UlZrYtgJntYGYfjbuMJSSK1Wa2DfCdYcTwM0LBeKuZ7W1mOTMbSegdMpBfAu82s+PNrN3MjiUUMHea2XZmdnQsiHoIVRp98ff420QXyFWEwqxvoA+Kx2c2oWG70Oj4Hivj+59COBMdyA3A6fGYjic0uFaFu68kVC39lFCV90yMq+QxKeK7wIdil94d4usnEer1B3IdcIqZzYi9wb4HPOLuL5vZAWZ2oJl1EKod1wF9sUvoCWY2zt03EKoEi8ZlZl83s0PMbFT8zk8i/C0+weC+hzsJfzsnmllHvB1gZu8ZTDxSnBJBk3H3F9x9fomnzyT0/vhdrP65j3AVAKGKYBThyuF3hGqjocawDjiU0Hh6F7FtADgAOGaA13URupt+k1D9cAZwpLu/Qfhb/AbhDPVN4K8IjazE933EzLoJjeGnu/uLFcQ5391fKLJ9EaEH0G8JvaveS6jDHsiPCD2pFhIKsV8S6uV7y8VRoWsJ7Q7XJrYNdEz6cfc/AgcSrlqeNLO3Cb/Tn4Bvl/pQd78vPn8zIbn/BXBcfHprwu+9ilB91AVcHJ87EXg5/p19iVBNU8w7hGO9nPC391Vgjru/OJjvwd3fBg6Psf0pvl++0Xsw8UgR5l54pSgi5ZjZx4AfunthVZdI09EVgUgFYtXGx2P1xg6EqrVb6x2XSDXoikCkAma2FWFQ2x6Etpa7CFVUb9U1MJEqUCIQEck4VQ2JiGRcw0+mBTBp0iSfNm1avcMQEWkqjz/++BvuPrncfk2RCKZNm8b8+aV6TIqISDFmVjiSvyhVDYmIZJwSgYhIxikRiIhknBKBiEjGKRGIiGRcphJBV3cPTy5ZTVd3T71DERFpGE3RfbQa5i5Yxpk3L6SjrY0NfX1cNGcfjpqxQ73DEhGpu0xcEXR193DmzQtZt6GPt3s2sm5DH2fcvFBXBiIiZCQRLF21lo62/r9qR1sbS1etrVNEIiKNIxOJYOqEUWzo679g0Ya+PqZOGFWniEREGkcmEsHEMZ1cNGcfRna0MbaznZEdbVw0Zx8mjilcZ11EJHsy01h81IwdmDV9EktXrWXqhFFKAiIiUWYSAYQrAyUAEZH+MlE1JCIipSkRiIhknBKBiEjGKRGIiGScEoGISMallgjMbHczW5C4vWVmXzezbczsXjN7Pv6ckFYMIiJSXmqJwN2fc/cZ7j4DeB/wDnArcBZwv7vvBtwfH4uISJ3Uqmrow8AL7v4KcDRwTdx+DfDJGsUgIiJF1CoRHAdcF+9v5+6vxfvLge2KvcDMTjWz+WY2f+XKlbWIUUQkk1JPBGY2AjgKuLHwOXd3wIu9zt2vdveZ7j5z8uTJQ/58LUYjIjKwWkwx8THg9+7+enz8uplNcffXzGwKsCKtD9ZiNCIi5dWiaugzbK4WArgdOCnePwmYm8aHajEaEZHKpJoIzGw0cBhwS2LzBcBhZvY88JH4uOq0GI2ISGVSrRpy9zXAxIJtXYReRKmaOmEU63u1GI2ISDktO7L4ocVv0JtYlawjZ1qMRkSkiJZMBPn2gY2JC4I2g1nTJ9UvKBGRBtWSiaBY+8CIXE7tAyIiRbRkItBi9SIilWvJRKDF6kVEKteyaxZrsXoRkcq0bCIALVYvIlKJlqwaEhGRyikRiIhknBKBiEjGKRGIiGRcZhKB1iUQESmupXsN5RWuS/DtT+zJ3juMU7dSEREykAiS6xKsI4w2Pue2pxjTmWNjn2uxGhHJvJavGio27xBAd0+vFqsRESEDiaDYugRJWqxGRLKu5RNB4boEhTQZnYhkXUu3ERRblyBn0J5rY0Ru84L2ajAWkSxr6USwdNVavM/7bWtvM3702ZmMG9VRk15DXd09mvhORBpaSyeC0SNy9PT2TwQ9vc7240YyfbuxqX9+YbdV9VASkUbU0m0Ea9b3MrJjy1/xV08tT/2zk91W3+7ZqB5KItKwWjoRTJ0wCvctt1/xwPOpF8jFuq2qh5KINKKWTgQTx3Ry2qHTt9hei/WLtVymiDSLlk4EAMcfuBOd7dZvWy0KZC2XKSLNoqUbiyEUyBd/el/OKGi0rUWBrOUyRaQZtHwigFAg7zllaxYsWc2MHcfXpMdQnpbLFJFGl4lEoG6cIiKltXwbgbpxiogMrOUTQbFunDkzHnh2hZKBiAgZSATFunGuWd/Ld+94mlkXzuP2BcuKvk4rmolIVrR8Ikh24xw9Irdp+0DrEcxdsIxZF87j7378yIDJQkSkFbR8IoDQa+jhM2dz3lF7MaYz1++5wtG+alMQkaxJNRGY2Xgzu8nMnjWzZ8zsYDPbxszuNbPn488JacaQN3FMJ4fusS0bC2YjLRxcpqkhRCRr0r4iuBS42933APYFngHOAu53992A++PjmqhktK+mhhCRrDEvNitbNd7YbBywANjVEx9iZs8Bh7j7a2Y2BXjQ3Xcf6L1mzpzp8+fPH3IsXd09PP2ntwBnr+3HAQw42vf2Bcu2GImscQci0mzM7HF3n1luvzQHlO0CrAR+amb7Ao8DpwPbuftrcZ/lwHbFXmxmpwKnAuy0005DDmLugmV884YFm1Yp68gZ//q3+w5YsGtqCBHJkjSrhtqB/YEfuPt+wBoKqoHilULRSxJ3v9rdZ7r7zMmTJw8pgK7uHs646cl+S1Vu6HW+dVP5xt+JYzrZd8fxSgIi0vLSTARLgaXu/kh8fBMhMbweq4SIP1ekFsCqteRsy18x12Zq/BURiVJLBO6+HFhiZvn6/w8Di4DbgZPitpOAuWnFMHXCKHq9b4vtvX2uxl8RkSjtXkNfA35uZguBGcD3gAuAw8zseeAj8XEq8lNQtyd+y46ccfGnazMNtUYni0gzSHX2UXdfABRrsf5wmp+blG/4TfYaqkUS0IynItIsMjEN9cQxnfzlu4fW4DwUydHJ6whVU2fcvJBZ0yep8VlEGk4mppioNY1OFpFmokSQAo1OFpFmokSQAi1cLyLNJBNtBF3dPTUfJVyP0cn1+D1FpPm1fCIYTu+d4RastVy4Xr2URGSoWjoRDKf3TjMVrOqlJCLD0dJtBEPtvVOLxWmqOdhMvZREZDha+opg6oRRrO+trPdOshooX7Dmz65hc8FajTPsal9tqJeSiAxHSyeChxa/QW+igOzIWdHeO4UF87c/sWdqBWsa1Tj5XkqFayioWkhEKtGyiSBf4CanoG4zmDV9UtH9kgXz+Xct4ttH7sn5dy6qesGa1tWG1lAQkaGqKBGY2d8AFwLbAhZv7u5bpxjbsBQrcEfkclsUuGGqauv32o62NvbefhwPnzm76gVrmtU4teylJCKto9LG4ouAo9x9nLtv7e5jGzkJwMAFbrKh9ncvdrFmfW+//db39m0q/Ku9OI0Gm4lIo6m0auh1d38m1UiqrFS9+UOL39jUHrBuYy8berdcIG1jbx8PL36jogbcoYw1UDWOiDSSihavN7NLgXcBtwGb+ju6+y3phbbZcBavTxbUAB+4YB49G7dcrKbQyI42Hj5z9oCFdDONNRCR7Kn24vVbA+8Ahye2OVCTRDAcyXrzy+5/vqIkAOUbcDWIS0RaRUWJwN1PSTuQtHV193DlA89XvH+5Bty0xxqISLbVcu6wAROBmZ3h7heZ2eWEK4B+3P1/pBZZFXV19/DAsyvoyLXRs7F/w3DOYGRHjnUbe8FhqxHtFXUXbYVBXJqkTqQx1braudwVQb6BeGgV9A0gf0BzZlv0DupsN+762odYs753UwFeacHY7IO41L4h0pjqUe08YCJw9zviz2tS+fSUJQ9o0ujOHL19zkVz9mH6dmP7PTeYA92svX/UviHSuOpR7VzpgLI72LJq6M+EK4Wr3H1dtQOrhmIHdPSIHOf99V4cuse2VTmozTiIS+0bIo2rHtXOlQ4oexHoBn4Ub28BbwPvjo8bUrED2utetSRQbAbRas4qmpZWaN8QaVX1GHRaaffRD7j7AYnHd5jZY+5+gJk9nUZg1ZBmPX6xOnaHpqh3b4T2DTVUi5RW62rnSgeUPQN81N1fjY93Au5x9/eY2RPuvl+aQQ5nQBlsOahsuAe3q7uHWRfO69f20NkepmBKjlOoZFBaPdWrMFZDtUhtVHtA2TeBh8zsBcKEc7sAXzGz0UDDNyTn6/G3mG76yD3Ze/txgy4Ii9Wx56wtHJmEXJvxwLMrqlYVVW31aN9QQ7VI4ymbCMysDVgN7AbsETc/l2gg/n5KsVVVsQLonFufYvSIHL3ugzorHT0it8V4hF7vA++fCdb09PKd25/m3LlP6aw3qkVDtaqdRAanbCJw9z4zuzJW/zxZg5hSUawAAjaNLRjsWsZtbQa9TmfOsLaw4E3+fXJtxpqe3iG9P7R2QZZ2Q7WqnUQGr9KqofvNbA5wi1fSqNBA8oXq6BG5LQqgpErOSouNS3Az7jrtg5vGI8yaPokHnl3Bd25/ut8AtkrPelu9IEuzoVrVTiJDU2ki+CLwDWCjma2jCRamgS0L1WNmTuWG+Uv7nbHnVXJWWuyqojPX1q/Anzimk0P32JZz5z416PcvV5C1ypVCWj0iND5CZGgqnXRubPm9GkuxQvWG+Uu587QPsmZ9L08t+zPn37WInBkbesM6xeUKi0qrNYZ61jtQQZZcR6EVrhTSaKjW+AiRoal4zWIzm0BoMB6Z3+buv0kjqGooVaiuWd/LvjuOZ98dxwNw3p2LGNHexvl3LWLsyPYBC9fBFPBDOestVZCNHpFTlUcFGmF8hEgzqnSKiS8ApwNTgQXAQcBvgdnphTY85c4Ou7p7OP+uRazf2Mf6jeH5SgrXwRTwgz3rLVWQrVnfqyqPCjXr/E8i9VTpFcHpwAHA79z9UDPbA/heuReZ2cuEqSh6gY3uPtPMtgF+AUwDXgaOcfdVgw99YOXODodTn5xm//tiBVlXd4+qPAahGed/EqmnShPBOndfZ2aYWae7P2tmu1f42kPd/Y3E47OA+939AjM7Kz4+czBBV2qgs8Nq1ydXsyG3sCBTlYeIpKnSRLDUzMYT1iy+18xWAa8M8TOPBg6J968BHiSlRAClzw4LC9f1vb189ZDpQ/qMWnT5VJWHiKSlormG+r3A7K+AccDd7r6+zL4vAasIU1hf5e5Xm9lqdx8fnzdgVf5xKcOda6iY5PiCXz61nCsfWMyI3OAL8mLzDlU6x1CrdAcVkcZUlbmGYn1+oT/En2OAN8u8/wfdfZmZbUu4kng2+aS7u5kVzURmdipwKsBOO+1U5mMGJ3kGv763lz6HDb2+acK4wfTIGWxbQ77wz3dfbZXuoCLSvMpVDb0BLAViv5p+06o5sOtAL3b3ZfHnCjO7FXg/8LqZTXH318xsCrCixGuvBq6GcEVQ7hepVLHxBYUG0yNnMG0N+QTU3mZ0xwFt6g4qIvVWbmGaywhVO3cDJwG7uvsu8TZgEjCz0WY2Nn8fOBx4Crg9vhfx59xhxD9o+TP4gQym0bjSRSSSCai7YFQzbE4+IiK1Vm7N4q/HevxDgBOBy83sv4AfuPtLZd57O+DW8HLagWvd/W4zewy4wcw+T2hwPmaYv8OgFDuDb2+DXFtbvzaCaq9dXGrSuzx1BxWReqlk9lEHHjCzJ4DjgPOB5ymzRKW7vwjsW2R7F/DhIUVbBRPHdPLtT+zJeXc8TUeubdMU1MPtkVOu73qxBAT0mwZb1UIiUg/lGotHE7p7HgtMBm4B3pdfqawZzV2wLDTS5tpY39vHtw7ffVMjbZoFcbGxAENdGEdkONRbTQqVuyJYQTj7vz7+dGCmmc0EcPdb0g2vuopNI/29X4WOTKf+1V+k/vkaCyD11urTnMvQlEsENxIK/93jLckJVwgNL38GtOTNd7DC9SQJyWD0yHZOOHDn1GPR9AdSL1qvQUop11h8co3iSE3+DMj7nJ7e0r1Qz7tjEUfs9S79Q0jL0noNUkq57qMAmNnpZra1BT82s9+b2eFpBzdcyTOggZIAQEfO1H1TWprWa5BSKkoEwOfc/S3CWICJhK6kF6QWVZVUMmYgr7fPGT0ix5NLVtPV3ZNyZCFJ1eqzRKDyMS+SPZVOOpevWP848DN3fzqOL2hopbpsAuQMcm1GR3sbvX3OMTOncuQVD9WkEU0NdlIv6rAgxVSaCB6PA8l2Ac6OI4ZLrwTfIJJdNvNtBCM7whVCcuzA6BE5jrzioZo0oqnBTupNHRakUKWJ4PPADOBFd38nTkZ3SnphVU/yDGj0iBxr1vf2OxOaOKaTJ5esrlkjmhrsRKTRVJoIDgYWuPsaM/s7YH/g0vTCqq6hjPpNqxFNDXYi0mgqbSz+AfCOme0LfBN4AfhZalHVWC0b0dRgJyKNptIrgo1x7YCjgSvc/Sdx0rimkVyIprB6CEIV0p5TtmbBktXM2HE807cbm1osarATkUZSaSJ428zOJnQb/ZCZtQEd6YVVXfleOgDrNvTRmTOszfr11ql1Tx412IlIo6i0auhYoIcwnmA5MBW4OLWoqqhfL504x1BPr7NuQx9n3LyQru6efvu83bOx33MiIq2uokQQC/+fA+PM7Ehgnbs3RRvBQIPK8r11iu1TbqEYDQgTkVZRUdWQmR1DuAJ4kDC47HIz+5a735RibFUx0KCyZG+dtRs29ntu7YaNJXvy1HtAmKYRFpFqqrSN4BzgAHdfAWBmk4H7gIZPBMlBZbBlG8HEMZ10dfcQBkpvno+o1MDpeg8Iq3cSEpHWU2kiaMsngaiLytsX6q7coLKlq9Yysj3Hht7NVwUj23NFB3nVc0BYvZOQiLSmShPB3WZ2D3BdfHws8Mt0QkrHQL10BjPIq54DwjQqWUTSUGlj8beAq4B94u1qdz8zzcBqaTCDvOo5IEyjkkUkDRbWph9gB7MccJ+7H1qbkLY0c+ZMnz9/fuqfM5hG2Ho12N6+YFm/dY/VRiAipZjZ4+4+s9x+ZauG3L3XzPrMbJy7/7k64TWmwQzyqteAMI1KFpFqq7SNoBv4g5ndC6zJb3T3/5FKVDIgjUoWkWqqNBHcwuaF6vN1SQ2/ME21qf++iLSiARNBnGRuqrtfGR8/CkwmJIOWaSyuRKn++0oOItLsyl0RnAEcl3g8AngfMAb4KXBjSnE1lFL9999et5Hz71qkhlsRaWrluo+OcPcliccPufub7v4qMDrFuBpKsbmIcm3GeXc8rYnqRKTplUsEE5IP3P20xMPJ1Q+nMRXtv9/rdOQGN1GdiEgjKpcIHjGzvy/caGZfBB5NJ6TGU2wQ2Xf+ek96C8ZgaHCXiDSjcm0E/wDcZmbHA7+P294HdAKfTDOwRlOs//7YzvYtBnepwVhEms2AiSBONPcBM5sN7BU33+Xu81KPrAEV9t/X4C4RaQUVjSOIBX8mC/9yNLhLRJpd00wlLSIi6Ug9EZhZzsyeMLM74+NdzOwRM1tsZr8wsxFpxyAiIqXV4orgdOCZxOMLgUvcfTqwCvh8DWLYZDhrDWudYhFpRZXONTQkZjYV+ATwT8A3LKz/OBs4Pu5yDfBd4AdpxpE3nGUetUSkiLSqtK8Ivk+YpiI/GmsisNrd82tCLgWKlqZmdqqZzTez+StXrhx2IMlpIgY7Eng4rx3oPXV1ISKNILVEYGZHAivc/fGhvN7dr3b3me4+c/Lk4Q9iLjZNRKUjgYfz2mLmLljGrAvn8Xc/foRZF87j9gXLhvQ+IiLVkOYVwSzgKDN7GbieUCV0KTDezPJVUlOBmpSCw1nmsZpLRKZxdSEiMhypJQJ3P9vdp7r7NMIMpvPc/QTgAeDTcbeTgLlpxZA0nLWGq7lOcbWvLkREhivVxuISzgSuN7N/BJ4AflKrDx7OSOBqjSLWAvQi0mhqkgjc/UHgwXj/ReD9tfjcYoYzErgao4jzVxeao0hEGkU9rggyT3MUiUgjUSKoE81RJCKNQnMNiYhknBKBiEjGZT4RaISviGRdptsINH+QiEiGrwg0wldEJMhsItAIXxGRILOJQCN8RUSCzCaCas4fJCLSzDLdWKwRviIiGU8EoBG+IiKZrRoSEZEg04lAg8lERDJcNaTBZCIiQSavCDSYTERks0wmAg0mExHZLBOJoLAtQIPJREQ2a/k2glJtAVouUkQkaOlEkGwLWEe4Ajjj5oXMmj5Jg8lERKKWTgT5toB8EoDNbQH5gWRKACKSdS3dRqC2ABGR8lo6EWhiORGR8lq6agg0sZyISDktnwhAE8uJiAykpauGRESkPCUCEZGMUyIQEck4JQIRkYxTIhARyTglAhGRjFMiEBHJuNQSgZmNNLNHzexJM3vazM6L23cxs0fMbLGZ/cLMRqQVg4iIlJfmFUEPMNvd9wVmAEeY2UHAhcAl7j4dWAV8PsUYRESkjNQSgQfd8WFHvDkwG7gpbr8G+GRaMYiISHmpthGYWc7MFgArgHuBF4DV7r4x7rIUKLpivJmdambzzWz+ypUr0wxTRCTTUk0E7t7r7jOAqcD7gT0G8dqr3X2mu8+cPHlyajGKiGRdTXoNuftq4AHgYGC8meUnu5sKLKtFDCIiUlyavYYmm9n4eH8UcBjwDCEhfDrudhIwN60YRESkvDSnoZ4CXGNmOULCucHd7zSzRcD1ZvaPwBPAT1KMQUREykgtEbj7QmC/IttfJLQXiIhIA9DIYhGRjFMiEBHJOCUCEZGMUyIQEck4JQIRkYxTIhARyTglAhGRjFMiEBHJOCUCEZGMUyIQEck4JQIRkYzLVCLo6u7hySWr6eruqXcoIiINI83ZRxuMbOg0AAAI8klEQVTK3AXLOPPmhXS0tbGhr4+L5uzDUTOKLo4mIpIpmbgi6Oru4cybF7JuQx9v92xk3YY+zrh5oa4MRETISCJYumotHW39f9WOtjaWrlpbp4hERBpHJhLB1Amj2NDX12/bhr4+pk4YVaeIREQaRyYSwcQxnVw0Zx9GdrQxtrOdkR1tXDRnHyaO6ax3aCIidZeZxuKjZuzArOmTWLpqLVMnjFISEBGJMpMIIFwZKAGIiPSXiaohEREpTYlARCTjlAhERDJOiUBEJOOUCEREMs7cvd4xlGVmK4FXhvDSScAbVQ6nVhR7fSj2+mjW2Bs97p3dfXK5nZoiEQyVmc1395n1jmMoFHt9KPb6aNbYmzXuQqoaEhHJOCUCEZGMa/VEcHW9AxgGxV4fir0+mjX2Zo27n5ZuIxARkfJa/YpARETKUCIQEcm4lk0EZnaEmT1nZovN7KwGiGdHM3vAzBaZ2dNmdnrcvo2Z3Wtmz8efE+J2M7PLYvwLzWz/xHudFPd/3sxOquHvkDOzJ8zszvh4FzN7JMb4CzMbEbd3xseL4/PTEu9xdtz+nJl9tEZxjzezm8zsWTN7xswObpbjbmb/EP9enjKz68xsZKMedzP7dzNbYWZPJbZV7Tib2fvM7A/xNZeZmaUc+8Xxb2ahmd1qZuMTzxU9nqXKnVLfWcNw95a7ATngBWBXYATwJLBnnWOaAuwf748F/gjsCVwEnBW3nwVcGO9/HPgVYMBBwCNx+zbAi/HnhHh/Qo1+h28A1wJ3xsc3AMfF+z8EvhzvfwX4Ybx/HPCLeH/P+F10ArvE7yhXg7ivAb4Q748AxjfDcQd2AF4CRiWO98mNetyBvwT2B55KbKvacQYejftafO3HUo79cKA93r8wEXvR48kA5U6p76xRbnUPIJVfCg4G7kk8Phs4u95xFcQ4FzgMeA6YErdNAZ6L968CPpPY/7n4/GeAqxLb++2XYrxTgfuB2cCd8Z/xjcQ/yqZjDtwDHBzvt8f9rPB7SO6XYtzjCIWpFWxv+ONOSARLYqHYHo/7Rxv5uAPTCgrTqhzn+Nyzie399ksj9oLnPgX8PN4vejwpUe4M9L/SKLdWrRrK/wPlLY3bGkK8ZN8PeATYzt1fi08tB7aL90v9DvX63b4PnAHkF3+eCKx2941F4tgUY3z+z3H/esS+C7AS+Gms1vqxmY2mCY67uy8D/gV4FXiNcBwfpzmOe161jvMO8X7h9lr5HOEqBAYf+0D/Kw2hVRNBwzKzMcDNwNfd/a3kcx5OFxquP6+ZHQmscPfH6x3LELQTLvl/4O77AWsIVRSbNPBxnwAcTUhm2wOjgSPqGtQwNOpxLsfMzgE2Aj+vdyxpadVEsAzYMfF4atxWV2bWQUgCP3f3W+Lm181sSnx+CrAibi/1O9Tjd5sFHGVmLwPXE6qHLgXGm1l+udNkHJtijM+PA7rqFPtSYKm7PxIf30RIDM1w3D8CvOTuK919A3AL4btohuOeV63jvCzeL9yeKjM7GTgSOCEmMsrEWGx7F6W/s4bQqongMWC32FI/gtBwdns9A4o9HH4CPOPu/5Z46nYg3zPiJELbQX77Z2PvioOAP8dL7HuAw81sQjxjPDxuS427n+3uU919GuFYznP3E4AHgE+XiD3/O3067u9x+3Gxd8suwG6EBsA0Y18OLDGz3eOmDwOLaILjTqgSOsjMtop/P/nYG/64J1TlOMfn3jKzg+Kx+GzivVJhZkcQqkOPcvd3Cn6nYsezaLkTv4NS31ljqHcjRVo3Qq+EPxJa8c9pgHg+SLgsXggsiLePE+oP7weeB+4Dton7G3BljP8PwMzEe30OWBxvp9T49ziEzb2GdiX8AywGbgQ64/aR8fHi+PyuidefE3+n56hir48yMc8A5sdjfxuhN0pTHHfgPOBZ4CngPwk9VRryuAPXEdoyNhCuxD5fzeMMzIzH4QXgCgo6AKQQ+2JCnX/+//WH5Y4nJcqdUt9Zo9w0xYSISMa1atWQiIhUSIlARCTjlAhERDJOiUBEJOOUCEREMk6JQFqSmW1nZtea2Ytm9riZ/dbMPpXSZx0UZ5ZcYGF20++W2f8QizO4ijSC9vK7iDSXOODoNuAadz8+btsZOKpgv3bfPP/LcFwDHOPuT5pZDti93AtEGomuCKQVzQbWu/sP8xvc/RV3v9zMTjaz281sHnB/HNl6sYX5/v9gZsdCmA7BzH4Tz/KfMrMPWViP4T8S+/5DfPttCYORcPded18U3+P98UrkCTP7f4nRzZuY2WgLc+E/Gvc7Om7fK25bYGE+/N3SPWSSZboikFa0F/D7AZ7fH9jH3d80szmEkcf7ApOAx8zsN8DxhKkN/ime5W8V99vB3feGsOBNfL9LgOfM7EHgbsKVyDrCiOAPuftGM/sI8D1gTkEs5xCmgvhcfL9Hzew+4EvApe7+8zhdQW5YR0RkALoikJZnZlea2ZNm9ljcdK+7vxnvfxC4Lp7Jvw78GjiAMG/MKbG+/73u/jZhkZRdzezyOA/NWwDu/r8J0x/8FyGB3B3fexxwo4VVry4hJKhChwNnmdkC4EHCNBE7Ab8F/peZnQns7O5rq3Q4RLagRCCt6GnCWT8A7v5VwoRtk+OmNeXewN1/Q1i1ahnwH2b2WXdfRbhyeJBwxv7jxP4vuPsP4ufsa2YTgfOBB+IVxF8TCvlCBsxx9xnxtpO7P+Pu1xLaNNYCvzSz2YM6AiKDoEQgrWgeMNLMvpzYtlWJff8bODbW/08mFP6Pxsbl1939R4QCf38zmwS0ufvNwLnEZGNmn4gN1BBmouwFVhOuCPLTDZ9c4vPvAb6Wf72Z7Rd/7gq86O6XEWaq3GcwB0BkMNRGIC3H3d3MPglcYmZnEFYoWwOcCYwq2P1WwtKBTxJmhz3D3ZdbWDT9W2a2AegmTHu8A2Gls/wJ1Nnx54nxs94hLGBygrv3mtlFwDVmdi5wV4lwzyes/rYwvu9LhPnvjwFOjJ+/nNC+IJIKzT4qIpJxqhoSEck4JQIRkYxTIhARyTglAhGRjFMiEBHJOCUCEZGMUyIQEcm4/w/rcntUZ7Ui3gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "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 }