<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 數(shù)據(jù)分析小技巧系列 第五集

          共 3495字,需瀏覽 7分鐘

           ·

          2020-12-08 23:17

          Python與算法社區(qū)
          第?446?篇原創(chuàng),干貨滿滿
          三步加星標(biāo)


          01

          02

          03

          三步加星標(biāo)








          ??你好,我是 zhenguo

          今晚小技巧第五篇,做數(shù)據(jù)分析數(shù)據(jù)透視必不可少,數(shù)據(jù)透視讓我們更加了解數(shù)據(jù)的規(guī)律。

          Pandas 與透視相關(guān)的方法有 3 個(gè),下面分別介紹使用它們的小技巧。?

          16 melt透視數(shù)據(jù)小技巧

          melt 方法固定某列為一個(gè)維度,組合其他列名為另一個(gè)維度,實(shí)現(xiàn)寬表融化為長(zhǎng)表:

          ???zip_code??factory??warehouse??retail
          0?????12345??????100????????200???????1
          1?????56789??????400????????300???????2
          2????101112??????500????????400???????3
          3????131415??????600????????500???????4

          固定列zip_code,組合factorywarehouseretail 三個(gè)列名為一個(gè)維度,按照這種方法湊齊兩個(gè)維度后,數(shù)據(jù)一定變長(zhǎng)。

          pandas 的 melt 方法演示如下:

          In?[49]:?df?=?df.melt(id_vars?=?"zip_code")?

          若melt方法,參數(shù)value_vars不賦值,默認(rèn)剩余所有列都是value_vars,所以結(jié)果如下:

          ????zip_code???variable??value
          0??????12345????factory????100
          1??????56789????factory????400
          2?????101112????factory????500
          3?????131415????factory????600
          4??????12345??warehouse????200
          5??????56789??warehouse????300
          6?????101112??warehouse????400
          7?????131415??warehouse????500
          8??????12345?????retail??????1
          9??????56789?????retail??????2
          10????101112?????retail??????3
          11????131415?????retail??????4

          若只想查看 factory 和 retail,則 value_vars 賦值為它們即可:

          In?[62]:?df_melt2?=?df.melt(id_vars?=?"zip_code",value_vars=['factory','reta
          ????...:?il'
          ])??

          結(jié)果:

          zip_code?variable??value
          0?????12345??factory????100
          1?????56789??factory????400
          2????101112??factory????500
          3????131415??factory????600
          4?????12345???retail??????1
          5?????56789???retail??????2
          6????101112???retail??????3
          7????131415???retail??????4

          melt 透視數(shù)據(jù)后,因?yàn)榻M合多個(gè)列為1列,所以數(shù)據(jù)一定變長(zhǎng)。

          17 pivot 透視小技巧

          melt 是融化數(shù)據(jù),而 pivot 結(jié)冰數(shù)據(jù),它們是一對(duì)互逆操作。

          這是上面 melt 后的數(shù)據(jù):

          zip_code?variable??value
          0?????12345??factory????100
          1?????56789??factory????400
          2????101112??factory????500
          3????131415??factory????600
          4?????12345???retail??????1
          5?????56789???retail??????2
          6????101112???retail??????3
          7????131415???retail??????4

          現(xiàn)在想要還原為:

          variable?factory?retail
          zip_code???????????????
          12345????????100??????1
          56789????????400??????2
          101112???????500??????3
          131415???????600??????4

          如何實(shí)現(xiàn)?

          使用 pivot 方法很容易做到:

          df_melt2.pivot(index='zip_code',columns='variable')

          index 設(shè)定第一個(gè)軸,為 zip_code,columns 設(shè)定哪些列或哪個(gè)列的不同取值組合為一個(gè)軸,此處設(shè)定為 variable 列,它一共有 2 種不同的取值,分別為 factory, retail,pivot 透視后變?yōu)榱忻簿褪?axis = 1 的軸

          pivot 方法沒有聚合功能,它的升級(jí)版為 pivot_table 方法,能對(duì)數(shù)據(jù)聚合。

          18 pivot_table 使用小技巧

          使用上面的 df_melt 演示不出聚合的功能:

          zip_code?variable??value
          0?????12345??factory????100
          1?????56789??factory????400
          2????101112??factory????500
          3????131415??factory????600
          4?????12345???retail??????1
          5?????56789???retail??????2
          6????101112???retail??????3
          7????131415???retail??????4

          因?yàn)?zip_code + variable 的組合都是唯一的,因此轉(zhuǎn)化一步,df_melt 基礎(chǔ)上再 append 它:

          In?[77]:?dfa?=?df_melt2.append(df_melt2)?

          數(shù)據(jù)變?yōu)椋?/p>

          ???zip_code?variable??value
          0?????12345??factory????100
          1?????56789??factory????400
          2????101112??factory????500
          3????131415??factory????600
          4?????12345???retail??????1
          5?????56789???retail??????2
          6????101112???retail??????3
          7????131415???retail??????4
          0?????12345??factory????100
          1?????56789??factory????400
          2????101112??factory????500
          3????131415??factory????600
          4?????12345???retail??????1
          5?????56789???retail??????2
          6????101112???retail??????3
          7????131415???retail??????4

          此時(shí)前兩列組合存在重復(fù)項(xiàng),能夠演示出聚合的效果:

          dfa.pivot_table(index='zip_code',columns='variable',aggfunc=np.sum)

          index 設(shè)定第一個(gè)維度:zip_code,columns 設(shè)定第二個(gè)維度為 variable,使用 aggfunc 參數(shù)做聚合,也就是存在 zip_code + variable 重復(fù)項(xiàng)時(shí),兩項(xiàng) np.sum 累加,透視結(jié)果如下:

          ???????????value???????
          variable?factory?retail
          zip_code???????????????
          12345????????200??????2
          56789????????800??????4
          101112??????1000??????6
          131415??????1200??????8
          表格本質(zhì)是二維結(jié)構(gòu),透視是變換二維表結(jié)構(gòu)的藝術(shù),掌握以上3個(gè)小技巧后,再去透視數(shù)據(jù)可能就會(huì)變得游刃有余一點(diǎn)。

          下面是我微信,任何問題都可留言:

          不必打賞
          給我點(diǎn)個(gè)贊
          就心滿意足了
          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  www.AV在线视频 | 大香蕉熟女 | 久久伊人青青草 | 久久久性爱| 美国成人毛片 |