pandas melt 與pivot 函數


(掌握這個,基本就完美無缺的任意按照自己的想法,更改列了。)

背景:

最近有個excel 數據需要轉化的過程。 數據量還挺大的,大概有30多萬。 需要把某些行變成列,有些列又變成行。 這個操作本身就比較煩躁。

更何況數據量達到了幾十萬的情況下, excel 基本就卡死了。

1 把城市合為一列

2 將空氣類型type 分開為成為列

 先貼樣本:

 

 

 

轉化后的結果:

 

 

  苦惱了很久。

 

實踐:

  melt 函數講解,

frame,   -- 需要處理的數據集
id_vars=None, -- 不需要改變的列
value_vars=None,--需要轉換的列名,如果剩下的列全部都要轉換,就不用寫了
var_name=None, --設置對應的維度名
value_name="value", -- 設置對應的度量值名
col_level=None, -- 不知道
        first_data_2 = self.pd.melt(deal_data, id_vars=['date', 'hour', 'type'], value_vars=city_data,
                                    var_name='city', value_name='count_clue').fillna(0)

       在這里, deal_data 是需要處理數據集, id_vars  不變的列, date , hour, type , 需要轉化的列  數組city_data [] , 理論上應該是不用填,下面全部轉化。 

       對應的維度名:city ,  對應合起來的度量值。count_clue。

這樣就把列都合起來了 。

結果展示

 

 

 

然后我們用piovt 函數,把它列 type 同樣列 轉變成行。

first_data_3 = self.pd.DataFrame(
            self.pd.pivot_table(first_data_2, index=['date', 'hour', 'city', ], columns='type', values='count_clue'))

 

piovt_table ,我懂的太少了。都是照抄的 

貼個鏈接, 以我的理解, index 是需要的列,然后columns 就是要展開的列, value 是要展開的值,就這樣。

https://zhuanlan.zhihu.com/p/31952948

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM