【问题标题】:How to store the get_dummies transformation of pandas in Python?如何在 Python 中存储 pandas 的 get_dummies 转换?
【发布时间】:2018-02-22 18:05:48
【问题描述】:


python中的pandas包中有get_dummies转换,它将分类变量转换为值为0 / 1的二进制(标志)变量。这个转换是基于实际值的,但我想存储转换的代码,这样我就可以在具有较少值的其他数据集上运行它,并且仍然可以获得完整大小的转换数据结构。

假设你有这个代码:

import pandas as pd
a = [[5,12,"blue"], [8,53,"yellow"]]
df = pd.DataFrame(a, columns=['Weight','Size','Color'])
df.apply(pd.to_numeric, errors='ignore')
df

产生这些数据:

Weight  Size    Color
5       12      blue
8       53      yellow

和:

df = pd.get_dummies(df)
df

产生这个:

Weight  Size    Color_blue  Color_yellow
5       12      1           0
8       53      0           1

我想存储这个原始转换,以便以后获得记录,例如:

[2,9,"blue"]

我仍然可以得到整个结构,比如:

Weight  Size    Color_blue  Color_yellow
2       9       1           0

Get_dummies 将在后一种情况下省略 Color_yellow 列...
什么是最简单的解决方案?

我正在考虑构建我自己的 get_dummies 函数,它遍历所有分类变量,获取所有可能的不同值,然后生成执行转换的 python 函数的代码。但必须有一些已经实施的解决方案......

【问题讨论】:

    标签: python pandas dummy-variable


    【解决方案1】:

    这就是我要找的。代码打印了转换,这必须在以后的数据集上完成:

    import pandas as pd
    import numpy as np
    a = [[5,12,"blue","apple"], [8,53,"yellow","pear"], [1,8,"brown","peach"],[1,2,"blue","plum"]]
    df = pd.DataFrame(a, columns=['Weight','Size','Color','Fruit'])
    df.apply(pd.to_numeric, errors='ignore')
    
    for col in df.select_dtypes(include=["object"]).columns:
        for i in df[col].unique():
           df[col+"_"+i] = np.where(df[col] == i, 1, 0)
           print('df["'+col+'_'+i+'"] = np.where(df["'+col+'"] == "'+i+'", 1, 0)')
        df = df.drop(columns=[col])
        print('df = df.drop(columns=["'+col+'"])')
    

    【讨论】:

      猜你喜欢
      • 2017-01-22
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2018-12-07
      相关资源
      最近更新 更多