挖掘一个数据框以获取唯一字数

时间:2019-04-30 20:17:29

标签: python python-3.x text-mining text-parsing

我正在寻找一个数据帧中的一组字符串,然后将这些字符串分解以获取字符串中不同单词的数量。最终的想法是这样的:

单词1:5次

单词2:3次

单词3:10次

...

单词n:13次

最终目标是采用这组字符串,然后将分析扩展为2个单词,3个单词等等的分组。

我尝试了多种包装,包括熊猫,再包装,收藏等等,但似乎没有什么可以让我找到所需的地方。

import pandas as pd

import re


fPath = 'path\there'
fName = '\BuzzWords.xlsx'

importExcel = pd.read_excel(fPath+fName, sheetname = 'DATA')
importExcel.sort_index(inplace = True)

bWList = ['words','things']

pattern = '(?i)('+'|'.join(bWList)+')'

minerFrame = importExcel[0:0]

dFCounter = max(importExcel.index)

for i in range(0,dFCounter+1):

    temp = importExcel[i:i+1]

    checker = temp[temp['description'].str.contains(pattern)]

    checker2 = checker.isnull().sum().sum()

    if checker2 > 0:
        minerFrame = minerFrame.append(temp)

minerFrame = minerFrame.reset_index(drop = True)

该代码最终应导致这种结果:

单词1:10

Word 2:20

Word 3:14

...

2个单词组合:10

2个单词组合:15

...

3字组合:30

3字组合:40

...

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

正如@Chris所提到的,Counter库中的collections对象将返回一个包含唯一单词的字典,其中包含大量单词。因此,您可以执行以下操作:

from collections import Counter

#...
bwDict = {}
for word in bwList:
    bwDict[word] = 0

for i in range(0,dFCounter+1):

    content = importExcel.loc[i, 'description']
    for key, val in Counter(content).items():
        if key in bwDict.keys():
            bwDict[key] += val

这不会返回组合计数,但是使用re库的现有代码应该返回该计数。