业务场景:
甲公司投放广告的渠道很多,每个渠道的客户性质也可能不同,比如在优酷视频投广告和今日头条投放广告,效果可能会有差异。现在需要对广告效果分析实现有针对性的广告效果测量和优化工作。
1 导入相关库及数据
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler,OneHotEncoder
from sklearn.metrics import silhouette_score # 导入轮廓系数指标
from sklearn.cluster import KMeans # KMeans模块
%matplotlib inline
#忽略警告
import warnings
warnings.filterwarnings("ignore")
# 设置图像细节
plt.rcParams["font.sans-serif"] = "SimHei" #将pyplot字体转化成中文
plt.rcParams['font.size'] = 12 # 设置字体大小
plt.rcParams['axes.unicode_minus'] = False # 设置正常显示负号
df_1 = pd.read_csv(r"C:\Users\A\Desktop\python\上课用\数据挖掘案例\ad_performance (1).csv")
2.数据探索与清洗
#2.1查看数据概览、前五项、类型
df_1.info()
print(df_1.head())
type(df_1)
print(df_1.describe().round(2))
(1)数据共889行记录,12个维度(第一列为序号),数据量较小,可以用聚类分析。
(2)日均UV到投放时间为数值型数据,后5项为分类型数据。
日均UV的数据波动非常大,说明了不同渠道间的特征差异非常明显。
(3)数值型数据度量单位不同,需要做标准化处理
平均注册率、平均搜索量、订单转化率的多个统计量(例如最小值、25%分位数等)都为0,需要关注其原因:打印输出过程中仅保留了2位小数,而这几个统计量的数据本身就非常小。
#2.2缺失值处理
#(1)查看缺失值
print(df_1.isnull().any(axis=0))
#(2)计算 DataFrame 中每一列的缺失值数量
df_1.isnull().sum()
平均停留时间存在2项缺失值,聚类分析对缺失值敏感,需要做进一步处理
#(3)缺失值可视化
import missingno as msno
msno.bar(df_1)#查看数据集数据完整性
此处用缺失值可视化工具查看缺失值分布情况(本案例效果不明显)
#(4)提取缺失值信息
df_1[df_1.isnull().values==True]
#(5)缺失值填充&删除
# 相关性分析
df_1.corr().round(2)
import seaborn as sns
corr = df_1.corr().round(2)
sns.heatmap(corr,cmap='Reds',annot = True)