前言
大家早好、午好、晚好吖 ? ~歡迎光臨本文章
什么是數(shù)據(jù)分析
明確目的–獲得數(shù)據(jù)(爬蟲,現(xiàn)有,公開的數(shù)據(jù))–數(shù)據(jù)預(yù)處理——數(shù)據(jù)可視化——結(jié)論
準(zhǔn)備
環(huán)境使用:
在開始寫我們的代碼之前,我們要準(zhǔn)備好運(yùn)行代碼的程序
-
Anaconda (python3.9)
–> 識別我們寫的代碼
開發(fā)工具:
-
jupyter notebook
–> 代碼編輯功能敲代碼的工具
不會安裝的可以文末名片+我獲取哦 ??
數(shù)據(jù)準(zhǔn)備:
本數(shù)據(jù)集共收集了發(fā)生在一個月內(nèi)的28010條數(shù)據(jù),包含以下:
7個字段說明
訂單編號:訂單編號
總金額:訂單總金額
買家實(shí)際支付金額:總金額 - 退款金額(在已付款的情況下)。金額為0(在未付款的情況下)
收貨地址:各個省份
訂單創(chuàng)建時間:下單時間
訂單付款時間:付款時間
退款金額:付款后申請退款的金額。如無付過款,退款金額為0
分析目的
訂單每個環(huán)節(jié)的轉(zhuǎn)化轉(zhuǎn)化率
訂單成交的時間(按天)趨勢(按實(shí)際成交)
訂單數(shù)在地圖上的分布
訂單讀取及處理
讀取數(shù)據(jù)
import pandas as pd
df = pd.read_csv('tmall_order_report.csv',encoding='gbk')
df.head()
處理數(shù)據(jù)
缺失值
df.isnull().sum()
# 訂單付款時間 有2923個缺失值,屬于正?,F(xiàn)象,說明這些單位付過款,無需處理
訂單轉(zhuǎn)化率-漏斗圖
計算每個環(huán)節(jié)的數(shù)據(jù)
-
將得到如下的數(shù)據(jù):
[[‘總訂單數(shù)’, ‘28010’],
[‘付款訂單數(shù)’, ‘24087’],
[‘到款訂單數(shù)’, ‘18955’],
[‘全額到款訂單數(shù)’, ‘18441’]]
買家實(shí)際支付金額:總金額 - 退款金額(在已付款的情況下)。金額為0(在未付款的情況下)
退款金額:付款后申請退款的金額。如無付過款,退款金額為0
訂單總筆數(shù)
付過款的訂單數(shù)
key = '付款訂單數(shù)'
# 付款時間不為空的,表示付過款
df_payed = df[df['訂單付款時間'].notnull()]
dict_convs[key] = len(df_payed)
len(df_payed)
到款訂單數(shù)
key = '到款訂單數(shù)'
# 買家實(shí)際支付金額:總金額 - 退款金額(在已付款的情況下)
# 買家實(shí)際支付金額不為0的,說明訂單商家收到過款
df_trans = df_payed[df_payed['買家實(shí)際支付金額'] != 0]
dict_convs[key] = len(df_trans)
len(df_trans)
# 漏斗圖 Funnel
from pyecharts.charts import Funnel
from pyecharts import options as opts
funnel = (
Funnel()
.add(
"總體轉(zhuǎn)化率",
[list(z) for z in zip(df_convs.index,df_convs["總體轉(zhuǎn)化率"])],
# 讓外面的字體出現(xiàn)在圖上面
label_opts = opts.LabelOpts(position = 'inside')
)
# 設(shè)置系列選項,格式化輸出
.set_series_opts(tooltip_opts = opts.TooltipOpts(formatter = '{a}<br/>:{c}%'))
# 設(shè)置全局選項,添加標(biāo)題
.set_global_opts(title_opts = opts.TitleOpts(title = "總體轉(zhuǎn)化率"))
)
funnel.render_notebook()
那么這個的話就是我們的一個漏斗圖,我們可以看到天貓的一個總體轉(zhuǎn)化率還是非常高的對吧
所以說像這個天貓他的一個對于商品的推薦還是做的非常不錯的
單一環(huán)節(jié)轉(zhuǎn)化率
# 添加單一環(huán)節(jié)轉(zhuǎn)化率,每個環(huán)節(jié)除以上一環(huán)節(jié)
name = '單一環(huán)節(jié)轉(zhuǎn)化率'
# shift(): 讓整個列往下移動一個位置
# 那么移完位置之后就不可避免會出現(xiàn)第一個位置是空的
# 所以這里我們把第一個位置填數(shù)據(jù)
df_convs["單一環(huán)節(jié)轉(zhuǎn)化率"] = df_convs['訂單數(shù)'].shift().fillna(28010.0)
df_convs["單一環(huán)節(jié)轉(zhuǎn)化率"] = round((df_convs['訂單數(shù)']/df_convs["單一環(huán)節(jié)轉(zhuǎn)化率"]*100),0)
df_convs
name = '單一環(huán)節(jié)轉(zhuǎn)化率'
funnel = (
Funnel()
.add(
series_name = name,
data_pair = [list(z) for z in zip(df_convs.index,df_convs[name])],
label_opts = opts.LabelOpts(position = 'inside')
)
.set_series_opts(tooltip_opts = opts.TooltipOpts(formatter = '{a}<br/>:{c}%'))
)
funnel.render_notebook()
整體訂單數(shù)趨勢
# 按到款訂單統(tǒng)計
# 將訂單創(chuàng)建時間這一字段改成時間類型的數(shù)據(jù)
df_trans['訂單創(chuàng)建時間'] = df_trans['訂單創(chuàng)建時間'].astype('datetime64')
# 然后讓訂單創(chuàng)建時間變成行標(biāo)
df_trans=df_trans.set_index('訂單創(chuàng)建時間')
# 最后看一下前5行
df_trans.head()
df_trans.resample('D')['訂單編號'].count().index.day.astype('str').tolist()
# 重采樣,時間序列的內(nèi)容
# 統(tǒng)計每天的訂單數(shù)量
se_trans_month = df_trans.resample('D')['訂單編號'].count()
se_trans_month
結(jié)論:
2月上半個月,企業(yè)多數(shù)未復(fù)工,快遞停運(yùn),無法發(fā)貨
下半個月,隨著企業(yè)復(fù)工逐漸增多,訂單數(shù)開始上漲
#訂單平均價格
df_trans['買家實(shí)際支付金額'].mean()
銷量區(qū)域分布-地理圖
se_trans_map = df_trans.groupby('收貨地址')['訂單編號'].count()
se_trans_map
import pyecharts.options as opts
from pyecharts.charts import Map
# 展示地理分布圖
map1 = (
Map()
.add(
"訂單數(shù)",
[list(i) for i in se_trans_map.items()],
'china'
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
max_=max(se_trans_map)*0.6
)
)
)
map1.render_notebook()
尾語 ??
好了,今天的分享就差不多到這里了!
完整代碼、更多資源、疑惑解答直接點(diǎn)擊下方名片自取即可。
對下一篇大家想看什么,可在評論區(qū)留言哦!看到我會更新噠(? ?_?)?
喜歡就關(guān)注一下博主,或點(diǎn)贊收藏評論一下我的文章叭!??!
文章來源:http://www.zghlxwxcb.cn/news/detail-437579.html
最后,宣傳一下呀~??????更多源碼、資料、素材、解答、交流皆點(diǎn)擊下方名片獲取呀??????文章來源地址http://www.zghlxwxcb.cn/news/detail-437579.html
到了這里,關(guān)于python數(shù)據(jù)分析案例——天貓訂單綜合分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!