【Pandas】这份Pandas练习题,必须成功拿下~
公眾號(hào):尤而小屋
作者:Peter
編輯:Peter
寫過(guò)很多Pandas的文章,主要講解了常用的操作和函數(shù)的用法。今天自制了一份水果訂單和銷售的數(shù)據(jù)(模擬數(shù)據(jù),僅供學(xué)習(xí)),主要是用來(lái)加深理解下如何靈活且快速使用Pandas來(lái)完成我們的需求。
Pandas文章
推薦幾篇文章:
30個(gè)Pandas高頻使用技巧
圖解Pandas的軸旋轉(zhuǎn)函數(shù):stack和unstack
圖解Pandas的groupby機(jī)制
創(chuàng)建DataFrame:10種方式任你選
數(shù)據(jù)講解
1、模擬的第一份數(shù)據(jù)有5個(gè)字段:訂單號(hào)、下單人、商品、價(jià)格、數(shù)量
訂單號(hào):每個(gè)訂單的訂單號(hào),一個(gè)訂單號(hào)中存在一個(gè)或者多個(gè)商品
下單人:一個(gè)人可能下1個(gè)或者多個(gè)訂單,比如張三只下了一個(gè)訂單,李四下了多個(gè)訂單
商品:同一個(gè)商品可能在多個(gè)訂單中出現(xiàn)
價(jià)格:每個(gè)訂單中每個(gè)商品的價(jià)格,不同的訂單中,同一個(gè)商品的價(jià)格都可能是不同的,比如SOD訂單中蘋果是10,但是在DFH訂單中卻是9.8
數(shù)量:每個(gè)訂單中每個(gè)商品的銷售數(shù)量
2、模擬的第二份數(shù)據(jù)中就兩個(gè)字段:商品和產(chǎn)地
同時(shí)我們可以看到:這兩份數(shù)據(jù)是存在不同的sheet中的,存儲(chǔ)成為xlslx文件,并且沒(méi)有任何的缺失值數(shù)據(jù)。
需求1:不同的方式讀取數(shù)據(jù)
存在同一個(gè)Excel中的不同sheet中,我們采取不同的方式來(lái)讀取:
方式1:同時(shí)指定文件和sheet的名稱
import?pandas?as?pd??#?先導(dǎo)入包方式2:指定文件名和sheet的索引號(hào),索引從0開始
需求2:兩份數(shù)據(jù)的合并
可以看到兩個(gè)sheet中的數(shù)據(jù)是通過(guò)“商品”這個(gè)字段進(jìn)行關(guān)聯(lián)的,我們使用pandas中的merge函數(shù),并且保留第一份(左邊left)表格中的全部信息。
merge函數(shù)是一個(gè)非常重要的函數(shù),可以靈活地處理Pandas中的數(shù)據(jù)合并問(wèn)題。
接下來(lái)的各種需求都是針對(duì)上面合并的數(shù)據(jù)進(jìn)行處理的
需求3:訂單量、客戶量、商品量
訂單量:這份數(shù)據(jù)總共下了多少個(gè)訂單
unique:中文是獨(dú)特的意思,就是訂單號(hào)這個(gè)字段有多個(gè)獨(dú)特、唯一的信息。總共是7個(gè)訂單
同樣的道理:可以得到多少個(gè)下單用戶、銷售了多少種商品?
需求4:每個(gè)用戶的下單量
就是求每個(gè)用戶下了多少個(gè)訂單:使用groupby進(jìn)行分組統(tǒng)計(jì)每個(gè)下單人的訂單量。
先使用groupby函數(shù)進(jìn)行分組
再使用聚合函數(shù)nunique,統(tǒng)計(jì)每個(gè)“訂單號(hào)”的個(gè)數(shù)(去重統(tǒng)計(jì))
最后再索引重置下
看到李四下了3張訂單,是最多的
需求5:每個(gè)用戶的總消費(fèi)金額
1、先增加一列:總額
2、兩種不同方式的分組再聚合
需求6:不同產(chǎn)地的訂單量、銷量、銷售總額
需求7:每個(gè)訂單中價(jià)格最高的商品
找出每個(gè)訂單中價(jià)格最高的商品,比如:SOD訂單中價(jià)格最高的就是葡萄
方式1:第一種實(shí)現(xiàn)的方式如下:
先整體通過(guò)降序排列
再根據(jù)訂單號(hào)來(lái)分組,取出第一條first數(shù)據(jù)即可
方式2:實(shí)現(xiàn)方式如下
1、先實(shí)現(xiàn)每個(gè)訂單號(hào)根據(jù)價(jià)格降序排列
方式2:多個(gè)函數(shù)的混合使用,可分開運(yùn)行查看每步驟的結(jié)果
df.groupby("訂單號(hào)").apply(lambda?x:?x.sort_values("價(jià)格",ascending=False)).reset_index(drop=True).groupby("訂單號(hào)").first().reset_index()方式3:分組的時(shí)候使用groupby_keys參數(shù)
需求8:每個(gè)訂單中價(jià)格最高的前2位
取出每個(gè)訂單中價(jià)格最高的前2位,若只有一位取出一位即可。
上面是取出分組后最高的數(shù)據(jù),即第一條first。在這個(gè)需求中我們使用head函數(shù),可以取出任意的n條數(shù)據(jù):Top-N
需求9:每個(gè)商品的筆單價(jià)(保留2位小數(shù))
我們來(lái)拆解題意:
每個(gè)商品:確定了分組的元素是groupby="商品"
筆單價(jià):先求每個(gè)商品的總銷售額,在求每個(gè)商品的訂單數(shù),最后相除
如何對(duì)上面的商品筆單價(jià)保留兩位小數(shù)呢?兩種方法來(lái)實(shí)現(xiàn):
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁(yè)完整版課件本站qq群851320808,加入微信群請(qǐng)掃碼:
總結(jié)
以上是生活随笔為你收集整理的【Pandas】这份Pandas练习题,必须成功拿下~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 还说不会深度学习,三招帮你“炼丹”成功
- 下一篇: 【机器学习】一文解读时间序列基本概念