3595 lines
236 KiB
Plaintext
3595 lines
236 KiB
Plaintext
{
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Customers Customer ID</th>\n",
|
||
" <th>Mal Actuals School ID</th>\n",
|
||
" <th>Mal Actuals School Name</th>\n",
|
||
" <th>Chris Bookings ICP</th>\n",
|
||
" <th>Customers Organization</th>\n",
|
||
" <th>Customers Use Case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>30799651</td>\n",
|
||
" <td>5365.0</td>\n",
|
||
" <td>CORE College</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>The CORE Group</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>30801577</td>\n",
|
||
" <td>5454.0</td>\n",
|
||
" <td>Serge</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Serge</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>30857025</td>\n",
|
||
" <td>4581.0</td>\n",
|
||
" <td>Team Trudeau Training</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>The Federal Liberal Agency of Canada</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>30857025</td>\n",
|
||
" <td>5265.0</td>\n",
|
||
" <td>Formation de l'Équipe Trudeau</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>The Federal Liberal Agency of Canada</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>30861952</td>\n",
|
||
" <td>6097.0</td>\n",
|
||
" <td>ElderSource Internal</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Eldersource</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>30799651</td>\n",
|
||
" <td>5365.0</td>\n",
|
||
" <td>CORE College</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>The CORE Group</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>30801577</td>\n",
|
||
" <td>5454.0</td>\n",
|
||
" <td>Serge</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Serge</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>30857025</td>\n",
|
||
" <td>4581.0</td>\n",
|
||
" <td>Team Trudeau Training</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>The Federal Liberal Agency of Canada</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>30857025</td>\n",
|
||
" <td>5265.0</td>\n",
|
||
" <td>Formation de l'Équipe Trudeau</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>The Federal Liberal Agency of Canada</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>30861952</td>\n",
|
||
" <td>6097.0</td>\n",
|
||
" <td>ElderSource Internal</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Eldersource</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>30861952</td>\n",
|
||
" <td>6099.0</td>\n",
|
||
" <td>ElderSource Ecommerce</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Eldersource</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>30861952</td>\n",
|
||
" <td>6101.0</td>\n",
|
||
" <td>ElderSource Partner</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Eldersource</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>30867042</td>\n",
|
||
" <td>4706.0</td>\n",
|
||
" <td>Givergy Academy</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Givergy</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>30867043</td>\n",
|
||
" <td>3332.0</td>\n",
|
||
" <td>Access University</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Access E-Forms</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>30867046</td>\n",
|
||
" <td>5667.0</td>\n",
|
||
" <td>School of Rokt</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Rokt Pte Ltd</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>555</th>\n",
|
||
" <td>47167414</td>\n",
|
||
" <td>7684.0</td>\n",
|
||
" <td>Walmart Suppliers Onboarding</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Volt Systems</td>\n",
|
||
" <td>Gig</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>585</th>\n",
|
||
" <td>47167440</td>\n",
|
||
" <td>7056.0</td>\n",
|
||
" <td>Spark Driver Resources Hub (MIGRATED TO AZURE)</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>Customers,Gig</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>586</th>\n",
|
||
" <td>47167440</td>\n",
|
||
" <td>7540.0</td>\n",
|
||
" <td>Walmart Sandbox (MIGRATED TO AZURE)</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>Customers,Gig</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>585</th>\n",
|
||
" <td>47167440</td>\n",
|
||
" <td>7056.0</td>\n",
|
||
" <td>Spark Driver Resources Hub (MIGRATED TO AZURE)</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>Customers,Gig</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>586</th>\n",
|
||
" <td>47167440</td>\n",
|
||
" <td>7540.0</td>\n",
|
||
" <td>Walmart Sandbox (MIGRATED TO AZURE)</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>Customers,Gig</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>555</th>\n",
|
||
" <td>47167414</td>\n",
|
||
" <td>7684.0</td>\n",
|
||
" <td>Walmart Suppliers Onboarding</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Volt Systems</td>\n",
|
||
" <td>Gig</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>585</th>\n",
|
||
" <td>47167440</td>\n",
|
||
" <td>7056.0</td>\n",
|
||
" <td>Spark Driver Resources Hub</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>Customers,Gig</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>586</th>\n",
|
||
" <td>47167440</td>\n",
|
||
" <td>7540.0</td>\n",
|
||
" <td>Walmart Sandbox</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>Customers,Gig</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>School Name</th>\n",
|
||
" <th>Twotal</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>'@properties</td>\n",
|
||
" <td>322</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>4 Pillars</td>\n",
|
||
" <td>112</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>AIIM+</td>\n",
|
||
" <td>528</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>ASAPP</td>\n",
|
||
" <td>153</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Académie Évolupharma</td>\n",
|
||
" <td>253</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>Access</td>\n",
|
||
" <td>11</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>ActiveLearner</td>\n",
|
||
" <td>1907</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>Ad Intel</td>\n",
|
||
" <td>767</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>AdCellerant</td>\n",
|
||
" <td>5270</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>Adkins</td>\n",
|
||
" <td>107</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_views</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>'@properties</td>\n",
|
||
" <td>322</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>4 Pillars</td>\n",
|
||
" <td>112</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>AIIM+</td>\n",
|
||
" <td>528</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>ASAPP</td>\n",
|
||
" <td>153</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Académie Évolupharma</td>\n",
|
||
" <td>253</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>Access</td>\n",
|
||
" <td>11</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>ActiveLearner</td>\n",
|
||
" <td>1907</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>Ad Intel</td>\n",
|
||
" <td>767</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>AdCellerant</td>\n",
|
||
" <td>5270</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>Adkins</td>\n",
|
||
" <td>107</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>AIIM+</td>\n",
|
||
" <td>528</td>\n",
|
||
" <td>46757198</td>\n",
|
||
" <td>7079.0</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>AIIM</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Académie Évolupharma</td>\n",
|
||
" <td>253</td>\n",
|
||
" <td>47167390</td>\n",
|
||
" <td>7326.0</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Évolupharma, Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>ActiveLearner</td>\n",
|
||
" <td>1907</td>\n",
|
||
" <td>30867718</td>\n",
|
||
" <td>5301.0</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>BrandActive International Inc.</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Akua Mind Body</td>\n",
|
||
" <td>578</td>\n",
|
||
" <td>37441607</td>\n",
|
||
" <td>6718.0</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Akua Mind & Body</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Altima Dental</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>30867707</td>\n",
|
||
" <td>5670.0</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Altima Dental Canada</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>American Concrete Pipe Association Learning Ce...</td>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>47167457</td>\n",
|
||
" <td>7582.0</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>American Concrete Pipe Association</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>Andhealth Internal Training</td>\n",
|
||
" <td>17</td>\n",
|
||
" <td>47167421</td>\n",
|
||
" <td>7912.0</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>AndHealth</td>\n",
|
||
" <td>Customers,Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>Anthology Internal</td>\n",
|
||
" <td>104</td>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>7871.0</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>Anthology Trial</td>\n",
|
||
" <td>418</td>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>7874.0</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>Ascend Training by Stenograph</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>30988476</td>\n",
|
||
" <td>7692.0</td>\n",
|
||
" <td>CE ICP</td>\n",
|
||
" <td>MarketScale</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>AIIM+</td>\n",
|
||
" <td>528</td>\n",
|
||
" <td>46757198</td>\n",
|
||
" <td>7079</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>AIIM</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Académie Évolupharma</td>\n",
|
||
" <td>253</td>\n",
|
||
" <td>47167390</td>\n",
|
||
" <td>7326</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Évolupharma, Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>ActiveLearner</td>\n",
|
||
" <td>1907</td>\n",
|
||
" <td>30867718</td>\n",
|
||
" <td>5301</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>BrandActive International Inc.</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Akua Mind Body</td>\n",
|
||
" <td>578</td>\n",
|
||
" <td>37441607</td>\n",
|
||
" <td>6718</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Akua Mind & Body</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Altima Dental</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>30867707</td>\n",
|
||
" <td>5670</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Altima Dental Canada</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>American Concrete Pipe Association Learning Ce...</td>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>47167457</td>\n",
|
||
" <td>7582</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>American Concrete Pipe Association</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>Andhealth Internal Training</td>\n",
|
||
" <td>17</td>\n",
|
||
" <td>47167421</td>\n",
|
||
" <td>7912</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>AndHealth</td>\n",
|
||
" <td>Customers,Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>Anthology Internal</td>\n",
|
||
" <td>104</td>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>7871</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>level_0</th>\n",
|
||
" <th>index</th>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>csm</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>30867043</td>\n",
|
||
" <td>Courtney Donargo</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>1872</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>47167499</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>20000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>47167366</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>essentials</td>\n",
|
||
" <td>1500</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>3</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>47167483</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>14438</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>30867493</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>2160</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>5</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>47167458</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>26000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>6</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>41684806</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>23000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>7</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>46757198</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>22000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>8</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>37441607</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>essentials</td>\n",
|
||
" <td>6000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>9</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>10</td>\n",
|
||
" <td>30867644</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>3000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" <th>csm</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>AIIM+</td>\n",
|
||
" <td>528</td>\n",
|
||
" <td>46757198</td>\n",
|
||
" <td>7079</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>AIIM</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>22000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Académie Évolupharma</td>\n",
|
||
" <td>253</td>\n",
|
||
" <td>47167390</td>\n",
|
||
" <td>7326</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Évolupharma, Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>28000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>ActiveLearner</td>\n",
|
||
" <td>1907</td>\n",
|
||
" <td>30867718</td>\n",
|
||
" <td>5301</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>BrandActive International Inc.</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>6720</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Akua Mind Body</td>\n",
|
||
" <td>578</td>\n",
|
||
" <td>37441607</td>\n",
|
||
" <td>6718</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Akua Mind & Body</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>essentials</td>\n",
|
||
" <td>6000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Altima Dental</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>30867707</td>\n",
|
||
" <td>5670</td>\n",
|
||
" <td>Non-CE</td>\n",
|
||
" <td>Altima Dental Canada</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>7474</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>American Concrete Pipe Association Learning Ce...</td>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>47167457</td>\n",
|
||
" <td>7582</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>American Concrete Pipe Association</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>20000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>Andhealth Internal Training</td>\n",
|
||
" <td>17</td>\n",
|
||
" <td>47167421</td>\n",
|
||
" <td>7912</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>AndHealth</td>\n",
|
||
" <td>Customers,Employees</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>31900</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>Anthology Internal</td>\n",
|
||
" <td>104</td>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>7871</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>95000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>Anthology Trial</td>\n",
|
||
" <td>418</td>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>7874</td>\n",
|
||
" <td>CE Non-ICP</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>95000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>Ascend Training by Stenograph</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>30988476</td>\n",
|
||
" <td>7692</td>\n",
|
||
" <td>CE ICP</td>\n",
|
||
" <td>MarketScale</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>68000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>46757198</td>\n",
|
||
" <td>528</td>\n",
|
||
" <td>22000</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>47167390</td>\n",
|
||
" <td>253</td>\n",
|
||
" <td>28000</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>30867718</td>\n",
|
||
" <td>1907</td>\n",
|
||
" <td>6720</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>37441607</td>\n",
|
||
" <td>578</td>\n",
|
||
" <td>6000</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>30867707</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>7474</td>\n",
|
||
" <td>Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>47167457</td>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>47167421</td>\n",
|
||
" <td>17</td>\n",
|
||
" <td>31900</td>\n",
|
||
" <td>Customers,Employees</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>104</td>\n",
|
||
" <td>95000</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>47167502</td>\n",
|
||
" <td>418</td>\n",
|
||
" <td>95000</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>30988476</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>68000</td>\n",
|
||
" <td>Customers</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>CE ICP</th>\n",
|
||
" <td>11139</td>\n",
|
||
" <td>1276680</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>CE Non-ICP</th>\n",
|
||
" <td>52362</td>\n",
|
||
" <td>1258130</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Non-CE</th>\n",
|
||
" <td>48485</td>\n",
|
||
" <td>2407191</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" <th>scaled_views_percent</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>CHEK Institute</th>\n",
|
||
" <td>11138</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>100</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>UX Design Institute</th>\n",
|
||
" <td>7167</td>\n",
|
||
" <td>37860</td>\n",
|
||
" <td>64</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Anchor QEA, LLC</th>\n",
|
||
" <td>4853</td>\n",
|
||
" <td>10000</td>\n",
|
||
" <td>43</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>MOLITOR Formations</th>\n",
|
||
" <td>4009</td>\n",
|
||
" <td>9000</td>\n",
|
||
" <td>35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Whitetail Properties Real Estate</th>\n",
|
||
" <td>3604</td>\n",
|
||
" <td>18000</td>\n",
|
||
" <td>32</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" <th>scaled_views_percent</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>Bolt Operations OÜ</th>\n",
|
||
" <td>1177</td>\n",
|
||
" <td>240480</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>LJ Hooker Corporation Pty Ltd</th>\n",
|
||
" <td>1378</td>\n",
|
||
" <td>206250</td>\n",
|
||
" <td>12</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Soham, Inc. (Zenoti)</th>\n",
|
||
" <td>116</td>\n",
|
||
" <td>120000</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Blackboard Inc.</th>\n",
|
||
" <td>522</td>\n",
|
||
" <td>95000</td>\n",
|
||
" <td>4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Shipt</th>\n",
|
||
" <td>1034</td>\n",
|
||
" <td>88564</td>\n",
|
||
" <td>9</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" <th>scaled_views_percent</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>Whitetail Properties Real Estate</th>\n",
|
||
" <td>3604</td>\n",
|
||
" <td>18000</td>\n",
|
||
" <td>32</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Luma Health, Inc.</th>\n",
|
||
" <td>3459</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>31</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>SPS Commerce</th>\n",
|
||
" <td>3205</td>\n",
|
||
" <td>51000</td>\n",
|
||
" <td>28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>American Concrete Pipe Association</th>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Hardskills Pte. Ltd</th>\n",
|
||
" <td>2780</td>\n",
|
||
" <td>12498</td>\n",
|
||
" <td>24</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<IPython.core.display.HTML object>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<div style=\"display:flex;flex-direction:row;justify-content:space-between;\">\n",
|
||
" <pre style=\"width: 100%; white-space: pre-wrap;\" id=\"ece29266-f5be-4128-9f90-0818706ac4c3\">\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",
|
||
"</pre>\n",
|
||
" <button style=\"height: fit-content;\" onclick=\"navigator.clipboard.writeText(JSON.parse(atob(`IlxuaW1wb3J0IHBhbmRhcyBhcyBwZFxuaW1wb3J0IG51bXB5IGFzIG5wXG5mcm9tIHNrbGVhcm4ubGluZWFyX21vZGVsIGltcG9ydCBMaW5lYXJSZWdyZXNzaW9uXG5cbiMgQ3JlYXRlIHRoZSBYIGFuZCB5IGRhdGEgc2V0c1xuWCA9IGN1c3RfZ3JvdXBzW1snYXJyJ11dXG55ID0gY3VzdF9ncm91cHNbJ3RvdGFsX3ZpZXdzJ11cblxuIyBGaXQgdGhlIGxpbmVhciByZWdyZXNzaW9uIG1vZGVsXG5tb2RlbCA9IExpbmVhclJlZ3Jlc3Npb24oKS5maXQoWCwgeSlcblxuIyBQcmludCB0aGUgY29lZmZpY2llbnRzXG5wcmludCgnQ29lZmZpY2llbnQ6ICcsIG1vZGVsLmNvZWZfKVxucHJpbnQoJ0ludGVyY2VwdDogJywgbW9kZWwuaW50ZXJjZXB0XylcbiI=`)))\">Copy</button>\n",
|
||
" </div>"
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.HTML object>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>use_case</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>Customers</th>\n",
|
||
" <td>62171</td>\n",
|
||
" <td>2360462</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Customers,Employees</th>\n",
|
||
" <td>1233</td>\n",
|
||
" <td>161484</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Customers,Gig</th>\n",
|
||
" <td>97</td>\n",
|
||
" <td>12864</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Employees</th>\n",
|
||
" <td>27020</td>\n",
|
||
" <td>690496</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Employees,Gig</th>\n",
|
||
" <td>3</td>\n",
|
||
" <td>7800</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Employees,Partner Training</th>\n",
|
||
" <td>1579</td>\n",
|
||
" <td>15225</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Gig</th>\n",
|
||
" <td>10252</td>\n",
|
||
" <td>1027732</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Partner Training</th>\n",
|
||
" <td>2046</td>\n",
|
||
" <td>75000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Real Estate</th>\n",
|
||
" <td>7585</td>\n",
|
||
" <td>590938</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>csm</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>Support</th>\n",
|
||
" <td>34553</td>\n",
|
||
" <td>616466</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Tracy McMahon</th>\n",
|
||
" <td>25921</td>\n",
|
||
" <td>961379</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Nergis Tepeli</th>\n",
|
||
" <td>18085</td>\n",
|
||
" <td>1571381</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Courtney Donargo</th>\n",
|
||
" <td>17237</td>\n",
|
||
" <td>351893</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Norm Rasmussen</th>\n",
|
||
" <td>16190</td>\n",
|
||
" <td>1440882</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<Figure size 1000x1000 with 0 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 480x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_views</th>\n",
|
||
" <th>icp_boolean</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>use_case</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>528</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>22000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>253</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>132</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>28000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1907</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>13</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>6720</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>3</td>\n",
|
||
" <td>578</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>6000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>7474</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>20000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>6</td>\n",
|
||
" <td>17</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>31900</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>7</td>\n",
|
||
" <td>104</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>95000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>8</td>\n",
|
||
" <td>418</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>95000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>9</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>68000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>level_0</th>\n",
|
||
" <th>index</th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_page_views</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" <th>csm</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>47167440</th>\n",
|
||
" <td>405</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>Spark Driver Resources Hub</td>\n",
|
||
" <td>1093</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>7056</td>\n",
|
||
" <td>326</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>820435</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_page_views</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" <th>csm</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>46757198</th>\n",
|
||
" <td>AIIM+</td>\n",
|
||
" <td>528</td>\n",
|
||
" <td>AIIM</td>\n",
|
||
" <td>7079</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>22000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167390</th>\n",
|
||
" <td>Académie Évolupharma</td>\n",
|
||
" <td>253</td>\n",
|
||
" <td>Évolupharma, Inc.</td>\n",
|
||
" <td>7326</td>\n",
|
||
" <td>94</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>28000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867718</th>\n",
|
||
" <td>ActiveLearner</td>\n",
|
||
" <td>1907</td>\n",
|
||
" <td>BrandActive International Inc.</td>\n",
|
||
" <td>5301</td>\n",
|
||
" <td>36</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>6720</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>37441607</th>\n",
|
||
" <td>Akua Mind Body</td>\n",
|
||
" <td>578</td>\n",
|
||
" <td>Akua Mind & Body</td>\n",
|
||
" <td>6718</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>essentials</td>\n",
|
||
" <td>6000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867707</th>\n",
|
||
" <td>Altima Dental</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>Altima Dental Canada</td>\n",
|
||
" <td>5670</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>7474</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867710</th>\n",
|
||
" <td>Missouri State Employees Retirement System</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Missouri State Employees Retirement System</td>\n",
|
||
" <td>5444</td>\n",
|
||
" <td>184</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>5220</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867711</th>\n",
|
||
" <td>My Meeting Courses</td>\n",
|
||
" <td>767</td>\n",
|
||
" <td>International Care Ltd.</td>\n",
|
||
" <td>5012</td>\n",
|
||
" <td>144</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>7200</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867711</th>\n",
|
||
" <td>MyAuPairCourses</td>\n",
|
||
" <td>103</td>\n",
|
||
" <td>International Care Ltd.</td>\n",
|
||
" <td>4638</td>\n",
|
||
" <td>144</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>7200</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>36347227</th>\n",
|
||
" <td>NEMO Safety Training</td>\n",
|
||
" <td>255</td>\n",
|
||
" <td>New England Mechanical Overlay (NEMO)</td>\n",
|
||
" <td>6577</td>\n",
|
||
" <td>194</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>essentials</td>\n",
|
||
" <td>5000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>37790045</th>\n",
|
||
" <td>Nest U</td>\n",
|
||
" <td>434</td>\n",
|
||
" <td>At World Properties, LLC</td>\n",
|
||
" <td>6942</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>87500</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>100 rows × 8 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_page_views</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" <th>csm</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>47167440</th>\n",
|
||
" <td>Spark Driver Resources Hub</td>\n",
|
||
" <td>1093</td>\n",
|
||
" <td>Walmart Inc.</td>\n",
|
||
" <td>7056</td>\n",
|
||
" <td>326</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>820435</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867645</th>\n",
|
||
" <td>Bolt</td>\n",
|
||
" <td>1177</td>\n",
|
||
" <td>Bolt Operations OÜ</td>\n",
|
||
" <td>5388</td>\n",
|
||
" <td>32</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>240480</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167369</th>\n",
|
||
" <td>Lighthouse by LJ Hooker Group</td>\n",
|
||
" <td>1378</td>\n",
|
||
" <td>LJ Hooker Corporation Pty Ltd</td>\n",
|
||
" <td>7066</td>\n",
|
||
" <td>164</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>206250</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867741</th>\n",
|
||
" <td>Skin Laundry</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>Soham, Inc. (Zenoti)</td>\n",
|
||
" <td>6510</td>\n",
|
||
" <td>274</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>120000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867741</th>\n",
|
||
" <td>ZENOTI</td>\n",
|
||
" <td>42</td>\n",
|
||
" <td>Soham, Inc. (Zenoti)</td>\n",
|
||
" <td>5689</td>\n",
|
||
" <td>274</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>120000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867741</th>\n",
|
||
" <td>ZU EWC</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>Soham, Inc. (Zenoti)</td>\n",
|
||
" <td>6167</td>\n",
|
||
" <td>274</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>120000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867741</th>\n",
|
||
" <td>ZU Sorbet</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>Soham, Inc. (Zenoti)</td>\n",
|
||
" <td>7654</td>\n",
|
||
" <td>274</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>120000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167502</th>\n",
|
||
" <td>Anthology Internal</td>\n",
|
||
" <td>104</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>7871</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>95000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167502</th>\n",
|
||
" <td>Anthology Trial</td>\n",
|
||
" <td>418</td>\n",
|
||
" <td>Blackboard Inc.</td>\n",
|
||
" <td>7874</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>95000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867653</th>\n",
|
||
" <td>Shipt Passport</td>\n",
|
||
" <td>1034</td>\n",
|
||
" <td>Shipt</td>\n",
|
||
" <td>4912</td>\n",
|
||
" <td>259</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>88564</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>school_name</th>\n",
|
||
" <th>total_page_views</th>\n",
|
||
" <th>customer_name</th>\n",
|
||
" <th>school_id</th>\n",
|
||
" <th>Unnamed: 0</th>\n",
|
||
" <th>csm</th>\n",
|
||
" <th>product</th>\n",
|
||
" <th>arr</th>\n",
|
||
" <th>scaled_views</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>customer_id</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>47167356</th>\n",
|
||
" <td>CHEK Institute</td>\n",
|
||
" <td>11138</td>\n",
|
||
" <td>CHEK Institute</td>\n",
|
||
" <td>7112</td>\n",
|
||
" <td>51</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>34511981</th>\n",
|
||
" <td>Compass</td>\n",
|
||
" <td>4853</td>\n",
|
||
" <td>Anchor QEA, LLC</td>\n",
|
||
" <td>6508</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>10000</td>\n",
|
||
" <td>0.435665</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167413</th>\n",
|
||
" <td>MASSÉNA Formations</td>\n",
|
||
" <td>4009</td>\n",
|
||
" <td>MOLITOR Formations</td>\n",
|
||
" <td>7369</td>\n",
|
||
" <td>186</td>\n",
|
||
" <td>Support</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>9000</td>\n",
|
||
" <td>0.359881</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167511</th>\n",
|
||
" <td>Whitetail Properties Education Platform</td>\n",
|
||
" <td>3604</td>\n",
|
||
" <td>Whitetail Properties Real Estate</td>\n",
|
||
" <td>7952</td>\n",
|
||
" <td>330</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>18000</td>\n",
|
||
" <td>0.323516</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867585</th>\n",
|
||
" <td>UX Design Institute</td>\n",
|
||
" <td>3583</td>\n",
|
||
" <td>UX Design Institute</td>\n",
|
||
" <td>5283</td>\n",
|
||
" <td>317</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>37860</td>\n",
|
||
" <td>0.321631</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867585</th>\n",
|
||
" <td>UX Design Institute</td>\n",
|
||
" <td>3583</td>\n",
|
||
" <td>UX Design Institute</td>\n",
|
||
" <td>7744</td>\n",
|
||
" <td>317</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>enterprise</td>\n",
|
||
" <td>37860</td>\n",
|
||
" <td>0.321631</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167487</th>\n",
|
||
" <td>Luma U</td>\n",
|
||
" <td>3459</td>\n",
|
||
" <td>Luma Health, Inc.</td>\n",
|
||
" <td>7847</td>\n",
|
||
" <td>168</td>\n",
|
||
" <td>Tracy McMahon</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>0.310497</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867654</th>\n",
|
||
" <td>Training Center</td>\n",
|
||
" <td>3205</td>\n",
|
||
" <td>SPS Commerce</td>\n",
|
||
" <td>3209</td>\n",
|
||
" <td>281</td>\n",
|
||
" <td>Norm Rasmussen</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>51000</td>\n",
|
||
" <td>0.287690</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>47167457</th>\n",
|
||
" <td>American Concrete Pipe Association Learning Ce...</td>\n",
|
||
" <td>2864</td>\n",
|
||
" <td>American Concrete Pipe Association</td>\n",
|
||
" <td>7582</td>\n",
|
||
" <td>15</td>\n",
|
||
" <td>Nergis Tepeli</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>20000</td>\n",
|
||
" <td>0.257071</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>30867576</th>\n",
|
||
" <td>Viva Wallet</td>\n",
|
||
" <td>2365</td>\n",
|
||
" <td>Viva Online Services SA</td>\n",
|
||
" <td>5549</td>\n",
|
||
" <td>322</td>\n",
|
||
" <td>Courtney Donargo</td>\n",
|
||
" <td>premium</td>\n",
|
||
" <td>5837</td>\n",
|
||
" <td>0.212265</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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
|
||
}
|