gpt4 book ai didi

python - 用 Pandas 向量化多分类数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:58 25 4
gpt4 key购买 nike

Hej,我正在尝试对属于多个类别的项目进行矢量化处理,并将它们放入 pandas 数据框中。我已经想出了一个解决方案,但它很慢。所以这就是我正在做的:

这就是我的数据的样子:

data = {
'A':['c1','c2','c3'],
'B':['c4','c5','c2'],
'C':['c2','c1','c4']
}

我有三个项目 (A-C),它们属于五个不同的类别 (c1-c5)。

所以我创建了一个空数据框,遍历项目将它们变成具有正确索引的 bool 系列对象并附加它们:

df = pd.SparseDataFrame()
for k, v in data.items():
s = pd.Series(np.ones_like(v, dtype=bool), index=v, name=k)
df = df.append(s)

我的结果是这样的:

Resulting Dataframe

我对这个结果很满意,但我的真实数据有大约 20 万个类别,这使得这种方法非常慢。您对如何加快速度有什么建议吗?

备注:提取所有类别并将它们作为列传递到空数据框中无济于事:

df = pd.SparseDataFrame(columns=all_categories)

最佳答案

考虑以下内存节省方法:

In [143]: df = pd.DataFrame([' '.join(data[k]) for k in data.keys()],
index=data.keys(),
columns=['text'])

In [144]: df
Out[144]:
text
C c2 c1 c4
A c1 c2 c3
B c4 c5 c2

In [145]: from sklearn.feature_extraction.text import CountVectorizer

In [146]: cv = CountVectorizer()

In [147]: df = pd.SparseDataFrame(cv.fit_transform(df['text']),
columns=cv.get_feature_names(),
index=df.index)

In [148]: df
Out[148]:
c1 c2 c3 c4 c5
C 1.0 1 NaN 1.0 NaN
A 1.0 1 1.0 NaN NaN
B NaN 1 NaN 1.0 1.0


In [149]: df.memory_usage()
Out[149]:
Index 80
c1 16
c2 24
c3 8
c4 16
c5 8
dtype: int64

关于python - 用 Pandas 向量化多分类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44408861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com