如果我有一个字符串列表,这些字符串是用逗号分隔的单词,如何将其转换为具有单词对和频率的数据帧



Meta:很抱歉标题措辞不好,我真的不知道如何用一句话来描述我所问的内容。

我有一个字符串列表,如下所示:

'word1, word2, word3'
'word2, word3'
'word4, word3, word1'
'word2, word4'

我想从该数组中生成一个网络图,这需要将我的数据结构化为熊猫的数据帧,如下所示:

source, target, frequency
word1, word2, 1
word1, word3, 1
word2, word3, 2
word2, word4, 1

等。

我将如何做到这一点?

您可以遍历字符串,将它们拆分为逗号后跟空格,并使用IT.combinations形成所有单词对。可以使用collections.Counter来计算货币对的频率。最后,可以从Counter中的项目构建所需的数据帧:

import collections
import itertools as IT
import pandas as pd
data = ['word1, word2, word3',
        'word2, word3',
        'word4, word3, word1',
        'word2, word4']
result = collections.Counter()
for item in data:
    for pair in IT.combinations(item.split(', '), 2):
        result[tuple(sorted(pair))] += 1
df = pd.DataFrame([pair+(freq,) for pair, freq in result.items()], columns=['source', 'target', 'freqency'])
print(df)

收益 率

  source target  freqency
0  word3  word4         1
1  word2  word4         1
2  word1  word3         2
3  word1  word2         1
4  word1  word4         1
5  word2  word3         2

最新更新