本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
以下文章来源于python数据分析之禅 ,作者小dull鸟
项目目标
分析一下超市近期的运营数据,通过分析,对超市近期的运行状况有了直观的了解
1.读取数据
数据存放在表格中,我们用pandas将其读出来
<code><span class="hljs-keyword">import pandas <span class="hljs-keyword">as pd <span class="hljs-keyword">data=pd.read_csv(<span class="hljs-string">"超市运营数据.csv",encoding=<span class="hljs-string">"gbk",parse_dates=[<span class="hljs-string">"成交时间"]) <span class="hljs-keyword">data</span></span></span></span></span></span></span></code>
www#gaodaima.com来源gaodai$ma#com搞$代*码网搞代码
2.分析哪些类别的商品比较畅销
首先将数据按照类别ID进行分组,然后对分组后的销量进行求和,最后用reset_index重置索引
<code>data_group=<span class="hljs-keyword">data.groupby(<span class="hljs-string">"类别ID")[<span class="hljs-string">"销量"].sum().reset_index() data_group</span></span></span></code>
为了取出销量最好的10类商品类别,我们可以对data_group按照“销量”进行排序,取出前10个
<code>data_group=data_group.sort_values(<span class="hljs-keyword">by=<span class="hljs-string">"销量",<span class="hljs-keyword">ascending=False).head(<span class="hljs-number">10) data_group</span></span></span></span></code>
3.分析哪些商品比较畅销
分析逻辑与哪些类别的分析一致,代码如下:
<code><span class="hljs-keyword">data[<span class="hljs-string">"销售额"]=<span class="hljs-keyword">data[<span class="hljs-string">"销量"]*<span class="hljs-keyword">data[<span class="hljs-string">"单价"] <span class="hljs-keyword">data</span></span></span></span></span></span></span></code>
4.分析不同门店的销售额占比
首先计算销售额,并添加到数据中:
<code><span class="hljs-keyword">data[<span class="hljs-string">"销售额"]=<span class="hljs-keyword">data[<span class="hljs-string">"销量"]*<span class="hljs-keyword">data[<span class="hljs-string">"单价"] <span class="hljs-keyword">data</span></span></span></span></span></span></span></code>
按照门店进行分组,对分组后的营业额进行求和:
<code>data_group=<span class="hljs-keyword">data.groupby(<span class="hljs-string">"门店编号")[<span class="hljs-string">"销售额"].sum().reset_index() data_group</span></span></span></code>
用饼图画出销售额占比:
<code><span class="hljs-keyword">from pyecharts <span class="hljs-keyword">import options <span class="hljs-keyword">as opts <span class="hljs-keyword">from pyecharts.charts <span class="hljs-keyword">import Pie x=list(data_group[<span class="hljs-string">"门店编号"]) y=list(data_group[<span class="hljs-string">"销售额"]) pie = ( Pie() .add( <span class="hljs-string">"", [(i,j)<span class="hljs-keyword">for i,j <span class="hljs-keyword">in zip(x,y)], radius=[<span class="hljs-string">"30%", <span class="hljs-string">"75%"], center=[<span class="hljs-string">"50%", <span class="hljs-string">"50%"], rosetype=<span class="hljs-string">"radius", label_opts=opts.LabelOpts(is_show=<span class="hljs-literal">False), ) .set_global_opts(title_opts=opts.TitleOpts(title=<span class="hljs-string">"门店销售额占比")) .set_series_opts(label_opts=opts.LabelOpts(formatter=<span class="hljs-string">"{b}: {d}")) ) pie.render_notebook()</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
5.分析超市客流高峰高峰时间段
了解客流高峰时间段是很有必要的,可以帮助超市确定什么时间开展促销活动最合适
首先从日期中提取小时数
<code><span class="hljs-keyword">data[<span class="hljs-string">"小时"]=<span class="hljs-keyword">data[<span class="hljs-string">"成交时间"].map(lambda x:int(x.strftime(<span class="hljs-string">"%H"))) <span class="hljs-keyword">data</span></span></span></span></span></span></code>
对小时和订单进行去重
<code>traffic=data<span class="hljs-string">[["小时","订单ID"]].drop_duplicates() traffic </span></code>
计算每小时的订单量
<code>traffic_count=traffic.groupby(<span class="hljs-string">"小时")[<span class="hljs-string">"订单ID"].count() traffic_count</span></span></code>
画出折线图:
<code><span class="hljs-keyword">import pyecharts.options <span class="hljs-keyword">as opts <span class="hljs-keyword">from pyecharts.charts <span class="hljs-keyword">import Line x=[str(i) <span class="hljs-keyword">for i <span class="hljs-keyword">in list(range(<span class="hljs-number">6,<span class="hljs-number">22))] y=list(traffic_count) line=( Line() .add_xaxis(xaxis_data=x) .add_yaxis(series_name=<span class="hljs-string">"销量",y_axis=y, is_smooth=<span class="hljs-literal">True) .set_global_opts( title_opts=opts.TitleOpts(title=<span class="hljs-string">"不同时段销量折线图"), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=<span class="hljs-literal">True), splitline_opts=opts.SplitLineOpts(is_show=<span class="hljs-literal">True), ),) ) line.render_notebook() </span></span></span></span></span></span></span></span></span></span></span></span></span></code>
从上图可以发现,8点至10点是超市一天中的销量高峰期,然后17至19点又有一个小高峰,所以这两个时间段搞促销效果会比较好!