CDA数据分析师出品 作者:Mika 数据:真达 后期:泽龙 【导语】:今天我们聊聊火遍全网的螺蛳粉,Python技术部分可以直接看第二部分。 Showmedata,用数据说话 今天我们聊聊螺蛳粉 点击下方视频,先睹为快: 居家隔离的日子里,各类方便速食食品成了许多人的心头爱。特别是螺蛳粉,异军突起,火遍全网,几乎卖到脱销。有的螺蛳粉热销店铺的购买页面还显示,现在下单,预售40天后发货,这是种什么操作? 万万没想到,这些日子发不出货的,除了口罩,还有螺蛳粉。 今天我们就来聊一聊火遍全网的螺蛳粉。 01:hr让吃货们买到断货的 螺蛳粉 螺蛳粉气味腥臭,味道酸辣,被戏称为生化武器。然而吃起来却让人欲罢不能,再加上称为灵魂的酸笋,不禁让人大呼,爱了爱了!就是这个味儿! 那么谁家卖的螺蛳粉最火,最好吃?吃货们都怎么看? 我们搜集整理了淘宝上关于螺蛳粉店铺的数据: 店铺销量排行 可以看到:销量前三的店铺分别是李子柒旗舰店、好欢螺旗舰店、嘻螺会鼎容鲜专卖店。其中李子柒旗舰店的以月销量66万一骑绝尘。紧随其后的是好欢螺月销量57万。第三是嘻螺会21万。 各省螺蛳粉店铺和销量排行 最为螺蛳粉发源地,无论是在店铺数量和商品销量上,广西地区都占据了全国的大部分比重,绝对的王者。 螺蛳粉都卖多少钱? 我们分析了市面上销售螺蛳粉的价格区间,发现一份螺蛳粉一般35包。其中定价在3050元一份的卖得最好,占到全网总销量的59。04。这个价格区间,普遍让人接受,35包的量也很合适。 其次是030元一份的,销量占比27。93,这个价格不仅物美价廉,对于想尝试螺蛳粉的新手都十分友好。 然后是一份售价5080的螺蛳粉,销量占比10。22。这个价位一般都有5包以上,对于螺蛳粉的重度爱好者来说是不错的选择。 买螺蛳粉,大家都看重什么? 从广大螺蛳粉的评价中我们可以看到: 大家的焦点尤其在,螺蛳粉产地要正宗。来自广西,特别是螺蛳粉的发源地柳州。 当然有意思的是,销量最高的李子柒卖的螺蛳粉产地不在广西,而是嘉兴。可能这就是网红强大的带货力吧。 其次包邮也是最关键的。毕竟,为了几块钱运费跟电商卖家磨半天嘴皮子,或者毫不留情地直接pass掉不包邮的店铺,这都是我们的真实写照。 02:hrPython分析 李子柒的螺蛳粉到底有多火? 接着,我们再看到全网螺蛳粉销量之王的李子柒店铺。这次我们用Python来进行分析,先看到结论: 评论时间热度图: 从数据可以看到,螺蛳粉的数据从去年12月2日开始,一直不温不火,然而从3月中下旬开始,购买和评论数量持续走高,如今这个数据还在急剧上升。 消费者关注维度占比: 看来,螺蛳粉的口感(好不好吃)是客户最最最关注的点,占比高达41。45,领先其他类别N个身位。 其他的维度:包装、原料、品牌,而物流和日期则提及较少,看来消费者不是太关注这些角度,或者目前基本满足要求。 关注点细节占比分布: 整体来看,主流评论以好评为主,其中口感、品牌(这个地方其实没有细分)、包装以正面评价占绝对主导。 原料、日期和性价比,负面评价占比分别是10和32和15。 评论分布词云图: 从词云可以看到,螺蛳粉好不好吃是大家关注的焦点。味道口感好吃新鲜度等词都频频出现。 其次李子柒的巨大带货能力也不容小觑,毕竟很多人都是冲着李子柒小姐姐来买的。 具体步骤和代码如下: 一、导入数据和基本处理 导入包 importnumpyasnp importpandasaspd importmatplotlib。pyplotasplt importseabornassns importre 读入数据 dfpd。readexcel(李子柒螺蛳粉评论。xlsx) df。head() 去除重复值 df。dropduplicates(inplaceTrue) df。info() Int64Index:1980entries,0to1979 Datacolumns(total5columns): UserNick1980nonnullobject commenttime1980nonnulldatetime64〔ns〕 content1980nonnullobject auctionSku1980nonnullobject commentdate1980nonnullobject dtypes:datetime64〔ns〕(1),object(4) memoryusage:92。8KB 二、数据分析 时间热度分析 代码: 时间走势图 df〔commenttime〕pd。todatetime(df〔commenttime〕) df〔commentdate〕df〔commenttime〕。dt。date commentnumdf〔commentdate〕。valuecounts()。sortindex() frompyecharts。chartsimportLine frompyechartsimportoptionsasopts 折线图 line1Line(initoptsopts。InitOpts(width1350px,height750px)) line1。addxaxis(commentnum。index。tolist()) line1。addyaxis(热度,commentnum。values。tolist(), areastyleoptsopts。AreaStyleOpts(opacity0。5), labeloptsopts。LabelOpts(isshowFalse)) line1。setglobalopts(titleoptsopts。TitleOpts(title商品评价数量走势图), xaxisoptsopts。AxisOpts(axislabeloptsopts。LabelOpts(rotate30)), toolboxoptsopts。ToolboxOpts(), visualmapoptsopts。VisualMapOpts(max400)) line1。setseriesopts(linestyleoptsopts。LineStyleOpts(width3)) line1。render() 推测2019年12。02上线商品,购买和评论数量持续走高。 三、评论分析 我们从以下几个角度对评论进行分析: 包装 品牌 物流 产品 性价比 defjudgecomment(df,result): 创建一个空数据框 judgespd。DataFrame(np。zeros(13len(df))。reshape(len(df),13), columns〔品牌,物流正面,物流负面,包装正面,包装负面,原料正面, 原料负面,口感正面,口感负面,日期正面,日期负面, 性价比正面,性价比负面〕) foriinrange(len(result)): wordresult〔i〕 李子柒的产品具有强IP属性,基本都是正面评价,这里不统计情绪,只统计提及次数 if李子柒inwordor子柒inwordor小柒inwordor李子七inwordor小七inword: judges。iloc〔i〕〔品牌〕1 先判断是不是物流相关的 if物流inwordor快递inwordor配送inwordor取货inword: 再判断是正面还是负面情感 if好inwordor不错inwordor棒inwordor满意inwordor迅速inword: judges。iloc〔i〕〔物流正面〕1 elif慢inwordor龟速inwordor暴力inwordor差inword: judges。iloc〔i〕〔物流负面〕1 判断是否包装相关 if包装inwordor盒子inwordor袋子inwordor外观inword: if高端inwordor大气inwordor还行inwordor完整inwordor好inwordor 严实inwordor紧inwordor精致inword: judges。iloc〔i〕〔包装正面〕1 elif破inwordor破损inwordor瘪inwordor简陋inword: judges。iloc〔i〕〔包装负面〕1 产品 产品原料是牛肉为主,且评价大多会提到牛肉,因此我们把这个单独拎出来分析 if米粉inwordor汤inwordor配料inwordor腐竹inwordor花生inword: if劲道inwordor多inwordor足inwordor香inwordor才inwordor 脆inwordorniceinword: judges。iloc〔i〕〔原料正面〕1 elif小inwordor少inwordor没inword: judges。iloc〔i〕〔原料负面〕1 口感的情绪 if口味inwordor味道inwordor口感inwordor吃起来inword: if不错inwordor浓鲜inwordor十足inwordor鲜inwordor 可以inwordor喜欢inwordor符合inword: judges。iloc〔i〕〔口感正面〕1 elif不好inwordor不行inwordor不鲜inwordor 太烂inword: judges。iloc〔i〕〔口感负面〕1 口感方面,有些是不需要出现前置词,消费者直接评价好吃难吃的,例如: if难吃inwordor不好吃inword: judges。iloc〔i〕〔口感负面〕1 elif好吃inwordor香inword: judges。iloc〔i〕〔口感正面〕1 日期是不是新鲜 if日期inwordor时间inwordor保质期inword: if新鲜inword: judges。iloc〔i〕〔日期正面〕1 elif久inwordor长inword: judges。iloc〔i〕〔日期负面〕1 elif过期inword: judges。iloc〔i〕〔日期负面〕1 性价比 if划算inwordor便宜inwordor赚了inwordor囤货inwordor超值inwordor 太值inwordor物美价廉inwordor实惠inwordor性价比高inwordor不贵inword: judges。iloc〔i〕〔性价比正面〕1 elif贵inwordor不值inwordor亏了inwordor不划算inwordor不便宜inword: judges。iloc〔i〕〔性价比负面〕1 finalresultpd。concat(〔df,judges〕,axis1) returnfinalresult 得到数据框 judgejudgecomment(df,resultdf。content) judge。head() 结果汇总 rankjudge。iloc〔:,5:〕。sum()。resetindex()。sortvalues(0,ascendingFalse) rank。columns〔分类,提及次数〕 rank〔占比〕rank〔提及次数〕rank〔提及次数〕。sum() rank〔高级分类〕rank〔分类〕。str〔:2〕 rank rank。loc〔0,高级分类〕品牌 rank df。shape (1980,5) 此次评论数据去重之后一共有1980条评论数据,粗略一看,口感和包装、原料占比较高,画个图更细致的看看。 ranknumrank。groupby(高级分类)〔提及次数〕。sum()。sortvalues(ascendingFalse) ranknum 高级分类 口感1511。0 包装695。0 原料602。0 品牌422。0 日期208。0 性价比146。0 物流61。0 Name:提及次数,dtype:float64 datapair〔list(z)forzinzip(ranknum。index,ranknum。values)〕 datapair 〔〔口感,1511。0〕, 〔包装,695。0〕, 〔原料,602。0〕, 〔品牌,422。0〕, 〔日期,208。0〕, 〔性价比,146。0〕, 〔物流,61。0〕〕 frompyecharts。chartsimportPie pie1Pie(initoptsopts。InitOpts(width1350px,height750px)) pie1。add( seriesnamenum, radius〔35,55〕, datapairdatapair, labeloptsopts。LabelOpts( positionoutside, formatter{a{a}}{abg}{hr}{b{b}:}{c}{per{d}}, backgroundcoloreee, bordercoloraaa, borderwidth1, borderradius4, rich{ a:{color:999,lineHeight:22,align:center}, abg:{ backgroundColor:e3e3e3, width:100, align:right, height:22, borderRadius:〔4,4,0,0〕, }, hr:{ borderColor:aaa, width:100, borderWidth:0。5, height:0, }, b:{fontSize:16,lineHeight:33}, per:{ color:eee, backgroundColor:334455, padding:〔2,4〕, borderRadius:2, }, }, ), ) pie1。setglobalopts(legendoptsopts。LegendOpts(posleftleft,postop30,orientvertical), toolboxoptsopts。ToolboxOpts(), titleoptsopts。TitleOpts(title消费者关注占比分布)) pie1。setseriesopts( tooltipoptsopts。TooltipOpts(triggeritem,formatter{a} {b}:{c}({d})) ) pie1。render() 看来,螺蛳粉的口感(好不好吃)是客户最最最关注的点,没有之一,占比高达41。45,领先其他类别N个身位。 包装、原料、品牌,而物流和日期则提及较少,消费者貌似不太关注,或者说目前基本满足要求。 那不同类别正负面评价占比是怎么样的呢? frompyechartsimportoptionsasopts frompyecharts。chartsimportBar frompyecharts。commons。utilsimportJsCode frompyecharts。globalsimportThemeType list2〔 {value:1484。0,percent:1484。0(1484。027。0)}, {value:692。0,percent:692。0(692。03。0)}, {value:539。0,percent:539。0(539。063。0)}, {value:422。0,percent:422。0(422。00)}, {value:142。0,percent:142。0(142。066。0)}, {value:124。0,percent:124。0(124。022。0)}, {value:58。0,percent:58。0(58。03。0)}, 〕 list3〔 {value:27。0,percent:27。0(27。01484。0)}, {value:3。0,percent:3。0(3。0692。0)}, {value:63。0,percent:63。0(63。0539。0)}, {value:0,percent:0(0422。0)}, {value:66。0,percent:66。0(66。0142。0)}, {value:22。0,percent:22。0(22。0124。0)}, {value:3。0,percent:3。0(3。058。0)}, 〕 bar1Bar(initoptsopts。InitOpts(width1350px,height750px,themeThemeType。LIGHT)) bar1。addxaxis(〔口感,包装,原料,品牌,日期,性价比,物流〕) bar1。addyaxis(正面评论,list2,stackstack1,categorygap50) bar1。addyaxis(负面评论,list3,stackstack1,categorygap50) bar1。setglobalopts(titleoptsopts。TitleOpts(title关注点细分占比分布)) bar1。setseriesopts( labeloptsopts。LabelOpts( positionright, formatterJsCode( function(x){returnNumber(x。data。percent100)。toFixed();} ), ) ) bar1。render() importjieba importjieba。analyse txtdf〔content〕。str。cat(sep。) 添加关键词 jieba。addword(李子柒) 读入停用词表 stopwords〔〕 withopen(stopwords。txt,r,encodingutf8)asf: linesf。readlines() forlineinlines: stopwords。append(line。strip()) 添加停用词 stopwords。extend(〔40,hellip,一袋,一包,一个月, 一点,一个多月,第一次,哈哈哈, 螺狮粉,螺蛳〕) 评论字段分词处理 wordnumjieba。analyse。extracttags(txt, topK100, withWeightTrue, allowPOS()) 去停用词 wordnumselected〔〕 foriinwordnum: ifi〔0〕notinstopwords: wordnumselected。append(i) keywordspd。DataFrame(wordnumselected,columns〔words,num〕) keywords。head() frompyecharts。chartsimportWordCloud frompyecharts。globalsimportSymbolType 词云图 word1WordCloud(initoptsopts。InitOpts(width1350px,height750px)) word1。add(,〔zip(keywords。words,keywords。num)〕, wordsizerange〔20,200〕, shapeSymbolType。DIAMOND) word1。setglobalopts(titleoptsopts。TitleOpts(评论分布词云图), toolboxoptsopts。ToolboxOpts()) word1。render() frompyecharts。chartsimportPage pagePage() page。add(pie1,bar1,word1) page。render(评论分析。html) 以上就是关于螺蛳粉的全部分析内容啦。要问为什么螺蛳粉这么臭,还有这么多人爱呢? 其实对吃货们而言,喜欢的就是螺蛳粉又腥又臭又辣的味道,等疫情过去,螺蛳粉店估计也要爆满了。 关注CDA数据分析师公众号 CDA数据分析师 本文出品:CDA数据分析师(ID:cdacdacda)