1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Pandas 數(shù)據(jù)分析小技巧系列 第五集

        共 3495字,需瀏覽 7分鐘

         ·

        2020-12-08 23:17

        Python與算法社區(qū)
        第?446?篇原創(chuàng),干貨滿(mǎn)滿(mǎn)
        三步加星標(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,組合factory,warehouse,retail 三個(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 方法沒(méi)有聚合功能,它的升級(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)。

        下面是我微信,任何問(wèn)題都可留言:

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日本年轻漂亮大胸继坶3 | 成年人免费在线视频 | 内射学生妹视频在线 | 国产日韩精品一区二区三区在线 | 天天干天天肏 | 无码熟妇人妻无码AV在线天堂 | 调教女m抽搐高潮打屁股 | 被闺蜜扒了内裤光着屁股打 | 麻豆电影在线播放 | 熟女乱码|