给以下代码写注释data_112hour = data_112下单时间dthournum = data_112hour income weekdaygroupbyweekday hour sumnum = numunstackfillna0for i in numindex pltplotrange24 numloci pltlegendnumindexpltshow# 不同日期的销售情况d
导入需要的库
import pandas as pd import numpy as np import matplotlib.pyplot as plt import re from pyecharts.charts import Geo, Map import pyecharts.options as opts from pyecharts.globals import ChartType
读取数据
data = pd.read_excel('自动售货机.xlsx')
数据预处理
data.dropna(inplace=True) data['下单时间'] = pd.to_datetime(data['下单时间']) data2 = data.copy()
3.1 不同时间维度的销售情况
按小时统计销售情况
data_112 = data2.loc[data2['机器编号'] == '112', :] data_112['hour'] = data_112['下单时间'].dt.hour 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()
不同日期的销售情况
data2['date'] = data2['下单时间'].dt.date data2['income'] = data2['总金额(元)'] - data2['退款金额(元)'] num = data2[['date', 'income']].groupby('date').sum().sort_index()
可视化:不同日期的销售情况
plt.plot(num.index, num) plt.xticks(num.index[::8], num.index[::8], rotation=90) plt.show()
不同星期的销售情况
data2['weekday'] = data2['下单时间'].dt.weekday num = data2[['weekday', 'income']].groupby('weekday').sum().sort_index() num = num.loc[[0,1,2,3,4,5,6],:]
可视化:不同星期的销售情况
plt.plot(num.index, num) plt.xticks(num.index, num.index, rotation=90) plt.show()
3.4 分析城市销售情况
num = data2[['city', 'income']].groupby('city').sum().sort_values('income')
可视化:不同城市的销售情况
plt.barh(num.index,num['income']) plt.show()
绘制地理图表展示城市之间的空间关系
( 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')
绘制地理图表展示不同月份不同城市之间的空间关系
data2['month'] = data2['下单时间'].dt.month num = data2[['month', 'income', 'city']].groupby(['month', 'city']).sum() num2 = num.unstack() num2 = num2.fillna(0)
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 = Timeline() for i in range(4, 10): tl.add(tmp[i], str(i)+'月')
tl.render('./各个城市销售量情况(含时间轴).html')
3.5销售额环比
计算周的销售额环比
data2['week'] = data2['下单时间'].dt.week
1 计算每一周的销售额
tmp = data2[['week','income']].groupby('week').sum()
2 计算销售额环比: (本期销售额-上期销售额)/上期销售额
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()
计算月的销售额环比
1、计算每月的销售额
tmp = data2[['month', 'income']].groupby('month').sum()
2、计算销售额环比:(本期销售额-上期销售额)/上期销售额
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()
计算周的销售额环比
data_gz = data2.loc[data2['city'] == '广州市', :] data_gz['week'] = data_gz['下单时间'].dt.week
1、计算每一周的销售额
tmp = data_gz[['week', 'income']].groupby('week').sum()
2、计算销售额环比:(本期销售额-上期销售额)/上期销售额
t2 = tmp.diff().iloc[1:, :] t2.index = tmp.index[:-1] num = t2/tmp # 销售额的周环比 num
可视化:双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('环比增
原文地址: https://www.cveoy.top/t/topic/fbkR 著作权归作者所有。请勿转载和采集!