新闻中心
手机市场销售数据分析报告(手机销售数据集)
手机市场销售数据分析报告
作者:吴倩华Jonathan
分析数据来源:淘宝网
文章可以转载,但必须注明作者和出处。
项目简介
本项目主要利用爬虫爬取淘宝商城手机这一产品的销售数据信息,以此为数据分析的基础,然后进行一些手机销售市场的探索和分析。
数据来源和数据集
本项目所使用的数据集全部来自淘宝网,是通过Python编写代码,调用requests库来爬取采集的。利用python语言编写代码,调用requests库,是网络爬虫比较简单的入门。
之所以选择淘宝网作为本项目的数据来源,主要是因为相对于其他网购平台,淘宝网上的手机销售数据信息易于爬取,且爬取的结果数据更完整、整洁,极少存在信息的缺漏,并且几乎所有展现出来的信息都是非常规范化的,极大的减少了前期数据预处理(数据清理和数据整理)的工作量。
本次爬取信息的时候,主要获得了以下信息:
手机销售价格price、手机品牌brand、手机品牌及型号title、月销量month_sales、每款手机淘宝网的售卖商家数num、手机主打功能亮点特点tag_info。
目 的
主要是希望通过淘宝商城实际的手机销售数据来分析各类手机品牌目前在市场的一个销售现状。具体来说,主要针对以下几个问题:
1、手机市场的价格分布;
2、手机市场的月销量分布;
3、不同品牌手机总体的月销量数据是怎么样的(从消费者角度出发考虑);
4、热卖手机品牌(从售卖商家数的角度出发考虑);
5、手机销售市场主打功能卖点亮点分析(词频分析)。技术和工具
本项目主要分为两大部分,第一部分是数据爬取,采用的是使用python编写代码,调用requests库,使用正则表达式进行数据匹配和信息提取。第二部分是数据清洗、数据分析,以 python 编程语言为基础,以及最后本报告的生成。
数据分析部分主要使用pandas作为数据整理和统计分析的工具,matplotlib用于图形的可视化。在进行技能需求分析的时候,使用了jieba作为分词工具包,并使用wordcloud包制作词云。
闲话不多说,下面切入正题。
第一部分:淘宝商城手机销售数据采集
爬虫代码
#PhoneTaobaoData.py #淘宝商城手机数据的采集爬虫code import requests import re import numpy as np def getHTMLText(url): try: r = requests.get(url, timeout=50) r.status_code r.encoding = r.apparent_encoding return r.text except: return "" def parsePage(ilt, html): try: plt = re.findall(r\"price\"\:\"[\d\.]*\", html ) #售价 tlt = re.findall(r\"title\"\:\".*?\", html ) #品牌型号 sal = re.findall(r\"month_sales\"\:\"[\d\.]*\", html ) #月销量 num = re.findall(r\"num\"\:\"[\d\.]*\", html ) #某一手机型号售卖商家数 taginfo = re.findall(r\"tag_info\"\:\[.*?\], html ) #手机卖点亮点 for i in range(len(plt)): price = eval(plt[i].split(:)[1]) title = eval(tlt[i].split(:)[1]) sales = eval(sal[i].split(:)[1]) numbers = eval(num[i].split(:)[1]) points = taginfo[i].split([)[1] ilt.append([price , title , sales , numbers , points]) except: print("") def printGoodsList(ilt): tplt = "{:4}\t{:8}\t{:24}\t{:8}\t{:8}\t{:16}" print(tplt.format("number", "price", "title" , "month_sales" , "num" , "tag_info")) #number:序号 #price:价格 #title:品牌及型号 #month_sales:月销量 #num:该型号手机的淘宝售卖商家数(同一款手机有多少个淘宝商家在售卖) #tag_info:手机卖点(该款新手机有什么特点) count = 0 for g in ilt: count = count + 1 print(tplt.format(count, g[0], g[1],g[2] , g[3] , g[4])) def main(): goods = 手机 depth = 100 start_url = https://s.taobao.com/search?q= + goods infoList = [] for i in range(depth): try: url = start_url + &s= + str(48*i) html = getHTMLText(url) parsePage(infoList, html) np.save("E:/PhoneTaobaoData.npy" , infoList) except: continue printGoodsList(infoList) main()爬取成功后的代码截图
代码爬取开始:

代码爬取结束:

一共爬取了淘宝商城100页数据,共3542条手机销售数据记录。
第二部分:数据分析
淘宝商城手机数据清洗(数据预处理)
数据缺失值处理
import numpy as np import pandas as pd from pandas import Series , DataFrame import matplotlib.pyplot as plt #导入数据,数据清洗 data = pd.read_csv(E:/PhoneProject/PhoneTaobaoData.csv , names = [number,price,brand,title,month_sales,num,tag_info]encoding =gbk) print(data.info()) >>> <class pandas.core.frame.DataFrame> RangeIndex: 3542 entries, 0 to 3541 Data columns (total 7 columns): number 3542 non-null int64 price 3542 non-null int64 brand 3542 non-null object title 3542 non-null object month_sales 3542 non-null int64 num 3542 non-null int64 tag_info 3542 non-null object dtypes: int64(4), object(3) memory usage: 193.8+ KB None >>>可以观察到,爬取的数据整体非常的不错。经过初步清理后,数据集中有效变量为6个,数据记录3542条。各字段的数据完整度非常好,没有任何的缺失值。这对于后面的分析来说是个大大的好消息。
异常值处理
汇总统计
>>> Phone_data.describe() number price month_sales num count 3542.000000 3542.000000 3542.000000 3542.000000 mean 1770.500000 1133.550254 733.944382 18.547431 std 1022.631654 21858.312868 5218.825616 59.737989 min 0.000000 0.000000 0.000000 1.000000 25% 885.250000 119.000000 1.000000 1.000000 50% 1770.500000 239.000000 9.000000 3.000000 75% 2655.750000 534.250000 93.000000 11.000000 max 3541.000000 999099.000000 116869.000000 1020.000000#查找异常值
#画散点图(横轴:价格,纵轴:月销量)
fig = plt.figure() ax = fig.add_subplot(1,1,1) prices = PhoneData["price"] #价格 sales = PhoneData["month_sales"] #月销量 ax.set_title(价格-月销量 散点图) ax.set_xlabel("Price") ax.set_ylabel("month_Sales") plt.plot(prices , sales , "o" ) plt.show()
从上图价格-月销量散点图可以看到,不同型号的手机的月销量主要集中在0-6万部之间,手机销售的最高价格在100万元左右,手机月销量最高的接近12万。从图中可以看出,显然80万元/部以及100万元/部这两条数据属于异常数据。接下来对这些异常数据进行处理。
#处理异常数据
#把价格>10000,或者价格<100元的数据都处理掉 line = len(PhoneData) for i in range(1,line): if(PhoneData[price][i] >10000 or PhoneData[price][i] <100 ): PhoneData[price][i] = 1130 #¥1130元是淘宝网上所有手机的均价 #if(data[month_sales][i]>1000): #data[month_sales][i] = 712 #712是淘宝网上所有手机的平均月销量 Clean_PhoneData = PhoneData print(Clean_PhoneData) fig = plt.figure() ax0 = fig.add_subplot(1,1,1) prices = PhoneData["price"] #价格 sales = PhoneData["month_sales"] #月销量 #ax0.set_title(Preconditioning price-month_sales ScatterDiagram) ax0.set_title(异常数据处理 价格-月销量 散点图) ax0.set_xlabel("Price") ax0.set_ylabel("month_Sales") plt.plot ( prices , sales , "o" ) plt.show()把异常价格>10000,或者价格<100元的数据都处理掉后得到的价格-月销量 散点图。

通过对价格>1万元以及价格<100元的价格异常点的数据处理后得到的数据比较清晰明了。从上图可以看到,超过80%的手机销售价格主要集中在4000元以下,月销量集中在10000台以下。
数据分布分析
#数据分布分析 求最值 计算极差 组距:极差/组数 绘制直方图 #求最大、最小值 pricemax=Clean_PhoneData["price"].max() pricemin = Clean_PhoneData["price"].min() month_salesmax=Clean_PhoneData["month_sales"].max() month_salesmin=Clean_PhoneData["month_sales"].min() #极差 pricerg=pricemax-pricemin month_salesrg=month_salesmax-month_salesmin #组距 pricedst=pricerg/30 month_salesdst=month_salesrg/35 #绘制价格直方图 #npy.arrange(最小,最大,组距) pricesty=np.arange(pricemin,pricemax,pricedst) plt.hist( Clean_PhoneData["price"] , pricesty ) plt.title("价格直方图") plt.show() #绘制月销量数直方图 month_salessty=np.arange(month_salesmin,month_salesmax,month_salesdst) plt.hist(Clean_PhoneData["month_sales"],month_salessty) plt.title("月销量直方图") plt.show()数据可视化


从上面价格直方图以及月销量直方图可以看到,从总体范围上来看,价格直方图以及月销量直方图均服从长尾分布模型。
哪些品牌的手机最受商家追捧?
import numpy as np import pandas as pd from pandas import Series , DataFrame import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from pylab import * mpl.rcParams[font.sans-serif] = [SimHei] mpl.rcParams[axes.unicode_minus] = False data = pd.read_csv(E:/PhoneProject/PhoneTaobaoData.csv , names = [number,price,brand,title,month_sales,num,tag_info] , index_col = "number" , encoding =gbk) datagrouped = data.groupby([brand])[num].sum().sort_values(ascending = False ) datagrouped[:10].plot(kind = barh , title = 哪些品牌的手机最受商家追捧青睐) plt.show()
从上图我们可以看到,淘宝商家最喜欢卖的手机品牌依次是:华为、苹果、小米排前三,魅族、三星、中兴、诺基亚、OPPO、vivo以及酷派。诺基亚排在了第7位,这是让我感到意外的。
哪些品牌的手机最受消费者青睐,进入月销量排行榜的前10名?
import numpy as np import pandas as pd from pandas import Series , DataFrame import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from pylab import * mpl.rcParams[font.sans-serif] = [SimHei] mpl.rcParams[axes.unicode_minus] = False data = pd.read_csv(E:/PhoneProject/PhoneTaobaoData.csv , names = [number,price,brand,title,month_sales,num,tag_info] , index_col = "number" , encoding =gbk) datagrouped = data.groupby([brand])[month_sales].sum().sort_values(ascending = False ) datagrouped[:10].plot(kind = barh , title = 月销量排行榜前10名手机品牌柱状图) plt.show()
哪个品牌的手机最喜欢频出新款,款式最多?
import numpy as np import pandas as pd from pandas import Series , DataFrame import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from pylab import * mpl.rcParams[font.sans-serif] = [SimHei] mpl.rcParams[axes.unicode_minus] = False data = pd.read_csv(E:/PhoneProject/PhoneTaobaoData.csv , names = [number,price,brand,title,month_sales,num,tag_info] , index_col = "number" , encoding =gbk) datagrouped = data.groupby([brand])[brand].count().sort_values(ascending = False ) datagrouped[:10].plot(kind = barh , title = 手机型号数量排行榜前10名手机品牌柱状图) plt.show()从这个图的数据我们可以看到,诺基亚居然排在了最喜欢频出新款的排行榜第1名,手机款式数量最多,超过300款,这数据实在让我怀疑。同时,我们也可以看到,三星、中兴、酷派、联想的月销量虽然不居前三,但是这几个品牌的手机卖的款式特别多。
手机生产商新款手机主打的手机功能是哪些?
import jieba from wordcloud import WordCloud from matplotlib import pyplot as plt text = open(E:/PhoneProject/tag_info.txt , r).read() wcd = WordCloud(font_path = C:/Windows/Fonts/msyh.ttf,width = 800 , height = 400 ,max_font_size=120 , max_words = 85, background_color = white).generate(text) fig = plt.figure(figsize = ( 8 , 4 )) plt.imshow(wcd.recolor( random_state = 3)) plt.axis("off") plt.show()词云关键词显示:
通过词云显示,淘宝手机售卖最喜欢主打的手机功能依次是双卡双待、超长待机、触屏操作、高清大屏、学生机、老人机等关键词。
分析结论
通过上面的分析,我们可以得到的结论有这些:
1、淘宝商城超过80%的手机销售价格price主要集中在4000元以下,月销量month_sales集中在10000台以下。
2、华为、小米以及苹果三个手机品牌不管是从淘宝商家的角度还是从通过月销量看消费者购买数量的角度,这三个品牌的手机都博得了商家和消费者的喜好榜的前3名。
3、从月销量排行榜前10名的直方图我们可以看到,尼凯恩、纽曼两个黑马品牌分别排在月销量的第9和第10名,且这两个品牌都和阿里有关系。
4、诺基亚居然是售卖手机款式最多的品牌,三星、中兴、酷派分别排在第二、三四名,其中三星和中兴的月销量还不错,但是酷派虽然销售的手机款式很多,但是整体销量不是特别的好。
5、双卡双待、超长待机、触屏操作、高清大屏、学生机、老人机是淘宝商家最喜欢主打的手机功能卖点亮点。思考和总结(商业洞见)
淘宝商家端:假如我有朋友想在淘宝上开一个手机店,为了保证能有一个不错的销量,用数据说话,我会给到他以下几点个人建议:
1、推荐的品牌有:小米、华为、苹果。除这三个之外,魅族也是一个不错的可以选择的品牌。
2、价格方面,国产手机品牌,售价在0-4000元之间的款式最为合适。
3、主打功能除了日常所常见的双卡双待、超长待机、触屏操作、高清大屏、学生机、老人机等等功能之外,可以打造或者包装一些新的亮点或卖点,更有个性和特性。特别说明
本次数据分析的局限性:
本次数据源全部采集于淘宝网,供参考,但不具有权威的参考性。