Script 869: Budget Capped Campaigns

Purpose

The Python script identifies campaigns where the previous day’s spending is at least 90% of the daily budget and flags them as “Budget Capped” if certain conditions are met.

To Elaborate

The script is designed to monitor advertising campaigns by analyzing their spending relative to their daily budget. It specifically tags campaigns as “Budget Capped” when the spending for the previous day reaches or exceeds 90% of the allocated daily budget. Additionally, it considers other factors such as the ‘iDNE’ value and ‘Lost Impression Share’ percentage to determine if a campaign should be flagged. This helps in identifying campaigns that are at risk of exceeding their budget, allowing for timely adjustments to prevent overspending and optimize budget allocation.

Walking Through the Code

  1. Data Preparation
    • The script begins by converting the ‘iDNE’ column to numeric values to ensure accurate calculations. This step handles any non-numeric entries by coercing them into NaN values.
  2. Calculation of Ratios
    • It calculates the ratio of ‘Pub Cost’ to ‘Daily Budget’ for each campaign to determine how much of the budget has been spent. This ratio is stored in a new column ‘Pub Cost / Budget’.
  3. Budget Cap Alert Logic
    • A threshold of 0.90 is set, which can be adjusted by the user. The script checks if the ‘Pub Cost / Budget’ ratio is at least 90% and if ‘iDNE’ is less than 1.5. Additionally, it checks if the ‘Lost Impression Share’ is greater than 10%. If all conditions are met, the campaign is flagged with a “Budget Capped” alert.
  4. Output Preparation
    • The script filters the relevant columns (‘Account’, ‘Campaign’, ‘Budget Alert’) and prepares them for output, providing a concise view of campaigns that require attention.

Vitals

  • Script ID : 869
  • Client ID / Customer ID: 1306916779 / 13095968
  • Action Type: Bulk Upload
  • Item Changed: Campaign
  • Output Columns: Account, Campaign, Budget Alert
  • Linked Datasource: M1 Report
  • Reference Datasource: None
  • Owner: smalina@marinsoftware.com (smalina@marinsoftware.com)
  • Created by Stephen Malina on 2024-03-29 16:40
  • Last Updated by Stephen Malina on 2024-04-23 14:59
> See it in Action

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#
# Tag campaign if Pub Cost for prior day is 90% of Daily Budget
#
#
# Author: Stephen Malina
# Date: 2024-03-27

RPT_COL_CAMPAIGN = 'Campaign'
RPT_COL_PUBLISHER = 'Publisher'
RPT_COL_PUB_COST = 'Pub. Cost €'
RPT_COL_ACCOUNT = 'Account'
RPT_COL_DAILY_BUDGET = 'Daily Budget'
RPT_COL_CAMPAIGN_STATUS = 'Campaign Status'
RPT_COL_BUDGET_ALERT = 'Budget Alert'
RPT_COL_iDNE = 'iDNE'
RPT_COL_LOST_IMP_SHARE = 'Lost Impr. Share (Budget) %'
BULK_COL_ACCOUNT = 'Account'
BULK_COL_CAMPAIGN = 'Campaign'
BULK_COL_BUDGET_ALERT = 'Budget Alert'

# Convert the 'iDNE' column to numeric values
inputDf[RPT_COL_iDNE] = pd.to_numeric(inputDf[RPT_COL_iDNE], errors='coerce')

# Calculate the difference between daily budget and pub cost, include iDNE for consideration
inputDf['Pub Cost / Budget'] = inputDf[RPT_COL_PUB_COST] / inputDf[RPT_COL_DAILY_BUDGET]
inputDf['iDNE'] = inputDf[RPT_COL_iDNE]
inputDf['Lost Imp Share'] = inputDf[RPT_COL_LOST_IMP_SHARE]

# Output a "Budget Cap Alert" where daily spend is greater than 90% of daily budget and iDNE is less than 1.5
threshold = 0.90  # Adjust this threshold as needed
inputDf.loc[inputDf['Pub Cost / Budget'] < threshold, BULK_COL_BUDGET_ALERT] = ""
inputDf.loc[(inputDf['Pub Cost / Budget'] >= threshold) & (inputDf['iDNE'] < 1.5) & (inputDf['Lost Imp Share'] > 10), BULK_COL_BUDGET_ALERT] = "Budget Capped"

# Print the modified inputDf
print(inputDf)
cols = [RPT_COL_ACCOUNT, RPT_COL_CAMPAIGN, BULK_COL_BUDGET_ALERT]
outputDf = inputDf[cols]

Post generated on 2024-11-27 06:58:46 GMT

comments powered by Disqus