国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

山西網(wǎng)站制作公司百度小說官網(wǎng)

山西網(wǎng)站制作公司,百度小說官網(wǎng),免費(fèi)咨詢法律電話,日本做H網(wǎng)站📕作者簡介:熱愛跑步的恒川,致力于C/C、Java、Python等多編程語言,熱愛跑步,喜愛音樂的一位博主。 📗本文收錄于恒川的日常匯報(bào)系列,大家有興趣的可以看一看 📘相關(guān)專欄C語言初階、C…

在這里插入圖片描述

📕作者簡介:熱愛跑步的恒川,致力于C/C++、Java、Python等多編程語言,熱愛跑步,喜愛音樂的一位博主。
📗本文收錄于恒川的日常匯報(bào)系列,大家有興趣的可以看一看
📘相關(guān)專欄C語言初階、C語言進(jìn)階系列、恒川等,大家有興趣的可以看一看
📙Python零基礎(chǔ)入門系列,Java入門篇系列、docker技術(shù)篇系列、Apollo的學(xué)習(xí)錄系列正在發(fā)展中,喜歡Python、Java、docker的朋友們可以關(guān)注一下哦!

自動(dòng)售貨機(jī)銷售數(shù)據(jù)分析與應(yīng)用

  • 01 案例背景
  • 02 分析目標(biāo)
  • 03 分析過程
  • 04 數(shù)據(jù)預(yù)處理
    • 1.清洗數(shù)據(jù)
      • 1.1 合并訂單表并處理缺失值
      • 1.2 增加“市”屬性
      • 1.3 處理訂單表中的“商品詳情”屬性
      • 1.4 處理“總金額(元)”屬性
    • 2.屬性選擇
    • 3.屬性規(guī)約
  • 05 銷售數(shù)據(jù)可視化分析
    • 1.銷售額和自動(dòng)售貨機(jī)數(shù)量的關(guān)系
    • 2.訂單數(shù)量和自動(dòng)售貨機(jī)數(shù)量的關(guān)系
    • 3.暢銷和滯銷商品
    • 4.自動(dòng)售貨機(jī)的銷售情況
    • 5.訂單支付方式占比
    • 6.各消費(fèi)時(shí)段的訂單用戶占比
  • 06 銷售額預(yù)測
    • 1.統(tǒng)計(jì)周銷售額
    • 2.平穩(wěn)性檢驗(yàn)
    • 3.差分處理
    • 4.模型定階
    • 5.模型預(yù)測
  • 07 推薦閱讀

摘要:本案例將主要結(jié)合自動(dòng)售貨機(jī)的實(shí)際情況,對銷售的歷史數(shù)據(jù)進(jìn)行處理,利用pyecharts庫、Matplotlib庫進(jìn)行可視化分析,并對未來4周商品的銷售額進(jìn)行預(yù)測,從而為企業(yè)制定相應(yīng)的自動(dòng)售貨機(jī)市場需求分析及銷售建議提供參考依據(jù)。更多詳細(xì)內(nèi)容請參考《Python數(shù)據(jù)挖掘:入門進(jìn)階與實(shí)用案例分析》一書。在這里插入圖片描述

01 案例背景

近年來,隨著我國經(jīng)濟(jì)技術(shù)的不斷提升,自動(dòng)化機(jī)械在人們?nèi)粘I钪邪缪葜絹碓街匾慕巧?#xff0c;更多的被應(yīng)用在不同的領(lǐng)域。而作為新的一種自動(dòng)化零售業(yè)態(tài),自動(dòng)售貨機(jī)在日常生活中應(yīng)用越來越廣泛。自動(dòng)售貨機(jī)銷售產(chǎn)業(yè)在走向信息化、合理化同時(shí),也面臨著高度同質(zhì)化、成本上升、毛利下降等諸多困難與問題,這也是大多數(shù)企業(yè)所會(huì)面臨到的問題。

為了提高市場占有率和企業(yè)的競爭力,某企業(yè)在廣東省某8個(gè)市部署了376臺(tái)自動(dòng)售貨機(jī),但經(jīng)過一段時(shí)間后,發(fā)現(xiàn)其經(jīng)營狀況并不理想。而如何了解銷售額、訂單數(shù)量與自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系,暢銷或滯銷的商品又有哪些,自動(dòng)售貨機(jī)的銷售情況等,已成為該企業(yè)亟待解決的問題。

02 分析目標(biāo)

獲取了該企業(yè)某6個(gè)月的自動(dòng)售貨機(jī)銷售數(shù)據(jù),結(jié)合銷售背景進(jìn)行分析,并可視化展現(xiàn)銷售現(xiàn)狀,同時(shí)預(yù)測未來一段時(shí)間內(nèi)的銷售額,從而為企業(yè)制定營銷策略提供一定的參考依據(jù)。

03 分析過程

在這里插入圖片描述

04 數(shù)據(jù)預(yù)處理

1.清洗數(shù)據(jù)

1.1 合并訂單表并處理缺失值

由于訂單表的數(shù)據(jù)是按月份分開存放的,為了方便后續(xù)對數(shù)據(jù)進(jìn)行處理和可視化,所以需要對訂單數(shù)據(jù)進(jìn)行合并處理。同時(shí),在合并訂單表的數(shù)據(jù)后,為了了解訂單表的缺失數(shù)據(jù)的基本情況,需要進(jìn)行缺失值檢測。合并訂單表并進(jìn)行缺失值檢測,操作結(jié)果如圖1所示。圖1 合并訂單表并進(jìn)行缺失值檢測的結(jié)果
由操作結(jié)果可知,合并后的訂單數(shù)據(jù)有350867條記錄,且訂單表中含有缺失值的記錄總共有279條,其數(shù)量相對較少,可直接使用刪除法對其中的缺失值進(jìn)行處理。

合并訂單表、查看缺失值并處理缺失值,如代碼清單1所示。

代碼清單1 合并訂單表、查看缺失值并處理缺失值

import pandas as pd# 讀取數(shù)據(jù)data4 = pd.read_csv('../data/訂單表2018-4.csv', encoding='gbk')data5 = pd.read_csv('../data/訂單表2018-5.csv', encoding='gbk')data6 = pd.read_csv('../data/訂單表2018-6.csv', encoding='gbk')data7 = pd.read_csv('../data/訂單表2018-7.csv', encoding='gbk')data8 = pd.read_csv('../data/訂單表2018-8.csv', encoding='gbk')data9 = pd.read_csv('../data/訂單表2018-9.csv', encoding='gbk')# 合并數(shù)據(jù)data = pd.concat([data4, data5, data6, data7, data8, data9], ignore_index=True)print('訂單表合并后的形狀為', data.shape)# 缺失值檢測print('訂單表各屬性的缺失值數(shù)目為:\n', data.isnull().sum())data = data.dropna(how='any')  # 刪除缺失值

1.2 增加“市”屬性

為了滿足后續(xù)的數(shù)據(jù)可視化需求,需要在訂單表中增加“市”屬性,操作結(jié)果如圖2所示。
在這里插入圖片描述

增加“市”屬性如代碼清單2所示。

代碼清單2 增加“市”屬性

# 從省市區(qū)屬性中提取市的信息,并創(chuàng)建新屬性data['市'] = data['省市區(qū)'].str[3: 6]print('經(jīng)過處理后的數(shù)據(jù)前5行為:\n', data.head())

1.3 處理訂單表中的“商品詳情”屬性

通過瀏覽訂單表數(shù)據(jù)發(fā)現(xiàn),在“商品詳情”屬性中存在有異名同義的情況,即兩個(gè)名稱不同的值所代表的實(shí)際意義是一致的,如“脈動(dòng)青檸X1;”“脈動(dòng)青檸x1;”等。因?yàn)榇饲闆r會(huì)對后面的分析結(jié)果造成一定的影響,所以需要對訂單表中的“商品詳情”屬性進(jìn)行處理,增加“商品名稱”屬性,如代碼清單3所示。

代碼清單3 處理訂單表中的“商品詳情”屬性

# 定義一個(gè)需剔除字符的列表error_strerror_str = [' ', '(', ')', '(', ')', '0', '1', '2', '3', '4', '5', '6','7', '8', '9', 'g', 'l', 'm', 'M', 'L', '聽', '特', '飲', '罐','瓶', '只', '裝', '歐', '式', '&', '%', 'X', 'x', ';']# 使用循環(huán)剔除指定字符for i in error_str:data['商品詳情'] = data['商品詳情'].str.replace(i, '')# 新建“商品名稱”屬性,用于新數(shù)據(jù)的存放data['商品名稱'] = data['商品詳情']

1.4 處理“總金額(元)”屬性

此外,當(dāng)瀏覽訂單表數(shù)據(jù)時(shí),發(fā)現(xiàn)在“總金額(元)”屬性中,存在極少訂單的金額很小,如0、0.01等。在現(xiàn)實(shí)生活中,這種記錄存在的情況極少,且這部分?jǐn)?shù)據(jù)不具有分析意義。因此,在本案例中,對訂單的金額小于0.5的記錄進(jìn)行刪除處理,操作結(jié)果如圖3所示。
在這里插入圖片描述
由操作結(jié)果可知,刪除前的數(shù)據(jù)行列數(shù)目為(350617, 17),刪除后的數(shù)據(jù)行列數(shù)目為(350450, 17)。

刪除“總金額(元)”屬性中訂單的金額較少的記錄如代碼清單4所示。

代碼清單4 刪除“總金額(元)”屬性中訂單的金額較少的記錄

# 刪除金額較少的訂單前的數(shù)據(jù)行列數(shù)目print(data.shape)# 刪除金額較少的訂單后的數(shù)據(jù)行列數(shù)目data = data[data['總金額(元)'] >= 0.5]print(data.shape)

2.屬性選擇

因?yàn)橛唵伪碇械摹笆掷m(xù)費(fèi)(元)”“收款方”“軟件版本”“省市區(qū)”“商品詳情”“退款金額(元)”等屬性對本案例的分析沒有意義,所以需要對其進(jìn)行刪除處理,選擇合適的屬性,操作的結(jié)果如圖4所示。在這里插入圖片描述
屬性選擇如代碼清單5所示。

代碼清單5 屬性選擇

# 對于訂單表數(shù)據(jù)選擇合適的屬性data = data.drop(['手續(xù)費(fèi)(元)', '收款方', '軟件版本', '省市區(qū)', '商品詳情', '退款金額(元)'], axis=1)print('選擇后,數(shù)據(jù)屬性為:\n', data.columns.values)

3.屬性規(guī)約

在訂單表“下單時(shí)間”屬性中含有的信息量較多,并且存在概念分層的情況,需要對屬性進(jìn)行數(shù)據(jù)規(guī)約,提取需要的信息。提取相應(yīng)的“小時(shí)”屬性和“月份”屬性,進(jìn)一步泛化“小時(shí)”屬性為“下單時(shí)間段”屬性,規(guī)則如下:
?當(dāng)小時(shí)≤5時(shí),為“凌晨”;

?當(dāng)5<小時(shí)≤8時(shí),為“早晨”;

?當(dāng)8<小時(shí)≤11時(shí),為“上午”;

?當(dāng)11<小時(shí)≤13時(shí),為“中午”;

?當(dāng)13<小時(shí)≤16時(shí),為“下午”;

?當(dāng)16<小時(shí)≤19時(shí),為“傍晚”;

?當(dāng)19<小時(shí)≤24,為“晚上”。

在Python中規(guī)約訂單表的屬性,如代碼清單6所示。
代碼清單6 規(guī)約訂單表的屬性

# 將時(shí)間格式的字符串轉(zhuǎn)換為標(biāo)準(zhǔn)的時(shí)間格式data['下單時(shí)間'] = pd.to_datetime(data['下單時(shí)間'])data['小時(shí)'] = data['下單時(shí)間'].dt.hour  # 提取時(shí)間中的小時(shí)data['月份'] = data['下單時(shí)間'].dt.month  # 提取時(shí)間中的月份data['下單時(shí)間段'] = 'time'  # 新增“下單時(shí)間段”屬性,并將其初始化為timeexp1 = data['小時(shí)'] <= 5  # 判斷小時(shí)是否小于等于5# 若條件為真,則時(shí)間段為凌晨data.loc[exp1, '下單時(shí)間段'] = '凌晨'# 判斷小時(shí)是否大于5且小于等于8exp2 = (5 < data['小時(shí)']) & (data['小時(shí)'] <= 8)# 若條件為真,則時(shí)間段為早晨data.loc[exp2, '下單時(shí)間段'] = '早晨'# 判斷小時(shí)是否大于8且小于等于11exp3 = (8 < data['小時(shí)']) & (data['小時(shí)'] <= 11)# 若條件為真,則時(shí)間段為上午data.loc[exp3, '下單時(shí)間段'] = '上午'# 判斷小時(shí)是否小大于11且小于等于13exp4 = (11 < data['小時(shí)']) & (data['小時(shí)'] <= 13)# 若條件為真,則時(shí)間段為中午data.loc[exp4, '下單時(shí)間段'] = '中午'# 判斷小時(shí)是否大于13且小于等于16exp5 = (13 < data['小時(shí)']) & (data['小時(shí)'] <= 16)# 若條件為真,則時(shí)間段為下午data.loc[exp5, '下單時(shí)間段'] = '下午'# 判斷小時(shí)是否大于16且小于等于19exp6 = (16 < data['小時(shí)']) & (data['小時(shí)'] <= 19)# 若條件為真,則時(shí)間段為傍晚data.loc[exp6, '下單時(shí)間段'] = '傍晚'# 判斷小時(shí)是否大于19且小于等于24exp7 = (19 < data['小時(shí)']) & (data['小時(shí)'] <= 24)# 若條件為真,則時(shí)間段為晚上data.loc[exp7, '下單時(shí)間段'] = '晚上'data.to_csv('../tmp/order.csv', index=False, encoding = 'gbk')

05 銷售數(shù)據(jù)可視化分析

在銷售數(shù)據(jù)中含有的數(shù)據(jù)量較多,作為企業(yè)管理人員以及決策制定者,無法直觀了解目前自動(dòng)售貨機(jī)的銷售狀況。因此需要利用處理好的數(shù)據(jù)進(jìn)行可視化分析,直觀地展示銷售走勢以及各區(qū)銷售情況等,為決策者提供參考。

1.銷售額和自動(dòng)售貨機(jī)數(shù)量的關(guān)系

探索6個(gè)月銷售額和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系,并按時(shí)間走勢進(jìn)行可視化分析,結(jié)果如圖5所示。在這里插入圖片描述
由圖5可知,4月至7月,自動(dòng)售貨機(jī)的數(shù)量在增加,銷售額也隨著自動(dòng)售貨機(jī)的數(shù)量增加而增加;8月,雖然自動(dòng)售貨機(jī)數(shù)量減少了4臺(tái),但是銷售額還在增加;9月相比8月的自動(dòng)售貨機(jī)數(shù)量減少了6臺(tái),銷售額也隨著減少??梢酝茢喑鲣N售額與自動(dòng)售貨機(jī)的數(shù)量存在一定的相關(guān)性,增加自動(dòng)售貨機(jī)的數(shù)量將會(huì)帶來銷售額的增長。出現(xiàn)該情況可能是因?yàn)閺V東處于亞熱帶,氣候相對炎熱,而7、8、9月的氣溫也相對較高,人們使用自動(dòng)售貨機(jī)的頻率也相對較高。

探索銷售額和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系如代碼清單7所示。

代碼清單7 銷售額和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系

import pandas as pdimport numpy as npfrom pyecharts.charts import Linefrom pyecharts import options as optsimport matplotlib.pyplot as pltfrom pyecharts.charts import Barfrom pyecharts.charts import Piefrom pyecharts.charts import Griddata = pd.read_csv('../tmp/order.csv', encoding='gbk')def f(x):return len(list(set((x.values))))# 繪制銷售額和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系圖groupby1 = data.groupby(by='月份', as_index=False).agg({'設(shè)備編號': f, '總金額(元)': np.sum})groupby1.columns = ['月份', '設(shè)備數(shù)量', '銷售額']line = (Line().add_xaxis([str(i) for i in groupby1['月份'].values.tolist()]).add_yaxis('銷售額', np.round(groupby1['銷售額'].values.tolist(), 2)).add_yaxis('設(shè)備數(shù)量', groupby1['設(shè)備數(shù)量'].values.tolist(), yaxis_index=1,symbol='triangle').set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='top', font_size=10)).set_global_opts(xaxis_opts=opts.AxisOpts(name='月份', name_location='center', name_gap=25),title_opts=opts.TitleOpts(title='銷售額和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系'),yaxis_opts=opts.AxisOpts( name='銷售額(元)', name_location='center', name_gap=60,axislabel_opts=opts.LabelOpts(formatter='{value}'))).extend_axis(yaxis=opts.AxisOpts( name='設(shè)備數(shù)量(臺(tái))', name_location='center', name_gap=40,axislabel_opts=opts.LabelOpts(formatter='{value}'), interval=50)))line.render_notebook()

2.訂單數(shù)量和自動(dòng)售貨機(jī)數(shù)量的關(guān)系

探索6個(gè)月訂單數(shù)量和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系,并按時(shí)間走勢進(jìn)行可視化分析,結(jié)果如圖6所示。在這里插入圖片描述
由圖6可知,4月至7月,自動(dòng)售貨機(jī)數(shù)量呈上升趨勢,訂單數(shù)量也隨著自動(dòng)售貨機(jī)數(shù)量增加而增加,而8月至9月,自動(dòng)售貨機(jī)數(shù)量在減少,訂單數(shù)量也在減少。這說明了訂單數(shù)量與自動(dòng)售貨機(jī)的數(shù)量是嚴(yán)格相關(guān)的,增加自動(dòng)售貨機(jī)會(huì)給用戶帶來便利,從而提高訂單數(shù)量。同時(shí),結(jié)合圖5可知,訂單數(shù)量和銷售額的變化趨勢基本保持一樣的變化趨勢,這也說明了訂單數(shù)量和銷售額存在一定的相關(guān)性。

由于各市的設(shè)備數(shù)量并不一致,所以探索各市自動(dòng)售貨機(jī)的平均銷售總額,并進(jìn)行對比分析,結(jié)果如圖7所示。
在這里插入圖片描述
由圖7可知,深圳市自動(dòng)售貨機(jī)平均銷售總額最高,達(dá)到了6538.28元,排在其后的是珠海市和中山市。而最少的是清遠(yuǎn)市,其平均銷售總額只有414.27元。出現(xiàn)此情況可能是因?yàn)椴煌瑓^(qū)域的人流量不同,而深圳市相對于其他區(qū)域的人流量相對較大,清遠(yuǎn)市相對于其他區(qū)域的人流量相對較小。此外,廣州市的人流量也相對較大,但其平均銷售總額卻相對較少,可能是因?yàn)樽詣?dòng)售貨機(jī)放置不合理導(dǎo)致的。

探索訂單數(shù)量和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系,以及各市自動(dòng)售貨機(jī)的平均銷售總額如代碼清單8所示。

代碼清單8 訂單數(shù)量和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系

groupby2 = data.groupby(by='月份', as_index=False).agg({'設(shè)備編號': f, '訂單編號': f})groupby2.columns = ['月份', '設(shè)備數(shù)量', '訂單數(shù)量']# 繪制圖形plt.figure(figsize=(10, 4))plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsefig, ax1 = plt.subplots()  # 使用subplots函數(shù)創(chuàng)建窗口ax1.plot(groupby2['月份'], groupby2['設(shè)備數(shù)量'], '--')ax1.set_yticks(range(0, 350, 50))  # 設(shè)置y1軸的刻度范圍ax1.legend(('設(shè)備數(shù)量',), loc='upper left', fontsize=10)ax2 = ax1.twinx()  # 創(chuàng)建第二個(gè)坐標(biāo)軸ax2.plot(groupby2['月份'], groupby2['訂單數(shù)量'])ax2.set_yticks(range(0, 100000, 10000))  # 設(shè)置y2軸的刻度范圍ax2.legend(('訂單數(shù)量',), loc='upper right', fontsize=10)ax1.set_xlabel('月份')ax1.set_ylabel('設(shè)備數(shù)量(臺(tái))')ax2.set_ylabel('訂單數(shù)量(單)')plt.title('訂單數(shù)量和自動(dòng)售貨機(jī)數(shù)量之間的關(guān)系')plt.show()gruop3 = data.groupby(by='市', as_index=False).agg({'總金額(元)':sum, '設(shè)備編號':f})gruop3['銷售總額'] = np.round(gruop3['總金額(元)'], 2)gruop3['平均銷售總額'] = np.round(gruop3['銷售總額'] / gruop3['設(shè)備編號'], 2)plt.bar(gruop3['市'].values.tolist(), gruop3['平均銷售總額'].values.tolist(), color='#483D8B')# 添加數(shù)據(jù)標(biāo)注for x, y in enumerate(gruop3['平均銷售總額'].values):plt.text(x - 0.4, y + 100, '%s' %y, fontsize=8)plt.xlabel('城市')plt.ylabel('平均銷售總額(元)')plt.title('各市自動(dòng)售貨機(jī)平均銷售總額')plt.show()

3.暢銷和滯銷商品

查找6個(gè)月銷售額排名前10和后10的商品,從而找出暢銷商品和滯銷商品,并對其銷售額進(jìn)行可視化分析,結(jié)果如圖8、圖9所示。在這里插入圖片描述
在這里插入圖片描述
由圖8可知,銷售額排在第一的是商品0015,達(dá)到了56230.2元,其次是商品0013和商品0004等商品。由圖9可知,銷售額排在最后的商品是商品0104、商品0687和商品0540,其銷售金額只有1元。

探索6個(gè)月銷售額排名前10和后10的商品如代碼清單9所示。

代碼清單9 10種暢銷商品、10種滯銷商品

# 銷售額前10的商品group4 = data.groupby(by='商品ID', as_index=False)['總金額(元)'].sum()group4.sort_values(by='總金額(元)', ascending=False, inplace=True)d = group4.iloc[: 10]x_data = d['商品ID'].values.tolist()y_data = np.round(d['總金額(元)'].values, 2).tolist()bar = (Bar(init_opts=opts.InitOpts(width='800px',height='600px')).add_xaxis(x_data).add_yaxis('', y_data, label_opts=opts.LabelOpts(font_size=15)).set_global_opts(title_opts=opts.TitleOpts(title='暢銷前10的商品'),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter='{value}',font_size=15)),xaxis_opts=opts.AxisOpts(type_='category',axislabel_opts=opts.LabelOpts({'interval': '0'}, font_size=15, rotate=30))))bar.render_notebook()h = group4.iloc[-10: ]x_data = h['商品ID'].values.tolist()y_data = np.round(h['總金額(元)'].values, 2).tolist()bar = (Bar().add_xaxis(x_data).add_yaxis('', y_data, label_opts=opts.LabelOpts(position='right')).set_global_opts(title_opts=opts.TitleOpts(title='滯銷前10的商品'),xaxis_opts=opts.AxisOpts(axislabel_opts={'interval': '0'})).reversal_axis())grid = Grid(init_opts=opts.InitOpts(width='600px', height='400px'))grid.add(bar, grid_opts=opts.GridOpts(pos_left='18%'))grid.render_notebook()

4.自動(dòng)售貨機(jī)的銷售情況

探索6個(gè)月銷售額前10以及銷售額后10的設(shè)備及其所在的城市,并進(jìn)行可視化分析,結(jié)果如圖10、圖11所示。
在這里插入圖片描述
在這里插入圖片描述
由圖10可知,銷售額靠前的設(shè)備所在城市主要集中在中山市、廣州市、東莞市和深圳市,其中,銷售額前3的設(shè)備都集中在中山市。由圖11可知,廣州市的設(shè)備113024、112719、112748的銷售額只有1元,而銷售額后10的設(shè)備全部在廣州市和中山市。

探索6個(gè)月銷售額前10以及銷售額后10的設(shè)備及其所在的城市如代碼清單10所示。

代碼清單10 銷售額前10、后10的設(shè)備及其所在市

group5 = data.groupby(by=['市', '設(shè)備編號'], as_index=False)['總金額(元)'].sum()group5.sort_values(by='總金額(元)', ascending=False, inplace=True)b = group5[: 10]label = []# 銷售額前10的設(shè)備及其所在市for i in range(len(b)):a = b.iloc[i, 0] + str(b.iloc[i, 1])label.append(a)x = np.round(b['總金額(元)'], 2).values.tolist()y = range(10)plt.bar(x=0, bottom=y, height=0.4, width=x, orientation='horizontal')plt.xticks(range(0, 80000, 10000))  # 設(shè)置x軸的刻度范圍plt.yticks(range(10), label)for y, x in enumerate(np.round(b['總金額(元)'], 2).values):plt.text(x + 500, y - 0.2, "%s" %x)plt.xlabel('總金額(元)')plt.title('銷售額前10的設(shè)備及其所在市')plt.show()l = group5[-10: ]label1 = []for i in range(len(l)):a = l.iloc[i, 0] + str(l.iloc[i, 1])label1.append(a)x = np.round(l['總金額(元)'], 2).values.tolist()y = range(10)plt.bar(x=0, bottom=y, height=0.4, width=x, orientation='horizontal')plt.xticks(range(0, 4, 1))  # 設(shè)置x軸的刻度范圍plt.yticks(range(10), label1)for y, x in enumerate(np.round(l['總金額(元)'], 2).values):plt.text(x, y, "%s" %x)plt.xlabel('總金額(元)')plt.title('銷售額后10的設(shè)備及其所在市')plt.show()

統(tǒng)計(jì)各城市銷售額小于100的設(shè)備數(shù)量,并進(jìn)行可視化分析,結(jié)果如圖12所示。在這里插入圖片描述
由圖12可知,銷售額小于100的設(shè)備在廣州市有52臺(tái),中山市有20臺(tái),佛山市有10臺(tái)。出現(xiàn)這種情況的原因可能是設(shè)備放置位置的不合理,或設(shè)備放置過多造成的,因此可以適當(dāng)調(diào)整自動(dòng)售貨機(jī)放置的位置和數(shù)量,減少設(shè)備和人員的浪費(fèi)。

探索各城市銷售額小于100元的設(shè)備數(shù)量如代碼清單11所示。

代碼清單11 各城市銷售額小于100元的設(shè)備數(shù)量

l_b = group5[group5['總金額(元)'] < 100]lb = l_b.groupby(by='市', as_index=False)['設(shè)備編號'].count()x_data = lb['市'].values.tolist()y_data = lb['設(shè)備編號'].values.tolist()bar = (Bar(init_opts=opts.InitOpts(width='500px', height='400px')).add_xaxis(x_data).add_yaxis('', y_data).set_global_opts(title_opts=opts.TitleOpts(title='各市銷售額小于100的設(shè)備數(shù)量')))bar.render_notebook()

5.訂單支付方式占比

對自動(dòng)售貨機(jī)上各商品訂單的支付方式進(jìn)行統(tǒng)計(jì),并進(jìn)行可視化分析,結(jié)果如圖13所示。
在這里插入圖片描述

由圖13可知,訂單的主要支付方式有4種,即微信、支付寶、會(huì)員余額和現(xiàn)金,其中支付方式最多的是微信支付,在所有支付方式中占到了89.05%。其次是支付寶支付,其占比為9.87%,而現(xiàn)金支付和會(huì)員余額支付的占比不到1%。

分析訂單支付方式占比如代碼清單12所示。

代碼清單12 分析訂單支付方式占比

group6 = data.groupby(by='支付狀態(tài)')['支付狀態(tài)'].count()method = group6.index.tolist()num = group6.values.tolist()pie_data = [(i, j) for i, j in zip(method, num)]pie = (Pie().add('', pie_data, label_opts=opts.LabelOpts(formatter=':{c}(ieo6y2aa%)')).set_global_opts(title_opts=opts.TitleOpts(title='訂單支付方式占比')))pie.render_notebook()

6.各消費(fèi)時(shí)段的訂單用戶占比

在自動(dòng)售貨機(jī)的商品下單時(shí)間段上,統(tǒng)計(jì)各消費(fèi)時(shí)段的訂單用戶數(shù)量,并進(jìn)行可視化分析,結(jié)果如圖14所示。

在這里插入圖片描述

由圖14可知,當(dāng)消費(fèi)時(shí)間段在下午時(shí),其訂單用戶最多,占比達(dá)到了21.44%,其次是晚上,占比是17.36%,上午的占比也有17.08%,其余時(shí)間段的占比相對較少。

分析各消費(fèi)時(shí)段的訂單用戶如代碼清單13所示。

代碼清單13 分析各消費(fèi)時(shí)段的訂單用戶

group7 = data.groupby(by='下單時(shí)間段')['購買用戶'].count()times = group7.index.tolist()num = group7.values.tolist()pie_data_2 = [(i, j) for i, j in zip(times, num)]pie = (Pie().add('', pie_data_2, label_opts=opts.LabelOpts(formatter=':{c}(ieo6y2aa%)'),radius=[60, 200], rosetype='radius', is_clockwise=False).set_global_opts(title_opts=opts.TitleOpts(title='各消費(fèi)時(shí)段的訂單用戶占比')))pie.render_notebook()

06 銷售額預(yù)測

精準(zhǔn)的銷售額預(yù)測對于企業(yè)運(yùn)營有著非常重要的指導(dǎo)意義,可以指導(dǎo)運(yùn)營后臺(tái)提前進(jìn)行合理的資源配置,幫助企業(yè)管理人員制定合理的目標(biāo)。同時(shí),還可以更好地幫助企業(yè)采取更為針對性的促銷手段,更加明確市場的需求,可以根據(jù)不同區(qū)域、不同時(shí)間劃分等制定更加有效、合理的配貨方案和商品價(jià)格,從而增加企業(yè)經(jīng)營收益。

自動(dòng)售貨機(jī)的銷售額預(yù)測指的是從售貨機(jī)已有銷售額的訂單數(shù)據(jù)資料中,總結(jié)出商品銷售額的變化規(guī)律,并根據(jù)該規(guī)律構(gòu)建ARIMA模型,動(dòng)態(tài)預(yù)測未來4周內(nèi)商品的銷售額。

ARIMA模型的建模步驟如圖15所示。

在這里插入圖片描述

1.統(tǒng)計(jì)周銷售額

通過觀察訂單數(shù)據(jù),發(fā)現(xiàn)該數(shù)據(jù)集記錄的是當(dāng)前日期時(shí)間下,售貨機(jī)所售賣商品的訂單狀況,其出貨狀態(tài)有出貨成功、出貨失敗、未出貨等多種情況。然而,為預(yù)測未來4周的銷售額,其所需樣本數(shù)據(jù)應(yīng)為實(shí)際的周銷售額數(shù)據(jù),因此,需要篩選狀態(tài)為出貨成功的數(shù)據(jù)并統(tǒng)計(jì)各周銷售額,如代碼清單14所示。

代碼清單14 篩選出貨成功數(shù)據(jù)并統(tǒng)計(jì)各周銷售額

import pandas as pdimport matplotlib.pyplot as pltfrom statsmodels.tsa.stattools import adfuller as ADFfrom statsmodels.graphics.tsaplots import plot_acffrom statsmodels.stats.diagnostic import acorr_ljungboxfrom statsmodels.tsa.arima_model import ARIMAdata = pd.read_csv('../tmp/order.csv', encoding='gbk')# 提取出貨狀態(tài)為“出貨成功”的下單時(shí)間和總金額(元)數(shù)據(jù)data_info = data.loc[data['出貨狀態(tài)'] == '出貨成功', ['下單時(shí)間', '總金額(元)']]data_info = data_info.set_index('下單時(shí)間')  # 將下單時(shí)間設(shè)為索引# 將索引修改為日期時(shí)間格式data_info.index = pd.to_datetime(data_info.index)# 按周對總金額進(jìn)行匯總,即求和data_w = data_info.resample('W').sum()

2.平穩(wěn)性檢驗(yàn)

在使用ARIMA模型進(jìn)行銷售額預(yù)測之前,需要查看時(shí)間序列是否平穩(wěn),若數(shù)據(jù)非平穩(wěn),在數(shù)據(jù)分析挖掘的時(shí)候,則可能會(huì)產(chǎn)生“偽回歸”等問題,從而影響分析結(jié)果。通過時(shí)間序列的時(shí)序圖、自相關(guān)圖及其單位根查看時(shí)間序列平穩(wěn)性,時(shí)序圖如圖16所示,自相關(guān)圖如圖17所示,單位根檢驗(yàn)結(jié)果如圖18所示。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
由圖16可知,時(shí)序圖顯示該序列具有明顯的遞增趨勢,可以判斷為原始序列數(shù)據(jù)是非平穩(wěn)序列;圖17的自相關(guān)圖顯示的自相關(guān)系數(shù)大部分均大于零,說明序列間具有一定的長期相關(guān)性。由圖18可知,在單位根檢驗(yàn)統(tǒng)計(jì)量中,p值為0.251134,其值顯著大于0.05,可以推斷出該序列為非平穩(wěn)序列(非平穩(wěn)序列一定不是白噪聲序列)。

繪制時(shí)序圖、自相關(guān)圖并進(jìn)行單位根檢驗(yàn)如代碼清單15所示。

代碼清單15 繪制時(shí)序圖、自相關(guān)圖并進(jìn)行單位根檢驗(yàn)

# 平穩(wěn)性檢驗(yàn)# 判斷是否為時(shí)間序列plt.rcParams['font.sans-serif'] = ['SimHei']  # 顯示中文標(biāo)簽plt.rcParams['axes.unicode_minus'] = False  # 顯示負(fù)號plt.figure(figsize=(8, 5))plt.plot(data_w)plt.tick_params(labelsize=14)  # 設(shè)置坐標(biāo)軸字體大小plt.show()# 定義繪制自相關(guān)圖函數(shù)def draw_acf(ts):plt.figure(facecolor='white', figsize=(10, 8))plot_acf(ts)plt.show()# 定義單位根檢驗(yàn)函數(shù)def testStationarity(ts):dftest = ADF(ts)# 對ADF求得的值進(jìn)行語義描述dfoutput = pd.Series(dftest[0:4], index = ['Test Statistic','p-value','#Lags Used','Number of Observations Used'])for key, value in dftest[4].items():dfoutput['Critical Value (%s)'%key] = valuereturn dfoutput# 自相關(guān)draw_acf(data_w)# 單位根檢驗(yàn)print('單位根檢驗(yàn)結(jié)果為:\n', testStationarity(data_w))

3.差分處理

在進(jìn)行平穩(wěn)性檢驗(yàn)后,發(fā)現(xiàn)原始序列數(shù)據(jù)屬于非平穩(wěn)序列,而在使用ARIMA模型進(jìn)行銷售額預(yù)測時(shí),需要序列數(shù)據(jù)是平穩(wěn)序列,以避免序列中的隨機(jī)游走形勢影響預(yù)測結(jié)果。在Python中,可以通過二階差分處理對數(shù)據(jù)進(jìn)行平穩(wěn)化操作,并查看二階差分之后序列的平穩(wěn)性和白噪聲,其中二階差分后序列的時(shí)序圖如圖19所示,二階差分后序列的自相關(guān)圖如圖20所示,二階差分后序列的單位根檢驗(yàn)結(jié)果如圖21所示,二階差分后序列的白噪聲檢驗(yàn)結(jié)果如圖22所示。在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
由圖19可知,該序列無明顯趨勢,較為穩(wěn)定;圖20的自相關(guān)圖顯示自相關(guān)系數(shù)較為均勻,且較為接近于0,有較強(qiáng)的短期相關(guān)性。由圖21可知,二階差分后序列的單位根檢驗(yàn)p值遠(yuǎn)小于0.05,可以判斷出差分處理后的序列是平穩(wěn)序列。由圖22可知,在白噪聲檢驗(yàn)結(jié)果中,輸出的p值小于0.05,同時(shí)結(jié)合單位根檢驗(yàn)結(jié)果可以判斷二階差分之后的序列是平穩(wěn)非白噪聲序列。

差分處理并查看序列平穩(wěn)性和白噪聲如代碼清單16所示。

代碼清單16 差分處理并查看序列平穩(wěn)性和白噪聲

# 二階差分處理data_w_T1 = data_w.diff().dropna()data_w_T2 = data_w_T1.diff().dropna()# 差分后的時(shí)間序列圖plt.figure(figsize=(8, 5))plt.plot(data_w_T2)plt.tick_params(labelsize=14)plt.show()# 差分自相關(guān)draw_acf(data_w_T2)# 差分單位根檢驗(yàn)print('差分單位根檢驗(yàn)結(jié)果為:\n', testStationarity(data_w_T2))# 白噪聲檢驗(yàn)print('差分白噪聲檢驗(yàn)結(jié)果為:\n', acorr_ljungbox(data_w_T2, lags=1))

4.模型定階

通常情況下,在進(jìn)行模型預(yù)測前,需要尋找最優(yōu)模型,以提高預(yù)測結(jié)果的準(zhǔn)確性。針對ARIMA模型,可以通過BIC矩陣進(jìn)行模型定階。由于4.4.3小節(jié)進(jìn)行了二階差分處理,所以d=2。通過計(jì)算ARIMA(p,2,q)中所有組合的BIC信息量,取最小BIC信息量所對應(yīng)的模型階數(shù),進(jìn)而確定p值和q值,結(jié)果如圖23所示。
在這里插入圖片描述
由操作結(jié)果可知,當(dāng)p值為0、q值為1時(shí),BIC值最小,到此p、q定階完成。

模型定階如代碼清單17所示。

代碼清單17 模型定階

# 通過BIC矩陣進(jìn)行模型定階data_w = data_w.astype(float)pmax = 3qmax = 3bic_matrix = []  # 初始化BIC矩陣for p in range(pmax+1):tmp = []for q in range(qmax+1):try:tmp.append(ARIMA(data_w, (p, 2, q)).fit().bic)except:tmp.append(None)bic_matrix.append(tmp)bic_matrix = pd.DataFrame(bic_matrix)# 找出最小值位置p, q = bic_matrix.stack().idxmin()print('當(dāng)BIC最小時(shí),p值和q值分別為: ', p, q)

5.模型預(yù)測

應(yīng)用ARIMA(0, 2, 1)模型對未來4周內(nèi)商品的銷售額進(jìn)行預(yù)測,結(jié)果如圖24所示。在這里插入圖片描述
預(yù)測未來4周內(nèi)商品的銷售額如代碼清單18所示。

代碼清單18 預(yù)測未來4周內(nèi)商品的銷售額

# 構(gòu)建ARIMA(0, 2, 1)模型model = ARIMA(data_w, (p, 2, q)).fit()# 預(yù)測未來4周的銷售額print('預(yù)測未來4周的銷售額,其預(yù)測結(jié)果、標(biāo)準(zhǔn)誤差、置信區(qū)間如下。\n', model.forecast(4))

注:利用ARIMA模型向前預(yù)測的周期越長,其誤差越大。

07 推薦閱讀

在這里插入圖片描述

正版鏈接:https://item.jd.com/13814157.html

《Python數(shù)據(jù)挖掘:入門、進(jìn)階與實(shí)用案例分析》是一本以項(xiàng)目實(shí)戰(zhàn)案例為驅(qū)動(dòng)的數(shù)據(jù)挖掘著作,它能幫助完全沒有Python編程基礎(chǔ)和數(shù)據(jù)挖掘基礎(chǔ)的讀者快速掌握Python數(shù)據(jù)挖掘的技術(shù)、流程與方法。在寫作方式上,與傳統(tǒng)的“理論與實(shí)踐結(jié)合”的入門書不同,它以數(shù)據(jù)挖掘領(lǐng)域的知名賽事“泰迪杯”數(shù)據(jù)挖掘挑戰(zhàn)賽(已舉辦10屆)和“泰迪杯”數(shù)據(jù)分析技能賽(已舉辦5屆)(累計(jì)1500余所高校的10余萬師生參賽)為依托,精選了11個(gè)經(jīng)典賽題,將Python編程知識、數(shù)據(jù)挖掘知識和行業(yè)知識三者融合,讓讀者在實(shí)踐中快速掌握電商、教育、交通、傳媒、電力、旅游、制造等7大行業(yè)的數(shù)據(jù)挖掘方法。

本書不僅適用于零基礎(chǔ)的讀者自學(xué),還適用于教師教學(xué),為了幫助讀者更加高效地掌握本書的內(nèi)容,本書提供了以下10項(xiàng)附加價(jià)值:
(1)建模平臺(tái):提供一站式大數(shù)據(jù)挖掘建模平臺(tái),免配置,包含大量案例工程,邊練邊學(xué),告別紙上談兵
(2)視頻講解:提供不少于600分鐘Python編程和數(shù)據(jù)挖掘相關(guān)教學(xué)視頻,邊看邊學(xué),快速收獲經(jīng)驗(yàn)值
(3)精選習(xí)題:精心挑選不少于60道數(shù)據(jù)挖掘練習(xí)題,并提供詳細(xì)解答,邊學(xué)邊練,檢查知識盲區(qū)
(4)作者答疑:學(xué)習(xí)過程中有任何問題,通過“樹洞”小程序,紙書拍照,一鍵發(fā)給作者,邊問邊學(xué),事半功倍
(5)數(shù)據(jù)文件:提供各個(gè)案例配套的數(shù)據(jù)文件,與工程實(shí)踐結(jié)合,開箱即用,增強(qiáng)實(shí)操性
(6)程序代碼:提供書中代碼的電子文件及相關(guān)工具的安裝包,代碼導(dǎo)入平臺(tái)即可運(yùn)行,學(xué)習(xí)效果立竿見影
(7)教學(xué)課件:提供配套的PPT課件,使用本書作為教材的老師可以申請,節(jié)省備課時(shí)間
(8)模型服務(wù):提供不少于10個(gè)數(shù)據(jù)挖掘模型,模型提供完整的案例實(shí)現(xiàn)過程,助力提升數(shù)據(jù)挖掘?qū)嵺`能力
(9)教學(xué)平臺(tái):泰迪科技為本書提供的附加資源提供一站式數(shù)據(jù)化教學(xué)平臺(tái),附有詳細(xì)操作指南,邊看邊學(xué)邊練,節(jié)省時(shí)間
(10)就業(yè)推薦:提供大量就業(yè)推薦機(jī)會(huì),與1500+企業(yè)合作,包含華為、京東、美的等知名企業(yè)

通過學(xué)習(xí)本書,讀者可以理解數(shù)據(jù)挖掘的原理,迅速掌握大數(shù)據(jù)技術(shù)的相關(guān)操作,為后續(xù)數(shù)據(jù)分析、數(shù)據(jù)挖掘、深度學(xué)習(xí)的實(shí)踐及競賽打下良好的技術(shù)基礎(chǔ)。在這里插入圖片描述


如果這份博客對大家有幫助,希望各位給恒川一個(gè)免費(fèi)的點(diǎn)贊👍作為鼓勵(lì),并評論收藏一下?,感謝大家。
這篇文章制作不易,如果大家有什么疑問或給恒川的意見,歡迎評論區(qū)留言。

http://aloenet.com.cn/news/34227.html

相關(guān)文章:

  • 照片做視頻ppt模板下載網(wǎng)站好seo關(guān)鍵詞排名優(yōu)化價(jià)格
  • 做電影網(wǎng)站涉及的侵權(quán)問題網(wǎng)盤搜索神器
  • 做釣魚網(wǎng)站要什么工具中企動(dòng)力做網(wǎng)站推廣靠譜嗎
  • wap網(wǎng)站微信一鍵登錄網(wǎng)絡(luò)營銷案例有哪些
  • 公司網(wǎng)站背景圖百度快速收錄教程
  • 網(wǎng)站建設(shè)明細(xì)報(bào)價(jià)單凡科網(wǎng)免費(fèi)建站
  • 深圳做網(wǎng)站排名價(jià)格百度網(wǎng)盤怎么找片
  • 做ppt一般在什么網(wǎng)站打開網(wǎng)址資料網(wǎng)站
  • 網(wǎng)站后臺(tái)登陸地址網(wǎng)站如何推廣
  • 購物網(wǎng)站開發(fā)軟件百度網(wǎng)盤官方網(wǎng)站
  • 每天網(wǎng)站外鏈做幾條最好產(chǎn)品怎么做市場推廣
  • 公司網(wǎng)站服務(wù)器維護(hù)營銷推廣活動(dòng)方案
  • 網(wǎng)站怎么做導(dǎo)航條手機(jī)百度最新正版下載
  • 網(wǎng)站建設(shè)流程機(jī)構(gòu)互聯(lián)網(wǎng)廣告聯(lián)盟
  • 網(wǎng)站建設(shè)市場趨勢深圳百度推廣關(guān)鍵詞推廣
  • 山東省城鄉(xiāng)和住房建設(shè)廳網(wǎng)站廣東疫情最新消息今天又封了
  • 茶葉網(wǎng)站建設(shè)要求百度的營銷策略
  • 如何做網(wǎng)站瀏覽pdf免費(fèi)建站工具
  • 自己建網(wǎng)站做app成都網(wǎng)站推廣公司
  • 公司網(wǎng)站建設(shè)屬于什么職位濟(jì)南seo小黑seo
  • 不會(huì)編程 做網(wǎng)站免費(fèi)的企業(yè)黃頁網(wǎng)站
  • 寧波做網(wǎng)站的大公司超鏈接友情外鏈查詢
  • 哪些網(wǎng)站可以做h5搜索引擎排名優(yōu)化
  • 廣州做網(wǎng)站建設(shè)哪家專業(yè)網(wǎng)站關(guān)鍵詞怎么設(shè)置
  • 上海閔行做網(wǎng)站seo關(guān)鍵詞推廣優(yōu)化
  • 淘寶客cms網(wǎng)站怎么做免費(fèi)開店的電商平臺(tái)
  • 網(wǎng)站建設(shè)消費(fèi)者群體分析南京疫情最新消息
  • 阿里云如何添加新網(wǎng)站app開發(fā)自學(xué)
  • 邯鄲做網(wǎng)站推廣找誰國內(nèi)廣告聯(lián)盟平臺(tái)
  • 新疆做網(wǎng)站多少錢seo優(yōu)化關(guān)鍵詞