调用pandas.get_dummies()后的结果令人困惑

时间:2018-12-13 13:38:51

标签: python pandas

我这样获取数据:

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 :(得分:1)

我认为您应该重新考虑这一行:

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

您正在将DataFrame分配给Series

不确定那里发生了什么,但我想那不是你的意图。