2017-12-25 10 views
1

私はpandasシリーズを使用しています。これを1つのホットエンコーディングに変換しようとしています。私はdescribeメソッドを使用して、一連のユニークなカテゴリの数を確認しています。出力は次のとおりです。Pandas get_dummiesは同じ機能の複数の列を生成します

input['pattern'].describe(include='all') 

    count  9725 
    unique  7 
    top   1 
    freq  4580 
    Name: pattern, dtype: object 

私がしようとしている:

x = pd.get_dummies(input['pattern']) 
    x.describe(include= 'all') 

を、私は完全にゼロです12クラスと18のクラスを取得します。どのようにしてget_dummiesは入力で一度も出現しなかったクラスを作りましたか?

+0

私はあなたのデータを見ることができないので、あなたの問題点は何もわかりません。それについて何かできますか? –

+0

私のデータは、['0'、 '0'、 '5'、 '6'、....]のようなオブジェクト形式の数字に過ぎません。それはもともと18のクラスを持っていましたが、すべての高級クラスはクラス '6'に変更され、describeメソッドはそれを確認しました。すべての上位生成クラスはすべてゼロです。 –

+0

申し訳ありません、私はまだ理解していない、あなたの説明はあまり役に立たない。すべてのget dummiesは、あなたの列をエンコーディングのデータフレームに変換します。あなたが持っているユニークな機能の数は、列の数を数えます。出力上で 'describe'を呼び出すことは意味がありません。なぜなら、それはちょうど0と1であるからです。 –

答えて

2

コメントの説明から、列には文字列と整数が混在していることが推測されました。例えば

、今

s = pd.Series(['0', 0, '0', '6', 6, '6', '3', '3']) 
s 

0 0 
1 0 
2 0 
3 6 
4 6 
5 6 
6 3 
7 3 
dtype: object 

pd.get_dummiesは、同じ機能の複数のそのような列につながる呼び出します。

pd.get_dummies(s) 

    0 6 0 3 6 
0 0 0 1 0 0 
1 1 0 0 0 0 
2 0 0 1 0 0 
3 0 0 0 0 1 
4 0 1 0 0 0 
5 0 0 0 0 1 
6 0 0 0 1 0 
7 0 0 0 1 0 

修正点は、すべての要素が同じタイプであることを確認することです。この場合、strに変換することをおすすめします。

s.astype(str).str.get_dummies() 


    0 3 6 
0 1 0 0 
1 1 0 0 
2 1 0 0 
3 0 0 1 
4 0 0 1 
5 0 0 1 
6 0 1 0 
7 0 1 0 
関連する問題