优衣库数据分析案例

有优衣库销售数据,先需要对这些数据进行分析。

首先导入数据

import pandas as pd

import matplotlib.pyplot as plt、

import seaborn as sb

%matplotlib inline

uniqo_data = pd.read_csv("uniqco.csv")

uniqo_data.head()        #查看一下数据基本情况

uniqo_data

info()和describe()也看一下

可以看到数据没有np.nan,一共有22293条数据,这里可以发现年龄已经给做了离散化处理了。describe中的revenue中最小值为-0.66,收益为负需要考虑是否是异常值,如果数据量不大可以去掉。

查看revenue<1的样本,发现收益为0的还不少,推测这些数据可能是产生了退款导致的。

revenue<1

分析顾客消费习惯

先简单从线上线下分析

uniqo_data.groupby('channel')[['quant']].sum()

总的来说线下卖出的订单量多一些(先不考虑收益为0可能被退货的情况)。

接下来在分组中加入city字段:

##uniqo_data.groupby(['city','channel'])[['quant']].sum()

uniqo_data.groupby(['city','channel'])[['quant']].sum().unstack()

#用透视表也可以和分组相同的效果

uniqo_data.pivot_table(values='quant',index='city',columns='channel',aggfunc='sum')


不加unstack
unstack

这样可以看出各城市是有差别的,有些城市没有线上销售的记录,有些城市的线上大于线下。例如北京没有线上数据,广州线上大于线下,这种情况可能是由于北京没有线上发货仓库,线上订单需要从其他有发货仓库的城市发货。

sb.countplot(x='city',hue='channel',data=uniqo_data)


seaborn画图统计()

析哪种产品销量最好

uniqo_data.pivot_table(values='quant',index='gender_group',columns='product',aggfunc='sum')


可以看到女性做出了主要贡献,接下来再加入年龄组字段,但在此之前先看一下年龄与订单的关系:

sb.countplot(x='age_group',hue='gender_group',data=uniqo_data)


age_group & gender_group

有趣的是,分析发现,大于60岁的男性的销售数量是唯一大于女性的

uniqo_data.pivot_table(values='quant',index=['gender_group','age_group'],columns='product',aggfunc='sum')



两个图截不到一起,拆开了。

消费习惯 工作日还是周末


df = uniqo_data.pivot_table(index = ['wkd_ind','channel'],columns=['city'],values = 'quant',aggfunc='sum')

df['sumrow'] = df.sum(axis=1)

df


仔细一看,这个结果似乎不太对劲,周末的销量比工作日还低。这是因为这个周末只有两天,工作日有5天,所以我们还需要求个日均销售量。


日均

这样看来数据就合理多了。

销售额与成本的关系

# 用到的就是皮尔逊相关系数

uniqco[['revenue','unit_cost']].corr()

#结果 :  0.14844

看起来相关性不高,这是因为我们没有计算销售量quant的影响

uniqco['revenue_perquant'] = uniqco['revenue']/uniqco['quant']

uniqco[['rev_per_goods','unit_cost']].corr()

#结果  0.502198

提高了很多,另外成本也和其他因素有关,比如房租,物流,工资等等,所以这两者达不到很高的相关性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容