簡體   English   中英

如何在 Python 中存儲 Pandas 的 get_dummies 轉換?

[英]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+'"])')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM