Kaggle數(shù)據(jù)集-ecommerce-data 探索

數(shù)據(jù)來自kaggle闻镶,地址:https://www.kaggle.com/carrie1/ecommerce-data

數(shù)據(jù)集可以下載到本地再使用铆农,訪問Kaggle的話墩剖,還可以看看其他人是如何來分析的


好了岭皂,這個(gè)數(shù)據(jù)集爷绘,我們前面其實(shí)用過购对,上一次是為了練習(xí)pandas陶因,這一次我們要從數(shù)據(jù)分析的角度來解幽,看看我們能了解什么毅否。

了解我們的數(shù)據(jù)

data_path = r'C:\Users\A\OneDrive\python\datasets\Online Retail.csv'
df = pd.read_csv(data_path , encoding='ISO-8859-1')

df.head()

記錄數(shù)很多,有50萬+吞琐,一共8個(gè)字段

InvoiceNo:訂單號(hào)
StockCode:商品編號(hào)
Description:商品名稱/描述
Quantity:商品數(shù)量
InvoiceDate:訂單日期
UnitPrice:商品單價(jià)
CustomerID:用戶ID
Country:國(guó)家

為了更好的了解數(shù)據(jù)站粟,我們還可以使用info函數(shù)和describe函數(shù)看看

df.info()
df.describe()

這里的QuantityUnitPrice中有負(fù)值助被,可能是退貨的記錄揩环,我們需要注意下

df.query('Quantity<0').head()
df.query('UnitPrice<0').head()

通過現(xiàn)有數(shù)據(jù)丰滑,我們想探索些什么褒墨?

這是很典型的交易型數(shù)據(jù)郁妈,所以還是有很多角度可以去探索的
我們直接可以發(fā)現(xiàn)的維度:

  • 商品維度
  • 時(shí)間維度
  • 用戶維度
  • 國(guó)家維度

指標(biāo)的話噩咪,就有數(shù)量拘央、銷售額灰伟、用戶數(shù)這些基本的栏账,再延伸下挡爵,就有銷往的國(guó)家數(shù)茶鹃,單均GMV闭翩,人均GMV,每個(gè)國(guó)家的GMV等等等

1. 一共有多少筆訂單蕉汪?多少用戶逞怨?

df.nunique()

對(duì)數(shù)據(jù)去重之后宛渐,我們可以知道:
** 訂單數(shù)是25900,用戶數(shù)是4372寇蚊,國(guó)家數(shù)是38**
但是這個(gè)商品種類數(shù)有點(diǎn)問題仗岸,我理解的話扒怖,這個(gè)StockCode應(yīng)該和Description去重?cái)?shù)一樣蚂蕴,但是不一樣,這說明一個(gè)商品編碼對(duì)應(yīng)了多個(gè)描述鸟整?

我們確認(rèn)下

df2 = df.groupby(by=['StockCode'])['Description'].nunique()
df2[df2>1]

這里還是有很多的不一致的篮条,我們隨便找一條看看

df.query('StockCode == "10080"')['Description'].unique()

這的確是對(duì)應(yīng)了多個(gè)描述,但是我們上面去重后的差異也就200多,這里有600多條重復(fù)的蚓胸,還是哪里不太對(duì)

df[df['Description'].isnull()]

居然這里還有好多描述為空的

然后,我又隨便看了看锹安,發(fā)現(xiàn)這個(gè)單價(jià)為0的記錄剔除之后,還有一種情況

df.query('StockCode == "16156L"')['Description']

這種編碼一樣倚舀,但是描述一樣叹哭,但是格式不一致的情況

好了,隨后還是把Description就當(dāng)做描述好了痕貌,還是以StockCode為主吧

這個(gè)數(shù)據(jù)質(zhì)量风罩,哈哈哈

這里我們需要確認(rèn)下,這些單價(jià)為0舵稠,數(shù)量為負(fù)的記錄超升,我們到底要不要室琢,就這樣留著雹熬,還是說替換掉?

恩,先留著吧

2. 總銷量和總GMV

我們先用單價(jià)和數(shù)量算一個(gè)商品金額

df['sku_amount'] = df['Quantity']*df['UnitPrice']
df[['Quantity','sku_amount']].sum()/10000

結(jié)合上一題,我們這里就可以算出來很多均類指標(biāo):
單均銷量、單均GMV
人均銷量柬帕、人均GMV
件均GMV(件單價(jià))

這里我就不算了,哈哈哈


單個(gè)維度

3. 商品維度:每種商品的銷量饶火、銷售額、購(gòu)買人數(shù)

從商品維度來分析的話,比如看看哪些是暢銷品,哪些是滯銷品(賣的不好的)
記得上面我們看過,有銷量為負(fù)的商品,暫且把他們當(dāng)做是退貨,我們先看看正常訂單好了

df_1 = df.query('Quantity>0')
df_2 = df_1.groupby('StockCode').agg({'Quantity':'sum' , 'sku_amount':'sum' , 'CustomerID':'nunique'})

df_2.sort_values('Quantity' , ascending=False).head()

這里吵聪,我們就根據(jù)商品編碼,對(duì)銷量和銷售和做了合計(jì)驹尼,對(duì)用戶數(shù)做了去重統(tǒng)計(jì)

然后愁拭,我順便加了個(gè)排名看看许赃,商品再銷量技羔、銷售額、購(gòu)買人數(shù)上的排列怎么樣

df_2['Quantity_rank'] = df_2['Quantity'].rank(method='min' , ascending=False)
df_2['sku_amount_rank'] = df_2['sku_amount'].rank(method='min', ascending=False)
df_2['CustomerID_rank'] = df_2['CustomerID'].rank(method='min', ascending=False)

df_2.sort_values('Quantity' , ascending=False).head()

針對(duì)商品,我們?cè)僬归_一下的話趁曼,比如,對(duì)商品做個(gè)分類,ABC分類愉舔,或者根據(jù)上面3個(gè)指標(biāo)做一個(gè)商品價(jià)值總分

貢獻(xiàn)度80%銷售額的有哪些商品火的,都是一些探索的角度

還有治力,這里我們其實(shí)忽略了商品的價(jià)格,商品的價(jià)格和商品的笑臉、銷售額废亭、購(gòu)買人數(shù)之間是否有關(guān)系呢?

這個(gè)價(jià)格的我還真想看一下哈

df_3 = df_1.groupby('UnitPrice').agg({'Quantity':'sum' , 'sku_amount':'sum' , 'CustomerID':'nunique'})

df_3.reset_index(inplace=True)

然后宁玫,我們畫個(gè)散點(diǎn)圖瞧一瞧

df_3.plot.scatter(x='UnitPrice' , y='Quantity')

這單價(jià)都很低呦

順便來個(gè)累計(jì)值吧

df_3['Quantity_累計(jì)'] = df_3['Quantity'].cumsum()
df_3.plot.line(x='UnitPrice', y='Quantity_累計(jì)')

這個(gè)貌似看不出啥蚀狰,看看累計(jì)占比吧嚎尤,80%的銷量集中在什么地方

df_3['Quantity_累計(jì)占比'] = df_3['Quantity_累計(jì)']/df_3['Quantity'].sum()
df_3.query('Quantity_累計(jì)占比<=0.8')

4. 時(shí)間維度:每天荔仁、月、年的銷量、銷售額乏梁、購(gòu)買人數(shù)

要看時(shí)間的話次洼,我們得看看這個(gè)日期的字段類型

df_1.info()

使用to_datetime轉(zhuǎn)換一下

df_1['InvoiceDate'] = pd.to_datetime(df_1['InvoiceDate'])

我這里出來一個(gè)警告,不知道有沒有影響


我們先天看一下

df_1.resample('D' , on='InvoiceDate')['Quantity'].sum().plot.line()

這里可以發(fā)現(xiàn)1月多少號(hào)是一個(gè)峰值哎遇骑,1月份西方有什么重大節(jié)日嗎卖毁?

再按照月看看

df_1.resample('M' , on='InvoiceDate')['Quantity'].sum().plot.line()

看來,下半年是業(yè)績(jī)高峰落萎,尤其是11月份

時(shí)間維度可以拓展很多亥啦,比如看看星期,看看小時(shí)

這里遇到個(gè)問題模暗,我想把周幾和小時(shí)拿出來禁悠,但是不想要高維度的信息,我研究一下

df_1.resample('H' , on='InvoiceDate')['Quantity'].sum()

這里的天信息也在兑宇,其實(shí)我不需要碍侦,我咋只把小時(shí)拿出來呢?

df_1.groupby(df_1['InvoiceDate'].dt.hour)['Quantity'].sum().plot.line()

這里按銷量看的隶糕,基本都集中在中午左右

5. 國(guó)家維度:每個(gè)國(guó)家的銷量瓷产、銷售額、購(gòu)買人數(shù)

不行枚驻,有點(diǎn)兒搞不動(dòng)了濒旦,思路其實(shí)都差不多,看看訂單都集中在哪些國(guó)家再登,哪些國(guó)家的用戶數(shù)最多等等尔邓,從銷售額看看哪些國(guó)家貢獻(xiàn)的最多,人均貢獻(xiàn)額啥的

6. 用戶維度:用戶的訂單數(shù)锉矢、銷量(購(gòu)買件數(shù))梯嗽、銷售額、商品種類數(shù)

用戶可以看的信息也很多沽损,對(duì)用戶做一個(gè)分類灯节,比如RFM,打一個(gè)價(jià)值分绵估,復(fù)購(gòu)炎疆?復(fù)購(gòu)周期等


多個(gè)維度交叉

比如看看不同國(guó)家購(gòu)買的商品是否一致,不同國(guó)家的購(gòu)物時(shí)間是否一致等等

好了国裳,這一篇就到這形入,下次繼續(xù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缝左,隨后出現(xiàn)的幾起案子唯笙,更是在濱河造成了極大的恐慌螟蒸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崩掘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡少办,警方通過查閱死者的電腦和手機(jī)苞慢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來英妓,“玉大人挽放,你說我怎么就攤上這事÷溃” “怎么了辑畦?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腿倚。 經(jīng)常有香客問我纯出,道長(zhǎng),這世上最難降的妖魔是什么敷燎? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任暂筝,我火速辦了婚禮,結(jié)果婚禮上硬贯,老公的妹妹穿的比我還像新娘焕襟。我一直安慰自己,他們只是感情好饭豹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布鸵赖。 她就那樣靜靜地躺著,像睡著了一般拄衰。 火紅的嫁衣襯著肌膚如雪它褪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天肾砂,我揣著相機(jī)與錄音列赎,去河邊找鬼。 笑死镐确,一個(gè)胖子當(dāng)著我的面吹牛包吝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播源葫,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼诗越,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了息堂?” 一聲冷哼從身側(cè)響起嚷狞,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤块促,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后床未,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竭翠,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年薇搁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斋扰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啃洋,死狀恐怖传货,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宏娄,我是刑警寧澤问裕,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站孵坚,受9級(jí)特大地震影響粮宛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜十饥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一窟勃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逗堵,春花似錦秉氧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至作媚,卻和暖如春攘滩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纸泡。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工漂问, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人女揭。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓蚤假,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吧兔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磷仰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348