pandas创建虚拟变量的一个例子

《利用Python进行数据分析》一书中有这样一个创建虚拟变量的例子。
原始数据:
在这里插入图片描述
我们需要根据类别列genres生成每个电影所属类别的虚拟变量。首先问题在于每个观测属于多个类别,不能直接应用pd.get_dummies函数。

  • 第一步:首先需要知道具体有多少种电影流派
all_genres = []
for x in movies.genres:
	all_genres.extend(x.split('|'))
genres = pd.unique(all_genres)
  • 第二步:创建一个用于储存虚拟变量的dataframe
zero_matrix = np.zeros((len(movies), len(genres))
dummies = pd.DataFrame(zero_matrix, columns = genres)
  • 第三步:遍历每一部电影,根据电影所属的类别在dummiesdataframe中进行标注
for i, gen in enumerate(movies.genres):
	#dummies.columns 返回dummies的列标签
	#.get_indexer方法返回列表区的索引值
	# indices返回一个数组,储存了该电影所属类别对应的列标签
	indices = dummies.columns.get_indexer(gen.split('|'))
	# 使用iloc方法进行索引
	dummies.iloc[i, indices] = 1
  • 第四步:将虚拟变量结果与原始矩阵联合
movies_windic = movies.join(dummies.add_prefix('Genre_'))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值