18910140161

pandas技巧 快速生成虚拟变量矩阵

顺晟科技

2021-06-16 10:42:58

501

熊猫与虚拟变量矩阵的构建

在日常工作和学习中,我们经常会遇到一些固定类型的变量。对于这些变量,如果用一般的数据分析方法来组织和处理,就会显得多余或不足,于是就产生了因子类型(在计量学中更好地称为虚拟变量)。这种类型将数据组织成几种类型的集合,这极大地方便了数据的分析和处理。在本文中,边肖将与您讨论如何使用python来生成和组织虚拟变量。为了便于解释,本文以世界上更受欢迎的20部电影为例,展示了如何使用python中的熊猫库来处理虚拟变量。至于电影的数据集,可以从这里下载电影。首先大致看一下数据表的结构。有两种方式可以做到:直接打开Excel文件或者直接使用熊猫库导入数据,然后使用相关命令查看。

将numpy导入为np

将熊猫作为pd导入

movies=PD . read _ excel(' Top 20 _ movie . xlsx ')

movies.head(6)

20部更受欢迎的电影

这里的截图不是上面命令的结果。截图直接来自Excel文件。以上命令只显示Excel文件中的前六行记录。这个数据表主要包含了20部电影的片名、上映时间和类型。边肖下一步需要做的是虚拟化电影类型。这里,先解释一下这个概念。因为这20部影片有很多类型,边肖会构建一个类型矩阵,其中每一列代表一个影片类型,然后根据影片是否属于类型状态来分配0/1。具体操作步骤如下:

总结各类信息;

根据胶片号和胶片类型生成虚拟变量矩阵;

根据每部影片的相关类型信息,在虚拟变量矩阵中进行0/1赋值;

汇总矩阵和原始数据表信息。

下面先总结一下电影的类型,因为电影的类型信息存储在Excel表的type列,一部电影有多种类型。从表中可以看出,类型之间用逗号隔开,所以需要对每种类型进行排序。具体方法如下。

all _ type=[]

在电影里打字。型

all_types.extend(type.split(','))

type=PD . unique(all _ type)

行代码首先创建一个空列表,然后loop语句提取每部电影的类型并存储在前面创建的列表中,然后使用熊猫库下的unique函数获取所有类型。很明显,这些电影有16种类型,你可以使用“types.shape”来查看,所以这里没有列出。现在您已经得到了电影类型,是时候使用下面的命令创建一个虚拟矩阵了。

zero_matrix=np.zeros([len(电影),len(类型)]

假人=pd。数据帧(零矩阵,列=类型)

假人.头部(10)

零阵列数据帧

需要根据胶片类型重新分配虚拟矩阵,如下命令所示。

对于ii,键入enumerate(电影)。类型):

indexs=Dummies . columns . get _ indexer(type . split(','))

Dummies.iloc[ii,indexs]=1

赋值后的虚拟矩阵

现在是将虚拟矩阵与原始数据表合并的时候了,这可以通过使用join函数来实现。

movies _ amend=movies . join(Dummies)

Movies_amend.to_excel('修订前20名电影信息表。xlsx ',索引=False)

修订电影信息表

这样生成的虚拟矩阵和原始数据表就合并在一起了,很容易看到各种类型下每部影片的具体赋值。虽然这个操作从一开始就可以在原始表中完成,但边肖强烈建议更好将数据处理过程单独放在一起,并将处理后的结果与原始表合并,这样就不会因为临时操作不当而丢失原始数据。

一起写

虽然上面的分析用的代码不多,但还是在这里整合一下,让大家系统的看一下。

# _*_ coding:utf-8 _*_

'''

@author:刘仆

@date: 2018-8-5

@ filename : python 2 dummies . py

目的:利用python快速生成虚拟矩阵

工具:win7 python3.6熊猫

数据集:Top20_movie.xlsx

'''

# 导入相关的分析库

将数组导入为铭牌

将熊猫作为螺纹中径导入

# 读取文件

电影=PD。read _ excel(' 20强_电影。xlsx ')#注意把当前目录调整到文件所在目录下

movies.head() #大致看一下数据表信息

# 汇总影片类型

all _ type=[]#生成空列表存放影片类型

在电影里打字。型

all _ type。extend(类型。拆分(',')#统计每种影片的类型并将其放到影片列表中

type=PD。(所有类型)#绘制所有不重复的影片类型

# 生成虚拟矩阵并赋值

zero_matrix=np.zeros([len(电影),len(类型)]

假人=pd .数据帧(零矩阵,列=类型)

对于二、键入枚举(电影)。类型):

指数=假人。列。get _ indexer(类型。拆分(','))

Dummies.iloc[ii,indexs]=1

# 合并表格并导出表格

movies _ amend=movies。加入(假人)

movies_amend.to_excel('修正后前20名影片信息表. xlsx ',索引=False)

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航