Dans cet article pandas 0.18.J'utilise 1.
Si quelqu'un utilisant R essaie de faire de même avec Python (scikit-learn), il peut y avoir des cas où il est difficile de gérer des variables catégorielles. Les données catégorielles ne peuvent pas être gérées telles quelles par sklearn (lorsque numpy.ndarray est utilisé comme entrée), alors convertissez-les en une variable factice.
Les données sont les suivantes. On suppose que le sexe a 1 pour les hommes, 2 pour les femmes et l'âge a les valeurs 1 à 3 correspondant à chaque groupe d'âge.
df1
id sex age
0 1001 1 3
1 1002 2 2
2 1003 1 3
3 1004 2 1
4 1005 2 1
df1 = df1.reset_index(drop=True) #Je le fusionnerai avec l'index plus tard, alors initialisez-le juste au cas où
dummy_df = pd.get_dummies(df1[['sex', 'age']], drop_first = True)
print dummy_df
sex_2 age_2 age_3
0 0.0 0.0 1.0
1 1.0 1.0 0.0
2 0.0 0.0 1.0
3 1.0 0.0 0.0
4 1.0 0.0 0.0
C'est bien transformé en une variable factice. Après avoir défini une variable factice pour chaque variable, drop_first supprime la première variable. (Si vous le laissez, les variables deviendront dépendantes et ce n'est pas pratique, nous prenons donc des mesures pour l'exclure ici) Veuillez noter que drop_first est compatible avec pandas 0.18.0 ou version ultérieure.
df2 = pd.merge(df1, dummy_df, left_index=True, right_index=True)
print df2
id sex age sex_2 age_2 age_3
0 1001 1 3 0.0 0.0 1.0
1 1002 2 2 1.0 1.0 0.0
2 1003 1 3 0.0 0.0 1.0
3 1004 2 1 1.0 0.0 0.0
4 1005 2 1 1.0 0.0 0.0
Après la fusion, vous pouvez voir qu'elle est correctement créée en tant que variable factice.
Recommended Posts