python - 如何从 pandas 数据框创建词袋

标签 python pandas

这是我的数据框

    CATEGORY    BRAND
0   Noodle  Anak Mas
1   Noodle  Anak Mas
2   Noodle  Indomie
3   Noodle  Indomie
4   Noodle  Indomie
23  Noodle  Indomie
24  Noodle  Mi Telor Cap 3
25  Noodle  Mi Telor Cap 3
26  Noodle  Pop Mie
27  Noodle  Pop Mie
...

我已经确定了df类型是string,我的代码是

df = data[['CATEGORY', 'BRAND']].astype(str)
import collections, re
texts = df
bagsofwords = [ collections.Counter(re.findall(r'\w+', txt))
            for txt in texts]
sumbags = sum(bagsofwords, collections.Counter())

当我打电话

sumbags

输出是

 Counter({'BRAND': 1, 'CATEGORY': 1})

我想要 sumbags 中的所有数据计数,除了标题,以使其清晰可见

Counter({'Noodle': 10, 'Indomie': 4, 'Anak': 2, ....}) # because it is bag of words

我需要每一个字数

最佳答案

IIUIC, 使用

选项 1] Numpy flattensplit

In [2535]: collections.Counter([y for x in df.values.flatten() for y in x.split()])
Out[2535]:
Counter({'3': 2,
         'Anak': 2,
         'Cap': 2,
         'Indomie': 4,
         'Mas': 2,
         'Mi': 2,
         'Mie': 2,
         'Noodle': 10,
         'Pop': 2,
         'Telor': 2})

选项 2] 使用 value_counts()

In [2536]: pd.Series([y for x in df.values.flatten() for y in x.split()]).value_counts()
Out[2536]:
Noodle     10
Indomie     4
Mie         2
Pop         2
Anak        2
Mi          2
Cap         2
Telor       2
Mas         2
3           2
dtype: int64

选项 3] 使用 stackvalue_counts

In [2582]: df.apply(lambda x: x.str.split(expand=True).stack()).stack().value_counts()
Out[2582]:
Noodle     10
Indomie     4
Mie         2
Pop         2
Anak        2
Mi          2
Cap         2
Telor       2
Mas         2
3           2
dtype: int64

详细信息

In [2516]: df
Out[2516]:
   CATEGORY           BRAND
0    Noodle        Anak Mas
1    Noodle        Anak Mas
2    Noodle         Indomie
3    Noodle         Indomie
4    Noodle         Indomie
23   Noodle         Indomie
24   Noodle  Mi Telor Cap 3
25   Noodle  Mi Telor Cap 3
26   Noodle         Pop Mie
27   Noodle         Pop Mie

关于python - 如何从 pandas 数据框创建词袋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46360435/

相关文章:

python - 如何使用列表将用户定义的函数更改为pandas系列

python - 带有 Pandas 的 DataFrame 的 DataFrame

python - Django模板: Exclude request.用户显示用户列表

python - 无法从网站下载 pdf 文件

python - 如何从 tensorflow 数据集中选择特定列?

python - 如何找到一个值与pandas中的多个值关联

python - 在将列与 Python Pandas 结合的同时 reshape (融化?)数据

python - 将 Pandas 系列转换为整数

python - 合并两个具有列表的数据集,并在使用 pandas 合并后保留列表

python - 使用 xpath 的复选框无法访问