sKPIng
I'd like to refresh the comercial aspect of the data world for an interview. For this I gathered a list of Key Performance Indicators to use in practice problems, scrapping from a few websites using HTTP requests, Selenium, regular expressions and XPath.
In [9]:
kpis = {}
for category in categories:
name = category.split('/')[-1]
print(name)
chrome.get(category)
try:
extra = chrome.find_element_by_xpath('//div[@id="featured-snippet"]/ul').text.split('\n')
except:
extra = []
kpis[name] = list(set([e.text for e in chrome.find_elements_by_xpath('//h3[@class="strong h4"]')] + extra))
sleep(3)
marketing sales saas-metrics digital-marketing social-media seo email-marketing financial devops supply-chain call-center healthcare support retail help-desk insurance ecommerce human-resources
In [1]:
import os
import json
import requests as rq
from time import sleep
from collections import defaultdict
#!pip install fuzzywuzzy
from fuzzywuzzy import fuzz
#https://github.com/Cerebrock/utils/blob/master/init_chrome.py
from init_chrome import init_chrome
In [2]:
def get_regex(url, pattern):
"""Recieves url and regex search pattern."""
resp = rq.get(url,
headers={'User-Agent':
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
).text
return re.findall(pattern, resp)
In [3]:
url = 'https://www.accutraccapital.com/us/en/resources/blog/key-performance-indicators'
pattern = '(\d{,2}\.\s[\w\-\s\(\)]+?):'
get_regex(url, pattern)
Out[3]:
['1. Profit', '2. Revenue vs Target', '3. Cost-per-Mile', '4. Day Sales Outstanding (DSO)', '5. Freight Claim', '6. Equipment Utilization', '7. Customer Lifetime Value (CLV)', '8. Customer Acquisition Cost (CAC)', '9. Driver Turnover Rate (DTR)', '10. Employee Satisfaction']
In [4]:
url = 'https://www.compudata.com/top-20-financial-kpis-every-cfo-dashboard-should-have'
pattern = '(\d+\.[\w\s]+?)KPI'
get_regex(url, pattern)
Out[4]:
['1.Working Capital ', '2.Operating Cash Flow ', '3. Current Ratio ', '4. Payroll Headcount Ratio ', '5. Return on Equity ', '7. Debt to Equity Ratio ', '8. Accounts Payable Turnover ', '9. Accounts Receivable Turnover ', '10. Inventory Turnover ', '11. Net Profit Margin ', '12. Gross Profit Margin ', '13. Finance Error Report ', '14. Payment Error Rate ', '15. Budget Variance ', '16. Line Items in Budget ', '17. Budget Creation Cycle Time ', '18. Expense Management ', '19. Internal Audit Cycle Time ', '20. Customer Satisfaction ']
Selenium¶
In [5]:
url = 'https://www.klipfolio.com/resources/kpi-examples/'
In [6]:
chrome = init_chrome(chrome_path='/home/matias/Matias/Programas Varios/Notebooks/chromedriver',
headless=True)
chrome.get(url)
In [8]:
categories = [e.get_attribute('href') for e in chrome.find_elements_by_xpath('//div[@class="card-column kpi-examples-categories__klip-cards col-md-4 col-xs-12"]//a[@href]')]
In [9]:
# removing duplicates from dictionary with fuzzy string matching
seen = []
kpis2 = defaultdict(list)
for k in d:
for v in d[k]:
pres = False
for s in seen:
if fuzz.token_sort_ratio(s.lower(), v.lower()) > 85:
#print(f"{v}, {s}")
pres = True
break
if not pres:
kpis2[k].append(v)
seen.append(v)
In [10]:
import pprint
pprint.pprint(kpis2)
defaultdict(<class 'list'>, {'call-center': ['Cost per Call', 'Peak Hour Traffic (PHT)', 'Sales per Agent', 'Customer Satisfaction', 'Call Volume', 'Data Network Availability', 'Call Arrival Rate', 'Average Sales per Agent', 'Average Handle Time', 'Agent Utilization', 'Longest Delay in Queue', 'Cost per Contact', 'Block Error Rate', 'Longest Call Hold', 'Longest Call Length', 'Repeat Calls', 'On-Hold Time', 'After Call Work Time', 'Telecom Subscriber Acquisition Cost', 'Call Completion Rate', 'Call Center Status Metrics', 'Customer Calls Answered in the First Minute', 'Interactions Routed Properly', 'Call Resolution', 'Blockage', 'Call Setup Success Rate (CSSR)', 'Time Lost Due to Technology Issues', 'Agent Schedule Adherence', 'Forecasted Contact Load to Actual Contact Load', 'Callback Messaging', 'Talk Time', 'Dial per Hour', 'Call Abandonment', 'Active and Waiting Calls', 'Service Level'], 'devops': ['Feature vs. Bug Investment Metric', 'Project Burndown metric', 'Release Tracker Metric', 'Pingdom Last Error Metric', 'Pingdom Checks Metrics'], 'digital-marketing': ['Returning visitors', 'Click thru rate', 'Website traffic leads', 'Online conversion rates'], 'ecommerce': ['Items per Order', 'Unique Online Buyers', 'Cost per Order', 'Visits to Purchase', 'Shopping Cart Sessions', 'New Customer on First Visit', 'Shopping Session Length', 'Shopping Cart Conversion Rate', 'Product Views per Session', 'Revenue from Repeat Online Customers', 'Shopping Carts Abandoned', 'Revenue from New Visitors', 'On-Time Delivery', 'New Customers', 'Revenue per Visitor', 'Shipping Error Rate', 'Order Value', 'Returning Customers'], 'financial': ['Net cash flow', 'Liquidity ratio', 'Berry ratio', 'Working Capital', 'Profit and Loss Report', 'Earnings before interest and taxes (EBIT)', 'Days in accounts receivables', 'Quick Ratio / Acid Test', 'Recent Payments', 'Contribution margin', 'Interest cover', 'Gross profit margin', 'Income and Expenses (Last 12 Months)', 'Vendor Expenses', 'Return on Equity', 'Accounts Receivable Turnover', 'Current Accounts Receivable and Accounts Payable', 'Debt to Equity Ratio', 'Net Profit Margin', 'Current Ratio', 'Inventory Turnover', 'Transactions error rate', 'Economic value added (EVA)', 'Accounts Payable Turnover'], 'healthcare': ['Lab Turnaround Time', 'Number of Patients in ER', 'ER Waiting Times', 'Time to Healthcare Service', 'Current ER Occupancy', 'Average Length of Stay'], 'help-desk': ['Ticket Queue', 'Ticket Analysis', 'Agent Performance'], 'human-resources': ['Span of Control', 'Headcount', 'Open Job Requisitions', 'Job Offer Acceptance Rate', 'Cost per Hire', 'Signing Bonus Expense', 'Ethnic Diversity Ratio', 'Gender Ratio', 'Recruiter to Open Requisitions Ratio', 'Applications Received per Vacancy'], 'insurance': ['Quotas vs. Production', 'Claims Ratio', 'Policy Sales Growth', 'Top Brokers in Sales Revenue', 'Average Cost Per Claim', 'Net Income Ratio', 'Average Time to Settle a Claim', 'Percentage of Sales Growth'], 'marketing': ['Customer Share by Category', 'Lifetime value of a customer (LTV)', 'Keyword Click-Through Rate', 'Response Rate', 'Organic Search Traffic for SEO Optimization', 'Social Sentiment', 'Return on marketing investment', 'Instagram Followers', 'Purchase Funnel', 'Social Visits and Leads', 'Facebook Ads Campaign Performance', 'Keyword Performance', 'Followers Growth KPI', 'Facebook Likes', 'Key Social Metrics', 'Referral Traffic', 'Facebook Ads CPM and CPP (last 7 days)', 'First Visit Metric', 'Email Marketing Statistics', 'Click Through Rate (CTR)', 'People Talking About This on Facebook Metric', 'Social Shares', 'Marketing Qualified Leads (MQL)', 'Web Traffic Sources', 'Landing Page Performance Optimization', 'Unique Visitors', 'Customer acquisition cost (CAC)', 'End Action Rate', 'Marketing Originated Customers', 'Unsubscribes', 'Net Promoter Score', 'Twitter Engagement Metrics', 'Email Subscribers Metrics', 'Marketing spend per customer', 'Email Forwards', 'Email Marketing Engagement Score', 'Top Viewed Posts', 'SEO Keyword Ranking', 'Average Time on Page', 'External Website Links', 'Sessions by Device Type', 'Newsletter Signup Conversion Rate', 'Customer retention', 'Social Traffic and Conversions', 'Funnel Conversion Rate', 'New Leads Generated', 'Facebook Ads Impressions and Reach (last 7 days)', 'Content Downloads', 'Pageviews per Session', 'Social Events', 'Customer Attrition', 'Brand awareness', 'Web Traffic Concentration', 'SEO Traffic', 'Domain Authority', 'Website Traffic Lead Ratio', 'Total Visits', 'Sales Qualified Leads (SQL)', 'Average Lead Score', 'Customer engagement', 'Email Website Traffic Metrics', 'Facebook Page Like Metric', 'Facebook Engagement Metrics', 'Social Interactions', 'Returning Visitor Metric', 'Cost Per Lead', 'YouTube Channel Subscribers', "Facebook Ads Today's Summary", 'Lead Conversion Rate', 'Facebook Page Demographics', 'New Followers', 'Goal Completion Rate', 'Social Followers', 'Dormancy Rate', 'Content Backlog', 'Average Time to New Content', 'Keyword Opportunity', 'Link Building Metrics', 'Twitter Followers Metric', 'Incremental Sales', 'Bounce Rate', 'Lifetime Value: Customer Acquisition Cost ' '(LTV:CAC)', 'Online Conversions Metric', 'Cost per Action (CPA)', 'Pageviews', 'Brand Awareness Metric'], 'retail': ['Stock rotations', 'Point of Purchase', 'Stock value', 'Cost of Goods Sold', 'Frequency of store visits', 'Same store sales growth', 'Product shelf-space profitability', 'Sales by product category', 'Sales per unit area (ex. per SQFT)', 'Sales per Square Foot'], 'saas-metrics': ['Quick Ratio', 'Monthly Recurring Revenue (MRR) Expansion Rate', 'Customer Churn Rate', 'Monthly Recurring Revenue (MRR)', 'Net Burn Rate', 'MoM MRR Growth', 'Viral Coefficient'], 'sales': ['Selling Opportunity', 'Unit Sales to Average Market Unit Sales', 'Conversation to Appointment Rate', 'Monthly Sales Bookings', 'Average New Deal Size/Length', 'Revenue to Average Market Sales Revenue Ratio', 'Monthly Sales Growth', 'Promotions Conducted', 'Baseline Sales', 'Sales Growth by Market Segment', 'Sales Closing Ratio', 'Revenue Gained from Top Customers', 'Monthly Calls (or emails) Per Sales Rep', 'Sales Conversion Rate', 'Sales Per Rep', 'Sales by Region', 'Average Profit Margin', 'Average Cost Per Lead', 'Average Purchase Value', 'Customer Acquisition', 'Sales Bookings', 'Sales by Department', 'Adjusted Trial Rate', 'Sales Orders Filled per FTE (Full Time Equivalent)', 'Gross Margin Return on Investment (GMROI)', 'Sales Growth Metrics and KPIs', 'Revenue per Successful Call', 'Percent Closing Ratio', 'Lead-to-Sale %', 'Sales Orders Filled per unit Time', 'Sell-Through Rate', 'Sales Turnover', 'Time to Break Even', 'Potential New Clients Contacted', 'Sales Quota Attainment', 'Number of Monthly Onboarding and Demo Calls', 'Missed Sales Opportunities', 'Sales Value Productivity', 'Average Conversion Time', '% Markdown Goods', 'Product Performance', 'Retention and Churn Rates', 'Coupon Conversion', 'Sales Revenue per Hour', 'Repurchases of Services Following Project Completion', 'Sales by Contact Method', 'Trial Accounts', 'Cannibalization rate in sales and marketing', 'Channel Margin', 'Leads Generated by Agents', 'Orders Cancelled by Reason', 'First Appointment-to-Sales Ratio', 'Customer Lifetime Value', 'Order Frequency', 'Sales-to-Date', 'Percent of Revenue from New Products', 'Sales Cycle Duration', 'Quote To Close Ratio', 'Sales Opportunities', 'Selling Costs to Sales Ratio', 'New and Expansion MRR', 'Sales Force Effectiveness', 'Successful to Unsuccessful Tenders', 'Activated New Business Value', 'Potential Revenue in the Sales Pipeline', 'Purchase Frequency', 'Sales Target', 'Product-Line Profitability', 'Repeat Purchase Volume'], 'social-media': ['Web visitors from social channel', 'Likes', 'Engagement', 'Social visitors conversion rates', 'Traffic conversions', 'Social visitor goals'], 'supply-chain': ['Inventory to Sales Ratio', 'Rate of Return', 'Back Order Rate', 'Perfect Order Rate', 'Carrying Cost of Inventory', 'Order Status', 'Units Per Transaction', 'Inventory Accuracy', 'Order Tracking', 'Percentage of Out of Stock Items'], 'support': ['Queries Resolved in the Same Day', 'Customer Service Representatives (CSR) Occupancy', 'Correspondence Replied to On Time', 'Speed of Answer (SA)', 'Overdue Service Requests', 'Complaints Received', 'Time From Inquiry to Response', 'Time to Resolve Complaints', 'Timeliness of Issue Resolution', 'Customer Complaints Due to Poor Service or Product ' 'Quality', 'Support Requests', 'Customer Satisfaction with Service Levels', 'Complaints Not Resolved on First Call', 'Complaints Resolved']})
In [12]:
with open('kpis.json', 'w') as out:
json.dump(kpis2, out)
Comments
Comments powered by Disqus