使用字典计算python数据帧中的字频率
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用字典计算python数据帧中的字频率,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3441字,纯文字阅读大概需要5分钟。
内容图文
![使用字典计算python数据帧中的字频率](/upload/InfoBanner/zyjiaocheng/729/009ba479a2264498b22d473349224a93.jpg)
我有一个由文本作业描述和3个空列组成的数据框
index job_description level_1 level_2 level_3
0 this job requires masters in.. 0 0 0
1 bachelor degree needed for.. 0 0 0
2 ms is preferred or phd.. 0 0 0
我正在尝试浏览每个作业描述字符串并计算作业描述中提到的每个学位级别的频率.示例输出应如下所示.
index job_description level_1 level_2 level_3
0 this job requires masters in.. 0 1 0
1 bachelor degree needed for.. 1 0 0
2 ms is preferred or phd.. 0 1 1
我创建了字典以进行比较,如下所示,但我对如何在数据框“作业描述”列的字符串中查找这些单词并根据单词是否存在填充数据框列有点无能为力.
my_dict_1 = dict.fromkeys(['bachelors', 'bachelor', 'ba','science
degree','bs','engineering degree'], 1)
my_dict_2 = dict.fromkeys(['masters', 'ms', 'master'], 1)
my_dict_3 = dict.fromkeys(['phd','p.h.d'], 1)
我非常感谢对此的支持..
解决方法:
这样的事怎么样?
由于您的三个词典中的每一个都对应于您要创建的不同列,因此我们可以创建另一个字典映射,其中即将成为列的名称作为键,并且在每个特定级别搜索的字符串作为值(实际上,您甚至不需要用于存储my_dict_< x>项目的字典 – 你可以使用一套 – 但这不是一个大问题:
>>> lookup = {'level_1': my_dict_1, 'level_2': my_dict_2, 'level_3': my_dict_3}
>>> lookup
{'level_1': {'bachelors': 1, 'bachelor': 1, 'ba': 1, 'science degree': 1, 'bs': 1, 'engineering degree': 1}, 'level_2': {'masters': 1, 'ms': 1, 'master': 1}, 'level_3': {'phd': 1, 'p.h.d': 1}}
然后,浏览刚刚创建的字典中的每个建议列,并分配一个新列,用于创建所需的输出,检查每个my_dict_< x>中指定的每个级别.对象是否至少有一个属于每行的作业描述…
>>> for level, values in lookup.items():
... df[level] = df['job_description'].apply(lambda x: 1 if any(v in x for v in values) else 0)
...
>>> df
job_description level_1 level_2 level_3
0 masters degree required 0 1 0
1 bachelor's degree required 1 0 0
2 bachelor degree required 1 0 0
3 phd required 0 0 1
另一种解决方案,使用scikit-learn的CountVectorizer类,它计算字符串中出现的标记(基本上是单词)的频率:
>>> from sklearn.feature_extraction.text import CountVectorizer
指定特定词汇 – 忘记所有其他不是“学术证书”关键词的词:
>>> vec = CountVectorizer(vocabulary={value for level, values in lookup.items() for value in values})
>>> vec.vocabulary
{'master', 'p.h.d', 'ba', 'ms', 'engineering degree', 'masters', 'phd', 'bachelor', 'bachelors', 'bs', 'science degree'}
使变换器适合文本可迭代,df [‘job_description’]:
>>> result = vec.fit_transform(df['job_description'])
深入了解结果:
>>> pd.DataFrame(result.toarray(), columns=vec.get_feature_names())
ba bachelor bachelors bs engineering degree master masters ms p.h.d phd science degree
0 0 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0
2 0 1 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 1 0
如果你想回到你的level_< x>,那么最后一种方法可能需要更多的工作.列结构,但我想我只是将它作为一种思考编码这些数据点的不同方式.
内容总结
以上是互联网集市为您收集整理的使用字典计算python数据帧中的字频率全部内容,希望文章能够帮你解决使用字典计算python数据帧中的字频率所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。