广告投放分析(Python,Sql)

本文通过对阿里天池数据的分析,探讨广告投放的策略,重点关注广告及渠道、投放时间和用户画像。研究发现,商品价格、广告类别、投放时间、用户年龄和性别等因素显著影响点击率。100元以下商品点击率最高,男性用户在某些类别中表现出更强的兴趣,周末和周二点击率较高,30岁以上男性用户对某些广告的兴趣突出。建议关注特定价格区间的商品,优化渠道和投放时间,针对高价值用户制定精准广告策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目背景与目的

1. 背景

随着互联网的飞速发展,各种网络产品应运而生,如电商网站,移动应用,视频媒体,新媒体等等。网络广告也成为了一种主要的广告形式。而网络广告的形式具有复杂和多样化的特点。

2. 问题

当我们完成一个重点活动的全网营销。该从哪些维度来总结和评估本次推广的得失呢?
实现广告的精准投放就是最大化投入产出的过程,需要知道我们的用户在哪里,在哪些渠道能够更大化用户价值,以及各个渠道用户价值的变化规律。通过对渠道方式和渠道质量的追踪,以引流和转化率为关键事件,做好渠道的优化和维护。

二、分析维度

1. 主体方向

本次项目将通过研究阿里天池数据,从广告及渠道,投放时间,投放人群,以点击率为数据指标进行数据分析,从而给出更好的方案和建议,实现高效率高产出。

2. 维度细分

2.1 广告及渠道

  1. 不同的商品价格对点击率的影响
  2. 100元以内广告商品点击率的用户组成
  3. 哪些类别的广告点击率更高,哪些类别的点击率低
  4. 低点击率商品分析
  5. 高点击商品与用户性别关系
  6. top10商品资源位点击量

2.2 投放时间

  1. 各时段点击量
  2. 每日点击量趋势
  3. 高点击商品各时段点击量

2.3 人群画像

  1. 年龄层与消费档次
  2. 购物深度与性别
  3. 不同年龄段、不同性别的用户点击率有什么差异
  4. 用户价值

三、数据概览

1. 数据描述

本数据集是阿里巴巴提供的一个淘宝展示广告点击率预估数据集,抽样114万用户8天内的广告展示(2600万条记录)以及全部广告的基本信息,用户的基本信息。
在这里插入图片描述
本项目将三个数据集链接在一起,以方便后续分析。

2. 数据含义及基本信息

(1) user_id:脱敏过的用户ID;             (2) adgroup_id:脱敏过的广告单元ID;
(3) time_stamp:时间戳;                  (4) pid:资源位;
(5) noclk:为1代表没有点击;为0代表点击;  (6) clk:为0代表没有点击;为1代表点击;

(1) adgroup_id:脱敏过的广告ID;          (2) cate_id:脱敏过的商品类目ID;
(3) campaign_id:脱敏过的广告计划ID;     (4) customer_id:脱敏过的广告主ID;
(5) brand:脱敏过的品牌ID;               (6) price: 宝贝的价格

(1) userid:脱敏过的用户ID;              (2) cms_segid:微群ID;
(3) cms_group_id:cms_group_id;         (4) final_gender_code:性别 1:,2:女;
(5) age_level:年龄层次;                 (6) pvalue_level:消费档次,1:低档,2:中档,3:高档;
(7) shopping_level:购物深度,1:浅层用户,2:中度用户,3:深度用户
(8) occupation:是否大学生 ,1:,0:(9) new_user_class_level:城市层级
******************** 基本信息
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1048575 entries, 0 to 1048574
Data columns (total 20 columns):
user                     1048575 non-null int64
time_stamp               1048575 non-null int64
adgroup_id               1048575 non-null int64
pid                      1048575 non-null object
nonclk                   1048575 non-null int64
clk                      1048575 non-null int64
cate_id                  1048575 non-null int64
campaign_id              1048575 non-null int64
customer                 1048575 non-null int64
brand                    862458 non-null float64
price                    1048575 non-null float64
userid                   987618 non-null float64
cms_segid                987618 non-null float64
cms_group_id             987618 non-null float64
final_gender_code        987618 non-null float64
age_level                987618 non-null float64
pvalue_level             460409 non-null float64
shopping_level           987618 non-null float64
occupation               987618 non-null float64
new_user_class_level     717615 non-null float64
dtypes: float64(11), int64(8), object(1)
memory usage: 164.0+ MB
None
******************** 空值
user                          0
time_stamp                    0
adgroup_id                    0
pid                           0
nonclk                        0
clk                           0
cate_id                       0
campaign_id                   0
customer                      0
brand                    186117
price                         0
userid                    60957
cms_segid                 60957
cms_group_id              60957
final_gender_code         60957
age_level                 60957
pvalue_level             588166
shopping_level            60957
occupation                60957
new_user_class_level     330960
dtype: int64
******************** 重复值
False    1048575
dtype: int64

3. 数据处理

3.1 去空

df = df.dropna(subset=["userid"],axis=0)

3.2 异常极值处理

bin2000_10 = np.arange(0,200000,1000)
df_cut_10 = pd.cut(df.price,bin2000_10).value_counts()
df_cut_10

Sql写法

DELETE FROM ad WHERE price > 100000 OR price < 1

这里以1000作为区间,进行切片,发现出现价格过大的情况,属于异常值,因此截取价格在1~100000的数据。

3. 新增日期项

df["day"]=df["time_stamp"].apply(lambda x:datetime.datetime.fromtimestamp(x))
df['date'] = df['day'].dt.date
df['week'] = df['day'].dt.dayofweek+1
df['hour'] = df['day'].dt.hour

Sql写法

alter table ad add date VARCHAR(32);
UPDATE ad SET date = FROM_UNIXTIME(time_stamp,'%Y-%m-%d %H:%i:%s');
新增日期(%Y-%m-%d)一列
alter table ad add day VARCHAR(32)
UPDATE ad SET day = cast(date as DATE)
新增小时列
alter table ad add 
### 使用Python进行广告投放效果的分类与评估 为了有效地评估和分类Python相关的广告投放效果,可以采用多种方法和技术来确保结果的准确性。以下是具体的实现方式: #### 数据准备 首先,需要收集并整理用于分析的数据集。这通常涉及从数据库或其他存储介质中提取数据,并将其转换成适合机器学习算法使用的格式。Pandas库提供了强大的工具来进行这些操作[^3]。 ```python import pandas as pd def load_data(): # 假设有一个SQL查询函数可以从数据库获取数据 query = "SELECT * FROM ad_impressions WHERE category='Python'" data = pd.read_sql(query, connection_string) return data ``` #### 预处理阶段 在实际应用之前,还需要对原始数据执行必要的清洗工作,比如去除缺失值、异常检测以及标准化数值范围等。此步骤对于提高后续建模的质量至关重要。 ```python from sklearn.preprocessing import StandardScaler def preprocess(data): cleaned_data = data.dropna() scaler = StandardScaler().fit(cleaned_data[['clicks', 'impressions']]) scaled_features = scaler.transform(cleaned_data[['clicks', 'impressions']]) processed_df = pd.DataFrame(scaled_features, columns=['scaled_clicks', 'scaled_impressions']) return processed_df ``` #### 聚类分析 利用`sklearn.cluster`模块中的KMeans聚类算法可以根据不同的特征指标将相似类型的广告分组在一起。这种方法有助于识别哪些因素最能影响特定群体的行为模式。 ```python from sklearn.cluster import KMeans def cluster_analysis(processed_data): kmeans = KMeans(n_clusters=5).fit(processed_data) labels = kmeans.labels_ centroids = kmeans.cluster_centers_ result = { 'labels': labels, 'centroids': centroids } return result ``` #### 效果评价 最后一步是对所得到的结果进行全面而系统的检验。这里可以通过计算各类性能度量标准(如轮廓系数Silhouette Score),并通过图形化手段直观呈现出来以便更好地理解整体趋势。 ```python from sklearn.metrics import silhouette_score import matplotlib.pyplot as plt def evaluate_clustering(cluster_result, processed_data): score = silhouette_score(processed_data, cluster_result['labels']) print(f'Silhouette Coefficient: {score}') fig, ax = plt.subplots(figsize=(8, 6)) colors = ['red', 'green', 'blue', 'yellow', 'purple'] for i in range(len(colors)): points = processed_data.iloc[[idx for idx, label in enumerate(cluster_result['labels']) if label == i]] ax.scatter(points['scaled_clicks'], points['scaled_impressions'], c=colors[i], alpha=0.7) plt.title('Cluster Visualization') plt.xlabel('Scaled Clicks') plt.ylabel('Scaled Impressions') plt.show() ``` 上述流程展示了如何运用Python及其丰富的第三方库完成一次完整的广告投放效果评估任务。通过这种方式不仅可以获得关于现有策略的有效反馈信息,而且能够为进一步优化提供科学依据[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值