从csv数据绘制频率直方图时出错

2024-05-16 21:50:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python3上带有熊猫模块的csv文件。Csv文件由5列组成:工作、公司名称、工作描述、评论数量、工作位置;我想画一个频率直方图,在这里我只选择包含“机械工程师”字样的工作,然后找到“机械工程师”工作最频繁的5个位置的频率

因此,我定义了一个变量engloc,它存储所有“机械工程师”作业

engloc=df[df.position.str.contains('mechanical engineer|mechanical engineering', flags=re.IGNORECASE, regex=True)].location

用matplotlib做了一个柱状图,上面有我在网上找到的代码

 x = np.random.normal(size = 1000)
 plt.hist(engloc, bins=50)
 plt.gca().set(title='Frequency Histogram ', ylabel='Frequency');

但它是这样印的

enter image description here

我如何绘制一个正确的频率直方图,其中仅使用包含“机械工程师”字样的作业的5个最频繁位置进行绘制,而不是将所有位置都放在图表中

这是csv文件中的一个示例 csv data screenshot


Tags: 文件csvdf作业绘制plt直方图python3
1条回答
网友
1楼 · 发布于 2024-05-16 21:50:40

以下几点可以帮助您获得数字数据:

import numpy as np
counts_, bins_ = np.histogram(englog.values)
filtered = [(c,b) for (c,b) in zip(counts_,bins_) if counts_>=5]
counts, bins = list(zip(*filtered))
plt.hist(bins[:-1], bins, weights=counts)

对于字符串类型,请尝试:

from collections import Counter 
coords, counts = list(zip(*Counter(englog.values).most_common(5)))
plt.bar(coords, counts)

相关问题 更多 >