<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【Pandas】這份Pandas練習(xí)題,必須成功拿下~

          共 1838字,需瀏覽 4分鐘

           ·

          2021-10-17 14:17

          公眾號:尤而小屋
          作者:Peter
          編輯:Peter

          寫過很多Pandas的文章,主要講解了常用的操作和函數(shù)的用法。今天自制了一份水果訂單和銷售的數(shù)據(jù)(模擬數(shù)據(jù),僅供學(xué)習(xí)),主要是用來加深理解下如何靈活且快速使用Pandas來完成我們的需求。


          Pandas文章

          推薦幾篇文章:

          30個Pandas高頻使用技巧

          圖解Pandas的軸旋轉(zhuǎn)函數(shù):stack和unstack

          圖解Pandas的groupby機(jī)制

          創(chuàng)建DataFrame:10種方式任你選

          數(shù)據(jù)講解

          1、模擬的第一份數(shù)據(jù)有5個字段:訂單號、下單人、商品、價格、數(shù)量

          • 訂單號:每個訂單的訂單號,一個訂單號中存在一個或者多個商品
          • 下單人:一個人可能下1個或者多個訂單,比如張三只下了一個訂單,李四下了多個訂單
          • 商品:同一個商品可能在多個訂單中出現(xiàn)
          • 價格:每個訂單中每個商品的價格,不同的訂單中,同一個商品的價格都可能是不同的,比如SOD訂單中蘋果是10,但是在DFH訂單中卻是9.8
          • 數(shù)量:每個訂單中每個商品的銷售數(shù)量

          2、模擬的第二份數(shù)據(jù)中就兩個字段:商品和產(chǎn)地

          同時我們可以看到:這兩份數(shù)據(jù)是存在不同的sheet中的,存儲成為xlslx文件,并且沒有任何的缺失值數(shù)據(jù)。

          需求1:不同的方式讀取數(shù)據(jù)

          存在同一個Excel中的不同sheet中,我們采取不同的方式來讀取:

          方式1:同時指定文件和sheet的名稱

          import?pandas?as?pd??#?先導(dǎo)入包

          方式2:指定文件名和sheet的索引號,索引從0開始

          需求2:兩份數(shù)據(jù)的合并

          可以看到兩個sheet中的數(shù)據(jù)是通過“商品”這個字段進(jìn)行關(guān)聯(lián)的,我們使用pandas中的merge函數(shù),并且保留第一份(左邊left)表格中的全部信息。

          merge函數(shù)是一個非常重要的函數(shù),可以靈活地處理Pandas中的數(shù)據(jù)合并問題。

          接下來的各種需求都是針對上面合并的數(shù)據(jù)進(jìn)行處理的

          需求3:訂單量、客戶量、商品量

          訂單量:這份數(shù)據(jù)總共下了多少個訂單

          unique:中文是獨(dú)特的意思,就是訂單號這個字段有多個獨(dú)特、唯一的信息。總共是7個訂單

          同樣的道理:可以得到多少個下單用戶、銷售了多少種商品?

          需求4:每個用戶的下單量

          就是求每個用戶下了多少個訂單:使用groupby進(jìn)行分組統(tǒng)計每個下單人的訂單量。

          • 先使用groupby函數(shù)進(jìn)行分組
          • 再使用聚合函數(shù)nunique,統(tǒng)計每個“訂單號”的個數(shù)(去重統(tǒng)計)
          • 最后再索引重置下

          看到李四下了3張訂單,是最多的

          需求5:每個用戶的總消費(fèi)金額

          1、先增加一列:總額

          2、兩種不同方式的分組再聚合

          需求6:不同產(chǎn)地的訂單量、銷量、銷售總額

          需求7:每個訂單中價格最高的商品

          找出每個訂單中價格最高的商品,比如:SOD訂單中價格最高的就是葡萄

          方式1:第一種實(shí)現(xiàn)的方式如下:

          • 先整體通過降序排列
          • 再根據(jù)訂單號來分組,取出第一條first數(shù)據(jù)即可

          方式2:實(shí)現(xiàn)方式如下

          1、先實(shí)現(xiàn)每個訂單號根據(jù)價格降序排列

          方式2:多個函數(shù)的混合使用,可分開運(yùn)行查看每步驟的結(jié)果

          df.groupby("訂單號").apply(lambda?x:?x.sort_values("價格",ascending=False)).reset_index(drop=True).groupby("訂單號").first().reset_index()

          方式3:分組的時候使用groupby_keys參數(shù)

          需求8:每個訂單中價格最高的前2位

          取出每個訂單中價格最高的前2位,若只有一位取出一位即可。

          上面是取出分組后最高的數(shù)據(jù),即第一條first。在這個需求中我們使用head函數(shù),可以取出任意的n條數(shù)據(jù):Top-N

          需求9:每個商品的筆單價(保留2位小數(shù))

          我們來拆解題意:

          • 每個商品:確定了分組的元素是groupby="商品"
          • 筆單價:先求每個商品的總銷售額,在求每個商品的訂單數(shù),最后相除

          如何對上面的商品筆單價保留兩位小數(shù)呢?兩種方法來實(shí)現(xiàn):

          往期精彩回顧




          本站qq群851320808,加入微信群請掃碼:
          瀏覽 31
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91精品国产综合久久久果冻传媒 | 亚州日韩AV中文字幕 | 2019年情侣免费自拍视频青青 | а√天堂8资源最新版 | 国产三级小视频 |