Script 867: Budget Capped Campaigns
Purpose
Python script to tag campaigns if the Pub Cost for the prior day is 90% of the Daily Budget.
To Elaborate
The Python script aims to identify campaigns that have exceeded their budget by tagging them as “Budget Capped”. The script calculates the difference between the daily budget and the pub cost (cost of advertising on a publisher’s platform) for each campaign. If the pub cost is greater than or equal to 90% of the daily budget and certain conditions are met (iDNE is less than 1.5 and Lost Imp Share is greater than 10), the campaign is tagged as “Budget Capped”. The script then outputs the modified input data frame, including the account, campaign, and budget alert status.
Walking Through the Code
- The script defines column constants for various columns in the input data frame.
- The ‘iDNE’ column in the input data frame is converted to numeric values.
- The script calculates the ratio of pub cost to daily budget and adds it as a new column (‘Pub Cost / Budget’) in the input data frame.
- The ‘iDNE’ and ‘Lost Imp Share’ columns are copied to new columns in the input data frame.
- The script tags campaigns as “Budget Capped” based on certain conditions:
- If the ‘Pub Cost / Budget’ ratio is less than the threshold (0.90), the ‘Budget Alert’ column is set to an empty string.
- If the ‘Pub Cost / Budget’ ratio is greater than or equal to the threshold, the ‘iDNE’ is less than 1.5, and the ‘Lost Imp Share’ is greater than 10, the ‘Budget Alert’ column is set to “Budget Capped”.
- The modified input data frame is printed.
- The script selects specific columns from the input data frame (account, campaign, and budget alert) and assigns them to the output data frame.
Vitals
- Script ID : 867
- Client ID / Customer ID: 247885838 / 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:37
- Last Updated by Stephen Malina on 2024-04-23 20:44
> 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-05-15 07:44:05 GMT