在线卖家商品售价自动推荐(上)

开淘宝,当微商现在自由创业者的最佳选择,但很多新手在入行后发现最难的是产品定价,定的高了吧,没人会会买你的,定低了吧,都对不起自己付出的时间,并且产品定价不光受成本的影响,例如服装还要受到季节,品牌的影响,产地,产品的型号规格,历史购买价格,客户认可度等多方面影响,这里对于新手实在太难了。

 

         我无法得到淘宝的的这方面信息,故采用日本最大的电商Mercai提供的数据,他们想向卖家提供定价建议,Mercai期望建立一个自动建议正确的产品价格的算法。算法将收到用户输入的产品文字说明,包括产品类别名称,品牌名称和商品条件等详细信息,然后给出合理定价。

 

这里先了解该数据集提供的有效信息:

 

字段

说明

Train_id

商品ID

name

商品名称

item_condition_id

销售者提供的型号

category_name

商品所属类别

brand_name

商品所属品牌

Price

商品售价,这个字段也就是我们要预测的字段

Shipping

1 : 包邮 0 :不包邮

item_description

商品的完整描述

 

 

数据集截图大致如下,总共商品数为1482535个,这是个拥有上百万商品的数据集:

         先来看看我们数据集里面的商品的价格区间都集中在哪里,单位是美元,这样也看看日本的物价,从直方图看商品售价分布在10~100美金区间,而最多的商品存在的价格区间是10~50美金,也就是60~350RMB,这么看日本商品的价格也不是很贵。

 

         除了价格,我在淘宝购物时特别关注是否包邮,不包邮的商品一般要么销量不佳,要么价格超便宜,日本是否也这样呢?从直方对比图中看,10~20美金左右的产品包邮的最多,而20~50美金的产品更多的都不包邮了 ,这种情况随着价格的增长,包邮与不包邮的产品基本一半一半了,这点还是挺奇怪的,淘宝基本百元左右的都是包邮的,反而最便宜的产品要挣些快递费。

 

代码:

 

def showpricehistwithshipping():

         ship_data = full_data[full_data.shipping==1]['price']

         noship_data = full_data[full_data.shipping==0]['price']

         plt.figure(figsize=(20, 15))

         plt.hist(ship_data,bins=50,range=[0,250],label='包邮价格',alpha = 0.5 )    

         plt.hist(noship_data,bins=50,range=[0,250],label='不包邮价格',alpha = 0.5 )    

         plt.title('包邮&不包邮价格分布图')

         plt.xlabel('价格', fontsize=15)

         plt.ylabel('数量')

         plt.legend()

         plt.show()

 

 

         这种中间价格的大部分产品不包邮的现象引起了我的兴趣,我们一探究竟到底是什么原因导致了这样的情况?这里我的思路是将哪些产品包邮,哪些产品不包邮分类列出,找出其各自各种特征,这里的Item_description字段正好可以用来描述这些特征,这样我们能根据这些特征去猜测包邮与不包邮之间的关系。

 

代码:

 

def shipfeatureMap():

         _full_data = full_data.loc[full_data['item_description']!='No description yet']

         ship_data = _full_data[_full_data.shipping==1]['item_description'][:10000]

         noship_data = _full_data[_full_data.shipping==0]['item_description'][:10000]

         stop_words = STOPWORDS.add('rm')

         ship_data_text = ','.join(str(i) for i in ship_data.values)

         ship_wordcloud = WordCloud(background_color='black',stopwords =stop_words , max_font_size=110,  min_font_size=10, mode='RGBA', font_path='source/simhei.ttf').generate(ship_data_text)

 

         plt.imshow(ship_wordcloud)

         plt.axis('off')

         plt.show()

 

         这里的包邮数据的云图可以看到出现最多的词频是品牌,新品,价格固定等,其中还有个nerver used比较有趣,对比包邮不包邮的数据云图,可以看到比较大的差距在于包邮的产品更加强调Free Shipping,Price firm这些价格方面的优势,但不强调品质,而是强调没有用过,这也好理解包邮的都是面向价格敏感的用户群,而不包邮的产品则主打good condition,great condition等品质优势。

 

图:包邮数据云图

 

图:不包邮数据云图

        

 

         接下来就是研究什么类型产品包邮,这里我将包邮产品数量的前十门类列出来,通过数据就会发现真相了。

 

         包邮产品前十里面有八项都和女性相关,除了服饰就是化妆品,还有两个暂且算男性产品吧,手机和电玩,这里也解释了为什么包邮产品关键词里面有Never used了,游戏卡带和手机都表明不是二手货。

图:包邮产品前十门类

图:包邮产品前十门类(带品牌名称)

 

         这里顺手把不包邮的商品品类和品牌也列出来做对比,这里发现个有趣的交合点,就是维密品牌的Bra分别在包邮和不包邮两大分类中上榜。

 

图:不包邮产品前十门类(带品牌名称)

 

       后面的分析就有了一个重点,维密品牌的Bra在包邮和不包邮两个门类的区别是什么?在对比图中大部分关键词都一致,有趣的是不包邮的里面多了个Secret bra(情趣)描述,另外34B不包邮,34C包邮。。。这个难以解释。

先Show Code

 

def shipvsbar():

         _full_data = full_data[full_data.brand_name == "Victoria's Secret"]

         ship_data = _full_data[_full_data.shipping==1]

         ship_data = ship_data[ship_data.category_name == 'Women/Underwear/Bras']

         ship_data_desc = ship_data.item_description

 

         noship_data = _full_data[_full_data.shipping==0]

         noship_data = noship_data[noship_data.category_name == 'Women/Underwear/Bras']

         noship_data_desc = noship_data.item_description

 

         stop_words = STOPWORDS.add('rm')

 

         ship_data_text = ','.join(str(i) for i in ship_data_desc.values)

         ship_wordcloud = WordCloud(background_color='black',stopwords =stop_words , max_font_size=110,  min_font_size=10, mode='RGBA', font_path='source/simhei.ttf').generate(ship_data_text)

 

         noship_data_text = ','.join(str(i) for i in noship_data_desc.values)

         noship_wordcloud = WordCloud(background_color='black',stopwords =stop_words , max_font_size=110,  min_font_size=10, mode='RGBA', font_path='source/simhei.ttf').generate(noship_data_text)

         fig = plt.figure()

         ship_ax = fig.add_subplot(121)

         ship_ax.imshow(ship_wordcloud)

         ship_ax.set_title("包邮云图")

 

         noship_ax = fig.add_subplot(122)

         noship_ax.imshow(noship_wordcloud)

         noship_ax.set_title("不包邮云图")

 

         ship_ax.axis('off')

         noship_ax.axis('off')

         plt.show()

 

         那价格方面包邮不包邮有什么差别呢?从数据里看不包邮的占到63%左右,而价格方面不包邮的总体价格也更稍微高一些,而且卖的贵的都是不包邮的。

 

 

 

        

猜你喜欢

转载自blog.csdn.net/yoki2009/article/details/81875984