还有一点出乎我意料的是,诺基亚和飞利浦手机的估计销量占比竟然也都超过了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\')我们可以看到,各个品牌手机中位数价格层次不齐,这也和我们的常识性判断吻合,因为不同手机品牌的定位以及消费群体均有较大差异。
不同屏幕材料对手机价格影响的探索还有一个很关键的因素其实是手机的屏幕材料,我们也可以用同样的方法比较不同屏幕材料对价格的影响。
data.groupby([\'screen material\']).median()[\'price\'].sort_values(ascending=False).values.std() #计算不同屏幕材料价格中位数集合的标准差输出结果:
1523.0026019740856各种屏幕材料的手机的价格中位数展示如下
data.groupby([\'screen material\']).median()[\'price\'].sort_values(ascending=False)