Python 使用CountVectorizer从列表列创建术语频率数据帧时,运行时崩溃

Python 使用CountVectorizer从列表列创建术语频率数据帧时,运行时崩溃,python,pandas,dataframe,sparse-matrix,countvectorizer,Python,Pandas,Dataframe,Sparse Matrix,Countvectorizer,我是python新手,正在做一个数据分析项目,希望得到一些帮助。 我有一个400000行的数据框,它有列:ID、类型1类别、类型2类别、类型3类别、金额、年龄、欺诈 类别列是列表的一列。此列表包含不同的术语,我希望获取这些术语并创建一个矩阵,该矩阵计算并显示特定术语在该行中出现的次数(每个术语和频率有一列) 因此,我们的目标是创建一个稀疏矩阵的数据帧,每个唯一的类别都成为一列-我的数据集有2000多个不同的类别-也许这就是为什么计数向量器不适合这个 我尝试了两种方法,一种是使用a,另一种是使用

我是python新手,正在做一个数据分析项目,希望得到一些帮助。 我有一个400000行的数据框,它有列:ID、类型1类别、类型2类别、类型3类别、金额、年龄、欺诈

类别列是列表的一列。此列表包含不同的术语,我希望获取这些术语并创建一个矩阵,该矩阵计算并显示特定术语在该行中出现的次数(每个术语和频率有一列)

因此,我们的目标是创建一个稀疏矩阵的数据帧,每个唯一的类别都成为一列-我的数据集有2000多个不同的类别-也许这就是为什么计数向量器不适合这个

我尝试了两种方法,一种是使用a,另一种是使用

但计数向量器每次运行都会崩溃。 第二种方法太慢了。因此,我想知道是否有任何方法可以改进这些解决方案

我还将数据帧分割成多个块,但仍然会导致问题


例子:
+------+--------------------------------------------+---------+---------+
|ID |类型1类|金额|欺诈|
+------+--------------------------------------------+---------+---------+
|ID1 |[Lex1,Lex2,Lex1,Lex4,Lex2,Lex1]| 110.0 | 0|
|ID2 |[Lex3,Lex6,Lex3,Lex6,Lex3,Lex1,Lex2]| 12.5 | 1|
|ID3 |[Lex7,Lex3,Lex2,Lex3,Lex3]| 99.1 | 0|
+------+--------------------------------------------+---------+---------+
col='类型1类别'
#在此之前,我根据ID组合了整个数据帧
#这是来自旧的数据帧,其中每一行都有不同的id出现
#每行只有一个类别
terms=df_old[col].unique()
countvec=countvectorier(词汇表=术语)
#创造一袋文字
df=df.join(pd.DataFrame(countvec.fit_transform(df[col]).toarray(),
columns=countvec.get\u feature\u names(),
索引=df.index)
#删除列表的原始列
df=df.下降(柱,轴=1)
#####使用np.split将数据帧第二次拆分为块
df_l3=df_分割[3]
output.index=df_l3.index
#分配列。
输出[['ID','[col]]]=df_l3[[[ID','[col]]]]
#将数据帧分割成块,索引从114305开始
last=114305+int(df_l3.shape[0])
对于范围内的i(114305,最后一个):
印刷品(一)
用文字表示:
output.ix[i,str(word)]=输出[col][i]。计数(str(word))
运行计数矢量器的内存,第二个不再计数频率。适用于块1,其中索引从零开始,但不适用于其他块