2020python數(shù)據分析項目:爬取某寶口紅數(shù)據&數(shù)據分析可視化(二)

項目簡述

上文【2020python數(shù)據分析項目:爬取某寶口紅數(shù)據&數(shù)據分析可視化(一)】對數(shù)據進行了收集、清洗以及從整體的角度進行分析,本文主要從【看重點】 的角度,對不同檔次的口紅產品進行分析。

【預處理】區(qū)分口紅檔次

從整體數(shù)據看,商品價格數(shù)據分布從0-8,888都有,如果不區(qū)分各個口紅產品的檔次,必然會導致后續(xù)分析的均值、離異值過大,不利于爆品的分析,因此需要先根據實際情況,將口紅分為5檔。

【方法】通過查閱相關資料以及調查,對口紅價格進行合理的價格區(qū)分,最后區(qū)分結果如下:
【頂級】[>500] 代表:CL/蘿卜丁
【超一線】[400-500]代表:TE CPB
【一線】[300-400] 代表:Dior香奈兒阿尼瑪 紀梵希嬌 YSL
【二線】[200-300] 代表:蘭蔻植村秀雅詩蘭黛 資生堂
【大眾】[<200] 代表:MAC 歐萊雅 美寶蓮3CE

1. 頂級口紅 價格--銷售額分析

【方法】篩選出價格>500的口紅產品進行分析,使用qcut方法,保證每個價格區(qū)間的商品數(shù)量基本相同,計算每個價格區(qū)間的銷售額,并使用柱形圖進行可視化展示,考察貢獻最多銷售額的頂級口紅價格區(qū)間。

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


'''選擇價格>500的商品'''
df_select_price1 = df[df["price"]>500]

'''價格區(qū)間的劃定標準為價格的頻數(shù),保證每個區(qū)間的商品數(shù)量基本相同'''
df_select_price1["group"] = pd.qcut(df_select_price1["price"],10)


'''分組計算銷售額,并保留為2位小數(shù)'''
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="各價格區(qū)間銷售額分布圖",subtitle="頂級"),
        datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],
    )
    .render_notebook()
)
c

頂級口紅價格銷量分布圖

【結論】結合圖表和數(shù)據進行分析可得,頂級檔次的口紅最掙錢的價位在[880-1029]其次是[726-880],[880-1029]價位的商品主要是各種口紅套裝;即消費者對口紅套裝較為青睞;其次[726-880]對應的是高端的單只口紅主要是CL/蘿卜丁

2. 爆品分析

【方法】爆品即爆款產品,由于目前的數(shù)據不存在時間序列,即可以將此處的爆品理解為短時間內貢獻巨大銷售額的產品。通過箱線圖,我們可以很好的考察各個價格區(qū)間內銷售額明顯高于整體的值,即離異值,離異值越多的價格區(qū)間,即產生爆品的數(shù)量越多。

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

'''取出各分組后的數(shù)'''
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
離異值產品

【結論】通過箱線圖和所篩選的離異值數(shù)據分析可得:

  1. 在[726-880],[880-1029]價格區(qū)間內具有較多且較高的離異值,說明在此區(qū)間更有可能打造爆款商品
  2. 查看對應區(qū)間的離異值,在[726-880]最具爆品特性的是“Christian Louboutin女王權杖唇膏 全色cl蘿卜丁口紅001M 005M”,其次,由于此款針繡文是套裝,并不屬于高端品牌。
  3. nymy的套裝在[880-1029]賣的最好,但是由于也是打包賣,單只價格在500左右。反觀[500-538]區(qū)間的產品,并沒有爆品。因此,對于此區(qū)間的商品,使用套裝的方式出售可以帶來更多的
  4. 頂級檔次的口紅并沒有銷售額超過5,000,000的產品

3. 超一線、一線、二線、大眾檔次口紅產品分析

【方法】其他檔次的口紅的分析方法與頂級檔次的口紅分析方法相同,只需要替換對應的數(shù)據即可,這里不再重復。

4. 各價格爆品綜合分析

【方法】對頂級、超一線、一線、二線、大眾檔次的產品進行爆品分析后,就可以得到給定條件下的所有爆款產品,去除套裝數(shù)據,并將各爆款繪制成散點圖,觀察爆款產品特點。

'''整理數(shù)據、去除套裝產品'''
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的爆品出現(xiàn)最多的顏色主要是“奶茶色”,“紅棕色”,“(爛)番茄色”

5.后續(xù)分析和改進

a.【爆品詳情分析】篩選出爆品后,可以對爆品的詳情進行分析,包括爬取商品評論進行情感分析等,進一步挖掘近期爆品的特性。
b.【時間序列】可以每天/月爬取對應產品數(shù)據,分析其銷量、價格等數(shù)據根據時間的變化趨勢。
c.【占比】對爆款產品的國內外品牌占比、各個品牌爆款占比進行可視化展示


作者:愛學習,也愛女票的于餅喵

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容