44402


後述のようなsample.csvを読み込んだDataFrame
dfがあったときに、カテゴリカルな変数であるresidenceに一位のラベルを自動的にふるよい方法があれば教えてください。

pandas.get_dummies(df)を用いるとそれっぽいことができなくはないですが、東京カラム、神奈川カラム、、、などと特徴量の変数の数だけ、新しい特徴量ができ、それらが0,1になってしまいます。  
やりたいこととは異なります。

また、mapを用いて  
df.map({"東京":1, "神奈川":2,,,})  
とすれば、求めたい形にはなりますが、自分で対応関係を辞書で手動定義する必要があり面倒です。

csvはあくまでも例なので実際に使いたいデータとは異なりますが、  
自動でふる良い方法があれば教えてください。

## sample.csv

name,residence  
安倍,東京  
野田,神奈川  
菅,千葉  
鳩山,埼玉  
麻生,神奈川  
,,,  
伊藤,沖縄

↑1000行くらいある

## こういう風にしたい

name,residence  
安倍,1  
野田,2  
菅,3  
鳩山,4  
麻生,2  
,,,  
伊藤,47

東京は1, 神奈川は2, 千葉は3, 埼玉は4, 沖縄は47など。


CC BY-SA 4.0
2018-05-30T01:05:53.883
44383
2018-05-30T05:12:28.853
27333
question
python pandas 機械学習
DataFrameを用いてカテゴリカル変数を1特徴量の量的変数に変換する方法


**residence** 列を category型のデータに変換して, カテゴリーコードを取り出せばよろしいかと思います。

[code]

    df['residence'] = df['residence'].astype('category')
    df['residence_code'] = df['residence'].cat.codes
    
[/code]

今回のように単に文字列を数値に変換したい場合は

[code]

    df['residence'] = df['residence'].astype('category').cat.codes
    
[/code]

で良いかもしれません。


CC BY-SA 4.0
2018-05-30T05:12:28.853
44402
2018-05-30T05:12:28.853
24801
44383
answer