如何将Pandas数据帧中Categorica类型的所有列编码为伪变量



我有一个带有大量分类列的Pandas数据帧,我希望将其传递给scikit learn。由于scikit-learn只接受数组作为参数,所以我需要将所有分类列转换为伪变量。例如,我有一个宗教专栏,其中包含"基督教"、"穆斯林"one_answers"印度教"类别,这些类别应该转换为三个虚拟变量,根据这些值设置为0或1。

我找到的最好的解决方案是将数据帧拆分为分类变量和非分类变量,然后对所有分类变量使用pandas.get_dummies,然后重新组合。

有更快的方法吗?

您可以获取数据帧(df)并将其与要转换的列列表一起传递给get_dummies()调用。

假设您有一个带有一堆列的df,并且您希望仅从"宗教"列创建伪变量。

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

相关内容

  • 没有找到相关文章

最新更新