Озадаченный результат после вызова pandas.get_dummies () - PullRequest
0 голосов
/ 13 декабря 2018

Я получаю данные следующим образом:

train.MSZoning.value_counts()
Out:
RL         1151
RM          218
FV           65
RH           16
C (all)      10
Name: MSZoning, dtype: int64

И я пытаюсь закодировать их с помощью метки следующим образом:

C (all) => 0
Fv => 1
RH => 2
RL => 3
RM => 4

ТАК, думаю, я снова напечатаю value_counts(), что будетбыть таким:

Out:
0           10 
1           65
2           16
3           1151
4           218

И я пытаюсь использовать Pandas.get_dummies() вот так:

t = pd.get_dummies(train.MSZoning)
print(t)
Out:
    C (all) FV  RH  RL  RM
0   0   0   0   1   0
1   0   0   0   1   0
2   0   0   0   1   0
3   0   0   0   1   0
4   0   0   0   1   0
5   0   0   0   1   0
...

И я печатаю pd.Dataframe(t).describe(), чтобы получить его описание.

        C (all)     FV          RH          RL          RM
count   1460.000000 1460.000000 1460.000000 1460.000000 1460.000000
mean    0.006849    0.044521    0.010959    0.788356    0.149315
std     0.082505    0.206319    0.104145    0.408614    0.356521
min     0.000000    0.000000    0.000000    0.000000    0.000000
25%     0.000000    0.000000    0.000000    1.000000    0.000000
50%     0.000000    0.000000    0.000000    1.000000    0.000000
75%     0.000000    0.000000    0.000000    1.000000    0.000000
max     1.000000    1.000000    1.000000    1.000000    1.000000

НО при попытке использовать pd.get_dummies() таким образом я получаю что-то другое, что меня озадачило:

train.MSZoning = pd.get_dummies(train.MSZoning)
Out:
print(train.MSZoning)
0       1
1       1
2       1
3       1
4       1
5       1
...

train.MSZoning.describe()
Out:
count    1460.000000
mean        0.993151
std         0.082505
min         0.000000
25%         1.000000
50%         1.000000
75%         1.000000
max         1.000000
Name: MSZoning, dtype: float64

Мне интересно, почему после вызова функции get_dummies() получаются два разных результатаи присвоить его?

Так что, если не возражаете, кто-нибудь может мне помочь?

С уважением.

1 Ответ

0 голосов
/ 13 декабря 2018

Я думаю, вам следует пересмотреть эту строку:

train.MSZoning = pd.get_dummies(train.MSZoning)

Вы присваиваете DataFrame для Series.

Не уверен, что там происходит, но я думаю, что это не ваше намерение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...