2020python数据分析项目:爬取某宝口红数据&数据分析可视化(二)

项目简述

上文【2020python数据分析项目:爬取某宝口红数据&数据分析可视化(一)】对数据进行了收集、清洗以及从整体的角度进行分析,本文主要从【看重点】 的角度,对不同档次的口红产品进行分析。

【预处理】区分口红档次

从整体数据看,商品价格数据分布从0-8,888都有,如果不区分各个口红产品的档次,必然会导致后续分析的均值、离异值过大,不利于爆品的分析,因此需要先根据实际情况,将口红分为5档。

【方法】通过查阅相关资料以及调查,对口红价格进行合理的价格区分,最后区分结果如下:
【顶级】[>500] 代表:CL/萝卜丁
【超一线】[400-500]代表:TE CPB
【一线】[300-400] 代表:Dior香奈儿阿尼玛 纪梵希娇 YSL
【二线】[200-300] 代表:兰蔻植村秀雅诗兰黛 资生堂
【大众】[<200] 代表:MAC 欧莱雅 美宝莲3CE

1. 顶级口红 价格--销售额分析

【方法】筛选出价格>500的口红产品进行分析,使用qcut方法,保证每个价格区间的商品数量基本相同,计算每个价格区间的销售额,并使用柱形图进行可视化展示,考察贡献最多销售额的顶级口红价格区间。

from pyecharts import options as opts
from pyecharts.charts import Bar


'''选择价格>500的商品'''
df_select_price1 = df[df["price"]>500]

'''价格区间的划定标准为价格的频数,保证每个区间的商品数量基本相同'''
df_select_price1["group"] = pd.qcut(df_select_price1["price"],10)


'''分组计算销售额,并保留为2位小数'''
df_meanSales1 = df_select_price1.groupby(by="group")[["sales"]].mean()

df_meanSales1["sales"] =df_meanSales1["sales"].map(lambda x: x/1)
df_meanSales1["sales"] = round(df_meanSales1["sales"],2)

'''绘制柱形图'''
list_labels1=["(501.999, 538.2]",  "(538.2, 579.0]",    "(579.0, 598.0]",   
        "(598.0, 630.0]",    "(630.0, 668.0]",    "(668.0, 726.0]",   
        "(726.0, 880.0]",   "(880.0, 1029.9]",   "(1029.9, 1388.0]",  "(1388.0, 8888.0]"]


c = (
    Bar()
    .add_xaxis(list_labels1)
    .add_yaxis("",df_meanSales1["sales"].values.tolist())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="各价格区间销售额分布图",subtitle="顶级"),
        datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],
    )
    .render_notebook()
)
c

顶级口红价格销量分布图

【结论】结合图表和数据进行分析可得,顶级档次的口红最挣钱的价位在[880-1029]其次是[726-880],[880-1029]价位的商品主要是各种口红套装;即消费者对口红套装较为青睐;其次[726-880]对应的是高端的单只口红主要是CL/萝卜丁

2. 爆品分析

【方法】爆品即爆款产品,由于目前的数据不存在时间序列,即可以将此处的爆品理解为短时间内贡献巨大销售额的产品。通过箱线图,我们可以很好的考察各个价格区间内销售额明显高于整体的值,即离异值,离异值越多的价格区间,即产生爆品的数量越多。

import matplotlib.pyplot as plt
import seaborn as sns
df_group = df_select_price1.groupby(by="group")

'''取出各分组后的数'''
createVar = locals()
n = 1
for key,value in df_group:
    createVar["df_group"+ str(n)] = df_group.get_group(key)
    n += 1
    
list_labels1=["(501.999, 538.2]",  " ",    "(579.0, 598.0]",   
        " ",    "(630.0, 668.0]",    " ",   
        "(726.0, 880.0]",   " ",   "(1029.9, 1388.0]",  " "]

'''绘制箱线图'''
sns.set_style("white")
plt.figure(figsize=(8,5), dpi=120)
x = (
    df_group1["sales"].values.tolist(),
    df_group2["sales"].values.tolist(),
    df_group3["sales"].values.tolist(),
    df_group4["sales"].values.tolist(),
    df_group5["sales"].values.tolist(),
    df_group6["sales"].values.tolist(),
    df_group7["sales"].values.tolist(),
    df_group8["sales"].values.tolist(),
    df_group9["sales"].values.tolist(),
    df_group10["sales"].values.tolist(),
    )
label = list_labels1
plt.boxplot(x, labels=label, meanline=True, showmeans=True,notch=True)

plt.show()

爆品分析散点图

图中的红色框框选的点即为离异值,可以通过其价格和销售额找到其对应的产品。

'''选择sales>4000000得商品【抽取出异常值】'''
df_sort1 = df_select_price1[df_select_price1["sales"]>4000000].sort_values(by="group").reset_index(drop=True)
df_sort1
离异值产品

【结论】通过箱线图和所筛选的离异值数据分析可得:

  1. 在[726-880],[880-1029]价格区间内具有较多且较高的离异值,说明在此区间更有可能打造爆款商品
  2. 查看对应区间的离异值,在[726-880]最具爆品特性的是“Christian Louboutin女王权杖唇膏 全色cl萝卜丁口红001M 005M”,其次,由于此款针绣文是套装,并不属于高端品牌。
  3. nymy的套装在[880-1029]卖的最好,但是由于也是打包卖,单只价格在500左右。反观[500-538]区间的产品,并没有爆品。因此,对于此区间的商品,使用套装的方式出售可以带来更多的
  4. 顶级档次的口红并没有销售额超过5,000,000的产品

3. 超一线、一线、二线、大众档次口红产品分析

【方法】其他档次的口红的分析方法与顶级档次的口红分析方法相同,只需要替换对应的数据即可,这里不再重复。

4. 各价格爆品综合分析

【方法】对顶级、超一线、一线、二线、大众档次的产品进行爆品分析后,就可以得到给定条件下的所有爆款产品,去除套装数据,并将各爆款绘制成散点图,观察爆款产品特点。

'''整理数据、去除套装产品'''
df_sort = pd.concat([df_sort1,df_sort2,df_sort3,df_sort4,df_sort5])
df_sort = df_sort.reset_index(drop=True)
df_sort = df_sort.drop(index=[1,2]).reset_index(drop=True)
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.commons.utils import JsCode

'''绘制散点图'''
c = (
    Scatter()
    .add_xaxis(df_sort["price"])
    .add_yaxis(
        "",
        [list(z) for z in zip(df_sort["sales"],df_sort["pro_name"] )],
        label_opts=opts.LabelOpts(
            formatter=JsCode(
                "function(params){return params.value[1]}"
            )
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Price-sales"),
        tooltip_opts=opts.TooltipOpts(
            formatter=JsCode(
                "function (params) {return params.name + ' ' + params.value[2];}"
            )
        ),
        visualmap_opts=opts.VisualMapOpts(
            type_="color", max_=150, min_=70, dimension=1
        ),
        xaxis_opts=opts.AxisOpts(
            type_="value", splitline_opts=opts.SplitLineOpts(is_show=True)
        ),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
    .render_notebook()
)
c

爆品分布分析

【结论】根据散点图分析可得:

  1. 爆品主要集中于大众价位的产品,二线以上的口红产品没有销售额超过5,000,000的爆品
  2. 结合热点部分的分析【结合看重点部分得出的结论】
    a. 销售额超过15,000,000的爆品,都为唇釉产品,且都有“哑光”关键字,说明消费者比较青睐于自然巨有哑光功能唇釉产品 【哑光 -- 自然不反光】
    b. 超过5,000,000的爆品出现最多的颜色主要是“奶茶色”,“红棕色”,“(烂)番茄色”

5.后续分析和改进

a.【爆品详情分析】筛选出爆品后,可以对爆品的详情进行分析,包括爬取商品评论进行情感分析等,进一步挖掘近期爆品的特性。
b.【时间序列】可以每天/月爬取对应产品数据,分析其销量、价格等数据根据时间的变化趋势。
c.【占比】对爆款产品的国内外品牌占比、各个品牌爆款占比进行可视化展示


作者:爱学习,也爱女票的于饼喵

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342