【问题标题】:How to count frequencies of different words from a dataframe column when the words are provided in a list?当单词在列表中提供时,如何计算数据框列中不同单词的频率?
【发布时间】:2022-08-13 22:36:04
【问题描述】:

我有一个数据框df这是来自 glassdoor 的工作和工作描述的网络报废数据,它看起来像这样 -

Job Title Job Description
Data Scientist Descripton
Data Scientist Descripton
Data Engineer Descripton
Data Scientist Descripton
Data Analyst Descripton

它有列职称职位描述.职位描述非常庞大,包含特定职位的所有描述,包括职位描述中间某处所需的技能。

以下是其中一项职位描述的屏幕截图 -

我正在尝试获取包含两列的数据框,技能频率为了职称数据科学家.

技能应该是(列表):Python、R、C/C++、Java、机器学习、深度学习、NLP、Power BI、Tableau、Excel、spark、aws、MS Access、LMS、SAS。

频率:在数据科学家职位的所有职位描述中找到一项技能的次数

输出应该是一个看起来像这样的数据框 -

|技能 |频率 | |-------------|----------| |蟒蛇 |243 | |R |109 | |动力双 |183 | |画面 |201 | 等等。

我对此的看法是:

(df
 .loc[df[\'Job Title\'].eq(\'Data Scientist\'), \'Job Description\']
 .str.split(\',\\s*\')
 .explode()
 .value_counts()
)

但这给出了描述中每个单词的频率。

我尝试的另一种方法:

test = df[\'Job Description\'].apply(lambda x: 1 if \'python\' in x.lower()else 0)
test.value_counts()

这给出了技能的计数,但这种方法的问题是需要一项一项地提供技能。

  • 请直接在问题中提供最小可重复输入和匹配的预期输出。
  • 还有,这是任务吗?我们今天也有类似的问题...实际上您的代码是my answer here
  • 亲爱的 mozway,我是来自不同帐户的同一个人。这不是一个任务。我只是想学习一些网上没有的东西。我是生物学领域的工作专业人士,并且是 python 新手。我正在自学。我想要做的是,我想根据提供的数据框制作一个表格,该表格将显示给定技能对工作的重要性。一项技能在职位描述中出现的次数越多,它就越重要。我需要一个包含技能及其在不同职位描述中的频率的两列表。能否请你帮忙?
  • 我来自另一个问题的代码对于提供的示例运行良好。看起来你在这里有一个完全不同的格式(不仅仅是逗号分隔的关键字)。关键是您需要能够提取关键字。这是真正的问题。解决这个问题,我之前的答案应该可以正常工作。
  • 如果是 SQL,我会使用 \'Like\' 函数从数据框中提取关键字及其频率,但在 python 中我不知道。

标签: python pandas dataframe


【解决方案1】:

我无法检查在线文件,但如果我理解正确,您可以使用正则表达式来提取术语;

l = ['Python', 'R', 'C/C++', 'Java', 'Machine Learning', 'Deep Learning', 'NLP', 'Power BI', 'Tableau', 'Excel', 'spark', 'aws', 'MS Access', 'lLMS', 'SAS']

import re

regex = '|'.join(map(re.escape, l))
# 'Python|R|C/C\\+\\+|Java|Machine\\ Learning|Deep\\ Learning|NLP|Power\\ BI|Tableau|Excel|spark|aws|MS\\ Access|lLMS|SAS'

(df
 .set_index('Job Title') # set index what you want to group on later
 ['Job Description']
 .str.extractall(f'({regex})')[0]
 .groupby(level=0)
 .value_counts()
)

【讨论】:

  • 这些技能以不同的频率多次出现。
  • 检查更新,我忘了提到您需要在要用作组的内容上设置索引
  • 如果您只想要一份工作,那么就像在我的另一个答案中一样使用loc 并使用value_counts 而不使用groupby
  • 亲爱的 mozway,它像黄油一样工作和工作,光滑。太感谢了.也许有一天我也想为你做点什么。谢谢。
  • R 656 Python 136 Excel 73 Tableau 48 机器学习 32 Java 29 SAS 24 NLP 16 Power BI 10 深度学习 9 aws 8 spark 7 C/C++ 3 MS Access 1,结果很奇怪,R 比 Python 更需要一个数据科学家的工作!
猜你喜欢
  • 2020-12-29
  • 2017-11-18
  • 2013-12-28
  • 2018-03-28
  • 2011-04-24
  • 2022-12-19
  • 1970-01-01
相关资源
最近更新 更多