利用 python 对 shopee TW站 八大品类商品进行数据分析

目录

  1. 数据集概要

  2. 数据分析总结

    1. 商品数量占比来看

    2. 商品价格和销量分布来看

    3. 商品价格和销量峰值来看

  3. 预览数据

  4. 数据统计分析

  5. 数据可视化

    1. 八大品类的商品数量占比
    2. 八大品类的商品价格&销量分布
    3. 八大品类的商品价格&销量峰值

数据集概要

这次数据集的基本信息:

  • 数据集大小:2473条

  • 平台: Shopee_TW

  • 品类:美妝保健,居家生活,女生配件,寵物,女鞋,男鞋,女生包包-精品,男生包包與配件

  • 筛选标准:月销量超过500的商品

  • 汇率:1 台币 = 0.2174 RMB

数据集来源:shopee_tw_no_limit_price.csv

数据分析总结

美妝保健,居家生活,女生配件,寵物,女鞋,男鞋,女生包包-精品,男生包包與配件这八大品类中,月销量超过500的商品中,

商品数量占比来看

居家生活和美妝保健这两大品类占大多数,占比分别是 43.43%, 29.68%,其中居家生活最多,有1074条商品数据,而女鞋和男鞋数量占最少数,分别是 0.73%,0.28%,其中男鞋最少,仅有7条商品数据。

  • 针对居家生活和美妝保健这两大品类进行小类分析

    • 居家生活小类中日用品和收納占比较高,分别是 27.19%, 13.59%,其中日用品最多:292条商品数据。

    • 美妝保健小类中開架流行清潔保養和私密清潔保養占比较高,分别是18.26%, 14.03%,其中開架流行清潔保養最多:134条商品数据。

商品价格和销量分布来看

这八大品类整体价格分布在0-200 元之间,销量分布在 500-10000 件之间

  • 针对集中区域(即价格0-200元之间,销量500-10000件之间)进行分析,即美妝保健-居家生活-女生配件-寵物四个品类,其他品类由于数据过少,不做分析。

    • 美妝保健:价格集中在 0-30 元之间,销量集中在 500-2000 件之间

    • 居家生活:价格集中在 0-60 元之间,销量集中在 500-4000 件之间

    • 女生配件:价格集中在 0-10 元之间,销量集中在 500-2000 件之间

    • 寵物:价格集中在 0-20 元之间,销量集中在 500-2000 件之间

商品价格和销量峰值来看

这八大品类最高价格和最高销量,最好起量的品类是美妝保健、女生配件和居家生活,最好起价的是美妝保健

  • 美妝保健: 最高价格 984.822 元,最高销量 54007 件
  • 居家生活: 最高价格 302.18 元,最高销量 47014 件
  • 女生配件: 最高价格 65 元,最高销量 54403 件
  • 寵物: 最高价格 293.49 元,最高销量 15550 件
  • 女鞋: 最高价格 195.66 元,最高销量 1910 件
  • 男鞋: 最高价格 203.26 元,最高销量 74518 件
  • 女生包包-精品: 最高价格 71.30 元,最高销量 1974 件
  • 男生包包與配件: 最高价格 108.7 元,最高销量 3896 件

** 其中,男鞋最高销量为 74518 件,该数据似乎异常。经核实,该条商品数据确实无效。 商品链接


预览数据

预览数据集前10行数据

包括商品的品类,小类,商品名称,价格信息,价格低点,价格高点,月销量,商品链接,商品主图链接共 9 个字段

In [1]:
import numpy as np
import pandas as pd

data_file = 'shopee_tw_no_limit_price.csv'
data = pd.read_csv(data_file)
data.head(10)
Out[1]:
category main class item name price range price_min price_max monthly sales item url item picture
0 美妝保健 開架流行清潔保養 【明洞妞】?全館699免運?韓國Wonjin Effect 原辰保濕面膜 30g 保濕面膜 ... $25 25.0 25.0 13883 https://shopee.tw/【明洞妞】?全館699免運?韓國Wonjin-Effec... https://cf.shopee.tw/file/0113811cd229ae8abefa...
1 美妝保健 開架流行清潔保養 [現貨] 玩美日記面膜水絲布面膜(1片入/25ml) 多款供選 24H出貨 台灣現貨 【小麥... $8 8.0 8.0 12052 https://shopee.tw/-現貨-玩美日記面膜水絲布面膜(1片入-25ml)-多款... https://cf.shopee.tw/file/1beafca3faef69b9d42f...
2 美妝保健 開架流行清潔保養 OK萊爾富可寄★美保★Mi★極潤保濕美肌天絲面膜~EGF馬油.玻尿酸.雪肌妍.金箔 超導黃金... $10 - $15 10.0 15.0 13498 https://shopee.tw/OK萊爾富可寄★美保★Mi★極潤保濕美肌天絲面膜~EGF... https://cf.shopee.tw/file/57b1854c7de538cb17ce...
3 美妝保健 開架流行清潔保養 【梨大小姐】新款上架 原辰透明質酸安瓶補水面膜 綠吊瓶面膜 炸彈三部曲 植物細胞 面膜 WO... $25 - $45 25.0 45.0 4795 https://shopee.tw/【梨大小姐】新款上架-原辰透明質酸安瓶補水面膜-綠吊瓶面... https://cf.shopee.tw/file/82576983fa7946d79ff6...
4 美妝保健 開架流行清潔保養 霓淨思面膜 Neogence 霓淨思面膜N3 神經醯胺熊果素膠原蛋白杏仁酸多胜肽冰河醣蛋白角... $8 - $14 8.0 14.0 6635 https://shopee.tw/霓淨思面膜-Neogence-霓淨思面膜N3-神經醯胺熊... https://cf.shopee.tw/file/c29221724bcbd5bbbdac...
5 美妝保健 開架流行清潔保養 【DDT】 JM solution 水光蜂蜜面膜 蠶絲面膜 珍珠 補水保濕 jm面膜 JMs... $25 25.0 25.0 3515 https://shopee.tw/【DDT】-JM-solution-水光蜂蜜面膜-蠶絲面... https://cf.shopee.tw/file/1f09b045e8fee342f593...
6 美妝保健 開架流行清潔保養 【DDT正品選我】 原辰面膜 綠吊瓶面膜 安瓶補水面膜 補水面膜 Wonjin Effect... $25 25.0 25.0 2771 https://shopee.tw/【DDT正品選我】-原辰面膜-綠吊瓶面膜-安瓶補水面膜-... https://cf.shopee.tw/file/9b32fc8c03cb06af3bfd...
7 美妝保健 開架流行清潔保養 ?黑面膜下單一特價? 提提研 TT面膜 黑面膜 備長炭 奢華保濕金箔 浸潤補水保濕 激光注白... $30 - $35 30.0 35.0 3368 https://shopee.tw/?黑面膜下單一特價?-提提研-TT面膜-黑面膜-備長炭-... https://cf.shopee.tw/file/54c391ec6f21cb96715f...
8 美妝保健 開架流行清潔保養 RANESS 草本淨痘膏?現貨供應免運 $570 570.0 570.0 2473 https://shopee.tw/RANESS-草本淨痘膏?現貨供應免運-i.409179... https://cf.shopee.tw/file/265e15536e6ea4eaef67...
9 美妝保健 開架流行清潔保養 【明洞妞】韓國Be Balance 小綠人肌膚調理修復ALA超纖維紙面膜 保濕面膜 協助抗痘... $84 - $949 84.0 949.0 2573 https://shopee.tw/【明洞妞】韓國Be-Balance-小綠人肌膚調理修復A... https://cf.shopee.tw/file/df24248395de4a74ead1...

注意

  • price range:商品价格区间
  • 如果商品无价格区间,价格低点 = 价格高点,(price_min 为价格低点, price_max 为价格高点)
回到目录

数据统计分析

In [44]:
import numpy as np
import pandas as pd
from PIL import Image

currency_rate = 0.2174

print('\n---------------数据集统计分析------------------\n')

fields = data.columns.tolist()
print('数据集来源:{}'.format(data_file))
print('正在统计分析数据集......')
print('数据集字段: {}'.format(fields))
category_name = data['category'].unique()
print('数据集大分类: {}'.format(category_name ))
print('数据集小分类: {}'.format(data['main class'].unique()))
data_section = data[['category','main class','price_max','monthly sales']]
data_name = ['价格','月销量','商品数量','最高销量','小分类']
var_name = ['beauty','houseware','girlaccessory','pets','womenshoes','menshoes','womenbags','menbags']

print('\n---------------类别统计分析-------------------\n')

createVar = locals()
for i in range(len(category_name)):
    print('正在统计{}的数据: '.format(category_name[i]),'、'.join(data_name))
    createVar[var_name[i]] = data_section[data_section['category'] == category_name[i]]
    createVar[var_name[i]+'_pricelist']= createVar[var_name[i]]['price_max']* currency_rate
    createVar[var_name[i]+'_saleslist']= createVar[var_name[i]]['monthly sales']
    createVar[var_name[i]+'_num']= createVar[var_name[i]].count()
    createVar[var_name[i]+'_salesmax']=  max(createVar[var_name[i]+'_saleslist'])
    createVar[var_name[i]+'_class']=  createVar[var_name[i]]['main class'].unique()
    createVar[var_name[i]+'_class_num']= [len(createVar[var_name[i]][createVar[var_name[i]]['main class'] == a]) for a in createVar[var_name[i]+'_class']]
    createVar[var_name[i]+'_price_select'] = (data_section[(data_section['category'] == category_name[i]) & (data_section['price_max']*currency_rate<200)& (data_section['monthly sales']<10000)])['price_max']*currency_rate
    createVar[var_name[i]+'_sales_select'] = (data_section[(data_section['category'] == category_name[i]) & (data_section['price_max']*currency_rate<200)& (data_section['monthly sales']<10000)])['monthly sales']
---------------数据集统计分析------------------

数据集来源:shopee_tw_no_limit_price.csv
正在统计分析数据集......
数据集字段: ['category', 'main class', 'item name', 'price range', 'price_min', 'price_max', 'monthly sales', 'item url', 'item picture']
数据集大分类: ['美妝保健' '居家生活' '女生配件' '寵物' '女鞋' '男鞋' '女生包包-精品' '男生包包與配件']
数据集小分类: ['開架流行清潔保養' '開架流行彩妝' '專櫃清潔保養' '專櫃彩妝' '醫美清潔保養' '美髮護理' '身體清潔、保養' '香水、香氛'
 '手足保養、美甲' '保健食品、營養品' '私密清潔保養' '美容工具' '男士保養' '其他' '餐廚' '收納' '傢俱' '寢具'
 '五金修繕' '浴室' '日用品' '水壺、杯子' '居家裝飾' '居家香氛' '文具' '園藝植作' '燈具' '居安防護' '電動工具'
 '襪子' '帽子' '髮飾' '項鍊' '手環' '圍巾、手套' '耳環' '眼鏡' '手錶' '吊飾' '皮帶-腰帶' '外出用品'
 '寵物零食' '貓飼料' '狗飼料' '其他寵物食品' '寵物用品' '寵物玩具' '水族相關' '鳥類相關' '鼠兔相關' '涼鞋、拖鞋'
 '休閒鞋、帆布鞋' '鞋材用品' '後背包' '手提-托特包' '皮夾' '帆布包' '斜背包' '錢包、皮件' '側背-斜背包' '飾品']

---------------类别统计分析-------------------

正在统计美妝保健的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计居家生活的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计女生配件的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计寵物的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计女鞋的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计男鞋的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计女生包包-精品的数据:  价格、月销量、商品数量、最高销量、小分类
正在统计男生包包與配件的数据:  价格、月销量、商品数量、最高销量、小分类

数据可视化

八大品类的商品数量占比

In [27]:
from pyecharts import Pie
from pyecharts import online
online()

name = category_name
value = [beauty_num,houseware_num,girlaccessory_num,pets_num,womenshoes_num,menshoes_num,womenbags_num,menbags_num]
pie = Pie('八大品类占比',title_pos='center',width='900')
pie.add('商品数量',name,value,radius=[40, 70],label_text_color=None,is_label_show=True,legend_orient="vertical",legend_pos="left")

pie
Out[27]:
In [28]:
from pyecharts import WordCloud

wordcloud = WordCloud(width = 900,height = 300)
wordcloud.add('八大品类的商品数量占比',name,value,word_size_range = [20,60], shape='pentagon')
wordcloud
Out[28]:

美妝保健,居家生活,女生配件,寵物,女鞋,男鞋,女生包包-精品,男生包包與配件八大品类中月销量超过500的商品

  • 居家生活和美妝保健占多数,分别是 43.43%, 29.68%,其中居家生活最多:1074条
  • 女鞋和男鞋数量占少数,分别是 0.73%,0.28%,其中男鞋最少:7条
回到目录

下面主要分析居家生活和美妝保健中的小类

居家生活品类分析

In [29]:
from pyecharts import Pie

pie = Pie('居家生活',title_pos='center',width='900')
pie.add('商品数量',houseware_class,houseware_class_num,radius=[40, 70],label_text_color=None,is_label_show=True,legend_orient="vertical",legend_pos="Left")
pie
Out[29]:
In [31]:
from pyecharts import WordCloud

wordcloud = WordCloud(width = 900,height = 300)
wordcloud.add('',houseware_class,houseware_class_num,word_size_range = [20,60], shape='pentagon')
wordcloud
Out[31]:

居家生活:餐廚,收納,傢俱,寢具,五金修繕,浴室,日用品,水壺、杯子,居家裝飾,居家香氛,文具,園藝植作,燈具,居安防護,其他,電動工具

其中:日用品,收納占比较高,分别是 27.19%, 13.59%,其中日用品最多:292条

回到目录

美妝保健品类分析

In [32]:
from pyecharts import Pie

pie = Pie('美妝保健',title_pos='center',width='900')
pie.add('商品数量',beauty_class,beauty_class_num,radius=[40, 70],label_text_color=None,is_label_show=True,legend_orient="vertical",legend_pos="Left")
pie
Out[32]:
In [33]:
from pyecharts import WordCloud

wordcloud = WordCloud(width = 900,height = 400)
wordcloud.add('',beauty_class,beauty_class_num,word_size_range = [20,60], shape='diamond')
wordcloud
Out[33]:

美妝保健包括:開架流行清潔保養,開架流行彩妝,專櫃清潔保養,專櫃彩妝,醫美清潔保養,美髮護理,身體清潔、保養,香水、香氛,手足保養、美甲,保健食品、營養品,私密清潔保養,美容工具,男士保養,其他

其中:開架流行清潔保養,私密清潔保養占比较高,分别是18.26%, 14.03%,其中開架流行清潔保養最多:134条

回到目录

八大品类的商品价格&销量分布

价格&销量分布

In [34]:
from pyecharts import Scatter

scatter = Scatter('价格&销量分布','八大品类',width='900')

for i in range(len(category_name)):
    scatter.add(category_name[i],createVar[var_name[i]+'_pricelist'],createVar[var_name[i]+'_saleslist'],xaxis_name ='price (rmb)',yaxis_name = 'sales',yaxis_name_gap=50,legend_top='7%',yaxis_min=500)

scatter
Out[34]:

八大品类

  • 价格集中在 0-200 元之间
  • 销量集中在 500-10000 件之间

针对集中区域进行分析

由于部分品类的数据过少,下面对美妝保健-居家生活-女生配件-寵物四个品类进行分析

  • 价格低于 200 元
  • 销量低于 10000 件
In [45]:
from pyecharts import Timeline

createScat = locals()
for i in range(len(category_name))[:4]:
    createScat['scatter_'+str(i)] = Scatter('集中区域的价格&销量分布: {}'.format(category_name[i]),'美妝保健-居家生活-女生配件-寵物',width='900')
    createScat['scatter_'+str(i)].add(category_name[i],createVar[var_name[i]+'_price_select'],createVar[var_name[i]+'_sales_select'],yaxis_name ='sales',xaxis_name = 'price (rmb)',yaxis_name_gap=50,xaxis_name_gap=40,yaxis_min=500,legend_top='7%',)
timeline = Timeline(is_auto_play=True, timeline_bottom=-5)
for i in range(len(category_name))[:4]:
    timeline.add(createScat['scatter_'+str(i)],'{}'.format(category_name[i]))
timeline
Out[45]:

由上图可知

  • 美妝保健
    • 价格集中在 0-30 元之间
    • 销量集中在 500-2000 件之间
  • 居家生活
    • 价格集中在 0-60 元之间
    • 销量集中在 500-4000 件之间
  • 女生配件
    • 价格集中在 0-10 元之间
    • 销量集中在 500-2000 件之间
  • 寵物
    • 价格集中在 0-20 元之间
    • 销量集中在 500-2000 件之间
回到目录

八大品类的商品价格&销量峰值

价格&销量峰值

In [353]:
from pyecharts import Boxplot,Grid

boxplot_1 = Boxplot('价格峰值')
x_axis_1 = data['category'].unique()
y_axis_1 = [createVar[var_name[i]+'_pricelist'] for i in range(len(category_name))]
boxplot_1.add("价格", x_axis_1, boxplot.prepare_data(y_axis_1),xaxis_rotate = 30,legend_pos='20%')

boxplot_2 = Boxplot('销量峰值',title_pos='45%')
x_axis_2 = data['category'].unique()
y_axis_2 = [createVar[var_name[i]+'_saleslist'] for i in range(len(category_name))]
boxplot_2.add("销量", x_axis_2, boxplot.prepare_data(y_axis_2),xaxis_rotate = 30,legend_pos ='70%')

num = 0
for i in range(len(boxplot.prepare_data(y_axis_1))):
    print(x_axis_1[num])
    print("价格 --- min 最小值:{0[0]} / Q1下四分位数:{0[1]} / median(or Q2)中位数:{0[2]} / Q3上四分位数:{0[3]} / max最大值:{0[4]}".format(boxplot.prepare_data(y_axis_1)[i],x_axis_1))
    print("销量 --- min 最小值:{0[0]} / Q1下四分位数:{0[1]} / median(or Q2)中位数:{0[2]} / Q3上四分位数:{0[3]} / max最大值:{0[4]}".format(boxplot.prepare_data(y_axis_2)[i],x_axis_2))
    num += 1

grid = Grid(width=990)
grid.add(boxplot_1,grid_right='53%')
grid.add(boxplot_2,grid_left='53%')
grid
美妝保健
价格 --- min 最小值:0.2174 / Q1下四分位数:4.5654 / median(or Q2)中位数:9.022100000000002 / Q3上四分位数:41.0886 / max最大值:984.822
销量 --- min 最小值:502 / Q1下四分位数:639.75 / median(or Q2)中位数:858.5 / Q3上四分位数:1525.25 / max最大值:54007
居家生活
价格 --- min 最小值:0.2174 / Q1下四分位数:1.9566000000000001 / median(or Q2)中位数:6.9568 / Q3上四分位数:19.3486 / max最大值:302.18600000000004
销量 --- min 最小值:501 / Q1下四分位数:678.0 / median(or Q2)中位数:1018.5 / Q3上四分位数:1798.0 / max最大值:47014
女生配件
价格 --- min 最小值:0.2174 / Q1下四分位数:0.70655 / median(or Q2)中位数:2.6088 / Q3上四分位数:8.4786 / max最大值:65.0026
销量 --- min 最小值:502 / Q1下四分位数:674.75 / median(or Q2)中位数:980.5 / Q3上四分位数:1759.0 / max最大值:54403
寵物
价格 --- min 最小值:0.2174 / Q1下四分位数:3.4784 / median(or Q2)中位数:6.9568 / Q3上四分位数:15.218 / max最大值:293.49
销量 --- min 最小值:501 / Q1下四分位数:656 / median(or Q2)中位数:874 / Q3上四分位数:1445 / max最大值:15550
女鞋
价格 --- min 最小值:0.6522 / Q1下四分位数:14.131 / median(or Q2)中位数:40.21900000000001 / Q3上四分位数:99.73225000000001 / max最大值:195.66
销量 --- min 最小值:501 / Q1下四分位数:642.75 / median(or Q2)中位数:694.0 / Q3上四分位数:878.5 / max最大值:1910
男鞋
价格 --- min 最小值:0.2174 / Q1下四分位数:12.826600000000001 / median(or Q2)中位数:32.61 / Q3上四分位数:86.74260000000001 / max最大值:203.269
销量 --- min 最小值:587 / Q1下四分位数:744 / median(or Q2)中位数:911 / Q3上四分位数:1250 / max最大值:74518
女生包包-精品
价格 --- min 最小值:1.9566000000000001 / Q1下四分位数:2.8262 / median(or Q2)中位数:9.1308 / Q3上四分位数:31.0882 / max最大值:71.30720000000001
销量 --- min 最小值:501 / Q1下四分位数:542 / median(or Q2)中位数:715 / Q3上四分位数:989 / max最大值:1974
男生包包與配件
价格 --- min 最小值:0.2174 / Q1下四分位数:2.174 / median(or Q2)中位数:8.8047 / Q3上四分位数:21.740000000000002 / max最大值:108.7
销量 --- min 最小值:508 / Q1下四分位数:602.0 / median(or Q2)中位数:705.5 / Q3上四分位数:885.5 / max最大值:3896
Out[353]:

美妝保健,居家生活,女生配件,寵物,女鞋,男鞋,女生包包-精品,男生包包與配件

  • 美妝保健: 最高价格 984.822 元 最高销量 54007 件
  • 居家生活: 最高价格 302.18 元 最高销量 47014 件
  • 女生配件: 最高价格 65 元 最高销量 54403 件
  • 寵物: 最高价格 293.49 元 最高销量 15550 件
  • 女鞋: 最高价格 195.66 元 最高销量 1910 件
  • 男鞋: 最高价格 203.26 元 最高销量 74518 件
  • 女生包包-精品: 最高价格 71.30 元 最高销量 1974 件
  • 男生包包與配件: 最高价格 108.7 元 最高销量 3896 件

** 其中,男鞋最高销量为 74518 件,该数据似乎异常。经核实,该条商品数据确实无效,商品链接

回到目录