我这样获取数据:
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()
并分配它之后会得到两个不同的结果?
所以如果不介意,有人可以帮助我吗?
衷心感谢。
答案 0 :(得分:1)
我认为您应该重新考虑这一行:
train.MSZoning = pd.get_dummies(train.MSZoning)
您正在将DataFrame
分配给Series
。
不确定那里发生了什么,但我想那不是你的意图。