数据分析—网易考拉口红数据分析

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import plotly.graph_objs as go
import plotly as py
py.offline.init_notebook_mode()
pyplot = py.offline.iplot
import warnings
warnings.filterwarnings('ignore')

一 数据读取

data = pd.read_excel('./learn/lipsticks.xlsx')
data.head(5)

二 数据清洗

data.shape
data.info()

2.1 重复数据处理

重复值进行删除处理

data = data.drop_duplicates()
data.shape

并没有重复数据

2.2 缺失值处理

查看是否有缺失值

data.apply(lambda x: sum(x.isnull())/len(x),axis=0)

由返回值可知可以进行填充的缺失值有:原价、是否自营、店铺
·原价填充为折扣价(无原价默认折扣价等于原价)
·是否自营填充为非自营
·店铺填充为非自营

进行填充

data.fillna({'原价':data['折扣价'],'是否自营':'非自营','店铺':'非自营'},inplace=True)

确认填充完成

data.isnull().any()

2.3 其它数据处理

浏览修改后的数据发现原价中包含有"新人价"、"x.x折"
·新生成一列价格price_0: 新人价用折扣价填充
·新生成一列价格price_1: x.x折用原价(= 折扣价/x.x折)填充

data[['原价','折扣价']].head()

新人价用折扣价填充,创造原价无空值的一列

data['price_0'] = data['原价'].replace('新人价',data['折扣价'])

x.x折用原价(= 折扣价/x.x折)填充

#提取折扣价数字
def cut_price(x):
    position = x.find('¥')  # 找到则返回下标,否则返回-1
    price = float(x[position+1:])
    return price
    
data['disprice'] = data['折扣价'].apply(cut_price)

#提取折扣计算出原价
def cut_discount(x,y):
    position = x.find('¥')
    if position != -1:  #说明为已为价格数据,直接返回
        price = float(x[position+1:])
        return price
    else:    #说明为折扣数据,需要计算出原价才可返回
        discount = float(x[:len(x)-1])
        price = (y*10)/discount
        return price

data['price_1'] = data.apply(lambda x: cut_discount(x['price_0'],x['disprice']),axis=1)
data['price_1'] = data['price_1'].round(2)

最后为比较打折力度,新生成一列"discount"

data['discount'] = data.apply(lambda x: x['disprice']/x['price_1'],axis=1).round(2)

查看清洗结果

data.apply(lambda x: sum(x.isnull())/len(x),axis=0)
data.info()

三 数据分析

3.1 探索品牌热度及占比

fig, axes = plt.subplots(2, 1, figsize=(12, 16))

ax1 = data.groupby('品牌')['评论数'].sum().sort_values(ascending=True).plot(
    kind='barh', ax=axes[0],width=0.8, alpha=0.8, color='#6385a7')
ax1.set_ylabel('品牌', fontsize=16)
ax1.set_title('品牌评论数总和', fontsize=18)

ax2 = data['国家'].value_counts().plot(
    kind='pie',
    ax=axes[1],
    autopct='%.1f%%',
    pctdistance=0.8,
    shadow=True,
    labels=data['国家'].value_counts().index,
    labeldistance=1.1,
    startangle=45,
    radius=1.2,
    wedgeprops={'linewidth': 1.5, 'edgecolor': 'k'},
    textprops={'fontsize': 14, 'color': 'k'}
)
ax2.set_title('各产地国家占比', fontsize=18)

plt.subplots_adjust(hspace=.2)
plt.show()
品牌评论数总和.png

各产地国家占比.jpg

从可视化图表可以看出,网易考拉上迪奥的市场份额占比最大,资生堂、圣罗兰、纪梵希、MAC品牌的口红属于第二梯队,这些热门品牌中多数为法国,占52.2%达到一半以上,美国品牌的口红占比为29.3%。
3.2 各个品牌的SKU单品数量

plt.figure(figsize=(12,8))

data['品牌'].value_counts().sort_values(ascending=True).plot(kind='barh',width=0.8,alpha=0.6,color='#6385a7')

plt.title('各品牌SKU数',fontsize=24)
plt.show()
各个品牌的SKU单品数量.jpg

考拉海淘网上的口红大多来自于法国、美国,品牌中迪奥是消费者的主要选择;而位于最后的KIKO,梦妆,曼秀雷敦则比较小众;

3.3 热门品牌和热门单品的TOP10

plt.figure(figsize=(12, 8))
data_comments_mean = data.groupby('品牌')['评论数'].mean().sort_values(ascending=True)
data_comments_mean[-10:].plot(
    kind='barh', width=0.8, alpha=0.4, color='r')
    
plt.yticks(fontsize=16)
plt.ylabel('品牌',fontsize=20)
plt.title('热门品牌TOP10',fontsize=24)

plt.show()
热门品牌TOP10.jpg
data_hot = data.groupby('商品标题')['评论数'].max().sort_values(ascending=True)

plt.figure(figsize=(16,12))
data_hot[-10:].plot(kind='barh',width=.8,color='r',alpha=.6)
plt.yticks(fontsize=20)
plt.xticks(fontsize=20)
plt.ylabel('品牌标题',fontsize=20)
plt.title('热门单品TOP10',fontsize=24)
plt.show()
热门单品TOP10.jpg

3.4 对不同品牌定价分析

fig= plt.figure(figsize=(16,8))
data.groupby('品牌')['disprice'].mean().sort_values(ascending=False).plot(
    kind='bar',width=0.8, alpha=0.6, color='#6385a7', label='价格')

y0 = data['disprice'].mean()
plt.axhline(y0, 0, 5,color='r', label='平均价格')
plt.ylabel('价格')
plt.title('各品牌折后价格比较', fontsize=16)
plt.legend(loc='best')
plt.show()
各品牌折后价格比较.jpg
plt.figure(figsize=(16, 12))

x = data.groupby('品牌')['discount'].mean()
y = data.groupby('品牌')['评论数'].mean()
s = data.groupby('品牌')['price'].mean()
txt = data.groupby('品牌')['商品标题'].count().index

sns.scatterplot(x, y, size=s,sizes=(100,1500),data=data)
for i in range(len(txt)):
    plt.annotate(txt[i], xy=(x[i], y[i]))
plt.ylabel('热度', fontsize=20)
plt.xlabel('折扣', fontsize=20)

plt.axvline(data['discount'].mean(),0,2000,color='r',label='discount_average')
plt.legend()
plt.show()
热度与折扣的关系图.jpg

梦妆折扣力度最大且价格低,阿玛尼折扣力度最小且价格高;TOM FORD定价最高,曼秀雷敦定价最低。
价格高的口红打折力度较小
口红价格主要分为两个档位,250和100元 热门品牌主要在低价位
3.5 口红出售的渠道分析

fig=plt.figure(figsize=(16,12))

ax1 = fig.add_subplot(221)
data['是否自营'].value_counts().plot(
        ax=ax1,
        kind='pie',
        autopct='%.1f%%',
        pctdistance=0.8,
        shadow=True,
        wedgeprops={'edgecolor':'k','linewidth':1.5},
        textprops={'fontsize':'14','color':'k'}
        )
    
ax2 = fig.add_subplot(222)     
sns.scatterplot(x='disprice',y='discount',hue='是否自营',data=data,ax=ax2)
plt.xlim((0,800))
plt.title('(非)自营店折扣与定价')

ax3 = fig.add_subplot(223)        
sns.boxplot(x='是否自营',y='disprice',data=data,ax=ax3)
plt.ylim((0,600))

ax4 = fig.add_subplot(224)
sns.boxplot(x='是否自营',y='discount',data=data,ax=ax4)

plt.show()
口红出售的渠道分析.jpg

口红自营为主,自营的定价普遍高于非自营的口红,且浮动更大; 另外自营的折扣力度也稍大。
3.6 标签词云图展示

data1 = pd.concat([data['标签1'],data['标签2'],data['标签3']])
data1.dropna()
data2 = data1.value_counts()
data2
from wordcloud import WordCloud,ImageColorGenerator
from PIL import Image
coloring = np.array(Image.open('tupian.png'))
wc = WordCloud(
    font_path='simhei.ttf',     #字体路径
    background_color='White',   #背景颜色
#     width=400,
#     height=200,
    max_font_size=200,            #字体大小
    min_font_size=6,
    mask=coloring,                #背景图片
    max_words=2000,
    relative_scaling=0.1,
    repeat=True                   # 默认为False,是否重复单词或者短语
)
wc.generate_from_frequencies(data2)
image_colors = ImageColorGenerator(coloring)

wc.to_file('lipsticks.png')    #图片保存

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