Day45. 数据分析实战(1):超市运营数据分析

Day45. 数据分析实战(1):超市运维数据分析



前言

本文主要是利用超市的运营数据进行分析,通过分析,对超市近期的运行状况有一定的直观了解。看能否得到些有用的消息来改进或者优化现有的运营方式,包括销售手段,客户经营等帮助超市改善经营现状,感觉蛮有意思滴。


一. 读取数据

我们将数据放在表格中,然后用 pandas 将其读出(这里全部用的都是jupyter notebook)。
这里因为数据比较干净,所以读取之后没做清洗等操作,但不代表不重要哈。

# 导入库
import pandas as pd

# 读取数据
data = pd.read_csv('超市运营数据.csv',encoding='gbk',parse_dates=["成交时间"])
# 查看数据前五行
data.head()

前五行数据

二. 看哪些类别的商品比较畅销

我们先将数据按照类别ID进行分组,然后对分组后的销量进行求和,最后用reset_index重置索引。

# 先分组
data_group_xl = data.groupby("类别ID")["销量"].sum().reset_index()

# 为了取出销量最好的前十类商品分类,我们可以对`data_group`按照销量进行排序。
data_group_xl = data_group_xl.sort_value(by="销量", ascending=False).head(10)
# 看看分组后的数据
data_group_xl

销量前十

这里我们可以看到其实销量之间差别也是很大的,这里可以根据销量进行进货预期等操作。

三. 哪些商品比较畅销

分析逻辑与上面的类别相一致。

data_group = data.groupby("商品ID")["销量"].sum().reset_index()
data_group.head(10)

销量前十

这里有些区别的是上面一种是以类别进行分类的,这里是直接以销量分类的,还是有些许差别,也就是优先级不同。

四. 不同门店的销售额占比

先计算销售额,然后添加到数据中

data['销售额'] = data['销量']*data['单价']

# 按照门店进行分组,对分组后的营业额进行求和并充值索引
data_group_xse = data.groupby('门店编号')['销售额'].sum().reset_index()
data_group_xse

销售额

再用饼图画出销售额占比

from pyecharts import options as opts
from pyecharts.charts import Pie

# 这里不同的是,在pyecharts中,数据都是list。
x = list(data_group['门店编号'])
y = list(data_group['销售额'])
pie = (
    Pie()
   .add(
        "",
        [(i,j)for i,j in zip(x,y)],
        radius=["30%", "75%"],
        center=["50%", "50%"],
        rosetype="radius",
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="门店销售额占比"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}"))
)
pie.render_notebook();

门店销售额占比

: 这里建议还是自己去生成html或者就在jupyter里面看,功能会多一点,但是成图片之后,这种动态的(原本html里面点击三个小矩形会有变动的)特点就没有了。

五. 超市客流高峰时间段

了解客流高峰时间段是很有必要的,可以帮助超市确定什么时间开展销售活动最合适

# 首先从日趋中提取小时数(精确到小时也够了)。
data["小时"] = data["成交时间"].map(lambda x: int(x.strftime("%H")))

# 然后对小时和订单进行去重
traffic = data[["小时", "订单ID"]].drop_duplicates()

# 再计算每小时的订单量
traffic_count = traffic.groupby("小时")["订单ID"].count()

# 最后使用订单量画出折线图
import pyecharts.options as opts
from pyecharts.charts import Line

x = [str(i) for i in list(range(6,22))]
y = list(traffic_count)
line=(
    Line()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(series_name="销量",y_axis=y, is_smooth=True)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="不同时段销量折线图"),
        yaxis_opts=opts.AxisOpts(
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
            ),
    )
)
line.render_notebook()

不同时间段销量折线图

  1. 我们可以从上图发现,8点到10点是潮湿一天中的销量高峰期,然后17点到19点优势一个小高峰。从实际情况来看也是比较合理的,因为这两个时间段正好对应着早上早餐或者起早买菜去做早餐以及做晚餐和下班的时间。
  2. 那我们是否可以根据这个时间特点进行打折引流等操作。
  3. 这里小伙伴也可以尝试在不同时间(一个小时)内进行分析,看在不同的时间内畅销产品的区别,这里应该可以发现不同时间的销售特点;或者产品的销售高峰(在一天内的),然后画个柱状图也比较直观,或者以产品来分类,画个散点图,看他们在一天中的分布,都是可以的idea,顺便也联系一下画图操作。

总结

这里简单的介绍了一个小小的超市运营案例分析,就是把学到的和想到的简单的实践了一下,小伙伴们有什么好的想法或者想吐槽的都可以说啊。

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
swiperChange(e) { if (this.data.backChange) { this.setData({ backChange: false, }); return; } //计算第三个索引 let rest = 3 - e.detail.current - this.data.oldCurrent; let dif = e.detail.current - this.data.oldCurrent; let date; if (dif === -2 || (dif > 0 && dif !== 2)) { //向右划的情况,日期增加 if (this.data.open) { date = new Date(this.data.selectDay.year, this.data.selectDay.month); this.setMonth(date.getFullYear(), date.getMonth() + 1, undefined); this.getIndexList({ setYear: this.data.selectDay.year, setMonth: this.data.selectDay.month, dateIndex: rest, }); } else { date = new Date( this.data.selectDay.year, this.data.selectDay.month - 1, this.data.selectDay.day + 7 ); this.setMonth( date.getFullYear(), date.getMonth() + 1, date.getDate() ); this.getIndexList({ setYear: this.data.selectDay.year, setMonth: this.data.selectDay.month - 1, setDay: this.data.selectDay.day + 7, dateIndex: rest, }); } } else { //向左划的情况,日期减少 if (this.data.open) { date = new Date( this.data.selectDay.year, this.data.selectDay.month - 2 ); this.setMonth(date.getFullYear(), date.getMonth() + 1, undefined); this.getIndexList({ setYear: this.data.selectDay.year, setMonth: this.data.selectDay.month - 2, dateIndex: rest, }); } else { date = new Date( this.data.selectDay.year, this.data.selectDay.month - 1, this.data.selectDay.day - 7 ); this.setMonth( date.getFullYear(), date.getMonth() + 1, date.getDate() ); this.getIndexList({ setYear: this.data.selectDay.year, setMonth: this.data.selectDay.month - 1, setDay: this.data.selectDay.day - 7, dateIndex: rest, }); } } this.setData({ oldCurrent: e.detail.current, }); this.setSwiperHeight(e.detail.current); },
06-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值