У меня очень мало опыта работы с Python и я пытаюсь построить частотную матрицу, которая бы суммировала, сколько заголовков публикаций содержат конкретные ключевые слова, с разбивкой по факультетам и группам ключевых слов (SDG). Мой текущий скрипт использует тестовые данные и показывает случаи, когда в заголовке факультета есть ключевое слово из одной из групп ключевых слов. Я не уверен, как организовать это в матрицу (подсчитать количество случаев по факультетам и SDG) и вывести его в CSV.
Мой ожидаемый вывод будет иметь следующие 3 заголовка столбца:
Факультет, Количество заголовков с ключевыми словами, SDG (группа ключевых слов)
В дополнение к получению частот, ятакже хотел бы найти способ использовать столбцы ключевых слов различной длины (data1). Как я могу это сделать?
Любая помощь приветствуется. Спасибо
import pandas
import re
data1 = {'SDG1':['Africa', 'Basic services', 'Class', 'Vulnerable','Wealth distribution'], 'SDG2':['Agricultural Orientation index', 'Agriculture', 'Consume', 'abcd', 'defg']}
keywords = pandas.DataFrame(data1)
keywords = keywords.applymap(lambda s:s.lower() if type(s) == str else s)
data2 = {'Title':['Africa blabla Class', 'Basic services blabla Class', 'Wealth abcdabcd', 'Wealth distribution 1', 'Wealth distribution 2','Consume blabla'], 'Faculty':['Eng', 'FHM', 'Eng', 'Architecture', 'Eng', 'Architecture']}
titles = pandas.DataFrame(data2)
titles = titles.applymap(lambda s:s.lower() if type(s) == str else s)
dict_Fac = pandas.Series(titles.Faculty.values,index=titles.Title).to_dict()
res = False
NumberofTitleswithKeywords=0
for key,value in dict_Fac.items():
title = key
for column in keywords:
patterns = keywords[column]
res = False
for pattern in patterns:
#print('Looking for "%s" in "%s" ->' % (pattern, title), end=' ')
if re.search(pattern, title):
res = True
if res:
print (value)
print("FoundKeywordfrom"+str(column))