Cleaning Functions
clean_column_names(df, hardcode_col_dict={}, errors='ignore', cols_no_change=['spend', 'date', 'currency', 'cohort', 'creative_name', 'group_id', 'engagements', 'created', 'ad_id', 'plays', 'saved', 'post_hastags', 'content_type', 'linked_content', 'post_id', 'video_duration', 'average_time_watched', 'total_time_watched', 'adset_targeting', 'completion_rate', 'targeting', 'cohort_new', 'video_completions', 'post_hashtags'])
Cleans the column names of an advertisement performance (organic or paid) dataset, commonly from Tracer but could also be from Sprout social. The column names will be standardized so then other functions in other libraries can work with the dataset.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df |
DataFrame
|
Input dataframe containing a row item for each piece of creative or a day of advertising. |
required |
hardcode_col_dict |
Dict[str, str]
|
A dictionary specifying exact transformations of column names from the key to the value. |
{}
|
errors |
str
|
How to handle errors during the conversion. Can be 'raise', 'ignore' or 'warn' |
'ignore'
|
cols_no_change |
List[str]
|
A list of column names to be left unchanged. |
['spend', 'date', 'currency', 'cohort', 'creative_name', 'group_id', 'engagements', 'created', 'ad_id', 'plays', 'saved', 'post_hastags', 'content_type', 'linked_content', 'post_id', 'video_duration', 'average_time_watched', 'total_time_watched', 'adset_targeting', 'completion_rate', 'targeting', 'cohort_new', 'video_completions', 'post_hashtags']
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame | Output dataframe with the column names standardized. |
Source code in vee_clean/cleaning_functions.py
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | |
clean_media_type(media_type)
Clean the media type into a standardised version of media type
Source code in vee_clean/cleaning_functions.py
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | |
clean_placement(placement)
Clean a placement string into a standardised placement
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
placement |
str
|
A string representing the placement of the post |
required |
Returns:
| Name | Type | Description |
|---|---|---|
placement |
str
|
The standardised placement of the post, if it is in 'Reel', 'Story' or 'Feed' |
Source code in vee_clean/cleaning_functions.py
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | |
clean_platform_name(platform)
Cleans platform name, deals with the fact that most platforms are in the 'title' case, i.e. First letter of each word is capitalised However there are some platforms that have are one word but are usually presented as having a capital letter midway through the word.
Source code in vee_clean/cleaning_functions.py
201 202 203 204 205 206 207 208 209 210 211 212 | |
clean_url(url)
Clean the url of the post to produce a string with just the important information for matching In he case of Tiktok remove everything after and including the ? This removes the utm parameters
Source code in vee_clean/cleaning_functions.py
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | |
extract_after_nth_occurrence(string, char, n)
Extracts the string between the nth and n+1th occurrence of the character
Source code in vee_clean/cleaning_functions.py
302 303 304 305 306 307 | |
extract_country_from_string(string, client_name, hardcode_dict)
Converts a string containing info identifying a certain
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
string |
str string to pass through perhaps in a lambda function, the country is detected from this |
required | |
client_name |
str name of the client that is removed to make the detection of country easier, for example so you are not searching for 'de' to find Germany with 'indeed' in the string |
required |
Returns:
| Name | Type | Description |
|---|---|---|
country_code | str country Tag abbreviation mostly following the ISO 3166-1 alpha-2 format |
Source code in vee_clean/cleaning_functions.py
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | |
extract_quarter_from_date(date)
Extracts the quarter from the date
Source code in vee_clean/cleaning_functions.py
297 298 299 300 | |
extract_region_from_country(country)
Extracts the region from the given country.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
country |
str
|
A string representing the country name. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
str | The region of the given country, if it is in 'UK/IE', 'NL', 'DE', 'FR', 'IT', 'BE', it returns "EMEA". If the country is 'CA' or 'US', it returns "N. America". If the country is not found, it returns None. |
Example:
extract_region_from_country("FR") 'EMEA' extract_region_from_country("US") 'N. America' extract_region_from_country("XX") None
Source code in vee_clean/cleaning_functions.py
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | |
strip_object_columns(df)
Strips leading and trailing whitespaces in columns containing strings. This stops effective duplications when two categories in a column are essentially the same but one just has a whitespace
Source code in vee_clean/cleaning_functions.py
166 167 168 169 170 171 172 | |
two_urls_per_post_to_1(x)
Sometimes there are identical posts posted on the same day. This can be used to return just the url of the post with the highest amount of 'impressions' or 'video views'
Source code in vee_clean/cleaning_functions.py
331 332 333 334 335 336 337 338 339 340 341 342 343 | |
updated_value_extract(url)
Extract the unique identifier for a post from the url This format of this code depends on the platform, sometimes it is a numerical code, sometimes it is alphanumeric
Source code in vee_clean/cleaning_functions.py
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 | |
video_len_toseconds(len_string)
Video lengths come through tracer in the format 'minute:seconds', e.g. '1:20' or 80 seconds This function converts it into just seconds
Source code in vee_clean/cleaning_functions.py
362 363 364 365 366 367 368 369 370 371 372 | |