使用 python/pandas 简化分类变量
Simplifying categorical variables with python/pandas
我正在使用 Kaggle 上的 airbnb 数据集:
https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings
并希望将语言列的值简化为 2 个分组 - 英语和非英语。
例如:
users.language.value_counts()
en 15011
zh 101
fr 99
de 53
es 53
ko 43
ru 21
it 20
ja 19
pt 14
sv 11
no 6
da 5
nl 4
el 2
pl 2
tr 2
cs 1
fi 1
is 1
hu 1
Name: language, dtype: int64
而我想要的结果是:
users.language.value_counts()
english 15011
non-english 459
Name: language, dtype: int64
这就是我想要的解决方案:
def language_groupings():
for i in users:
if users.language !='en':
replace(users.language.str, 'non-english')
else:
replace(users.language.str, 'english')
return users
users['language'] = users.apply(lambda row: language_groupings)
除了这显然有问题,因为当我 运行 value_counts 在专栏上时,它 returns 是一个空系列。
这是你想要的吗?
In [181]: x
Out[181]:
val
en 15011
zh 101
fr 99
de 53
es 53
ko 43
ru 21
it 20
ja 19
pt 14
sv 11
no 6
da 5
nl 4
el 2
pl 2
tr 2
cs 1
fi 1
is 1
hu 1
In [182]: x.groupby(x.index == 'en').sum()
Out[182]:
val
False 459
True 15011
试试这个:
users.language = np.where( users.language !='en', 'non-english', 'english' )
我正在使用 Kaggle 上的 airbnb 数据集:
https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings
并希望将语言列的值简化为 2 个分组 - 英语和非英语。
例如:
users.language.value_counts()
en 15011
zh 101
fr 99
de 53
es 53
ko 43
ru 21
it 20
ja 19
pt 14
sv 11
no 6
da 5
nl 4
el 2
pl 2
tr 2
cs 1
fi 1
is 1
hu 1
Name: language, dtype: int64
而我想要的结果是:
users.language.value_counts()
english 15011
non-english 459
Name: language, dtype: int64
这就是我想要的解决方案:
def language_groupings():
for i in users:
if users.language !='en':
replace(users.language.str, 'non-english')
else:
replace(users.language.str, 'english')
return users
users['language'] = users.apply(lambda row: language_groupings)
除了这显然有问题,因为当我 运行 value_counts 在专栏上时,它 returns 是一个空系列。
这是你想要的吗?
In [181]: x
Out[181]:
val
en 15011
zh 101
fr 99
de 53
es 53
ko 43
ru 21
it 20
ja 19
pt 14
sv 11
no 6
da 5
nl 4
el 2
pl 2
tr 2
cs 1
fi 1
is 1
hu 1
In [182]: x.groupby(x.index == 'en').sum()
Out[182]:
val
False 459
True 15011
试试这个:
users.language = np.where( users.language !='en', 'non-english', 'english' )