3.3 某一台设备不同时间的销售情况

1. 按小时分析销售情况

# 给data_112添加一列'hour',表示下单时间的小时数
data_112['hour'] = data_112['下单时间'].dt.hour

# 按照小时数分组,计算每个小时的销售额,并按照小时数排序
num = data_112[['hour','income']].groupby('hour').sum().sort_index()

# 绘制折线图,横坐标为小时数,纵坐标为销售额
plt.plot(num.index,num)

# 设置横坐标的标签为小时数,旋转角度为90度
plt.xticks(num.index,num.index,rotation=90)

# 显示图像
plt.show()

2. 按月份和小时分析销售情况

# 给data_112添加一列'hour',表示下单时间的小时数和一列'month',表示下单时间的月份
data_112['hour'] = data_112['下单时间'].dt.hour
data_112['month'] = data_112['下单时间'].dt.month

# 按照月份和小时数分组,计算每个月每个小时的销售额,并将结果展开成表格,缺失值填为0
num = data_112[['hour','income','month']].groupby(['month','hour']).sum()
num = num.unstack().fillna(0)

# 绘制折线图,横坐标为小时数,纵坐标为销售额,每个月的销售额用不同的颜色表示
for i in range(5, 10):
    plt.plot(range(24), num.loc[i, :])

# 设置图例为月份
plt.legend([f'{i}月' for i in range(5, 10)])

# 显示图像
plt.show()

3. 按星期和小时分析销售情况

# 给data_112添加一列'hour',表示下单时间的小时数和一列'weekday',表示下单时间的星期几
data_112['hour'] = data_112['下单时间'].dt.hour
data_112['weekday'] = data_112['下单时间'].dt.weekday

# 按照星期几和小时数分组,计算每个星期几每个小时的销售额,并将结果展开成表格,缺失值填为0
num = data_112[['hour', 'income', 'weekday']].groupby(['weekday', 'hour', ]).sum()
num = num.unstack().fillna(0)

# 绘制折线图,横坐标为小时数,纵坐标为销售额,每个星期几的销售额用不同的颜色表示
for i in num.index:
    plt.plot(range(24), num.loc[i, :])

# 设置图例为星期几
plt.legend(num.index)

# 显示图像
plt.show()

4. 按日期分析销售情况

# 给data2添加一列'date',表示下单时间的日期和一列'income',表示收入
data2['date'] = data2['下单时间'].dt.date
data2['income'] = data2['总金额(元)'] - data2['退款金额(元)']

# 按照日期分组,计算每个日期的销售额,并按照日期排序
num = data2[['date', 'income']].groupby('date').sum().sort_index()

# 绘制折线图,横坐标为日期,纵坐标为销售额
plt.plot(num.index, num)

# 设置横坐标的标签为日期,每隔8天显示一个日期,旋转角度为90度
plt.xticks(num.index[::8], num.index[::8], rotation=90)

# 显示图像
plt.show()

5. 按星期分析销售情况

# 给data2添加一列'weekday',表示下单时间的星期几
data2['weekday'] = data2['下单时间'].dt.weekday

# 按照星期几分组,计算每个星期几的销售额,并按照星期几排序
num = data2[['weekday', 'income']].groupby('weekday').sum().sort_index()

# 只保留0-6的星期几,即周一到周日
num = num.loc[[0,1,2,3,4,5,6],:]

# 绘制折线图,横坐标为星期几,纵坐标为销售额
plt.plot(num.index, num)

# 设置横坐标的标签为星期几,旋转角度为90度
plt.xticks(num.index, num.index, rotation=90)

# 显示图像
plt.show()

6. 销售额环比分析

6.1 周环比

# 计算周的销售额环比

# 给data2添加一列'week',表示下单时间的周数
data2['week'] = data2['下单时间'].dt.week

# 计算每一周的销售额
tmp = data2[['week','income']].groupby('week').sum()

# 计算销售额环比: (本期销售额-上期销售额)/上期销售额
t2 = tmp.diff().iloc[1:, :]  #第一个数据是空,因为没得比
t2.index = tmp.index[:-1 ]
num = t2/tmp  #销售额的周环比

# 绘制双Y轴图像,左边是收入,右边是环比增长率
fig = plt.figure(figsize=(6, 4))
ax1 = fig.add_subplot(111)  # 添加子图
ax1.bar(tmp.index, tmp['income'])
ax1.set_ylabel('收入')
ax1.set_xlabel('周数')
ax1.set_title('自动售货机收入趋势图')
ax2 = ax1.twinx()
ax2.plot(tmp.index[1:], num.iloc[:-1, 0], 'b')
ax2.set_ylabel('环比增长率')
plt.show()

6.2 月环比

# 计算月的销售额环比

# 计算每月的销售额
tmp = data2[['month', 'income']].groupby('month').sum()

# 计算销售额环比:(本期销售额-上期销售额)/上期销售额
t2 = tmp.diff().iloc[1:, :]
t2.index = tmp.index[:-1]
num = t2/tmp  # 销售额的月环比

# 绘制双Y轴图像,左边是收入,右边是环比增长率
fig = plt.figure(figsize=(6, 4))
ax1 = fig.add_subplot(111)  # 添加子图
ax1.bar(tmp.index, tmp['income'])
ax1.set_ylabel('收入')
ax1.set_xlabel('月份')
ax1.set_title('自动售货机收入趋势图')
ax2 = ax1.twinx()
ax2.plot(tmp.index[1:], num.iloc[:-1, 0], 'b')
ax2.set_ylabel('环比增长率')
plt.show()

7. 城市销售情况分析

7.1 城市销售额排名

# 按照城市分组,计算每个城市的销售额,并按照销售额排序
num = data2[['city', 'income']].groupby('city').sum().sort_values('income')

# 绘制水平条形图,横坐标为销售额,纵坐标为城市
plt.barh(num.index,num['income'])

# 显示图像
plt.show()

7.2 城市销售量地理图表展示

# 绘制地理图表展示城市之间的空间关系

# 使用pyecharts库绘制地理图表
from pyecharts.charts import Geo, Map
import pyecharts.options as opts
from pyecharts.globals import ChartType

(   Geo()
    .add_schema(maptype='广东')  # 设置地图类型为广东
    .add('', [(i, int(j)) for i,j in zip(num.index, num['income'])], type_=ChartType.EFFECT_SCATTER) # 添加散点图,横坐标为城市名,纵坐标为销售额
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 设置标签不显示
    .set_global_opts(
        title_opts=opts.TitleOpts(title='各个城市销售量情况', subtitle='2018/4-2018/9'),
        visualmap_opts=opts.VisualMapOpts(max_=max(num.max()), is_piecewise=True)
    )
).render('./各个城市销售量情况.html')  # 保存为html文件

7.3 不同月份不同城市销售量地理图表展示

# 绘制地理图表展示不同月份不同城市之间的空间关系

from pyecharts.charts import Geo, Timeline
import pyecharts.options as opts
from pyecharts.globals import ChartType

# 添加月份和城市两个维度的分组,计算每个月每个城市的销售额,并将结果展开成表格,缺失值填为0
data2['month'] = data2['下单时间'].dt.month
num = data2[['month', 'income', 'city']].groupby(['month', 'city']).sum()
num2 = num.unstack()
num2 = num2.fillna(0)

# 创建时间轴
tl = Timeline()

# 对于每个月份,生成一个地理图表,并添加到时间轴中
tmp = {}
for i in range(4, 10):
    num = num2.loc[i, :]
    tmp[i] = (
        Geo()
            .add_schema(maptype='广东')
            .add('', [(i[1], int(j)) for i, j in zip(num.index, list(num.values))],
                 type_=ChartType.EFFECT_SCATTER)
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
            .set_global_opts(
            title_opts=opts.TitleOpts(title='各个城市销售量情况', subtitle='2018/4-2018/9'),
            visualmap_opts=opts.VisualMapOpts(max_=max(num2.max()), is_piecewise=True)
        )
    )
    tl.add(tmp[i], str(i)+'月')

tl.render('./各个城市销售量情况(含时间轴).html')  # 保存为html文件
某一台设备不同时间的销售情况分析 - Python代码详解

原文地址: https://www.cveoy.top/t/topic/gVT1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录