在线销售数据分析–⼈货场三维分析⾓度
⽂章⽬录
⼀、数据来源及理解
此次分析数据来源于第⼆届Power BI 可视化⼤赛样例数据,共有四个表,分别为sales
,store,item,district,⼀共有七⼗万左右的数据。
⼆、分析思路
按照⼈-货-场三维分析⾓度进⾏分析,分析导图:
三、数据处理
数据预处理
整个数据包括四张表,三⼗九个不同字段,但在实际分析过程中我们只⽤到了⼗五个字段,为了让数据分析更⾼效,所以我复制了⼀份并对其进⾏⼀个整合,成为⼀张表。
数据清洗
利⽤Python语⾔进⾏数据分析,开发⼯具有Jupyter Notebook,利⽤的包主要是pandas、numpy,matplotlib.pyplot。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#coding=utf-8
file_name ='D:\\Analysis.xlsx'
xls = pd.ExcelFile(file_name)
xs = xls.parse('salesdata',dtype='object')
xs.info()
数据总共为327047 条,包含15个特征,接下对数据进⾏观察并做数据清洗处理。本次数据集⽐较“⼲净”,不存在缺失值。另外有些特征的属性需要更改,例如⾦额及销量的数据类型。
数据转换
数据类型全为object类型,转换数据类型为数值型
xs['Sum_GrossMarginAmount']=pd.to_numeric(xs['Sum_GrossMarginAmount'], errors='coerce').fillna(0)##数据⽂本型转换为数值型
xs['Sum_Regular_Sales_Dollars']=pd.to_numeric(xs['Sum_Regular_Sales_Dollars'], errors='coerce').fillna(0)
xs['Sum_Markdown_Sales_Dollars']=pd.to_numeric(xs['Sum_Markdown_Sales_Dollars'], errors='coerce').fillna(0)
xs['Sum_Regular_Sales_Units']=pd.to_numeric(xs['Sum_Regular_Sales_Units'], errors='coerce').fillna(0)
xs['Sum_Markdown_Sales_Units']=pd.to_numeric(xs['Sum_Markdown_Sales_Units'], errors='coerce').fillna(0)
xs['SellingAreaSize']=pd.to_numeric(xs['SellingAreaSize'], errors='coerce').fillna(0)
由于在本次数据集中没有明确的时间字段,所以我们在这不做时间维度的分析,如果要做时间维度的分析还需要对时间字段做⼀个类型转换。
四、数据描述性统计
xs[['Sum_GrossMarginAmount','Sum_Regular_Sales_Dollars','Sum_Markdown_Sales_Dollars','Sum_Regular_Sales_Units','Sum_Markdown_Sales_Units']] .describe()
可以看到在销售⾦额中存在着负数,这可能是退货的订单,需要进⾏筛选。可以看出各字段的平均值都在百分之75的订单之下,表明存在了⼀些购买⼒极强的⽤户。我们可以将图做出来会更加明显。以’Sum_Regular_Sales_Dollars’字段为例:
plt.subplot(341)
xs['Sum_Regular_Sales_Dollars'].hist(figsize=(10,6),bins=100,color='c')
plt.subplot(342)
xs[xs['Sum_Regular_Sales_Dollars']<1000]['Sum_Regular_Sales_Dollars'].hist(figsize=(10,6),bins=10,color='c')
plt.subplot(343)
xs[xs['Sum_Regular_Sales_Dollars']>3150]['Sum_Regular_Sales_Dollars'].hist(figsize=(10,6),bins=10,color='c')
plt.subplot(344)
xs[xs['Sum_Regular_Sales_Dollars']<0]['Sum_Regular_Sales_Dollars'].hist(figsize=(10,6),bins=10,color='c')
在第⼀张图中可以看出很明显的长尾效应,取了销售⾦额⼩于1000的数据可以看出⼤部分的销售⾦额都集中在0到250美元,另外,还存在⼏条销售⾦额⼤于3150美元订单。退货订单⾦额基本上在100美元以内,其具体原因后续可做具体分析(先出退货的订单⽤户,查⽤户在退货之后是否有购物情况,是否为第⼀次购买就退货等)
将其打印出来可以看到是来⾃itemid为155579、及183620的订单,⽽其购买的原因不得⽽知,如果有相关的数据可以进⾏分析是否为异常数据。
xs[xs['Sum_Regular_Sales_Dollars']>3150]
五、三维分析-⼈
⽤户质量分析
通过⼆⼋原则,去寻关键的那20%决定性因素!
# 计算⾼质量⽤户贡献了多少份额(28倾向)
user_amount = xs.groupby('Buyer')['Sum_Regular_Sales_Dollars'].sum().sort_values(ascending=False).reset_index() user_amount['amount_cumsum']= user_amount['Sum_Regular_Sales_Dollars'].cumsum()
amount_total = user_amount['amount_cumsum'].max()
user_amount['percentage']= user_amount['amount_cumsum']/ amount_total
#统计销量
user_count = xs.groupby('Buyer')['Sum_Regular_Sales_Units'].sum().sort_values(ascending=False).reset_index() user_count['count_cumsum']= user_count['Sum_Regular_Sales_Units'].cumsum()
count_total = user_count['count_cumsum'].max()
user_count['percentage']= user_count['count_cumsum']/ count_total
#画图
<('font', family='simhei', size=9)
plt.subplot(221)
plt.title('零售消费额占⽐')
plt.ylabel("累计⽐率")
plt.plot(user_amount['percentage'])
unicode在线工具
plt.subplot(222)
plt.title('零售销量占⽐')
plt.ylabel("累计⽐率")
plt.plot(user_count['percentage'])
plt.show()
user_amount.head(20)
⽤户类别分析

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。