{ "cells": [ { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "import pandas as pd \n", "import numpy as np \n", "import seaborn as sns \n", "import matplotlib.pylab as plt \n", "import sketch\n", "#plt.style.use('ggplot')" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# First Import\n", "\n", "What we are doing here is importing some organizational data that we can compare to Heap's data. We need items like the Customer's Unique ID, the Instance ID, some ICP and use-case information, and the customer's customer name. \n", "\n", "Currently, I am pulling from [this look](https://northpasshq.looker.com/looks/125). Use this." ] }, { "cell_type": "code", "execution_count": 40, "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", "
Customers Customer IDMal Actuals School IDMal Actuals School NameChris Bookings ICPCustomers OrganizationCustomers Use Case
0307996515365.0CORE CollegeNon-CEThe CORE GroupEmployees
1308015775454.0SergeNon-CESergeEmployees
2308570254581.0Team Trudeau TrainingCE Non-ICPThe Federal Liberal Agency of CanadaCustomers
3308570255265.0Formation de l'Équipe TrudeauCE Non-ICPThe Federal Liberal Agency of CanadaCustomers
4308619526097.0ElderSource InternalNon-CEEldersourceEmployees
\n", "
" ], "text/plain": [ " Customers Customer ID Mal Actuals School ID \n", "0 30799651 5365.0 \\\n", "1 30801577 5454.0 \n", "2 30857025 4581.0 \n", "3 30857025 5265.0 \n", "4 30861952 6097.0 \n", "\n", " Mal Actuals School Name Chris Bookings ICP \n", "0 CORE College Non-CE \\\n", "1 Serge Non-CE \n", "2 Team Trudeau Training CE Non-ICP \n", "3 Formation de l'Équipe Trudeau CE Non-ICP \n", "4 ElderSource Internal Non-CE \n", "\n", " Customers Organization Customers Use Case \n", "0 The CORE Group Employees \n", "1 Serge Employees \n", "2 The Federal Liberal Agency of Canada Customers \n", "3 The Federal Liberal Agency of Canada Customers \n", "4 Eldersource Employees " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ids= pd.read_csv(\"/Users/normrasmussen/Downloads/school_names_ids.csv\")\n", "ids.head(5)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Next, we need to rename the columns for better and easier access. " ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customer_idschool_idschool_nameicp_booleancustomer_nameuse_case
0307996515365.0CORE CollegeNon-CEThe CORE GroupEmployees
1308015775454.0SergeNon-CESergeEmployees
2308570254581.0Team Trudeau TrainingCE Non-ICPThe Federal Liberal Agency of CanadaCustomers
3308570255265.0Formation de l'Équipe TrudeauCE Non-ICPThe Federal Liberal Agency of CanadaCustomers
4308619526097.0ElderSource InternalNon-CEEldersourceEmployees
5308619526099.0ElderSource EcommerceNon-CEEldersourceEmployees
6308619526101.0ElderSource PartnerNon-CEEldersourceEmployees
7308670424706.0Givergy AcademyNon-CEGivergyEmployees
8308670433332.0Access UniversityCE Non-ICPAccess E-FormsCustomers
9308670465667.0School of RoktNon-CERokt Pte LtdEmployees
\n", "
" ], "text/plain": [ " customer_id school_id school_name icp_boolean \n", "0 30799651 5365.0 CORE College Non-CE \\\n", "1 30801577 5454.0 Serge Non-CE \n", "2 30857025 4581.0 Team Trudeau Training CE Non-ICP \n", "3 30857025 5265.0 Formation de l'Équipe Trudeau CE Non-ICP \n", "4 30861952 6097.0 ElderSource Internal Non-CE \n", "5 30861952 6099.0 ElderSource Ecommerce Non-CE \n", "6 30861952 6101.0 ElderSource Partner Non-CE \n", "7 30867042 4706.0 Givergy Academy Non-CE \n", "8 30867043 3332.0 Access University CE Non-ICP \n", "9 30867046 5667.0 School of Rokt Non-CE \n", "\n", " customer_name use_case \n", "0 The CORE Group Employees \n", "1 Serge Employees \n", "2 The Federal Liberal Agency of Canada Customers \n", "3 The Federal Liberal Agency of Canada Customers \n", "4 Eldersource Employees \n", "5 Eldersource Employees \n", "6 Eldersource Employees \n", "7 Givergy Employees \n", "8 Access E-Forms Customers \n", "9 Rokt Pte Ltd Employees " ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ids = ids.rename(\n", " columns={\n", " 'Customers Customer ID':'customer_id', \n", " 'Customers Organization':'customer_name', \n", " 'Mal Actuals School ID':'school_id', \n", " 'Mal Actuals School Name':'school_name',\n", " 'Chris Bookings ICP': 'icp_boolean',\n", " 'Customers Use Case':'use_case',\n", " },\n", " )\n", "ids.head(10)" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customer_idschool_idschool_nameicp_booleancustomer_nameuse_case
555471674147684.0Walmart Suppliers OnboardingNon-CEVolt SystemsGig
585471674407056.0Spark Driver Resources Hub (MIGRATED TO AZURE)CE Non-ICPWalmart Inc.Customers,Gig
586471674407540.0Walmart Sandbox (MIGRATED TO AZURE)CE Non-ICPWalmart Inc.Customers,Gig
\n", "
" ], "text/plain": [ " customer_id school_id school_name \n", "555 47167414 7684.0 Walmart Suppliers Onboarding \\\n", "585 47167440 7056.0 Spark Driver Resources Hub (MIGRATED TO AZURE) \n", "586 47167440 7540.0 Walmart Sandbox (MIGRATED TO AZURE) \n", "\n", " icp_boolean customer_name use_case \n", "555 Non-CE Volt Systems Gig \n", "585 CE Non-ICP Walmart Inc. Customers,Gig \n", "586 CE Non-ICP Walmart Inc. Customers,Gig " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# A quick little check to make sure Walmart is still on the list. Feel free to switch out different Academy names to find if a customer's school exists\n", "search_for = ['walmart', 'spark', 'luminate']\n", "ids.loc[ids.school_name.str.contains('|'.join(search_for), case=False, na=False)]" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/5l/fmyj8l8n74v0m3zfncrycj7m0000gn/T/ipykernel_47678/1163457763.py:1: UserWarning: This pattern is interpreted as a regular expression, and has match groups. To actually get the groups, use str.extract.\n", " ids.loc[ids.school_name.str.contains(\"(migrated to azure)\", case=False, na=False)]\n" ] }, { "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", "
customer_idschool_idschool_nameicp_booleancustomer_nameuse_case
585471674407056.0Spark Driver Resources Hub (MIGRATED TO AZURE)CE Non-ICPWalmart Inc.Customers,Gig
586471674407540.0Walmart Sandbox (MIGRATED TO AZURE)CE Non-ICPWalmart Inc.Customers,Gig
\n", "
" ], "text/plain": [ " customer_id school_id school_name \n", "585 47167440 7056.0 Spark Driver Resources Hub (MIGRATED TO AZURE) \\\n", "586 47167440 7540.0 Walmart Sandbox (MIGRATED TO AZURE) \n", "\n", " icp_boolean customer_name use_case \n", "585 CE Non-ICP Walmart Inc. Customers,Gig \n", "586 CE Non-ICP Walmart Inc. Customers,Gig " ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ids.loc[ids.school_name.str.contains(\"(migrated to azure)\", case=False, na=False)]" ] }, { "cell_type": "code", "execution_count": 44, "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", "
customer_idschool_idschool_nameicp_booleancustomer_nameuse_case
555471674147684.0Walmart Suppliers OnboardingNon-CEVolt SystemsGig
585471674407056.0Spark Driver Resources HubCE Non-ICPWalmart Inc.Customers,Gig
586471674407540.0Walmart SandboxCE Non-ICPWalmart Inc.Customers,Gig
\n", "
" ], "text/plain": [ " customer_id school_id school_name icp_boolean \n", "555 47167414 7684.0 Walmart Suppliers Onboarding Non-CE \\\n", "585 47167440 7056.0 Spark Driver Resources Hub CE Non-ICP \n", "586 47167440 7540.0 Walmart Sandbox CE Non-ICP \n", "\n", " customer_name use_case \n", "555 Volt Systems Gig \n", "585 Walmart Inc. Customers,Gig \n", "586 Walmart Inc. Customers,Gig " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Back to Walmart. If they aren't there, you need to go into the CSV and remove \"(MIGRATED TO AZURE)\" from the values. Uncomment the next line to find and remove.\n", "ids.school_name = ids.school_name.str.replace('(MIGRATED TO AZURE)', '')\n", "search_for = ['walmart', 'spark', 'luminate']\n", "ids.loc[ids.school_name.str.contains('|'.join(search_for), case=False, na=False)]" ] }, { "cell_type": "code", "execution_count": 47, "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", "
School NameTwotal
0'@properties322
14 Pillars112
2AIIM+528
3ASAPP153
4Académie Évolupharma253
5Access11
6ActiveLearner1907
7Ad Intel767
8AdCellerant5270
9Adkins107
\n", "
" ], "text/plain": [ " School Name Twotal\n", "0 '@properties 322\n", "1 4 Pillars 112\n", "2 AIIM+ 528\n", "3 ASAPP 153\n", "4 Académie Évolupharma 253\n", "5 Access 11\n", "6 ActiveLearner 1907\n", "7 Ad Intel 767\n", "8 AdCellerant 5270\n", "9 Adkins 107" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%store -r pages\n", "pages = pages.reset_index()\n", "pages.head(10)\n" ] }, { "cell_type": "code", "execution_count": 48, "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", "
school_nametotal_views
0'@properties322
14 Pillars112
2AIIM+528
3ASAPP153
4Académie Évolupharma253
5Access11
6ActiveLearner1907
7Ad Intel767
8AdCellerant5270
9Adkins107
\n", "
" ], "text/plain": [ " school_name total_views\n", "0 '@properties 322\n", "1 4 Pillars 112\n", "2 AIIM+ 528\n", "3 ASAPP 153\n", "4 Académie Évolupharma 253\n", "5 Access 11\n", "6 ActiveLearner 1907\n", "7 Ad Intel 767\n", "8 AdCellerant 5270\n", "9 Adkins 107" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pages = pages.rename(columns={\n", " 'School Name':'school_name',\n", " 'Twotal':'total_views'})\n", "pages.head(10)" ] }, { "cell_type": "code", "execution_count": 49, "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", "
school_nametotal_viewscustomer_idschool_idicp_booleancustomer_nameuse_case
0AIIM+528467571987079.0CE Non-ICPAIIMCustomers
1Académie Évolupharma253471673907326.0CE Non-ICPÉvolupharma, Inc.Customers
2ActiveLearner1907308677185301.0Non-CEBrandActive International Inc.Employees
3Akua Mind Body578374416076718.0Non-CEAkua Mind & BodyEmployees
4Altima Dental33308677075670.0Non-CEAltima Dental CanadaEmployees
5American Concrete Pipe Association Learning Ce...2864471674577582.0CE Non-ICPAmerican Concrete Pipe AssociationCustomers
6Andhealth Internal Training17471674217912.0CE Non-ICPAndHealthCustomers,Employees
7Anthology Internal104471675027871.0CE Non-ICPBlackboard Inc.Customers
8Anthology Trial418471675027874.0CE Non-ICPBlackboard Inc.Customers
9Ascend Training by Stenograph9309884767692.0CE ICPMarketScaleCustomers
\n", "
" ], "text/plain": [ " school_name total_views \n", "0 AIIM+ 528 \\\n", "1 Académie Évolupharma 253 \n", "2 ActiveLearner 1907 \n", "3 Akua Mind Body 578 \n", "4 Altima Dental 33 \n", "5 American Concrete Pipe Association Learning Ce... 2864 \n", "6 Andhealth Internal Training 17 \n", "7 Anthology Internal 104 \n", "8 Anthology Trial 418 \n", "9 Ascend Training by Stenograph 9 \n", "\n", " customer_id school_id icp_boolean customer_name \n", "0 46757198 7079.0 CE Non-ICP AIIM \\\n", "1 47167390 7326.0 CE Non-ICP Évolupharma, Inc. \n", "2 30867718 5301.0 Non-CE BrandActive International Inc. \n", "3 37441607 6718.0 Non-CE Akua Mind & Body \n", "4 30867707 5670.0 Non-CE Altima Dental Canada \n", "5 47167457 7582.0 CE Non-ICP American Concrete Pipe Association \n", "6 47167421 7912.0 CE Non-ICP AndHealth \n", "7 47167502 7871.0 CE Non-ICP Blackboard Inc. \n", "8 47167502 7874.0 CE Non-ICP Blackboard Inc. \n", "9 30988476 7692.0 CE ICP MarketScale \n", "\n", " use_case \n", "0 Customers \n", "1 Customers \n", "2 Employees \n", "3 Employees \n", "4 Employees \n", "5 Customers \n", "6 Customers,Employees \n", "7 Customers \n", "8 Customers \n", "9 Customers " ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newpd = pd.merge(pages, ids, on='school_name')\n", "newpd.head(10)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "school_name object\n", "total_views int64\n", "customer_id int64\n", "school_id int64\n", "icp_boolean object\n", "customer_name object\n", "use_case object\n", "dtype: object\n" ] }, { "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", "
school_nametotal_viewscustomer_idschool_idicp_booleancustomer_nameuse_case
0AIIM+528467571987079CE Non-ICPAIIMCustomers
1Académie Évolupharma253471673907326CE Non-ICPÉvolupharma, Inc.Customers
2ActiveLearner1907308677185301Non-CEBrandActive International Inc.Employees
3Akua Mind Body578374416076718Non-CEAkua Mind & BodyEmployees
4Altima Dental33308677075670Non-CEAltima Dental CanadaEmployees
5American Concrete Pipe Association Learning Ce...2864471674577582CE Non-ICPAmerican Concrete Pipe AssociationCustomers
6Andhealth Internal Training17471674217912CE Non-ICPAndHealthCustomers,Employees
7Anthology Internal104471675027871CE Non-ICPBlackboard Inc.Customers
\n", "
" ], "text/plain": [ " school_name total_views \n", "0 AIIM+ 528 \\\n", "1 Académie Évolupharma 253 \n", "2 ActiveLearner 1907 \n", "3 Akua Mind Body 578 \n", "4 Altima Dental 33 \n", "5 American Concrete Pipe Association Learning Ce... 2864 \n", "6 Andhealth Internal Training 17 \n", "7 Anthology Internal 104 \n", "\n", " customer_id school_id icp_boolean customer_name \n", "0 46757198 7079 CE Non-ICP AIIM \\\n", "1 47167390 7326 CE Non-ICP Évolupharma, Inc. \n", "2 30867718 5301 Non-CE BrandActive International Inc. \n", "3 37441607 6718 Non-CE Akua Mind & Body \n", "4 30867707 5670 Non-CE Altima Dental Canada \n", "5 47167457 7582 CE Non-ICP American Concrete Pipe Association \n", "6 47167421 7912 CE Non-ICP AndHealth \n", "7 47167502 7871 CE Non-ICP Blackboard Inc. \n", "\n", " use_case \n", "0 Customers \n", "1 Customers \n", "2 Employees \n", "3 Employees \n", "4 Employees \n", "5 Customers \n", "6 Customers,Employees \n", "7 Customers " ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newpd['school_id'] =newpd['school_id'].astype(int)\n", "print(newpd.dtypes)\n", "newpd.head(8)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "arr = pd.read_csv(\"/Users/normrasmussen/Downloads/ARR_OrgID.csv\")\n", "arr = arr.reset_index()" ] }, { "cell_type": "code", "execution_count": 52, "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", "
level_0indexUnnamed: 0customer_idcsmproductarr
000130867043Courtney Donargopremium1872
111247167499Tracy McMahonpremium20000
222347167366Supportessentials1500
333447167483Nergis Tepelipremium14438
444530867493Supportpremium2160
555647167458Nergis Tepelipremium26000
666741684806Tracy McMahonenterprise23000
777846757198Norm Rasmussenpremium22000
888937441607Supportessentials6000
9991030867644Supportpremium3000
\n", "
" ], "text/plain": [ " level_0 index Unnamed: 0 customer_id csm product \n", "0 0 0 1 30867043 Courtney Donargo premium \\\n", "1 1 1 2 47167499 Tracy McMahon premium \n", "2 2 2 3 47167366 Support essentials \n", "3 3 3 4 47167483 Nergis Tepeli premium \n", "4 4 4 5 30867493 Support premium \n", "5 5 5 6 47167458 Nergis Tepeli premium \n", "6 6 6 7 41684806 Tracy McMahon enterprise \n", "7 7 7 8 46757198 Norm Rasmussen premium \n", "8 8 8 9 37441607 Support essentials \n", "9 9 9 10 30867644 Support premium \n", "\n", " arr \n", "0 1872 \n", "1 20000 \n", "2 1500 \n", "3 14438 \n", "4 2160 \n", "5 26000 \n", "6 23000 \n", "7 22000 \n", "8 6000 \n", "9 3000 " ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = arr.rename(\n", " columns={\n", " 'Customer ID':'customer_id', \n", " 'CSM':'csm', \n", " 'Active ARR':'arr', \n", " 'Product':'product'\n", " }).drop(\n", " ['Account Executive', 'Mal Limit', 'Customer Since Date', \n", " 'Last Contacted Date', 'Actual Mal', 'Current Mal',\n", " 'Organization', 'Billing Interval'],\n", " axis=1\n", " ).reset_index()\n", "arr['arr'] = arr['arr'].str.replace(',', '').astype(int)\n", "arr.head(10)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "newpd = pd.merge(newpd, arr, on='customer_id')\n" ] }, { "cell_type": "code", "execution_count": 54, "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", "
school_nametotal_viewscustomer_idschool_idicp_booleancustomer_nameuse_casecsmproductarr
0AIIM+528467571987079CE Non-ICPAIIMCustomersNorm Rasmussenpremium22000
1Académie Évolupharma253471673907326CE Non-ICPÉvolupharma, Inc.CustomersTracy McMahonpremium28000
2ActiveLearner1907308677185301Non-CEBrandActive International Inc.EmployeesSupportpremium6720
3Akua Mind Body578374416076718Non-CEAkua Mind & BodyEmployeesSupportessentials6000
4Altima Dental33308677075670Non-CEAltima Dental CanadaEmployeesSupportpremium7474
5American Concrete Pipe Association Learning Ce...2864471674577582CE Non-ICPAmerican Concrete Pipe AssociationCustomersNergis Tepelipremium20000
6Andhealth Internal Training17471674217912CE Non-ICPAndHealthCustomers,EmployeesTracy McMahonpremium31900
7Anthology Internal104471675027871CE Non-ICPBlackboard Inc.CustomersNorm Rasmussenenterprise95000
8Anthology Trial418471675027874CE Non-ICPBlackboard Inc.CustomersNorm Rasmussenenterprise95000
9Ascend Training by Stenograph9309884767692CE ICPMarketScaleCustomersNergis Tepelienterprise68000
\n", "
" ], "text/plain": [ " school_name total_views \n", "0 AIIM+ 528 \\\n", "1 Académie Évolupharma 253 \n", "2 ActiveLearner 1907 \n", "3 Akua Mind Body 578 \n", "4 Altima Dental 33 \n", "5 American Concrete Pipe Association Learning Ce... 2864 \n", "6 Andhealth Internal Training 17 \n", "7 Anthology Internal 104 \n", "8 Anthology Trial 418 \n", "9 Ascend Training by Stenograph 9 \n", "\n", " customer_id school_id icp_boolean customer_name \n", "0 46757198 7079 CE Non-ICP AIIM \\\n", "1 47167390 7326 CE Non-ICP Évolupharma, Inc. \n", "2 30867718 5301 Non-CE BrandActive International Inc. \n", "3 37441607 6718 Non-CE Akua Mind & Body \n", "4 30867707 5670 Non-CE Altima Dental Canada \n", "5 47167457 7582 CE Non-ICP American Concrete Pipe Association \n", "6 47167421 7912 CE Non-ICP AndHealth \n", "7 47167502 7871 CE Non-ICP Blackboard Inc. \n", "8 47167502 7874 CE Non-ICP Blackboard Inc. \n", "9 30988476 7692 CE ICP MarketScale \n", "\n", " use_case csm product arr \n", "0 Customers Norm Rasmussen premium 22000 \n", "1 Customers Tracy McMahon premium 28000 \n", "2 Employees Support premium 6720 \n", "3 Employees Support essentials 6000 \n", "4 Employees Support premium 7474 \n", "5 Customers Nergis Tepeli premium 20000 \n", "6 Customers,Employees Tracy McMahon premium 31900 \n", "7 Customers Norm Rasmussen enterprise 95000 \n", "8 Customers Norm Rasmussen enterprise 95000 \n", "9 Customers Nergis Tepeli enterprise 68000 " ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newpd = newpd.drop(['index', 'Unnamed: 0', 'level_0'], axis=1)\n", "newpd.head(10)" ] }, { "cell_type": "code", "execution_count": 55, "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", "
customer_idtotal_viewsarruse_case
04675719852822000Customers
14716739025328000Customers
23086771819076720Employees
3374416075786000Employees
430867707337474Employees
547167457286420000Customers
6471674211731900Customers,Employees
74716750210495000Customers
84716750241895000Customers
930988476968000Customers
\n", "
" ], "text/plain": [ " customer_id total_views arr use_case\n", "0 46757198 528 22000 Customers\n", "1 47167390 253 28000 Customers\n", "2 30867718 1907 6720 Employees\n", "3 37441607 578 6000 Employees\n", "4 30867707 33 7474 Employees\n", "5 47167457 2864 20000 Customers\n", "6 47167421 17 31900 Customers,Employees\n", "7 47167502 104 95000 Customers\n", "8 47167502 418 95000 Customers\n", "9 30988476 9 68000 Customers" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "usecases_split = newpd[['customer_id', 'total_views', 'arr', 'use_case']].copy()\n", "usecases_split.head(10)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# from ast import literal_eval\n", "# #usecases_split = usecases_split.use_case.str.split('|')\n", "# # usecases_split = usecases_split.groupby('use_case').agg({'total_views':'sum','arr':'sum'})\n", "# usecases_split.use_case = usecases_split.use_case.apply(literal_eval)\n", "# usecases_split.use_case.explode(usecases_split.assign(use_case=usecases_split.use_case.str.split(',')), 'use_case')\n", "# usecases_split.head(25)" ] }, { "cell_type": "code", "execution_count": 56, "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", "
total_viewsarr
icp_boolean
CE ICP111391276680
CE Non-ICP523621258130
Non-CE484852407191
\n", "
" ], "text/plain": [ " total_views arr\n", "icp_boolean \n", "CE ICP 11139 1276680\n", "CE Non-ICP 52362 1258130\n", "Non-CE 48485 2407191" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# icp_groups = pd.DataFrame(columns=['views_sum', 'arr_sum'])\n", "# icp_groups = newpd.groupby('icp_boolean')['total_views', 'arr'].sum()\n", "icp_groups = newpd.groupby('icp_boolean').agg({'total_views':'sum','arr':'sum'})\n", "icp_groups.head(12)" ] }, { "cell_type": "code", "execution_count": 61, "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", "
total_viewsarrscaled_views_percent
customer_name
CHEK Institute1113820000100
UX Design Institute71673786064
Anchor QEA, LLC48531000043
MOLITOR Formations4009900035
Whitetail Properties Real Estate36041800032
\n", "
" ], "text/plain": [ " total_views arr scaled_views_percent\n", "customer_name \n", "CHEK Institute 11138 20000 100\n", "UX Design Institute 7167 37860 64\n", "Anchor QEA, LLC 4853 10000 43\n", "MOLITOR Formations 4009 9000 35\n", "Whitetail Properties Real Estate 3604 18000 32" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.preprocessing import MinMaxScaler\n", "\n", "cust_groups = newpd.groupby('customer_name').agg({'total_views':'sum','arr':'mean'})\n", "cust_groups.arr = cust_groups.arr.astype(int)\n", "\n", "scaler = MinMaxScaler()\n", "\n", "cust_groups[[\"scaled_views\"]] = scaler.fit_transform(cust_groups[[\"total_views\"]])\n", "cust_groups['scaled_views'] = cust_groups['scaled_views'].multiply(100).astype(int)\n", "cust_groups['scaled_views_percent'] = cust_groups['scaled_views']\n", "cust_groups = cust_groups.drop(['scaled_views'], axis=1)\n", "\n", "cust_groups.nlargest(5, 'total_views')\n" ] }, { "cell_type": "code", "execution_count": 60, "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", "
total_viewsarrscaled_views_percent
customer_name
Bolt Operations OÜ117724048010
LJ Hooker Corporation Pty Ltd137820625012
Soham, Inc. (Zenoti)1161200001
Blackboard Inc.522950004
Shipt1034885649
\n", "
" ], "text/plain": [ " total_views arr scaled_views_percent\n", "customer_name \n", "Bolt Operations OÜ 1177 240480 10\n", "LJ Hooker Corporation Pty Ltd 1378 206250 12\n", "Soham, Inc. (Zenoti) 116 120000 1\n", "Blackboard Inc. 522 95000 4\n", "Shipt 1034 88564 9" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cust_groups.nlargest(5, 'arr')" ] }, { "cell_type": "code", "execution_count": 64, "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", "
total_viewsarrscaled_views_percent
customer_name
Whitetail Properties Real Estate36041800032
Luma Health, Inc.34592000031
SPS Commerce32055100028
American Concrete Pipe Association28642000025
Hardskills Pte. Ltd27801249824
\n", "
" ], "text/plain": [ " total_views arr scaled_views_percent\n", "customer_name \n", "Whitetail Properties Real Estate 3604 18000 32\n", "Luma Health, Inc. 3459 20000 31\n", "SPS Commerce 3205 51000 28\n", "American Concrete Pipe Association 2864 20000 25\n", "Hardskills Pte. Ltd 2780 12498 24" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "no_outliers = cust_groups.where((cust_groups.total_views < 4000) & (cust_groups.arr < 100000), 0)\n", "no_outliers.nlargest(5, 'total_views')" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "image/png": "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elSS1KdPnyDXBAAAeOvo0aNKSEjwWIYNe/2koaFB3333nc444ww5HA6/PrfT6VSfPn104MCBiNoMOFLbLUVu2yO13VLktj1S2y3Rdru03Rijo0ePqlevXurQwXPWEj1NftKhQwf17t27XV8jPj4+6B+uYIjUdkuR2/ZIbbcUuW2P1HZLtN0ObW+rh6kRieAAAAAWEDQBAABYQNAUAmJjYzVv3jzFxsYGuyoBFantliK37ZHabily2x6p7ZZoeyi2nURwAAAAC+hpAgAAsICgCQAAwAKCJgAAAAsImmxu0aJF6tevnzp16qSMjAxt2LAh2FU6LY899pgcDofbz+DBg13njx07punTp6t79+7q2rWrrrvuOh08eNDtOfbv36+JEycqLi5OPXr00P33368TJ04Euiltys/P109+8hP16tVLDodDf/7zn93OG2M0d+5c9ezZU507d1Z2drZ2797tVqa8vFyTJ09WfHy8EhMTNW3aNFVVVbmV+frrr3XppZeqU6dO6tOnjxYsWNDeTfOorXbffPPNp3wGrrjiCrcyodju+fPna/To0TrjjDPUo0cPTZo0SYWFhW5l/PX5Xr16tS688ELFxsZqwIABWrp0aXs3zyMrbR83btwp7/sdd9zhViYU2/7CCy/o/PPPd603lJmZqY8//th1Plzf87baHa7vtwxs66233jIxMTHmD3/4g9m+fbu57bbbTGJiojl48GCwq+azefPmmfPOO898//33rp/S0lLX+TvuuMP06dPHrFixwnzxxRfmoosuMhdffLHr/IkTJ8zQoUNNdna22bx5s/noo49McnKyeeihh4LRHI8++ugj8/DDD5s//elPRpJ577333M4/+eSTJiEhwfz5z382X331lfmXf/kXk56ebn744QdXmSuuuMJccMEF5vPPPzd//etfzYABA0xubq7rfGVlpUlNTTWTJ08227ZtM3l5eaZz587mxRdfDFQzT9FWu6dMmWKuuOIKt89AeXm5W5lQbHdOTo559dVXzbZt28yWLVvMj3/8Y3PWWWeZqqoqVxl/fL6LiopMXFycmT17ttmxY4dZuHChiYqKMp988klA29uUlbb/6Ec/Mrfddpvb+15ZWek6H6pt/+CDD8yyZcvMN998YwoLC80vfvELEx0dbbZt22aMCd/3vK12h+v7TdBkY2PGjDHTp093/V5fX2969epl5s+fH8RanZ558+aZCy64oMVzFRUVJjo62rz77ruuYzt37jSSTEFBgTHm5A25Q4cOpqSkxFXmhRdeMPHx8aa2trZd6346mgcPDQ0NJi0tzTz11FOuYxUVFSY2Ntbk5eUZY4zZsWOHkWQ2btzoKvPxxx8bh8Nh/v73vxtjjHn++edNUlKSW9sfeOABM2jQoHZukTWtBU1XX311q48Jh3YbY8yhQ4eMJLNmzRpjjP8+3//xH/9hzjvvPLfXuv76601OTk57N8my5m035uRN9O677271MeHSdmOMSUpKMq+88kpEvefG/LPdxoTv+83wnE3V1dVp06ZNys7Odh3r0KGDsrOzVVBQEMSanb7du3erV69e6t+/vyZPnqz9+/dLkjZt2qTjx4+7tXnw4ME666yzXG0uKCjQsGHDlJqa6iqTk5Mjp9Op7du3B7Yhp6G4uFglJSVubU1ISFBGRoZbWxMTEzVq1ChXmezsbHXo0EHr1693lcnKylJMTIyrTE5OjgoLC3XkyJEAtcZ7q1evVo8ePTRo0CDdeeedOnz4sOtcuLS7srJSktStWzdJ/vt8FxQUuD1HYxk7/V1o3vZGb7zxhpKTkzV06FA99NBDqqmpcZ0Lh7bX19frrbfeUnV1tTIzMyPmPW/e7kbh+H6z95xNlZWVqb6+3u0DJUmpqanatWtXkGp1+jIyMrR06VINGjRI33//vR5//HFdeuml2rZtm0pKShQTE6PExES3x6SmpqqkpESSVFJS0uI1aTwXKhrr2lJbmra1R48ebuc7duyobt26uZVJT08/5TkazyUlJbVL/U/HFVdcoWuvvVbp6en69ttv9Ytf/EJXXnmlCgoKFBUVFRbtbmho0D333KOxY8dq6NChrnr54/PdWhmn06kffvhBnTt3bo8mWdZS2yXp5z//ufr27atevXrp66+/1gMPPKDCwkL96U9/khTabd+6dasyMzN17Ngxde3aVe+9956GDBmiLVu2hPV73lq7pfB9vwmaEFBXXnml69/nn3++MjIy1LdvX73zzjtB/2OPwLjhhhtc/x42bJjOP/98nX322Vq9erXGjx8fxJr5z/Tp07Vt2zZ99tlnwa5KwLXW9ttvv93172HDhqlnz54aP368vv32W5199tmBrqZfDRo0SFu2bFFlZaX++7//W1OmTNGaNWuCXa1211q7hwwZErbvN8NzNpWcnKyoqKhTZlkcPHhQaWlpQaqV/yUmJuqcc87Rnj17lJaWprq6OlVUVLiVadrmtLS0Fq9J47lQ0VhXT+9vWlqaDh065Hb+xIkTKi8vD6vr0b9/fyUnJ2vPnj2SQr/dM2bM0IcffqhVq1apd+/eruP++ny3ViY+Pj7oXzxaa3tLMjIyJMntfQ/VtsfExGjAgAEaOXKk5s+frwsuuEDPPvts2L/nrbW7JeHyfhM02VRMTIxGjhypFStWuI41NDRoxYoVbmPGoa6qqkrffvutevbsqZEjRyo6OtqtzYWFhdq/f7+rzZmZmdq6davbTXX58uWKj493dQuHgvT0dKWlpbm11el0av369W5traio0KZNm1xlVq5cqYaGBtcfoMzMTOXn5+v48eOuMsuXL9egQYOCPkRl1d/+9jcdPnxYPXv2lBS67TbGaMaMGXrvvfe0cuXKU4YP/fX5zszMdHuOxjLB/LvQVttbsmXLFklye99Dse0taWhoUG1tbVi/5y1pbHdLwub9DloKOtr01ltvmdjYWLN06VKzY8cOc/vtt5vExES32Qah5r777jOrV682xcXFZu3atSY7O9skJyebQ4cOGWNOTs8966yzzMqVK80XX3xhMjMzTWZmpuvxjdNUJ0yYYLZs2WI++eQTk5KSYsslB44ePWo2b95sNm/ebCSZZ555xmzevNns27fPGHNyyYHExETz/vvvm6+//tpcffXVLS45MGLECLN+/Xrz2WefmYEDB7pNva+oqDCpqanmxhtvNNu2bTNvvfWWiYuLC+rUe0/tPnr0qJkzZ44pKCgwxcXF5v/+7//MhRdeaAYOHGiOHTvmeo5QbPedd95pEhISzOrVq92mWdfU1LjK+OPz3TgN+/777zc7d+40ixYtCvo07LbavmfPHvPLX/7SfPHFF6a4uNi8//77pn///iYrK8v1HKHa9gcffNCsWbPGFBcXm6+//to8+OCDxuFwmL/85S/GmPB9zz21O5zfb4Imm1u4cKE566yzTExMjBkzZoz5/PPPg12l03L99debnj17mpiYGHPmmWea66+/3uzZs8d1/ocffjB33XWXSUpKMnFxceaaa64x33//vdtz7N2711x55ZWmc+fOJjk52dx3333m+PHjgW5Km1atWmUknfIzZcoUY8zJZQceffRRk5qaamJjY8348eNNYWGh23McPnzY5Obmmq5du5r4+HgzdepUc/ToUbcyX331lbnkkktMbGysOfPMM82TTz4ZqCa2yFO7a2pqzIQJE0xKSoqJjo42ffv2NbfddtspXwRCsd0ttVmSefXVV11l/PX5XrVqlRk+fLiJiYkx/fv3d3uNYGir7fv37zdZWVmmW7duJjY21gwYMMDcf//9buv2GBOabb/llltM3759TUxMjElJSTHjx493BUzGhO977qnd4fx+O4wxJnD9WgAAAKGJnCYAAAALCJoAAAAsIGgCAACwgKAJAADAAoImAAAACwiaAAAALCBoAgAAsICgCQAAwAKCJgAR6+abb9akSZP88lyPPfaYhg8f7pfnAmBPBE0AbGXcuHG655572v0x/jZnzpxTNhcFEF46BrsCABAOunbtqq5duwa7GgDaET1NAGzj5ptv1po1a/Tss8/K4XDI4XBo7969WrNmjcaMGaPY2Fj17NlTDz74oE6cOOHxMfX19Zo2bZrS09PVuXNnDRo0SM8++6xP9XrppZfUq1cvNTQ0uB2/+uqrdcstt0hqeXjulVde0bnnnqtOnTpp8ODBev75513nfvrTn2rGjBmu3++55x45HA7t2rVLklRXV6cuXbro//7v/yRJ//3f/61hw4apc+fO6t69u7Kzs1VdXe1TewD4hqAJgG08++yzyszM1G233abvv/9e33//vaKjo/XjH/9Yo0eP1ldffaUXXnhBS5Ys0a9+9atWH9OnTx81NDSod+/eevfdd7Vjxw7NnTtXv/jFL/TOO+94Xa+f/exnOnz4sFatWuU6Vl5erk8++USTJ09u8TFvvPGG5s6dqyeeeEI7d+7Ur3/9az366KN67bXXJEk/+tGPtHr1alf5NWvWKDk52XVs48aNOn78uC6++GJ9//33ys3N1S233KKdO3dq9erVuvbaa8V+60BgMTwHwDYSEhIUExOjuLg4paWlSZIefvhh9enTR88995wcDocGDx6s7777Tg888IDmzp3b4mMkKSoqSo8//rjr9/T0dBUUFOidd97Rv/7rv3pVr6SkJF155ZV68803NX78eEkne36Sk5N12WWXtfiYefPm6emnn9a1117rev0dO3boxRdf1JQpUzRu3DjdfffdKi0tVceOHbVjxw49+uijWr16te644w6tXr1ao0ePVlxcnHbt2qUTJ07o2muvVd++fSVJw4YN86oNAE4fPU0AbG3nzp3KzMyUw+FwHRs7dqyqqqr0t7/9zeNjFy1apJEjRyolJUVdu3bVSy+9pP379/tUj8mTJ+t//ud/VFtbK+lkT9INN9ygDh1O/TNaXV2tb7/9VtOmTXPlOnXt2lW/+tWv9O2330qShg4dqm7dumnNmjX661//qhEjRuiqq67SmjVrJJ3seRo3bpwk6YILLtD48eM1bNgw/exnP9PLL7+sI0eO+NQOAL4jaAIQlt566y3NmTNH06ZN01/+8hdt2bJFU6dOVV1dnU/P95Of/ETGGC1btkwHDhzQX//611aH5qqqqiRJL7/8srZs2eL62bZtmz7//HNJksPhUFZWllavXu0KkM4//3zV1tZq27ZtWrdunX70ox9JOtlrtnz5cn388ccaMmSIFi5cqEGDBqm4uNintgDwDcNzAGwlJiZG9fX1rt/PPfdc/c///I+MMa7eprVr1+qMM85Q7969W3xMY5mLL75Yd911l+tYYy+PLzp16qRrr71Wb7zxhvbs2aNBgwbpwgsvbLFsamqqevXqpaKiolYDK+lkXtPLL7+s2NhYPfHEE+rQoYOysrL01FNPqba2VmPHjnWVdTgcGjt2rMaOHau5c+eqb9++eu+99zR79myf2wTAOwRNAGylX79+Wr9+vfbu3auuXbvqrrvu0u9+9zvNnDlTM2bMUGFhoebNm6fZs2e7hsaaP6Zbt24aOHCgXn/9dX366adKT0/X//t//08bN25Uenq6z3WbPHmyrrrqKm3fvl3/9m//5rHs448/rlmzZikhIUFXXHGFamtr9cUXX+jIkSOuQGfcuHG69957FRMTo0suucR1bM6cORo9erS6dOkiSVq/fr1WrFihCRMmqEePHlq/fr1KS0t17rnn+twWAN5jeA6ArcyZM0dRUVEaMmSIUlJSdPz4cX300UfasGGDLrjgAt1xxx2aNm2aHnnkkVYfs3//fv37v/+7rr32Wl1//fXKyMjQ4cOH3XqdfHH55ZerW7duKiws1M9//nOPZW+99Va98sorevXVVzVs2DD96Ec/0tKlS92CtmHDhikxMVHDhw93rfE0btw41dfXu/KZJCk+Pl75+fn68Y9/rHPOOUePPPKInn76aV155ZWn1R4A3nEY5qwCAAC0iZ4mAAAACwiaAES8/fv3uy0N0PzH12UKAIQXhucARLwTJ05o7969rZ7v16+fOnZk3gwQ6QiaAAAALGB4DgAAwAKCJgAAAAsImgAAACwgaAIAALCAoAkAAMACgiYAAAALCJoAAAAsIGgCAACw4P8DY8CbEwtdleIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "no_outliers.plot(kind='scatter', x='total_views', y='arr')\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "TODO: It would be interesting to next compare the page views with the number of admins, or the number of MALs to admins, etc. " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### The following plot _contains_ outliers. \n", "The `cust_groups` dataframe has all the data. Look for `no_outliers` for the dataframe with outliers removed." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "image/png": "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fqq28UzVpy1oCbV1Fb55zwiN7de13kDlK9cBAEBT0f3npxo69UFzaepM5L5yHQAANBWhyk81dOqD5pYQ1bhlXXztOgAAaCy6//xUQ6Y+8GWt5ToAACBU+TFPpz7wda3lOgAAbRtv/7Wg5lpQubHjmXxNa7kOAEDrwoLKbUhjxzP5mtZyHQCAtonuPwAAABsQqgAAAGxAqAIAALABoQoAAMAGhCoAAAAbEKoAAABsQKgCAACwAaEKAADABoQqAAAAGxCqAAAAbMAyNUArcbCgWN+cPs/aiQDgJT7dUvX000/L4XC4fPr372/t//777zV9+nR16dJFHTt21O23367jx4+7nCMvL0/jx49XWFiYunbtqrlz56q8vNylzPr163XVVVcpJCREffr00dKlSy+qy+LFi9WrVy+1b99eSUlJ2rJlS7NcszcdLCjWutwTOnTynLerggYoPF+qe97aoh+9uEFTlmzV2N+v1z1vbVHR+TJvVw0A2hSfDlWSdMUVV+jYsWPW5/PPP7f2PfLII/rrX/+qFStWaMOGDTp69KgmTpxo7a+oqND48eNVWlqqL774Qm+//baWLl2qBQsWWGUOHTqk8ePHa+zYscrOztasWbP0i1/8Qp999plV5v3339fs2bP11FNP6csvv9TgwYOVmpqqEydOtMxNaGY8lP3bQ8uytenASZdtmw6c1MxlO7xUIwBomxzGGOPtStTm6aef1scff6zs7OyL9hUVFSk6OlrvvfeefvKTn0iS9u3bpwEDBigzM1NXX321Pv30U9188806evSoYmJiJEmvv/665s2bp4KCAgUHB2vevHlauXKlcnJyrHPfddddKiws1OrVqyVJSUlJGjFihF555RVJUmVlpeLj4zVz5kw99thjHl+P0+lURESEioqKFB4e3tjbYrt73tqiTQdOqqLaPwqBDodG9YnSO+kjvVgz1OdgQbF+9OKGWvevmzOGrkAAaCJPn98+31K1f/9+xcXFqXfv3po0aZLy8vIkSdu3b1dZWZlSUlKssv3791ePHj2UmZkpScrMzFRiYqIVqCQpNTVVTqdTu3fvtspUP0dVmapzlJaWavv27S5lAgIClJKSYpWpTUlJiZxOp8vH1xwsKNbG/QUugUqSKozRxv0FdAX6uG9On69z/+FT/P8HAC3Fp0NVUlKSli5dqtWrV+u1117ToUOHdN11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G0xubq5LmVOnTpm0tDTTsWNHEx4ebqZMmWLOnj3rUmbnzp3m2muvNSEhIebSSy81zz33XLNfW0twOp3m4YcfNj169DDt27c3vXv3No8//rjLq/zcQ1fr1q1z+/dv8uTJxpiWvV8ffPCBufzyy01wcLC54oorzMqVK5vtun2Nw5hqU9QCAACgURhTBQAAYANCFQAAgA0IVQAAADYgVAEAANiAUAUAAGADQhUAAIANCFUAAAA2IFQBAADYgFAFAHW49957NWHCBFvO9fTTT2vIkCG2nAuA7yFUAfA7Y8aM0axZs5r9GLvNmTPnosVmAbQe7bxdAQBoKzp27KiOHTt6uxoAmgktVQD8yr333qsNGzbo5ZdflsPhkMPh0OHDh7VhwwaNHDlSISEh6tatmx577DGVl5fXeUxFRYXS09OVkJCg0NBQ9evXTy+//HKj6vXGG28oLi5OlZWVLttvvfVW/fznP5fkvvvvzTff1IABA9S+fXv1799fr776qrXvJz/5iWbMmGF9nzVrlhwOh/bt2ydJKi0tVYcOHfT//t//kyT9z//8jxITExUaGqouXbooJSVF586da9T1AGg4QhUAv/Lyyy8rOTlZ9913n44dO6Zjx44pKChIP/7xjzVixAjt3LlTr732mt566y395je/qfWY+Ph4VVZWqnv37lqxYoX27NmjBQsW6Fe/+pU++OCDBtfrpz/9qU6dOqV169ZZ206fPq3Vq1dr0qRJbo959913tWDBAj377LPau3evfvvb3+rJJ5/U22+/LUm6/vrrtX79eqv8hg0bFBUVZW3bunWrysrKdM011+jYsWNKS0vTz3/+c+3du1fr16/XxIkTZYxp8LUAaBy6/wD4lYiICAUHByssLEyxsbGSpMcff1zx8fF65ZVX5HA41L9/fx09elTz5s3TggUL3B4jSYGBgXrmmWes7wkJCcrMzNQHH3ygO+64o0H16tSpk2666Sa99957uuGGGyT90HIUFRWlsWPHuj3mqaee0osvvqiJEydav79nzx7953/+pyZPnqwxY8bo4YcfVkFBgdq1a6c9e/boySef1Pr16zV16lStX79eI0aMUFhYmPbt26fy8nJNnDhRPXv2lCQlJiY26BoANA0tVQD83t69e5WcnCyHw2FtGzVqlIqLi/Xtt9/WeezixYs1bNgwRUdHq2PHjnrjjTeUl5fXqHpMmjRJ//u//6uSkhJJP7RE3XXXXQoIuPhP7blz5/T1118rPT3dGmvVsWNH/eY3v9HXX38tSRo0aJA6d+6sDRs26O9//7uGDh2qm2++WRs2bJD0Q8vVmDFjJEmDBw/WDTfcoMTERP30pz/VH//4R505c6ZR1wGgcQhVANqs5cuXa86cOUpPT9ff/vY3ZWdna8qUKSotLW3U+W655RYZY7Ry5UodOXJEf//732vt+isuLpYk/fGPf1R2drb1ycnJ0ebNmyVJDodDo0eP1vr1660AdeWVV6qkpEQ5OTn64osvdP3110v6odVtzZo1+vTTTzVw4EAtWrRI/fr106FDhxp1LQAaju4/AH4nODhYFRUV1vcBAwbof//3f2WMsVqrNm3apEsuuUTdu3d3e0xVmWuuuUYPPvigta2qlagx2rdvr4kTJ+rdd9/VgQMH1K9fP1111VVuy8bExCguLk4HDx6sNXhJP4yr+uMf/6iQkBA9++yzCggI0OjRo/XCCy+opKREo0aNsso6HA6NGjVKo0aN0oIFC9SzZ0999NFHmj17dqOvCYDnCFUA/E6vXr2UlZWlw4cPq2PHjnrwwQf10ksvaebMmZoxY4Zyc3P11FNPafbs2VbXW81jOnfurL59++qdd97RZ599poSEBP33f/+3tm7dqoSEhEbXbdKkSbr55pu1e/du/eu//mudZZ955hk99NBDioiI0I033qiSkhJt27ZNZ86csYLQmDFj9Mgjjyg4OFjXXnuttW3OnDkaMWKEOnToIEnKyspSRkaGxo0bp65duyorK0sFBQUaMGBAo68FQMPQ/QfA78yZM0eBgYEaOHCgoqOjVVZWplWrVmnLli0aPHiwpk6dqvT0dD3xxBO1HpOXl6cHHnhAEydO1J133qmkpCSdOnXKpdWqMX70ox+pc+fOys3N1d13311n2V/84hd68803tWTJEiUmJur666/X0qVLXUJdYmKiIiMjNWTIEGuOqzFjxqiiosIaTyVJ4eHh2rhxo3784x/r8ssv1xNPPKEXX3xRN910U5OuB4DnHIb3bQEAAJqMlioAAAAbEKoAwAN5eXkuUx/U/DR2GgYArQfdfwDggfLych0+fLjW/b169VK7drz7A7RlhCoAAAAb0P0HAABgA0IVAACADQhVAAAANiBUAQAA2IBQBQAAYANCFQAAgA0IVQAAADYgVAEAANjg/wPw5N9cqSdeHAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cust_groups.plot(kind='scatter', x='total_views', y='arr')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "Yes, there appears to be a relationship between the arr column and total_views column. To further analyze this relationship, we can use a correlation coefficient to measure the strength of the relationship between the two variables. We can also use a scatter plot to visualize the relationship between the two variables. Additionally, we can use linear regression to determine if there is a linear relationship between the two variables. \n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cust_groups.sketch.ask(\"Is there a relationships between arr column and total_views column? Conduct further analysis on the relationship\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n",
       "import pandas as pd\n",
       "import numpy as np\n",
       "from sklearn.linear_model import LinearRegression\n",
       "\n",
       "# Create the X and y data sets\n",
       "X = cust_groups[['arr']]\n",
       "y = cust_groups['total_views']\n",
       "\n",
       "# Fit the linear regression model\n",
       "model = LinearRegression().fit(X, y)\n",
       "\n",
       "# Print the coefficients\n",
       "print('Coefficient: ', model.coef_)\n",
       "print('Intercept: ', model.intercept_)\n",
       "
\n", " \n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cust_groups.sketch.howto(\"Apply linear regression to determine if there is a linear relationships between arr and total_views\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LinearRegression()\n", "Coefficient: [0.00205744]\n", "Intercept: 788.6409091789558\n" ] } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "\n", "# Create the X and y data sets\n", "X = cust_groups[['arr']]\n", "y = cust_groups['total_views']\n", "\n", "# Fit the linear regression model\n", "model = LinearRegression().fit(X, y)\n", "\n", "# Print the coefficients\n", "print('Coefficient: ', model.coef_)\n", "print('Intercept: ', model.intercept_)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "total_views int64\n", "arr int64\n", "dtype: object" ] }, "execution_count": 960, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create new dataframe with only some columns. \n", "corrspd = cust_groups[['total_views', 'arr']]\n", "corrspd.plot.scatter(x=corrspd.total_views, y=corrspd.arr)\n", "\n", "\n", "# Correlation Matrix. Not useful here. \n", "# corrs = corrspd.corr()\n", "# fig = plt.figure(figsize=(10,10))\n", "# plt.matshow(corrs, cmap='RdBu')\n", "# plt.xticks(range(len(corrs.columns)), corrs.columns, rotation='vertical')\n", "# plt.yticks(range(len(corrs.columns)), corrs.columns)\n", "# plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAGdCAYAAADDtX0BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABiSklEQVR4nO3de3xU1bn/8c/OjVwgF5CYYCAXkhCBQEQDiqgg1CJSEKqWQntaUmKtUm1r9edBtNYaNaV6lIPaqFClViHlSJGrbSlYNVQFBBJuIQQM4RqESUgCuc3+/RGzYUiAhFxmMvN9v155ZWbvtfc8zwxJHtZae23DNE0TEREREWl3Xs4OQERERMRTqPASERER6SAqvEREREQ6iAovERERkQ6iwktERESkg6jwEhEREekgKrxEREREOogKLxEREZEOosJLREREpIOo8BIRERHpID7ODkAaO3nyJLW1tc4Oo1317NmTkpISZ4fRYTwpX+XqvjwpX+XqvtojXx8fH8LCwprXtk1fuY2sWbOG5cuXY7PZiI6OJi0tjfj4+Au237BhA4sXL6akpISIiAimTZvGkCFDrP2maZKdnc3atWupqKggKSmJGTNmEBkZabUpLy9nwYIFbNq0CcMwGDZsGNOnT8ff3x+AQ4cO8cYbb1BcXExlZSVhYWGMGDGCu+66Cx+f+rdx/fr1vPrqqw6x+fr68pe//KVF+dfW1lJTU9OiYzoTwzCA+jw94VahnpSvcnVfnpSvcnVfrpCvyxVeOTk5LFy4kPT0dBISEli5ciUZGRm89NJLhISENGq/e/duXn75ZaZOncqQIUP45JNPmDNnDpmZmfTp0weAZcuWsXr1ah544AHCw8NZvHgxGRkZvPjii/j5+QEwd+5cTp48yezZs6mrq+PVV18lKyuLhx56CABvb29uvvlmYmNjCQoK4quvviIrKwu73c7UqVOteAICAnj55Zc74J0SERGRzsbl5nitWLGC0aNHM2rUKKKiokhPT8fPz49169Y12X7VqlWkpKQwYcIEoqKimDJlCnFxcaxZswao7+1atWoVkydPJjU1lejoaGbOnMnJkyf54osvACguLmbLli3cd999JCQkkJSURFpaGjk5OZw4cQKAK6+8klGjRhETE0PPnj257rrrGDFiBLt27XKIxzAMQkNDHb5EREREwMV6vGprayksLOTOO++0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zvz58x0WUE1LS7vgAqrdunVj7NixjZa4uFQszVFSUuJwtaO7aVhy4LAHdW17Sr7K1X15Ur7K1X21V76+vr7NnuPlkoWXp1Ph5V48KV/l6r48KV/l6r5cofByuaFGEREREXelwktERESkg6jwEhEREekgKrxEREREOogKLxEREZEOosJLREREpIOo8BIRERHpICq8RERERDqICi8RERGRDuLj7ACkMR8fz/hYPCXPBp6Ur3J1X56Ur3J1X22db0vOp1sGiYiIiHQQDTVKhzt9+jT/7//9P06fPu3sUDqEJ+WrXN2XJ+WrXN2XK+Srwks6nGma7Nu3zyNuyAqela9ydV+elK9ydV+ukK8KLxEREZEOosJLREREpIOo8JIO5+vry1133YWvr6+zQ+kQnpSvcnVfnpSvcnVfrpCvrmoUERER6SDq8RIRERHpICq8RERERDqICi8RERGRDqLCS0RERKSDeNbNmaTNLF26lM8//5yDBw/i5+dHYmIiP/jBD+jVq5fV5qmnnmLHjh0Ox40ZM4Z7773Xen78+HHeeOMNtm/fjr+/P7fccgtTp07F29vbarN9+3YWLlzIgQMH6NGjB9/97ncZOXJku+fYIDs7myVLljhs69WrFy+99BIA1dXVLFy4kJycHGpqahg8eDAzZswgNDTUat8Z8mzwwAMPUFJS0mj7bbfdxowZMzr157pjxw4++OAD9u3bx8mTJ/n1r3/N0KFDrf2maZKdnc3atWupqKggKSmJGTNmEBkZabUpLy9nwYIFbNq0CcMwGDZsGNOnT8ff399q89VXXzF//nz27t1LcHAwY8eOZeLEiQ6xbNiwgcWLF1NSUkJERATTpk1jyJAhHZJrbW0tixYt4ssvv+TYsWMEBgaSnJzM1KlT6d69u3WOpv4tTJ06lTvvvNOlcr1UvgCvvPIKH330kcMxgwcP5vHHH7eeu8NnC3DPPfc0edwPfvADJkyYAHSez7Y5f2s68nfwmjVrWL58OTabjejoaNLS0oiPj29RTiq85LLs2LGDb3/72/Tt25e6ujree+89nnnmGV588UWHX1KjR4/me9/7nvXcz8/Pemy323nuuecIDQ3lmWee4eTJk8ybNw9vb2+mTp0KwLFjx3j++ef51re+xc9//nPy8vL44x//SGhoKCkpKR2Wb+/evXniiSes515eZzuL3377bTZv3syvfvUrAgMDmT9/Pi+88AK/+93vOl2eAM899xx2u916XlRUxDPPPMMNN9xgbeusn2tVVRUxMTHceuut/OEPf2i0f9myZaxevZoHHniA8PBwFi9eTEZGBi+++KKV49y5czl58iSzZ8+mrq6OV199laysLB566CEAKisreeaZZ0hOTiY9PZ2ioiJee+01goKCGDNmDAC7d+/m5ZdfZurUqQwZMoRPPvmEOXPmkJmZSZ8+fdo91+rqavbt28d3v/tdYmJiKC8v56233uL3v/89zz//vEPbe+65x4obcPj5dpVcL5Vvg5SUFO6//37r+fk3NnaHzxbg9ddfd3j+5Zdf8sc//pFhw4Y5bO8Mn21z/tZ01O/gnJwcFi5cSHp6OgkJCaxcuZKMjAxeeuklQkJCmp+UKdIGSktLzbvvvtvcvn27te03v/mN+ac//emCx2zevNm85557zJMnT1rbPvzwQ/O//uu/zJqaGtM0TfPPf/6z+atf/crhuP/5n/8xn3nmmTaN/2IWL15s/vrXv25yX0VFhTllyhRzw4YN1rbi4mLz7rvvNnfv3m2aZufJ80L+9Kc/mTNnzjTtdrtpmu7zud59993mZ599Zj232+1menq6uWzZMmtbRUWFOXXqVPOTTz4xTdM0Dxw4YN59991mQUGB1ebLL78077nnHvPrr782TbM+1x//+MdWrqZpmu+884750EMPWc9ffPFF87nnnnOIZ9asWWZWVlab5tjg/FybsmfPHvPuu+82S0pKrG3333+/uWLFigse44q5mmbT+c6bN8/MzMy84DHu/NlmZmaav/3tbx22ddbP9vy/NR35O/i///u/zTfffNN6XldXZ957773m0qVLW5SD5nhJm6isrASga9euDts//vhjfvKTn/Dwww/z7rvvUlVVZe3Lz8+nT58+Dt3BKSkpnD59mgMHDgCwZ88ekpOTHc45ePBg8vPz2ymTph05coSf/vSnzJw5k7lz53L8+HEACgsLqaurc4jxqquu4oorrrBi7Ex5nq+2tpaPP/6YUaNGYRiGtd1dPtdzHTt2DJvNxqBBg6xtgYGBxMfHO3yWQUFB9O3b12qTnJyMYRgUFBRYba6++mqH3pTBgwdz6NAhysvLrTZN5b9nz552y+9SKisrMQyDwMBAh+1/+9vfSEtL49FHH+WDDz6grq7O2tfZct2xYwczZszgoYce4o033uDUqVPWPnf9bG02G19++SW33npro32d8bM9/29NR/0Orq2tpbCw0KGNl5cXycnJLf69paFGaTW73c5bb71Fv379HLqXR4wYwRVXXEH37t356quv+Mtf/sKhQ4f49a9/DdT/Qjj3BwGwumttNpv1/fwu3JCQEE6fPk11dbXDEFd7SUhI4P7776dXr16cPHmSJUuW8OSTT/LCCy9gs9nw8fEhKCioUYzn5tAZ8mzK559/TkVFhcM8B3f5XM/XEFtTcZ0bd3BwsMN+b29vunbt6tAmPDzcoU3D+2Gz2ay2F3udjlZdXc1f/vIXbrzxRofC6/bbbyc2NpauXbuye/du3nvvPU6ePMmPfvQjoHPlmpKSwrBhwwgPD+fIkSO89957PPvss2RkZODl5eW2n+1HH32Ev7+/wxww6JyfbVN/azrqd3B5eTl2u73ReUJDQzl06FCL8lDhJa02f/58Dhw4wNNPP+2w/dy5A3369CEsLIynn36aI0eOEBER0dFhXrZrrrnGehwdHW0VYhs2bHBaQdRR1q1bR0pKisOEa3f5XKVebW0t//M//wPAjBkzHPaNHz/eehwdHY2Pjw9vvPEGU6dO7XS3mLnxxhutx3369CE6Opqf//znbN++vVFPhztZt24dN910U6PfVZ3xs73Q35rORkON0irz589n8+bN/OY3v6FHjx4Xbdtw5ceRI0eA+v8pnP8/o9LSUmtfw/eGbee2CQgIcFrRExQURK9evThy5AihoaHU1tZSUVHRKMZzc+iMeZaUlLBt2zZGjx590Xbu8rk2xNZUXOfGXVZW5rC/rq6O8vLyi37eDc8vlf/5/5tubw1F1/Hjx5k9e3ajYcbzJSQkUFdXZ10N15lyPd+VV15Jt27dHP7dutNnC7Bz504OHTrU5DDj+Vz9s73Q35qO+h0cHBxs9Yyeq6netEtR4SWXxTRN5s+fz+eff86TTz7ZqEu6Kfv37wcgLCwMgMTERIqKihz+sW/bto2AgACioqKA+l8Gubm5DufZtm0biYmJbZRJy505c8YquuLi4vD29naI8dChQxw/ftyKsbPmuW7dOkJCQi55abi7fK7h4eGEhoY6xFVZWUlBQYHDZ1lRUUFhYaHVJi8vD9M0rQI0MTGRnTt3Ultba7XZtm0bvXr1sualJCYmNpl/QkJCu+V3voai68iRIzzxxBN069btksfs378fwzCsIbnOkmtTvv76a8rLyx3+3brLZ9vgX//6F3FxccTExFyyrat+tpf6W9NRv4N9fHyIi4sjLy/P2m+328nLy2vx7y0VXnJZ5s+fz8cff8xDDz1EQEAANpsNm81GdXU1UN/7sWTJEgoLCzl27BgbN27klVde4eqrryY6Ohqon7gYFRXFvHnz2L9/P1u2bGHRokV8+9vftrq6b7vtNo4dO8Y777zDwYMH+fDDD9mwYQN33HFHh+W6cOFCduzYwbFjx9i9ezdz5szBy8uLESNGEBgYyK233srChQvJy8ujsLCQV199lcTEROuHsbPkeS673c769eu55ZZbHNa56eyf65kzZ9i/f79VLB47doz9+/dz/PhxDMNg3LhxvP/++2zcuJGioiLmzZtHWFgYqampAERFRZGSkkJWVhYFBQXs2rWLBQsWMHz4cGs4dsSIEfj4+PDHP/6RAwcOkJOTw+rVqx2GdsaNG8fWrVtZvnw5Bw8eJDs7m7179zJ27NgOybW2tpYXX3yRwsJCfv7zn2O3262f4YY/tPn5+axcuZL9+/dz9OhRPv74Y95++21uuukm6w+vq+R6qXzPnDnDn//8Z/Lz8zl27Bi5ubn8/ve/JyIigsGDBwPu89k2qKys5D//+U+TvV2d6bO91N+ajvwdPH78eNauXcv69espLi7mzTffpKqqqsXrDxqmaZpt8/aIJ7nQAn33338/I0eO5Pjx4/zv//4vBw4coKqqih49ejB06FAmT57sMJxRUlLCm2++yfbt2+nSpQu33HIL06ZNa7So3dtvv01xcbFTFhZ96aWX2LlzJ6dOnSI4OJikpCSmTJlizWdqWLzv008/pba2tsnF+zpDnufaunWrtT7NuQsVdvbPdfv27fz2t79ttP2WW27hgQcesBZQ/ec//0llZSVJSUn85Cc/cXgPysvLmT9/vsMim2lpaRdcZLNbt26MHTvWYWFKqF94ctGiRZSUlBAZGdnmC09eLNe7776bmTNnNnncb37zGwYMGEBhYSHz58/n4MGD1NTUEB4ezs0338z48eMd5gC5Qq6Xyjc9PZ05c+awb98+Kioq6N69O4MGDeJ73/uew8+pO3y2DzzwAAD//Oc/eeutt3j99dcbDSF3ps/2Un9roGN/B69Zs4YPPvgAm81GTEwM06dPb3EPnwovERERkQ6ioUYRERGRDqLCS0RERKSDqPASERER6SAqvEREREQ6iAovERERkQ6iwktERESkg6jwEhEREekgKrxEREREOogKLxEREZEOosJLREREpIOo8BIRERHpICq8RERERDrI/wdfiUFIxT8ozgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cust_plot = cust_groups[['total_views']].copy()\n", "cust_plot = cust_plot.reset_index()\n", "cust_plot.plot.kde(ind=[1000, 5000, 10000, 15000, 20000])\n", "#cust_plot.plot(y=\"total_views\", x=\"customer_name\", figsize=(18,8))\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "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", "
total_viewsarr
use_case
Customers621712360462
Customers,Employees1233161484
Customers,Gig9712864
Employees27020690496
Employees,Gig37800
Employees,Partner Training157915225
Gig102521027732
Partner Training204675000
Real Estate7585590938
\n", "
" ], "text/plain": [ " total_views arr\n", "use_case \n", "Customers 62171 2360462\n", "Customers,Employees 1233 161484\n", "Customers,Gig 97 12864\n", "Employees 27020 690496\n", "Employees,Gig 3 7800\n", "Employees,Partner Training 1579 15225\n", "Gig 10252 1027732\n", "Partner Training 2046 75000\n", "Real Estate 7585 590938" ] }, "execution_count": 861, "metadata": {}, "output_type": "execute_result" } ], "source": [ "usecase_groups = newpd.groupby('use_case').agg({'total_views':'sum','arr':'sum'})\n", "usecase_groups.head(12)" ] }, { "cell_type": "code", "execution_count": null, "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", "
total_viewsarr
csm
Support34553616466
Tracy McMahon25921961379
Nergis Tepeli180851571381
Courtney Donargo17237351893
Norm Rasmussen161901440882
\n", "
" ], "text/plain": [ " total_views arr\n", "csm \n", "Support 34553 616466\n", "Tracy McMahon 25921 961379\n", "Nergis Tepeli 18085 1571381\n", "Courtney Donargo 17237 351893\n", "Norm Rasmussen 16190 1440882" ] }, "execution_count": 862, "metadata": {}, "output_type": "execute_result" } ], "source": [ "csm_groups = newpd.groupby('csm').agg({'total_views':'sum','arr':'sum'})\n", "csm_groups.nlargest(25, 'total_views')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# This is a just a test. It's ugly formatting. \n", "\n", "# newpd[['total_views']].style.format('{:.3f}', na_rep=\"\") \\\n", "# .bar(align=2, vmin=0, vmax=2000, cmap='bwr', height=60,\n", "# width=100, props=\"width:1520px, border-right: 1px solid green;\") \\\n", "# .text_gradient(cmap=\"bwr\", vmin=0, vmax=2000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stored 'newpd' (DataFrame)\n" ] } ], "source": [ "newpd.to_csv('/Users/normrasmussen/Downloads/total_views_with_acctdata.csv')\n", "%store newpd" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/5l/fmyj8l8n74v0m3zfncrycj7m0000gn/T/ipykernel_24478/1696825021.py:5: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " plotpd['school_name']=plotpd['school_name'].astype('category').cat.codes\n", "/var/folders/5l/fmyj8l8n74v0m3zfncrycj7m0000gn/T/ipykernel_24478/1696825021.py:6: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " plotpd['customer_name']=plotpd['customer_name'].astype('category').cat.codes\n", "/var/folders/5l/fmyj8l8n74v0m3zfncrycj7m0000gn/T/ipykernel_24478/1696825021.py:7: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " plotpd['use_case']=plotpd['use_case'].astype('category').cat.codes\n", "/var/folders/5l/fmyj8l8n74v0m3zfncrycj7m0000gn/T/ipykernel_24478/1696825021.py:8: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " plotpd['icp_boolean']=plotpd['icp_boolean'].astype('category').cat.codes\n", "/var/folders/5l/fmyj8l8n74v0m3zfncrycj7m0000gn/T/ipykernel_24478/1696825021.py:9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " plotpd['product']=plotpd['product'].astype('category').cat.codes\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create new dataframe with only some columns. \n", "plotpd = newpd[['school_name', 'total_views', 'icp_boolean', 'customer_name', 'use_case', 'product', 'arr']]\n", "\n", "# First, we have to change strings to categorical data. So each column. \n", "plotpd['school_name']=plotpd['school_name'].astype('category').cat.codes\n", "plotpd['customer_name']=plotpd['customer_name'].astype('category').cat.codes\n", "plotpd['use_case']=plotpd['use_case'].astype('category').cat.codes\n", "plotpd['icp_boolean']=plotpd['icp_boolean'].astype('category').cat.codes\n", "plotpd['product']=plotpd['product'].astype('category').cat.codes\n", "corrs = plotpd.corr()\n", "\n", "fig = plt.figure(figsize=(10,10))\n", "plt.matshow(corrs, cmap='RdBu')\n", "plt.xticks(range(len(corrs.columns)), corrs.columns, rotation='vertical')\n", "plt.yticks(range(len(corrs.columns)), corrs.columns)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "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", "
school_nametotal_viewsicp_booleancustomer_nameuse_caseproductarr
00528100222000
1125311320228000
221907213326720
3357822316000
443323327474
552864140220000
6617161231900
77104190095000
88418190095000
9990660068000
\n", "
" ], "text/plain": [ " school_name total_views icp_boolean customer_name use_case product \n", "0 0 528 1 0 0 2 \\\n", "1 1 253 1 132 0 2 \n", "2 2 1907 2 13 3 2 \n", "3 3 578 2 2 3 1 \n", "4 4 33 2 3 3 2 \n", "5 5 2864 1 4 0 2 \n", "6 6 17 1 6 1 2 \n", "7 7 104 1 9 0 0 \n", "8 8 418 1 9 0 0 \n", "9 9 9 0 66 0 0 \n", "\n", " arr \n", "0 22000 \n", "1 28000 \n", "2 6720 \n", "3 6000 \n", "4 7474 \n", "5 20000 \n", "6 31900 \n", "7 95000 \n", "8 95000 \n", "9 68000 " ] }, "execution_count": 826, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plotpd.head(10)" ] }, { "cell_type": "code", "execution_count": null, "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", "
level_0indexschool_nametotal_page_viewscustomer_nameschool_idUnnamed: 0csmproductarr
customer_id
47167440405405Spark Driver Resources Hub1093Walmart Inc.7056326Norm Rasmussenenterprise820435
\n", "
" ], "text/plain": [ " level_0 index school_name total_page_views \n", "customer_id \n", "47167440 405 405 Spark Driver Resources Hub 1093 \\\n", "\n", " customer_name school_id Unnamed: 0 csm product \n", "customer_id \n", "47167440 Walmart Inc. 7056 326 Norm Rasmussen enterprise \\\n", "\n", " arr \n", "customer_id \n", "47167440 820435 " ] }, "execution_count": 710, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newpd.set_index('customer_id', inplace=True)\n", "newpd.loc[newpd.customer_name == 'Walmart Inc.']" ] }, { "cell_type": "code", "execution_count": null, "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", "
school_nametotal_page_viewscustomer_nameschool_idUnnamed: 0csmproductarr
customer_id
46757198AIIM+528AIIM70798Norm Rasmussenpremium22000
47167390Académie Évolupharma253Évolupharma, Inc.732694Tracy McMahonpremium28000
30867718ActiveLearner1907BrandActive International Inc.530136Supportpremium6720
37441607Akua Mind Body578Akua Mind & Body67189Supportessentials6000
30867707Altima Dental33Altima Dental Canada567014Supportpremium7474
...........................
30867710Missouri State Employees Retirement System1Missouri State Employees Retirement System5444184Supportpremium5220
30867711My Meeting Courses767International Care Ltd.5012144Supportpremium7200
30867711MyAuPairCourses103International Care Ltd.4638144Supportpremium7200
36347227NEMO Safety Training255New England Mechanical Overlay (NEMO)6577194Supportessentials5000
37790045Nest U434At World Properties, LLC694225Tracy McMahonenterprise87500
\n", "

100 rows × 8 columns

\n", "
" ], "text/plain": [ " school_name total_page_views \n", "customer_id \n", "46757198 AIIM+ 528 \\\n", "47167390 Académie Évolupharma 253 \n", "30867718 ActiveLearner 1907 \n", "37441607 Akua Mind Body 578 \n", "30867707 Altima Dental 33 \n", "... ... ... \n", "30867710 Missouri State Employees Retirement System 1 \n", "30867711 My Meeting Courses 767 \n", "30867711 MyAuPairCourses 103 \n", "36347227 NEMO Safety Training 255 \n", "37790045 Nest U 434 \n", "\n", " customer_name school_id \n", "customer_id \n", "46757198 AIIM 7079 \\\n", "47167390 Évolupharma, Inc. 7326 \n", "30867718 BrandActive International Inc. 5301 \n", "37441607 Akua Mind & Body 6718 \n", "30867707 Altima Dental Canada 5670 \n", "... ... ... \n", "30867710 Missouri State Employees Retirement System 5444 \n", "30867711 International Care Ltd. 5012 \n", "30867711 International Care Ltd. 4638 \n", "36347227 New England Mechanical Overlay (NEMO) 6577 \n", "37790045 At World Properties, LLC 6942 \n", "\n", " Unnamed: 0 csm product arr \n", "customer_id \n", "46757198 8 Norm Rasmussen premium 22000 \n", "47167390 94 Tracy McMahon premium 28000 \n", "30867718 36 Support premium 6720 \n", "37441607 9 Support essentials 6000 \n", "30867707 14 Support premium 7474 \n", "... ... ... ... ... \n", "30867710 184 Support premium 5220 \n", "30867711 144 Support premium 7200 \n", "30867711 144 Support premium 7200 \n", "36347227 194 Support essentials 5000 \n", "37790045 25 Tracy McMahon enterprise 87500 \n", "\n", "[100 rows x 8 columns]" ] }, "execution_count": 711, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newpd = newpd.drop(['level_0', 'index'], axis=1)\n", "newpd.head(100)" ] }, { "cell_type": "code", "execution_count": null, "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", "
school_nametotal_page_viewscustomer_nameschool_idUnnamed: 0csmproductarr
customer_id
47167440Spark Driver Resources Hub1093Walmart Inc.7056326Norm Rasmussenenterprise820435
30867645Bolt1177Bolt Operations OÜ538832Norm Rasmussenenterprise240480
47167369Lighthouse by LJ Hooker Group1378LJ Hooker Corporation Pty Ltd7066164Tracy McMahonenterprise206250
30867741Skin Laundry52Soham, Inc. (Zenoti)6510274Nergis Tepelienterprise120000
30867741ZENOTI42Soham, Inc. (Zenoti)5689274Nergis Tepelienterprise120000
30867741ZU EWC14Soham, Inc. (Zenoti)6167274Nergis Tepelienterprise120000
30867741ZU Sorbet8Soham, Inc. (Zenoti)7654274Nergis Tepelienterprise120000
47167502Anthology Internal104Blackboard Inc.787130Norm Rasmussenenterprise95000
47167502Anthology Trial418Blackboard Inc.787430Norm Rasmussenenterprise95000
30867653Shipt Passport1034Shipt4912259Nergis Tepelipremium88564
\n", "
" ], "text/plain": [ " school_name total_page_views \n", "customer_id \n", "47167440 Spark Driver Resources Hub 1093 \\\n", "30867645 Bolt 1177 \n", "47167369 Lighthouse by LJ Hooker Group 1378 \n", "30867741 Skin Laundry 52 \n", "30867741 ZENOTI 42 \n", "30867741 ZU EWC 14 \n", "30867741 ZU Sorbet 8 \n", "47167502 Anthology Internal 104 \n", "47167502 Anthology Trial 418 \n", "30867653 Shipt Passport 1034 \n", "\n", " customer_name school_id Unnamed: 0 \n", "customer_id \n", "47167440 Walmart Inc. 7056 326 \\\n", "30867645 Bolt Operations OÜ 5388 32 \n", "47167369 LJ Hooker Corporation Pty Ltd 7066 164 \n", "30867741 Soham, Inc. (Zenoti) 6510 274 \n", "30867741 Soham, Inc. (Zenoti) 5689 274 \n", "30867741 Soham, Inc. (Zenoti) 6167 274 \n", "30867741 Soham, Inc. (Zenoti) 7654 274 \n", "47167502 Blackboard Inc. 7871 30 \n", "47167502 Blackboard Inc. 7874 30 \n", "30867653 Shipt 4912 259 \n", "\n", " csm product arr \n", "customer_id \n", "47167440 Norm Rasmussen enterprise 820435 \n", "30867645 Norm Rasmussen enterprise 240480 \n", "47167369 Tracy McMahon enterprise 206250 \n", "30867741 Nergis Tepeli enterprise 120000 \n", "30867741 Nergis Tepeli enterprise 120000 \n", "30867741 Nergis Tepeli enterprise 120000 \n", "30867741 Nergis Tepeli enterprise 120000 \n", "47167502 Norm Rasmussen enterprise 95000 \n", "47167502 Norm Rasmussen enterprise 95000 \n", "30867653 Nergis Tepeli premium 88564 " ] }, "execution_count": 712, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newpd.nlargest(10, 'arr')" ] }, { "cell_type": "code", "execution_count": null, "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", "
school_nametotal_page_viewscustomer_nameschool_idUnnamed: 0csmproductarrscaled_views
customer_id
47167356CHEK Institute11138CHEK Institute711251Tracy McMahonpremium200001.000000
34511981Compass4853Anchor QEA, LLC650820Supportpremium100000.435665
47167413MASSÉNA Formations4009MOLITOR Formations7369186Supportpremium90000.359881
47167511Whitetail Properties Education Platform3604Whitetail Properties Real Estate7952330Tracy McMahonpremium180000.323516
30867585UX Design Institute3583UX Design Institute5283317Nergis Tepelienterprise378600.321631
30867585UX Design Institute3583UX Design Institute7744317Nergis Tepelienterprise378600.321631
47167487Luma U3459Luma Health, Inc.7847168Tracy McMahonpremium200000.310497
30867654Training Center3205SPS Commerce3209281Norm Rasmussenpremium510000.287690
47167457American Concrete Pipe Association Learning Ce...2864American Concrete Pipe Association758215Nergis Tepelipremium200000.257071
30867576Viva Wallet2365Viva Online Services SA5549322Courtney Donargopremium58370.212265
\n", "
" ], "text/plain": [ " school_name \n", "customer_id \n", "47167356 CHEK Institute \\\n", "34511981 Compass \n", "47167413 MASSÉNA Formations \n", "47167511 Whitetail Properties Education Platform \n", "30867585 UX Design Institute \n", "30867585 UX Design Institute \n", "47167487 Luma U \n", "30867654 Training Center \n", "47167457 American Concrete Pipe Association Learning Ce... \n", "30867576 Viva Wallet \n", "\n", " total_page_views customer_name school_id \n", "customer_id \n", "47167356 11138 CHEK Institute 7112 \\\n", "34511981 4853 Anchor QEA, LLC 6508 \n", "47167413 4009 MOLITOR Formations 7369 \n", "47167511 3604 Whitetail Properties Real Estate 7952 \n", "30867585 3583 UX Design Institute 5283 \n", "30867585 3583 UX Design Institute 7744 \n", "47167487 3459 Luma Health, Inc. 7847 \n", "30867654 3205 SPS Commerce 3209 \n", "47167457 2864 American Concrete Pipe Association 7582 \n", "30867576 2365 Viva Online Services SA 5549 \n", "\n", " Unnamed: 0 csm product arr scaled_views \n", "customer_id \n", "47167356 51 Tracy McMahon premium 20000 1.000000 \n", "34511981 20 Support premium 10000 0.435665 \n", "47167413 186 Support premium 9000 0.359881 \n", "47167511 330 Tracy McMahon premium 18000 0.323516 \n", "30867585 317 Nergis Tepeli enterprise 37860 0.321631 \n", "30867585 317 Nergis Tepeli enterprise 37860 0.321631 \n", "47167487 168 Tracy McMahon premium 20000 0.310497 \n", "30867654 281 Norm Rasmussen premium 51000 0.287690 \n", "47167457 15 Nergis Tepeli premium 20000 0.257071 \n", "30867576 322 Courtney Donargo premium 5837 0.212265 " ] }, "execution_count": 719, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.preprocessing import MinMaxScaler\n", "scaler = MinMaxScaler()\n", "newpd[[\"scaled_views\"]] = scaler.fit_transform(newpd[[\"total_page_views\"]])\n", "\n", "newpd.nlargest(10, 'scaled_views')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "jupyter", "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.11.1" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }