CDA数据分析师出品:米卡、泽隆数据:振达后期:泽隆让你爱不释手的乐高,请看第四部Python技术部分。给我数据,用数据说话!六一儿童节到了,不仅是孩子,还有很多不想长大的大人。但是,儿童游乐场太尴尬,无法与孩子们竞争,幼儿园也没有他们的位置。这个时候,玩具可能是最不能让成年人上瘾的东西了。据去年天猫双11统计:在双11玩具/婴童/拼图/积木品牌TOP20榜单中,玩具领域,乐高排名第一,占据1/5的市场份额,销量超过1138万元,销量14712件,在玩具领域当之无愧的龙头老大。今天我们就用数据来聊一聊深受小朋友和大人喜爱的乐高积木。01.老少皆宜。大IP联名,玩具还能这么玩?!1932年,乐高公司在丹麦成立。商标“LEGO”来自丹麦语“LEgGOdt”,意思是“玩得开心”。10年前,乐高是家庭标准的化身。小时候拥有乐高玩具应该是很多人的梦想,但是长大后才发现拥有乐高玩具也是一个梦想。多少人疫情期间想去淘宝买乐高玩具,也来挑战千年隼75192,证明自己不再手残。国外的乐高狂热者用乐高打造了一辆会开车的跑车,而且它真的可以以每小时15公里的速度行驶。这也是人类创造力的体现。乐高本身就提倡自由拼装,玩好。创造力是他们的核心,它证明了乐高从儿童玩具到创造力监视器的演变。今天的乐高就像玩具界的至尊。时不时出一套联名款。就算你不是乐高粉,也忍不住赶紧送上钱包。之前,乐高和暴雪合作推出了《乐高守望先锋系列》。《乐高星球大战系列》,至今全球销量已超过2000万套。其中,“豪华千年隼号”被称为“乐高史上最大的一套”。从DC的蝙蝠侠到漫威的钢铁侠,热门电影的热度“可蹭”。如果你是《哈利波特》的粉丝,等不及猫头鹰寄来录取通知书了?没问题,乐高让您可以直接在霍格沃茨上学。02.玩乐高的人是谁?那么他们是谁在玩乐高呢?我们使用Python获取了《乐高中国》最新3条微博(发布于5.06、5.08、5.15)的评论和粉丝信息,并分析了粉丝画像,共计4815条数据。粉丝性别比例首先来看乐高中国微博粉丝性别比例。从数据中我们可以看出,女粉丝远超男粉丝,占比65.23%,男粉丝占比34.77%。谁喜欢玩乐高?从图中可以看出,北京、上海、广州位列前三,海外粉丝也不少,排名第四。之后,江苏和山东分别排名第五和第六。粉丝年龄分布为18-25岁,占比38.69%,其次是25-30岁,占比24.01%,30-40岁占比19.97%。总的来说,中国的乐高迷都比较年轻,既有喜欢玩乐高的年轻玩家,也有热衷于给孩子买乐高的年轻父母。在微博评论词云下方,我们看到“乐高中国”微博下的评论词云,可以看到“乐高”是被提及最多的。同时,《孙悟空》、《忍者神龟》等都是被提及最多的机型。03.哪款乐高卖得最好?接下来,我们使用Python进一步分析乐高在天猫和淘宝上的数据。我们收集整理了乐高在淘宝上的商品数据,共有4404条商品信息。而天猫乐高旗舰店共有392条数据。乐高销量TOP10店铺先看淘宝全网乐高销量店铺排名。不用说,乐高官方旗舰店是第一名,其次是天猫超市的第二名。乐高产地排名TOP10乐高产地,可以看出广东和上海是大头,分列第一和第二。北京排名第三。乐高在不同价位段的定价如何?我们可以看到0-50元的乐高产品最多,达到了895块。其次,100-200元的也不少,以701件排名第二。1000多块钱的老玩家钱最少,260块。不同价格区间的销售在这里比较有意思。1000元以上的销售额占比32.24%,确实是人民币玩家的特别选择。其次,单价在500-1000元的商品销售额占比15.91%。其次是较为实惠的100-200元,销售额占比15.76%。淘宝乐高产品标题词云下面是淘宝乐高相关标题的词云。“乐高”、“玩具”、“积木”是提及频率最高的关键词。同时,“拼图”、“系列”、“正品”等词也是标题中的常用词。让我们仔细看看哪些乐高产品卖得最好。乐高旗舰店产品销量TOP10让我们看看乐高旗舰店的数据:我们可以看到孙悟空的黄金机甲以4765件的月销量位居榜首。第二名是作为成人礼物收藏的R赛车模型,月销量2750辆。然后云霸孙悟空孙悟空排名第三,月销量达到2453件。不同价位段的商品数量从商品价位段来看,可以看到数量最多的是0-50元的平价,一共2082个商品,远高于其他价位段。其次是50-100元的495款。不同价位段的销量最后,我们看到不同价位段的销量:这个和淘宝全网的数据不一样。销售占比最高的产品为0-50元,占比49.21%。其次是50-100元,占比16.13%。1000元以上的销售额占比最少,仅为2.94%。这也说明,在购买价值1000元以上的收藏品时,人们更倾向于从其他渠道购买,而非官方旗舰店。乐高旗舰店产品标题词云我们来看看乐高旗舰店产品标题的特点。可以看出,标题中经常提到“积木”、“玩具”、“XX系列”。同时,“礼物”、“创意”、“拼图”、“收藏品”等也时常出现。04.带你用Python分析乐高淘宝数据我们用Python获取了淘宝上的乐高商品数据、乐高旗舰店门店商品销售数据、微博乐高中国评论和粉丝数据,并进行了数据分析和分析。这里展示了淘宝商品分析的部分代码。按照常规的数据分析流程:01数据读入首先,导入需要的库,读入采集到的数据集。其中pandas用于数据整理,jieba用于分词,pyecharts和stylecloud用于绘制可视化图形。importpackageimportpandasaspdimporttimeimportjiebafrompyecharts.chartsimportBar,Line,Pie,Map,Pagefrompyechartsimportoptionsasoptsfrompyecharts.globalsimportSymbolTypeimportstylecloud得到的数据集如下:readdatadf_tb=pd.read_excel('../data/乐高淘宝data.xlsx')df_tb.head()查看dataframe的大小,可以看到总共有4403个样本。df_tb.info()?RangeIndex:?4404?entries,?0?to?4403Data?columns?(total?5?columns):goods_name??????4404?non-null?objectshop_name???????4404?non-null?objectprice???????????4404?non-null?float64purchase_num????4404?non-nullobjectlocation4404non-nullobjectdtypes:float64(1),object(4)memoryusage:172.1+KB02数据处理这里我们对每个字段进行如下处理,方便后续的数据分析。去重后共有3411个样本:去除重复值goods_name:暂不处理shop_name:暂不处理price:暂不处理purchase_num:提取人数计算sales=price*purchase_numlocation:提取省份去除重复值df_tb.drop_duplicates(inplace=True)删除购买数量为Emptyrecorddf_tb=df_tb[df_tb['purchase_num'].str.contains('Pandaspays')]resetindexdf_tb=df_tb.reset_index(drop=True)df_tb.info()RangeIndex:3411entries,0to3410Datacolumns(total5columns):goods_name3411non-nullobjectshop_name3411non-nullobjectprice3411non-nullfloat64purchase_num3411non-nullobjectlocation3411non-nullobjectdtypes:float64(1),object(4)内存使用:133.3+KBpurchase_numprocessingdf_tb['purchase_num']=df_tb['purchase_num'].str.extract('(\d+)').astype('int')计算销售额df_tb['sales_volume']=df_tb['price']*df_tb['purchase_num']locationdf_tb['province']=df_tb['location'].str.split('').str[0]df_tb.head()03数据可视化数据可视化部分主要对以下信息进行归纳和可视化分析。分析维度及图形如下:乐高销量排行榜top10门店-柱状图乐高产区排行榜top10-柱状图乐高产区国内销量分布-地图价格分布-饼图不同价格区间销售业绩-饼图产品标题词云图-词云图乐高销量排行榜Top10淘宝店铺-条形图shop_top10=df_tb.groupby('shop_name')['purchase_num'].sum().sort_values(ascending=False).head(10)barbar1=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar1.add_xaxis(shop_top10.index.tolist())bar1.add_yaxis('',shop_top10.values.tolist())bar1.set_global_opts(title_opts=opts.TitleOpts(title='乐高销量排名Top10淘宝店'),xaxis_opts=opts.AxisOpts(=axislabel_opts.LabelOpts(rotate=-15)),visualmap_opts=opts.VisualMapOpts(max_=28669))bar1.render()乐高店产区排名top10province_top10=df_tb.province.value_counts()[:10]bar2=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar2.add_xaxis(province_top10.index.tolist())bar2.add_yaxis('',province_top10.values.tolist())bar2.set_global_opts(title_opts=opts.TitleOpts(title='乐高商店生产数量排名top10'),visualmap_opts=opts.VisualMapOpts(max_=1000))bar2.render()国内各省乐高销量分布图province_num=df_tb.groupby('province')['purchase_num'].sum().sort_values(ascending=False)Mapmap1=Map(init_opts=opts.InitOpts(width='1350px',height='750px'))map1.add("",[list(z)forzinzip(province_num.index.tolist(),province_num.values.tolist()],maptype='中国)map1.set_global_opts(title_opts=opts.titleopts(title='国内国内国内产地产地乐高销量图'),visualmap_opts=opts.visualmapopts(max_=172277),Map1.render(Max_=172277)天猫乐高价格分配盒cut_bins=[0,50,100,200,300,500,1000,8888]cut_labels=['0~50元','50~100元','100~200元','200~300元','300~500元','500~1000元','1000元以上']price_cut=pd.cut(df_tb['price'],bins=cut_bins,labels=cut_labels)price_num=price_cut.value_counts()piebar3=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar3.add_xaxis(['0~50元','50~100元','100~200元','200~300元','300~500元','500~1000元','1000元以上'])bar3.add_yaxis('',[895,486,701,288,370,411,260])bar3.set_global_opts(title_opts=opts.TitleOpts(title='不同商品数量priceranges'),visualmap_opts=opts.VisualMapOpts(max_=900))bar3.render()不同价格区间销售的整体表现添加列df_tb['price_cut']=price_cutcut_purchase=df_tb.groupby('price_cut')['sales_volume'].sum()数据对data_pair=[list(z)forzinzip(cut_purchase.index.tolist(),cut_purchase.values.tolist())]绘制饼图pie1=Pie(init_opts=opts.InitOpts(width='1350px',height='750px'))pie1.add('',data_pair,radius=['35%','60%'])pie1.set_global_opts(title_opts=opts.TitleOpts(title='不同价格区间的整体销售业绩'),legend_opts=opts.LegendOpts(orient='vertical',pos_top='15%',pos_left='2%'))pie1.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%"))pie1.set_colors(['#EF9050','#3B7BA9','#6FB27C','#FFAF34','#D8BFD8','#00BFFF','#7FFFAA'])pie1.render()商品标题词云图defget_cut_words(content_series):"""功能:传入Seires,得到分词后的结果,返回一个字符串"""#读入stop_words列表stop_words=[]#读入stop_words文件withopen(r"stop_words.txt",'r',encoding='utf-8')asf:lines=f.readlines()forlineinlines:stop_words.append(line.strip())#添加关键字my_words=['Lego','悟空小子','大粒子','小粒子']foriinmy_words:jieba.add_word(i)#分词word_num=jieba.lcut(content_series.str.cat(sep='.'),cut_all=False)#条件过滤器word_num_selected=[iforiinword_numifinotinstop_wordsandlen(i)>=2]return''.join(word_num_selected)generateword_num_selectedstrtext=get_cut_words(content_series[=df_'goods_name'])绘制词云图stylecloud.gen_styleCloud(text,#Collocations=FALSE,FONT_PATH=R'C:\Windows\Msyh.ttc',#计算机字体路径icon_nay,#Drawingshapesize=768,#Drawingsizeoutput_name='淘宝乐高标题词云图.png'#输出png文件)