Script 881: Budget Capped Campaigns
Purpose
The Python script identifies and tags advertising campaigns that have nearly exhausted their daily budget based on specific criteria.
To Elaborate
The script is designed to monitor advertising campaigns by analyzing their daily spending relative to their allocated daily budget. It specifically identifies campaigns where the spending is at least 90% of the daily budget and additional conditions are met, such as a low ‘iDNE’ value and a significant ‘Lost Impression Share’. This helps in flagging campaigns that are at risk of being budget capped, allowing for timely adjustments to avoid missed opportunities due to budget constraints. The script processes input data, performs calculations, and outputs a modified dataset highlighting campaigns that meet the criteria for a “Budget Cap Alert”.
Walking Through the Code
- Data Preparation:
- The script begins by converting the ‘iDNE’ column to numeric values to ensure accurate calculations, handling any non-numeric entries by coercing them to NaN.
- Calculations:
- It calculates the ratio of ‘Pub Cost’ to ‘Daily Budget’ for each campaign to determine how much of the budget has been spent.
- The script also retains the ‘iDNE’ and ‘Lost Impression Share’ values for further analysis.
- Budget Cap Alert Logic:
- A threshold of 90% is set, which can be adjusted by the user if needed.
- Campaigns are tagged with “Budget Capped” if their spending meets or exceeds this threshold, ‘iDNE’ is less than 1.5, and ‘Lost Impression Share’ is greater than 10%.
- Output:
- The script prints the modified dataset and extracts relevant columns to create a final output that highlights campaigns with budget alerts.
Vitals
- Script ID : 881
- Client ID / Customer ID: 1306923273 / 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:53
- Last Updated by Stephen Malina on 2024-04-23 20:55
> 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