如何将 pandas 的 get_dummies 转换存储在 Python 中?
How to store the get_dummies transformation of pandas in Python?
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 函数的代码,哪个进行转换。但是必须有一些已经实施的解决方案...
这就是我要找的。代码打印转换,必须在以后的数据集上完成:
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+'"])')
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 函数的代码,哪个进行转换。但是必须有一些已经实施的解决方案...
这就是我要找的。代码打印转换,必须在以后的数据集上完成:
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+'"])')