2015-11-01 55 views
1

我有一個帶有大量分類列的熊貓數據框,我希望將其傳遞給scikit-learn。由於scikit-learn只接受數組作爲參數,所以我需要將所有分類列轉換爲虛擬變量。例如,我有一個宗教專欄,其中包含「基督教」,「穆斯林」和「印度教」等分類,根據這些值將其轉換爲三個虛擬變量,分別設置爲0或1。如何在熊貓數據框中將類型爲Categorica的所有列編碼爲虛擬變量

我發現的最佳解決方案是將數據框分成分類變量和非分類變量,然後對所有分類變量使用pandas.get_dummies,然後重新組合。

有沒有更快的方法來做到這一點?

回答

1

您可以將您的數據框(df)與您想要轉換的列列表一起傳遞給get_dummies()調用。

假設你有一堆df,並且你想從「Religion」列創建虛擬變量。

df = pd.DataFrame({'Name': ['Adam', 'Brad', 'Charlie', 'David','Eric'], 
        'Religion': ['Christian', 'Hindu', 'Muslim','Hindu','Christian'], 
        'Age': [28, 25, 35, 24, 39,], 
        'State':['CA','CA','AZ','NV','OR']}) 

這裏的DF的樣子:

Age  Name Religion State 
0 28  Adam Christian CA 
1 25  Brad  Hindu CA 
2 35 Charlie  Muslim AZ 
3 24 David  Hindu NV 
4 39  Eric Christian OR 

打造 「宗教」 一欄的虛擬變量:

df = pd.get_dummies(df, columns=['Religion']) 

輸出:

Age  Name State Religion_Christian Religion_Hindu Religion_Muslim 
0 28  Adam CA     1    0    0 
1 25  Brad CA     0    1    0 
2 35 Charlie AZ     0    0    1 
3 24 David NV     0    1    0 
4 39  Eric OR     1    0    0 
相關問題