zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    bzoj3262 陌上花开
    bzoj2738 矩阵乘法
    bzoj3110 [Zjoi2013]K大数查询
    bzoj2527 [Poi2011]Meteors
    bzoj1758 [Wc2010]重建计划
    启动应用程序的Activty多种方式
    隐藏应用图标的多种方式
    Loading Large Bitmaps Efficiently
    java中的匿名内部类总结
    android listview addHeaderView和addFooterView的注意事项
  • 原文地址:https://www.cnblogs.com/sakura3/p/11979041.html
Copyright © 2011-2022 走看看