python进行广告分析

1、python进行数据预处理

import pandas as pd
import numpy as np
pd.set_option('display.max_columns',None)
pd.set_option('display.max_rows',None)
pd.set_option('max_colwidth',30)

获取数据

data = pd.read_csv("ad_performance.csv",index_col=0)
# 对数据进行审查
print('{:*^60}'.format('数据样本:统计描述'))
print(data.describe().round(4).T)

index_col 防止把索引放进统计数据

保留四位小数,并将结果进行转置

对缺失值的填充(均值)

print('{:*^60}'.format('缺失值:均值填充法'))
data = data.fillna(data.mean)

2.计算,合并:相关性

print('{:*^60}'.format('计算相关性:合并'))
print(data.corr().round(4).T)
data = data.drop(['平均停留时间'], axis=1)

data.drop([‘平均停留时间’], axis=1) 的作用是从数据集中删除名为 ‘平均停留时间’ 的列。axis=1: 表示删除列而不是行,因为axis=1表示操作的是列,而axis=0表示操作的是行。进行相关性分析的目的在于理解数据中变量之间的关系,这对于选择合适的特征、优化模型、发现潜在因果关系等方面

3.数据标准化::归一化Min-Max,0-1区间

数据标准化的目的是为了确保不同特征的数值范围一致,避免因尺度差异而导致的模型训练问题。当特征的值差异很大时,一些机器学习算法可能会偏向于影响更大的特征,而对其他特征的影响较小,从而影响模型性能。通过标准化,我们将所有特征的值缩放到相似的范围内,有助于提高模型训练的稳定性、速度和性能,确保模型能够更准确地学习并适应不同特征的贡献。

from sklearn.preprocessing import MinMaxScaler
matrix = data.iloc[:,1:7]
min_max_model = MinMaxScaler()
data_rescaled = min_max_model.fit_transform(matrix)
print(data_rescaled.round(2))

目标是对数据进行最小-最大规范化,即将数据缩放到0到1的范围内,以便在机器学习中更好地处理。导入了`MinMaxScaler`,这是一个用于缩放数据的工具。然后,从数据集中选择了一部分列,将它们存储在一个名为`matrix`的新数据集中。接下来,创建了一个`MinMaxScaler`的实例,并使用`fit_transform`方法对`matrix`进行最小-最大规范化。最后,打印出规范化后的数据。

4.特征数字化:独热编码(One-Hot)

特征数字化是将原始的分类数据转换为机器学习模型能够处理的数值型数据的过程。在处理布尔型数据(例如False和True)时,通常采用的编码方式是独热编码(One-Hot Encoding)。

独热编码的思想是为每个不同的分类值创建一个新的二进制特征,其中只有一个特征的值为1,表示该样本属于相应的类别,而其他特征的值都为0。这样,我们就将原来的分类信息转换为了数值型的二进制编码,便于机器学习模型的处理。

from sklearn.preprocessing import OneHotEncoder
onehot_mode = OneHotEncoder(sparse_output=False)
data_one = onehot_mode.fit_transform(data.iloc[:,7:12])
print('{:*^60}'.format('特征数字化:独热编码'))
print(data_one)

sparse_output=False 时,fit_transform 返回的是一个密集矩阵,即一个普通的二维数组,其中包含了独热编码的结果。

数据合并

print('{:*^60}'.format('数据维度合并:12个字段'))
data_matrix = np.hstack((data_rescaled, data_one))

data_rescaled和data_one是两个矩阵,通过hstack函数水平堆叠在一起,形成一个新的矩阵data_matrix。这种操作将两个矩阵的列(特征)连接在一起,得到一个包含了原始数值型数据和独热编码后的分类型数据的新矩阵。

5、KMeans建模

在K均值(KMeans)聚类建模中,决定分类数K是一个关键的步骤。一个常用的方法是通过计算轮廓系数来评估不同K值的聚类效果。轮廓系数考虑了样本在同一簇内的紧密度和与其他簇之间的分离度,取值范围在-1到1之间。对于每个样本,轮廓系数越接近1表示该样本聚类得越合理。为了选择最优的K值,可以通过计算不同K值下的平均轮廓系数,选择使平均轮廓系数最大化的K值,以达到最优的聚类效果。

KMeans建模:基于平均轮廓系数,找到最佳K值(2-10)

import os
# 设置环境变量,避免KMeans内存泄漏问题
os.environ["OMP_NUM_THREADS"] = "4"  # 设置为你想要的线程数量
from sklearn.cluster import KMeans  # 聚类算法
from sklearn.metrics import silhouette_score  # 用于评估度量的模块
print('{:*^60}'.format('KMeans建模:基于平均轮廓系数'))
score_list = []
max_score = -1
for k in range(2,6):  # 2,3,4,5
    kmeans_model = KMeans(n_clusters=k,n_init=10)  #建模
    kmeans_temp = kmeans_model.fit_predict(data_matrix) #获取标签
    score = silhouette_score(data_matrix,kmeans_temp)     # 得到每个K下的平均轮廓系数
    # 获取最佳k值
    if score > max_score:
        max_score = score
        best_k = k
        labels_temp = kmeans_temp  
    score_list.append([k,score])
print('{:*^60}'.format('所有的k值以及对应平均轮廓系数'))
print(score_list)
print('最佳K值:', best_k)

聚类结果分析

# 1.合并数据与聚类标签
cluster_labels = pd.DataFrame(labels_temp,columns=['clusters']) # 将聚类标签转化为df
merge_data = pd.concat((data,cluster_labels),axis=1)   # 整合原始数据与聚类标签,纵向合并

# 2.各聚类下的样本量:select count(渠道标识) from table group by 聚类标签
cluster_counts = pd.DataFrame(merge_data['渠道代号'].groupby(merge_data['clusters'])
                              .count()).T.rename({'渠道代号':'counts'})    
# 3.各聚类下的样本占比
cluster_percents = (cluster_counts / len(data)).round(3).rename({'counts': 'percentage'})

# 4.数值类特征的均值
features = []
for label in range(best_k):
    label_data = merge_data[merge_data['clusters'] == label]
    p1_data = label_data.iloc[:,1:7]  #筛选出数值类特征
    p1_des = p1_data.describe().round(3) #获取描述性统计信息
    p1_mean = p1_des.iloc[1,:]  # 获取均值数据

    #5. 字符类特征的众数
    p2_data = label_data.iloc[:,7:12]  # 筛选出字符类特征
    p2_des = p2_data.describe()        # 获取描述性统计信息
    p2_mode = p2_des.iloc[2,:]         # 获取频数最高的标签
    # 横向拼接2类不同特征的数据
    merge_line = pd.concat((p1_mean,p2_mode),axis=0)
    # 纵向拼接4类簇的统计数据
    features.append(merge_line)

for label in range(best_k):

这是一个循环语句,range(best_k)创建了一个范围从0到best_k-1的整数序列,其中best_k表示你认为最佳的聚类簇数。循环中的label代表每一次循环的当前簇标签。

label_data = merge_data[merge_data[‘clusters’] == label]:

这行代码使用了布尔索引(Boolean indexing)来从merge_data中选择所有聚类标签为当前循环值label的行,即提取出了属于当前聚类簇的所有数据。

以上就是“python进行广告分析”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
亚马逊广告分析是利用Python进行数据分析和数据可视化的一个案例。亚马逊是全球最大的电子商务公司之一,其广告业务也非常庞大。通过分析亚马逊的广告数据,可以帮助商家了解产品宣传效果、推广策略和竞争对手情报等重要信息。 使用Python进行亚马逊广告分析的第一步是获取数据。可以通过亚马逊提供的API获取广告数据,或者通过爬虫技术从网页上抓取数据。获得数据后,可以使用pandas库将数据导入到Python进行进一步的处理和分析。 数据处理阶段,可以使用pandas库对数据进行清洗和预处理。首先,检查数据中是否存在缺失值或异常值,并进行相应的处理。此外,还可以进行数据转换、数据合并、数据分组等操作,以便进一步分析。 在进行亚马逊广告数据分析之前,需要先设置分析的目标。可以根据商家的需求,确定关键指标,比如广告展示次数、点击率、转化率等,或者比较不同产品的竞争情况。 使用Python的数据可视化库,如Matplotlib和Seaborn,可以将分析结果以图表的形式直观地展示出来。可以绘制广告效果的变化趋势图、产品之间的竞争对比图等,帮助商家更好地理解和分析广告数据。 最后,根据分析结果可以制定相应的优化策略。比如,如果发现某个产品的广告展示次数高但点击率低,可以考虑优化广告文案或者修改投放策略,以提高广告的转化率和效果。 总之,通过使用Python进行亚马逊广告数据分析,商家可以更好地了解自己的广告情况,优化广告策略,提高产品销量和竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值