基于京东手机销售数据用回归决策树预测价格 (2)

还有一点出乎我意料的是,诺基亚和飞利浦手机的估计销量占比竟然也都超过了3%(甚至超过vivo,oppo),于是便想看看这两个品牌分别销售哪种价位手机

data[(data[\'brand\']==\'NOKIA\')|(data[\'brand\']==\'Philips\')][\'price\'].median()#诺基亚和飞利浦手机价格中位数

输出结果:

208.5 data[(data[\'brand\']==\'NOKIA\')|(data[\'brand\']==\'Philips\')][\'price\'].mean()#诺基亚和飞利浦手机价格平均数

输出结果:

336.1190476190476

这样看来,诺基亚和飞利浦的手机价格多在200-300元左右,再根据item id访问京东网站后,发现果不其然,这两个品牌所销售的大多是功能机。(诺基亚有部分智能手机) 在这个智能手机已经全面普及的年代,想不到功能机也还是有它的一亩三分地,并没有完全被市场淘汰(尤其是线上销售渠道)。这可能是因为部分老人仍然更习惯使用功能机,以及功能机待机时间长,铃声音量大,能满足部分人群的特殊需求。

对决定手机价格因素的探索

另一个值得研究的问题便是手机的价格和手机配置参数的关系。为了让我们有一个整体把握,我们会先画出各个数值数据间的correlation matrix,然后再探索非数值数据(categorical data),如品牌,屏幕材料,对价格的影响。

画出Correlation Matrix 并进行分析

由于苹果手机和安卓手机的价格、配置差异较大,而且苹果手机配置参数在我们的数据集中大多缺失,我们研究这个问题时,就暂且只考虑安卓手机。(价格为9999的手机是华为将于2019年7月发行的荣耀X9,由于该型号价格异常,故也将其从我们的分析中排除。)

correlation=data[(data[\'brand\']!=\'Apple\')&(data[\'price\']!=9999)].corr() #绘制相应correlation matrix的heatmap fig,axes=plt.subplots(figsize=(8,8)) cax=sns.heatmap(correlation,vmin=-0.25, vmax=1,square=True,annot=True) axes.set_xticklabels([\'RAM\', \'ROM\', \'battery\', \'comments\', \'price\', \'rear camera\', \'resolution\', \'screen size\', \'weight\']) axes.set_yticklabels([\'RAM\', \'ROM\', \'battery\', \'comments\', \'price\', \'rear camera\', \'resolution\', \'screen size\', \'weight\']) axes.set_title(\'Heatmap of Correlation Matrix of numerical data\') plt.show()

输出结果:

基于京东手机销售数据用回归决策树预测价格

从上图我们可以看出,价格 price 和存储空间 ROM 以及内存 RAM 的关联度最大,分别达到了0.71和0.68。其次便是电池容量battery,后置摄像头个数rear camera,屏幕大小screen size,关联度都分别达到了0.42。这也比较符合我们常识性的判断。 我们还可以很明显的看到,评价个数comments的column和row都呈现深紫色,代表comments和各个数值参数的关联都很小。 (由于我们的数据集缺失值较多,在舍弃掉部分缺失值的行后,以上correlation matrix的数值会出现一定程度的变化)

手机品牌对手机价格影响的探索

当然,决定手机价格很关键的因素还有一些非数值数据(categorical data)。最容易想到的便是手机的品牌了。

data.groupby([\'brand\']).median()[\'price\'].sort_values(ascending=False).values.std() #计算不同品牌价格中位数集合的标准差

输出结果:

1409.0576123336064

以上数据也可以通过柱状图来更直观地展示。

bar_plt=data.groupby([\'brand\']).median()[\'price\'] fig,axes=plt.subplots(figsize=(20,8)) axes.bar(bar_plt.index,bar_plt.values) axes.set_title(\'Median price of handphones of various brands\')

输出结果:

Text(0.5, 1.0, \'Median price of handphones of various brands\')

image

我们可以看到,各个品牌手机中位数价格层次不齐,这也和我们的常识性判断吻合,因为不同手机品牌的定位以及消费群体均有较大差异。

不同屏幕材料对手机价格影响的探索

还有一个很关键的因素其实是手机的屏幕材料,我们也可以用同样的方法比较不同屏幕材料对价格的影响。

data.groupby([\'screen material\']).median()[\'price\'].sort_values(ascending=False).values.std() #计算不同屏幕材料价格中位数集合的标准差

输出结果:

1523.0026019740856

各种屏幕材料的手机的价格中位数展示如下

data.groupby([\'screen material\']).median()[\'price\'].sort_values(ascending=False)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzsys.html